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

(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/.gitignore (+3 lines)
Line 0 Link Here
1
/nbproject
2
/node_modules
3
/bower_modules
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/CHANGELOG.txt (+43 lines)
Line 0 Link Here
1
== 0.3.0 - 03 February 2015
2
* Perfomance optimization
3
* Bootstrap 3 update
4
* Add minifiyed js
5
* Add npm installation
6
* Add borew installation
7
8
== 0.2.1 - 21 January 2014
9
* Add events support
10
11
== 0.1.9 - 18 December 2013
12
* Fix table in table bug (thanks liuspcn)
13
14
== 0.1.8 - 16 December 2013
15
* Fix support alphanumeric id (you can use "-" symbol in id)
16
17
== 0.1.7 - 15 November 2013
18
* Fix isLast method. https://github.com/maxazan/jquery-treegrid/issues/4
19
* Add isFirst method
20
21
== 0.1.6 - 14 November 2013
22
* Add isNode method
23
* Add getAllNodes method
24
* Fix isLast method. Throw error if method is not node of tree.
25
26
== 0.1.5
27
* Add support alphanumeric id
28
29
== 0.1.4
30
* Add treeRow parameter
31
32
== 0.1.3 - 28 August 2013
33
* Added bootstrap examples
34
* Changed expander functionality
35
* Fixed $.data set and get
36
* Fixed $.extends settings
37
* Adding new test
38
39
== 0.1.2 - 26 August 2013
40
* Added save state
41
42
== 0.1.0 - 15 August 2013
43
* Public release
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/Gruntfile.js (+23 lines)
Line 0 Link Here
1
module.exports = function(grunt) {
2
3
  // Project configuration.
4
  grunt.initConfig({
5
    pkg: grunt.file.readJSON('package.json'),
6
    uglify: {
7
      options: {
8
        banner: '/*! <%= pkg.name %> <%= pkg.version %> */\n'
9
      },
10
      build: {
11
        src: 'js/jquery.treegrid.js',
12
        dest: 'js/jquery.treegrid.min.js'
13
      }
14
    }
15
  });
16
17
  // Load the plugin that provides the "uglify" task.
18
  grunt.loadNpmTasks('grunt-contrib-uglify');
19
20
  // Default task(s).
21
  grunt.registerTask('default', ['uglify']);
22
23
};
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/LICENSE (+20 lines)
Line 0 Link Here
1
The MIT License (MIT)
2
3
Copyright (c) 2013
4
5
Permission is hereby granted, free of charge, to any person obtaining a copy of
6
this software and associated documentation files (the "Software"), to deal in
7
the Software without restriction, including without limitation the rights to
8
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
the Software, and to permit persons to whom the Software is furnished to do so,
10
subject to the following conditions:
11
12
The above copyright notice and this permission notice shall be included in all
13
copies or substantial portions of the Software.
14
15
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/README.md (+20 lines)
Line 0 Link Here
1
TreeGrid plugin for jQuery
2
==================
3
4
See more information at http://maxazan.github.io/jquery-treegrid
5
6
##Installation
7
8
###Using npm
9
```
10
npm install jquery-treegrid
11
```
12
13
###Using bower
14
```
15
bower install jquery-treegrid
16
```
17
18
###From source
19
20
Download [source](https://github.com/maxazan/jquery-treegrid/archive/master.zip) from github.com
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/bower.json (+33 lines)
Line 0 Link Here
1
{
2
  "name": "jquery-treegrid",
3
  "description": "TreeGrid plugin for jQuery.",
4
  "version": "0.3.0",
5
  "homepage": "http://maxazan.github.io/jquery-treegrid",
6
  "license": "MIT",
7
  "ignore": [
8
    "examples",
9
    "tests",
10
    "**/.*",
11
    "composer.json",
12
    "index.html",
13
    "params.json",
14
    "style.css",
15
    "test.html",
16
    "treegrid.jquery.json"
17
  ],
18
  "keywords": [
19
    "jquery",
20
    "javascript",
21
    "plugin",
22
    "bootstrap",
23
    "treegrid",
24
    "treeview"
25
  ],
26
  "dependencies": {
27
    "jquery": ">= 1.9.1",
28
    "jquery.cookie": ">= 1.4.1"
29
  },
30
  "authors": [
31
    "Maksym Pomazan"
32
  ]
33
}
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/composer.json (+12 lines)
Line 0 Link Here
1
{
2
	"name": "maxazan/jquery-treegrid",
3
	"description": "jquery treegrid plugin",
4
	"keywords": ["jquery", "grid", "treegrid", "tree"],
5
	"homepage": "http://maxazan.github.io/jquery-treegrid",
6
	"type": "library",
7
	"license": "MIT",
8
	"support": {
9
		"issues": "https://github.com/maxazan/jquery-treegrid/issues",
10
		"source": "https://github.com/maxazan/jquery-treegrid"
11
	}
12
}
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/css/jquery.treegrid.css (+6 lines)
Line 0 Link Here
1
.treegrid-indent {width:16px; height: 16px; display: inline-block; position: relative;}
2
3
.treegrid-expander {width:16px; height: 16px; display: inline-block; position: relative; cursor: pointer;}
4
5
.treegrid-expander-expanded{background-image: url(../img/collapse.png); }
6
.treegrid-expander-collapsed{background-image: url(../img/expand.png);}
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/bootstrap-2.3.2/css/bootstrap-responsive.css (+1109 lines)
Line 0 Link Here
1
/*!
2
 * Bootstrap Responsive v2.3.2
3
 *
4
 * Copyright 2013 Twitter, Inc
5
 * Licensed under the Apache License v2.0
6
 * http://www.apache.org/licenses/LICENSE-2.0
7
 *
8
 * Designed and built with all the love in the world by @mdo and @fat.
9
 */
10
11
.clearfix {
12
  *zoom: 1;
13
}
14
15
.clearfix:before,
16
.clearfix:after {
17
  display: table;
18
  line-height: 0;
19
  content: "";
20
}
21
22
.clearfix:after {
23
  clear: both;
24
}
25
26
.hide-text {
27
  font: 0/0 a;
28
  color: transparent;
29
  text-shadow: none;
30
  background-color: transparent;
31
  border: 0;
32
}
33
34
.input-block-level {
35
  display: block;
36
  width: 100%;
37
  min-height: 30px;
38
  -webkit-box-sizing: border-box;
39
     -moz-box-sizing: border-box;
40
          box-sizing: border-box;
41
}
42
43
@-ms-viewport {
44
  width: device-width;
45
}
46
47
.hidden {
48
  display: none;
49
  visibility: hidden;
50
}
51
52
.visible-phone {
53
  display: none !important;
54
}
55
56
.visible-tablet {
57
  display: none !important;
58
}
59
60
.hidden-desktop {
61
  display: none !important;
62
}
63
64
.visible-desktop {
65
  display: inherit !important;
66
}
67
68
@media (min-width: 768px) and (max-width: 979px) {
69
  .hidden-desktop {
70
    display: inherit !important;
71
  }
72
  .visible-desktop {
73
    display: none !important ;
74
  }
75
  .visible-tablet {
76
    display: inherit !important;
77
  }
78
  .hidden-tablet {
79
    display: none !important;
80
  }
81
}
82
83
@media (max-width: 767px) {
84
  .hidden-desktop {
85
    display: inherit !important;
86
  }
87
  .visible-desktop {
88
    display: none !important;
89
  }
90
  .visible-phone {
91
    display: inherit !important;
92
  }
93
  .hidden-phone {
94
    display: none !important;
95
  }
96
}
97
98
.visible-print {
99
  display: none !important;
100
}
101
102
@media print {
103
  .visible-print {
104
    display: inherit !important;
105
  }
106
  .hidden-print {
107
    display: none !important;
108
  }
109
}
110
111
@media (min-width: 1200px) {
112
  .row {
113
    margin-left: -30px;
114
    *zoom: 1;
115
  }
116
  .row:before,
117
  .row:after {
118
    display: table;
119
    line-height: 0;
120
    content: "";
121
  }
122
  .row:after {
123
    clear: both;
124
  }
125
  [class*="span"] {
126
    float: left;
127
    min-height: 1px;
128
    margin-left: 30px;
129
  }
130
  .container,
131
  .navbar-static-top .container,
132
  .navbar-fixed-top .container,
133
  .navbar-fixed-bottom .container {
134
    width: 1170px;
135
  }
136
  .span12 {
137
    width: 1170px;
138
  }
139
  .span11 {
140
    width: 1070px;
141
  }
142
  .span10 {
143
    width: 970px;
144
  }
145
  .span9 {
146
    width: 870px;
147
  }
148
  .span8 {
149
    width: 770px;
150
  }
151
  .span7 {
152
    width: 670px;
153
  }
154
  .span6 {
155
    width: 570px;
156
  }
157
  .span5 {
158
    width: 470px;
159
  }
160
  .span4 {
161
    width: 370px;
162
  }
163
  .span3 {
164
    width: 270px;
165
  }
166
  .span2 {
167
    width: 170px;
168
  }
169
  .span1 {
170
    width: 70px;
171
  }
172
  .offset12 {
173
    margin-left: 1230px;
174
  }
175
  .offset11 {
176
    margin-left: 1130px;
177
  }
178
  .offset10 {
179
    margin-left: 1030px;
180
  }
181
  .offset9 {
182
    margin-left: 930px;
183
  }
184
  .offset8 {
185
    margin-left: 830px;
186
  }
187
  .offset7 {
188
    margin-left: 730px;
189
  }
190
  .offset6 {
191
    margin-left: 630px;
192
  }
193
  .offset5 {
194
    margin-left: 530px;
195
  }
196
  .offset4 {
197
    margin-left: 430px;
198
  }
199
  .offset3 {
200
    margin-left: 330px;
201
  }
202
  .offset2 {
203
    margin-left: 230px;
204
  }
205
  .offset1 {
206
    margin-left: 130px;
207
  }
208
  .row-fluid {
209
    width: 100%;
210
    *zoom: 1;
211
  }
212
  .row-fluid:before,
213
  .row-fluid:after {
214
    display: table;
215
    line-height: 0;
216
    content: "";
217
  }
218
  .row-fluid:after {
219
    clear: both;
220
  }
221
  .row-fluid [class*="span"] {
222
    display: block;
223
    float: left;
224
    width: 100%;
225
    min-height: 30px;
226
    margin-left: 2.564102564102564%;
227
    *margin-left: 2.5109110747408616%;
228
    -webkit-box-sizing: border-box;
229
       -moz-box-sizing: border-box;
230
            box-sizing: border-box;
231
  }
232
  .row-fluid [class*="span"]:first-child {
233
    margin-left: 0;
234
  }
235
  .row-fluid .controls-row [class*="span"] + [class*="span"] {
236
    margin-left: 2.564102564102564%;
237
  }
238
  .row-fluid .span12 {
239
    width: 100%;
240
    *width: 99.94680851063829%;
241
  }
242
  .row-fluid .span11 {
243
    width: 91.45299145299145%;
244
    *width: 91.39979996362975%;
245
  }
246
  .row-fluid .span10 {
247
    width: 82.90598290598291%;
248
    *width: 82.8527914166212%;
249
  }
250
  .row-fluid .span9 {
251
    width: 74.35897435897436%;
252
    *width: 74.30578286961266%;
253
  }
254
  .row-fluid .span8 {
255
    width: 65.81196581196582%;
256
    *width: 65.75877432260411%;
257
  }
258
  .row-fluid .span7 {
259
    width: 57.26495726495726%;
260
    *width: 57.21176577559556%;
261
  }
262
  .row-fluid .span6 {
263
    width: 48.717948717948715%;
264
    *width: 48.664757228587014%;
265
  }
266
  .row-fluid .span5 {
267
    width: 40.17094017094017%;
268
    *width: 40.11774868157847%;
269
  }
270
  .row-fluid .span4 {
271
    width: 31.623931623931625%;
272
    *width: 31.570740134569924%;
273
  }
274
  .row-fluid .span3 {
275
    width: 23.076923076923077%;
276
    *width: 23.023731587561375%;
277
  }
278
  .row-fluid .span2 {
279
    width: 14.52991452991453%;
280
    *width: 14.476723040552828%;
281
  }
282
  .row-fluid .span1 {
283
    width: 5.982905982905983%;
284
    *width: 5.929714493544281%;
285
  }
286
  .row-fluid .offset12 {
287
    margin-left: 105.12820512820512%;
288
    *margin-left: 105.02182214948171%;
289
  }
290
  .row-fluid .offset12:first-child {
291
    margin-left: 102.56410256410257%;
292
    *margin-left: 102.45771958537915%;
293
  }
294
  .row-fluid .offset11 {
295
    margin-left: 96.58119658119658%;
296
    *margin-left: 96.47481360247316%;
297
  }
298
  .row-fluid .offset11:first-child {
299
    margin-left: 94.01709401709402%;
300
    *margin-left: 93.91071103837061%;
301
  }
302
  .row-fluid .offset10 {
303
    margin-left: 88.03418803418803%;
304
    *margin-left: 87.92780505546462%;
305
  }
306
  .row-fluid .offset10:first-child {
307
    margin-left: 85.47008547008548%;
308
    *margin-left: 85.36370249136206%;
309
  }
310
  .row-fluid .offset9 {
311
    margin-left: 79.48717948717949%;
312
    *margin-left: 79.38079650845607%;
313
  }
314
  .row-fluid .offset9:first-child {
315
    margin-left: 76.92307692307693%;
316
    *margin-left: 76.81669394435352%;
317
  }
318
  .row-fluid .offset8 {
319
    margin-left: 70.94017094017094%;
320
    *margin-left: 70.83378796144753%;
321
  }
322
  .row-fluid .offset8:first-child {
323
    margin-left: 68.37606837606839%;
324
    *margin-left: 68.26968539734497%;
325
  }
326
  .row-fluid .offset7 {
327
    margin-left: 62.393162393162385%;
328
    *margin-left: 62.28677941443899%;
329
  }
330
  .row-fluid .offset7:first-child {
331
    margin-left: 59.82905982905982%;
332
    *margin-left: 59.72267685033642%;
333
  }
334
  .row-fluid .offset6 {
335
    margin-left: 53.84615384615384%;
336
    *margin-left: 53.739770867430444%;
337
  }
338
  .row-fluid .offset6:first-child {
339
    margin-left: 51.28205128205128%;
340
    *margin-left: 51.175668303327875%;
341
  }
342
  .row-fluid .offset5 {
343
    margin-left: 45.299145299145295%;
344
    *margin-left: 45.1927623204219%;
345
  }
346
  .row-fluid .offset5:first-child {
347
    margin-left: 42.73504273504273%;
348
    *margin-left: 42.62865975631933%;
349
  }
350
  .row-fluid .offset4 {
351
    margin-left: 36.75213675213675%;
352
    *margin-left: 36.645753773413354%;
353
  }
354
  .row-fluid .offset4:first-child {
355
    margin-left: 34.18803418803419%;
356
    *margin-left: 34.081651209310785%;
357
  }
358
  .row-fluid .offset3 {
359
    margin-left: 28.205128205128204%;
360
    *margin-left: 28.0987452264048%;
361
  }
362
  .row-fluid .offset3:first-child {
363
    margin-left: 25.641025641025642%;
364
    *margin-left: 25.53464266230224%;
365
  }
366
  .row-fluid .offset2 {
367
    margin-left: 19.65811965811966%;
368
    *margin-left: 19.551736679396257%;
369
  }
370
  .row-fluid .offset2:first-child {
371
    margin-left: 17.094017094017094%;
372
    *margin-left: 16.98763411529369%;
373
  }
374
  .row-fluid .offset1 {
375
    margin-left: 11.11111111111111%;
376
    *margin-left: 11.004728132387708%;
377
  }
378
  .row-fluid .offset1:first-child {
379
    margin-left: 8.547008547008547%;
380
    *margin-left: 8.440625568285142%;
381
  }
382
  input,
383
  textarea,
384
  .uneditable-input {
385
    margin-left: 0;
386
  }
387
  .controls-row [class*="span"] + [class*="span"] {
388
    margin-left: 30px;
389
  }
390
  input.span12,
391
  textarea.span12,
392
  .uneditable-input.span12 {
393
    width: 1156px;
394
  }
395
  input.span11,
396
  textarea.span11,
397
  .uneditable-input.span11 {
398
    width: 1056px;
399
  }
400
  input.span10,
401
  textarea.span10,
402
  .uneditable-input.span10 {
403
    width: 956px;
404
  }
405
  input.span9,
406
  textarea.span9,
407
  .uneditable-input.span9 {
408
    width: 856px;
409
  }
410
  input.span8,
411
  textarea.span8,
412
  .uneditable-input.span8 {
413
    width: 756px;
414
  }
415
  input.span7,
416
  textarea.span7,
417
  .uneditable-input.span7 {
418
    width: 656px;
419
  }
420
  input.span6,
421
  textarea.span6,
422
  .uneditable-input.span6 {
423
    width: 556px;
424
  }
425
  input.span5,
426
  textarea.span5,
427
  .uneditable-input.span5 {
428
    width: 456px;
429
  }
430
  input.span4,
431
  textarea.span4,
432
  .uneditable-input.span4 {
433
    width: 356px;
434
  }
435
  input.span3,
436
  textarea.span3,
437
  .uneditable-input.span3 {
438
    width: 256px;
439
  }
440
  input.span2,
441
  textarea.span2,
442
  .uneditable-input.span2 {
443
    width: 156px;
444
  }
445
  input.span1,
446
  textarea.span1,
447
  .uneditable-input.span1 {
448
    width: 56px;
449
  }
450
  .thumbnails {
451
    margin-left: -30px;
452
  }
453
  .thumbnails > li {
454
    margin-left: 30px;
455
  }
456
  .row-fluid .thumbnails {
457
    margin-left: 0;
458
  }
459
}
460
461
@media (min-width: 768px) and (max-width: 979px) {
462
  .row {
463
    margin-left: -20px;
464
    *zoom: 1;
465
  }
466
  .row:before,
467
  .row:after {
468
    display: table;
469
    line-height: 0;
470
    content: "";
471
  }
472
  .row:after {
473
    clear: both;
474
  }
475
  [class*="span"] {
476
    float: left;
477
    min-height: 1px;
478
    margin-left: 20px;
479
  }
480
  .container,
481
  .navbar-static-top .container,
482
  .navbar-fixed-top .container,
483
  .navbar-fixed-bottom .container {
484
    width: 724px;
485
  }
486
  .span12 {
487
    width: 724px;
488
  }
489
  .span11 {
490
    width: 662px;
491
  }
492
  .span10 {
493
    width: 600px;
494
  }
495
  .span9 {
496
    width: 538px;
497
  }
498
  .span8 {
499
    width: 476px;
500
  }
501
  .span7 {
502
    width: 414px;
503
  }
504
  .span6 {
505
    width: 352px;
506
  }
507
  .span5 {
508
    width: 290px;
509
  }
510
  .span4 {
511
    width: 228px;
512
  }
513
  .span3 {
514
    width: 166px;
515
  }
516
  .span2 {
517
    width: 104px;
518
  }
519
  .span1 {
520
    width: 42px;
521
  }
522
  .offset12 {
523
    margin-left: 764px;
524
  }
525
  .offset11 {
526
    margin-left: 702px;
527
  }
528
  .offset10 {
529
    margin-left: 640px;
530
  }
531
  .offset9 {
532
    margin-left: 578px;
533
  }
534
  .offset8 {
535
    margin-left: 516px;
536
  }
537
  .offset7 {
538
    margin-left: 454px;
539
  }
540
  .offset6 {
541
    margin-left: 392px;
542
  }
543
  .offset5 {
544
    margin-left: 330px;
545
  }
546
  .offset4 {
547
    margin-left: 268px;
548
  }
549
  .offset3 {
550
    margin-left: 206px;
551
  }
552
  .offset2 {
553
    margin-left: 144px;
554
  }
555
  .offset1 {
556
    margin-left: 82px;
557
  }
558
  .row-fluid {
559
    width: 100%;
560
    *zoom: 1;
561
  }
562
  .row-fluid:before,
563
  .row-fluid:after {
564
    display: table;
565
    line-height: 0;
566
    content: "";
567
  }
568
  .row-fluid:after {
569
    clear: both;
570
  }
571
  .row-fluid [class*="span"] {
572
    display: block;
573
    float: left;
574
    width: 100%;
575
    min-height: 30px;
576
    margin-left: 2.7624309392265194%;
577
    *margin-left: 2.709239449864817%;
578
    -webkit-box-sizing: border-box;
579
       -moz-box-sizing: border-box;
580
            box-sizing: border-box;
581
  }
582
  .row-fluid [class*="span"]:first-child {
583
    margin-left: 0;
584
  }
585
  .row-fluid .controls-row [class*="span"] + [class*="span"] {
586
    margin-left: 2.7624309392265194%;
587
  }
588
  .row-fluid .span12 {
589
    width: 100%;
590
    *width: 99.94680851063829%;
591
  }
592
  .row-fluid .span11 {
593
    width: 91.43646408839778%;
594
    *width: 91.38327259903608%;
595
  }
596
  .row-fluid .span10 {
597
    width: 82.87292817679558%;
598
    *width: 82.81973668743387%;
599
  }
600
  .row-fluid .span9 {
601
    width: 74.30939226519337%;
602
    *width: 74.25620077583166%;
603
  }
604
  .row-fluid .span8 {
605
    width: 65.74585635359117%;
606
    *width: 65.69266486422946%;
607
  }
608
  .row-fluid .span7 {
609
    width: 57.18232044198895%;
610
    *width: 57.12912895262725%;
611
  }
612
  .row-fluid .span6 {
613
    width: 48.61878453038674%;
614
    *width: 48.56559304102504%;
615
  }
616
  .row-fluid .span5 {
617
    width: 40.05524861878453%;
618
    *width: 40.00205712942283%;
619
  }
620
  .row-fluid .span4 {
621
    width: 31.491712707182323%;
622
    *width: 31.43852121782062%;
623
  }
624
  .row-fluid .span3 {
625
    width: 22.92817679558011%;
626
    *width: 22.87498530621841%;
627
  }
628
  .row-fluid .span2 {
629
    width: 14.3646408839779%;
630
    *width: 14.311449394616199%;
631
  }
632
  .row-fluid .span1 {
633
    width: 5.801104972375691%;
634
    *width: 5.747913483013988%;
635
  }
636
  .row-fluid .offset12 {
637
    margin-left: 105.52486187845304%;
638
    *margin-left: 105.41847889972962%;
639
  }
640
  .row-fluid .offset12:first-child {
641
    margin-left: 102.76243093922652%;
642
    *margin-left: 102.6560479605031%;
643
  }
644
  .row-fluid .offset11 {
645
    margin-left: 96.96132596685082%;
646
    *margin-left: 96.8549429881274%;
647
  }
648
  .row-fluid .offset11:first-child {
649
    margin-left: 94.1988950276243%;
650
    *margin-left: 94.09251204890089%;
651
  }
652
  .row-fluid .offset10 {
653
    margin-left: 88.39779005524862%;
654
    *margin-left: 88.2914070765252%;
655
  }
656
  .row-fluid .offset10:first-child {
657
    margin-left: 85.6353591160221%;
658
    *margin-left: 85.52897613729868%;
659
  }
660
  .row-fluid .offset9 {
661
    margin-left: 79.8342541436464%;
662
    *margin-left: 79.72787116492299%;
663
  }
664
  .row-fluid .offset9:first-child {
665
    margin-left: 77.07182320441989%;
666
    *margin-left: 76.96544022569647%;
667
  }
668
  .row-fluid .offset8 {
669
    margin-left: 71.2707182320442%;
670
    *margin-left: 71.16433525332079%;
671
  }
672
  .row-fluid .offset8:first-child {
673
    margin-left: 68.50828729281768%;
674
    *margin-left: 68.40190431409427%;
675
  }
676
  .row-fluid .offset7 {
677
    margin-left: 62.70718232044199%;
678
    *margin-left: 62.600799341718584%;
679
  }
680
  .row-fluid .offset7:first-child {
681
    margin-left: 59.94475138121547%;
682
    *margin-left: 59.838368402492065%;
683
  }
684
  .row-fluid .offset6 {
685
    margin-left: 54.14364640883978%;
686
    *margin-left: 54.037263430116376%;
687
  }
688
  .row-fluid .offset6:first-child {
689
    margin-left: 51.38121546961326%;
690
    *margin-left: 51.27483249088986%;
691
  }
692
  .row-fluid .offset5 {
693
    margin-left: 45.58011049723757%;
694
    *margin-left: 45.47372751851417%;
695
  }
696
  .row-fluid .offset5:first-child {
697
    margin-left: 42.81767955801105%;
698
    *margin-left: 42.71129657928765%;
699
  }
700
  .row-fluid .offset4 {
701
    margin-left: 37.01657458563536%;
702
    *margin-left: 36.91019160691196%;
703
  }
704
  .row-fluid .offset4:first-child {
705
    margin-left: 34.25414364640884%;
706
    *margin-left: 34.14776066768544%;
707
  }
708
  .row-fluid .offset3 {
709
    margin-left: 28.45303867403315%;
710
    *margin-left: 28.346655695309746%;
711
  }
712
  .row-fluid .offset3:first-child {
713
    margin-left: 25.69060773480663%;
714
    *margin-left: 25.584224756083227%;
715
  }
716
  .row-fluid .offset2 {
717
    margin-left: 19.88950276243094%;
718
    *margin-left: 19.783119783707537%;
719
  }
720
  .row-fluid .offset2:first-child {
721
    margin-left: 17.12707182320442%;
722
    *margin-left: 17.02068884448102%;
723
  }
724
  .row-fluid .offset1 {
725
    margin-left: 11.32596685082873%;
726
    *margin-left: 11.219583872105325%;
727
  }
728
  .row-fluid .offset1:first-child {
729
    margin-left: 8.56353591160221%;
730
    *margin-left: 8.457152932878806%;
731
  }
732
  input,
733
  textarea,
734
  .uneditable-input {
735
    margin-left: 0;
736
  }
737
  .controls-row [class*="span"] + [class*="span"] {
738
    margin-left: 20px;
739
  }
740
  input.span12,
741
  textarea.span12,
742
  .uneditable-input.span12 {
743
    width: 710px;
744
  }
745
  input.span11,
746
  textarea.span11,
747
  .uneditable-input.span11 {
748
    width: 648px;
749
  }
750
  input.span10,
751
  textarea.span10,
752
  .uneditable-input.span10 {
753
    width: 586px;
754
  }
755
  input.span9,
756
  textarea.span9,
757
  .uneditable-input.span9 {
758
    width: 524px;
759
  }
760
  input.span8,
761
  textarea.span8,
762
  .uneditable-input.span8 {
763
    width: 462px;
764
  }
765
  input.span7,
766
  textarea.span7,
767
  .uneditable-input.span7 {
768
    width: 400px;
769
  }
770
  input.span6,
771
  textarea.span6,
772
  .uneditable-input.span6 {
773
    width: 338px;
774
  }
775
  input.span5,
776
  textarea.span5,
777
  .uneditable-input.span5 {
778
    width: 276px;
779
  }
780
  input.span4,
781
  textarea.span4,
782
  .uneditable-input.span4 {
783
    width: 214px;
784
  }
785
  input.span3,
786
  textarea.span3,
787
  .uneditable-input.span3 {
788
    width: 152px;
789
  }
790
  input.span2,
791
  textarea.span2,
792
  .uneditable-input.span2 {
793
    width: 90px;
794
  }
795
  input.span1,
796
  textarea.span1,
797
  .uneditable-input.span1 {
798
    width: 28px;
799
  }
800
}
801
802
@media (max-width: 767px) {
803
  body {
804
    padding-right: 20px;
805
    padding-left: 20px;
806
  }
807
  .navbar-fixed-top,
808
  .navbar-fixed-bottom,
809
  .navbar-static-top {
810
    margin-right: -20px;
811
    margin-left: -20px;
812
  }
813
  .container-fluid {
814
    padding: 0;
815
  }
816
  .dl-horizontal dt {
817
    float: none;
818
    width: auto;
819
    clear: none;
820
    text-align: left;
821
  }
822
  .dl-horizontal dd {
823
    margin-left: 0;
824
  }
825
  .container {
826
    width: auto;
827
  }
828
  .row-fluid {
829
    width: 100%;
830
  }
831
  .row,
832
  .thumbnails {
833
    margin-left: 0;
834
  }
835
  .thumbnails > li {
836
    float: none;
837
    margin-left: 0;
838
  }
839
  [class*="span"],
840
  .uneditable-input[class*="span"],
841
  .row-fluid [class*="span"] {
842
    display: block;
843
    float: none;
844
    width: 100%;
845
    margin-left: 0;
846
    -webkit-box-sizing: border-box;
847
       -moz-box-sizing: border-box;
848
            box-sizing: border-box;
849
  }
850
  .span12,
851
  .row-fluid .span12 {
852
    width: 100%;
853
    -webkit-box-sizing: border-box;
854
       -moz-box-sizing: border-box;
855
            box-sizing: border-box;
856
  }
857
  .row-fluid [class*="offset"]:first-child {
858
    margin-left: 0;
859
  }
860
  .input-large,
861
  .input-xlarge,
862
  .input-xxlarge,
863
  input[class*="span"],
864
  select[class*="span"],
865
  textarea[class*="span"],
866
  .uneditable-input {
867
    display: block;
868
    width: 100%;
869
    min-height: 30px;
870
    -webkit-box-sizing: border-box;
871
       -moz-box-sizing: border-box;
872
            box-sizing: border-box;
873
  }
874
  .input-prepend input,
875
  .input-append input,
876
  .input-prepend input[class*="span"],
877
  .input-append input[class*="span"] {
878
    display: inline-block;
879
    width: auto;
880
  }
881
  .controls-row [class*="span"] + [class*="span"] {
882
    margin-left: 0;
883
  }
884
  .modal {
885
    position: fixed;
886
    top: 20px;
887
    right: 20px;
888
    left: 20px;
889
    width: auto;
890
    margin: 0;
891
  }
892
  .modal.fade {
893
    top: -100px;
894
  }
895
  .modal.fade.in {
896
    top: 20px;
897
  }
898
}
899
900
@media (max-width: 480px) {
901
  .nav-collapse {
902
    -webkit-transform: translate3d(0, 0, 0);
903
  }
904
  .page-header h1 small {
905
    display: block;
906
    line-height: 20px;
907
  }
908
  input[type="checkbox"],
909
  input[type="radio"] {
910
    border: 1px solid #ccc;
911
  }
912
  .form-horizontal .control-label {
913
    float: none;
914
    width: auto;
915
    padding-top: 0;
916
    text-align: left;
917
  }
918
  .form-horizontal .controls {
919
    margin-left: 0;
920
  }
921
  .form-horizontal .control-list {
922
    padding-top: 0;
923
  }
924
  .form-horizontal .form-actions {
925
    padding-right: 10px;
926
    padding-left: 10px;
927
  }
928
  .media .pull-left,
929
  .media .pull-right {
930
    display: block;
931
    float: none;
932
    margin-bottom: 10px;
933
  }
934
  .media-object {
935
    margin-right: 0;
936
    margin-left: 0;
937
  }
938
  .modal {
939
    top: 10px;
940
    right: 10px;
941
    left: 10px;
942
  }
943
  .modal-header .close {
944
    padding: 10px;
945
    margin: -10px;
946
  }
947
  .carousel-caption {
948
    position: static;
949
  }
950
}
951
952
@media (max-width: 979px) {
953
  body {
954
    padding-top: 0;
955
  }
956
  .navbar-fixed-top,
957
  .navbar-fixed-bottom {
958
    position: static;
959
  }
960
  .navbar-fixed-top {
961
    margin-bottom: 20px;
962
  }
963
  .navbar-fixed-bottom {
964
    margin-top: 20px;
965
  }
966
  .navbar-fixed-top .navbar-inner,
967
  .navbar-fixed-bottom .navbar-inner {
968
    padding: 5px;
969
  }
970
  .navbar .container {
971
    width: auto;
972
    padding: 0;
973
  }
974
  .navbar .brand {
975
    padding-right: 10px;
976
    padding-left: 10px;
977
    margin: 0 0 0 -5px;
978
  }
979
  .nav-collapse {
980
    clear: both;
981
  }
982
  .nav-collapse .nav {
983
    float: none;
984
    margin: 0 0 10px;
985
  }
986
  .nav-collapse .nav > li {
987
    float: none;
988
  }
989
  .nav-collapse .nav > li > a {
990
    margin-bottom: 2px;
991
  }
992
  .nav-collapse .nav > .divider-vertical {
993
    display: none;
994
  }
995
  .nav-collapse .nav .nav-header {
996
    color: #777777;
997
    text-shadow: none;
998
  }
999
  .nav-collapse .nav > li > a,
1000
  .nav-collapse .dropdown-menu a {
1001
    padding: 9px 15px;
1002
    font-weight: bold;
1003
    color: #777777;
1004
    -webkit-border-radius: 3px;
1005
       -moz-border-radius: 3px;
1006
            border-radius: 3px;
1007
  }
1008
  .nav-collapse .btn {
1009
    padding: 4px 10px 4px;
1010
    font-weight: normal;
1011
    -webkit-border-radius: 4px;
1012
       -moz-border-radius: 4px;
1013
            border-radius: 4px;
1014
  }
1015
  .nav-collapse .dropdown-menu li + li a {
1016
    margin-bottom: 2px;
1017
  }
1018
  .nav-collapse .nav > li > a:hover,
1019
  .nav-collapse .nav > li > a:focus,
1020
  .nav-collapse .dropdown-menu a:hover,
1021
  .nav-collapse .dropdown-menu a:focus {
1022
    background-color: #f2f2f2;
1023
  }
1024
  .navbar-inverse .nav-collapse .nav > li > a,
1025
  .navbar-inverse .nav-collapse .dropdown-menu a {
1026
    color: #999999;
1027
  }
1028
  .navbar-inverse .nav-collapse .nav > li > a:hover,
1029
  .navbar-inverse .nav-collapse .nav > li > a:focus,
1030
  .navbar-inverse .nav-collapse .dropdown-menu a:hover,
1031
  .navbar-inverse .nav-collapse .dropdown-menu a:focus {
1032
    background-color: #111111;
1033
  }
1034
  .nav-collapse.in .btn-group {
1035
    padding: 0;
1036
    margin-top: 5px;
1037
  }
1038
  .nav-collapse .dropdown-menu {
1039
    position: static;
1040
    top: auto;
1041
    left: auto;
1042
    display: none;
1043
    float: none;
1044
    max-width: none;
1045
    padding: 0;
1046
    margin: 0 15px;
1047
    background-color: transparent;
1048
    border: none;
1049
    -webkit-border-radius: 0;
1050
       -moz-border-radius: 0;
1051
            border-radius: 0;
1052
    -webkit-box-shadow: none;
1053
       -moz-box-shadow: none;
1054
            box-shadow: none;
1055
  }
1056
  .nav-collapse .open > .dropdown-menu {
1057
    display: block;
1058
  }
1059
  .nav-collapse .dropdown-menu:before,
1060
  .nav-collapse .dropdown-menu:after {
1061
    display: none;
1062
  }
1063
  .nav-collapse .dropdown-menu .divider {
1064
    display: none;
1065
  }
1066
  .nav-collapse .nav > li > .dropdown-menu:before,
1067
  .nav-collapse .nav > li > .dropdown-menu:after {
1068
    display: none;
1069
  }
1070
  .nav-collapse .navbar-form,
1071
  .nav-collapse .navbar-search {
1072
    float: none;
1073
    padding: 10px 15px;
1074
    margin: 10px 0;
1075
    border-top: 1px solid #f2f2f2;
1076
    border-bottom: 1px solid #f2f2f2;
1077
    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
1078
       -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
1079
            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
1080
  }
1081
  .navbar-inverse .nav-collapse .navbar-form,
1082
  .navbar-inverse .nav-collapse .navbar-search {
1083
    border-top-color: #111111;
1084
    border-bottom-color: #111111;
1085
  }
1086
  .navbar .nav-collapse .nav.pull-right {
1087
    float: none;
1088
    margin-left: 0;
1089
  }
1090
  .nav-collapse,
1091
  .nav-collapse.collapse {
1092
    height: 0;
1093
    overflow: hidden;
1094
  }
1095
  .navbar .btn-navbar {
1096
    display: block;
1097
  }
1098
  .navbar-static .navbar-inner {
1099
    padding-right: 10px;
1100
    padding-left: 10px;
1101
  }
1102
}
1103
1104
@media (min-width: 980px) {
1105
  .nav-collapse.collapse {
1106
    height: auto !important;
1107
    overflow: visible !important;
1108
  }
1109
}
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/bootstrap-2.3.2/css/bootstrap-responsive.min.css (+9 lines)
Line 0 Link Here
1
/*!
2
 * Bootstrap Responsive v2.3.2
3
 *
4
 * Copyright 2013 Twitter, Inc
5
 * Licensed under the Apache License v2.0
6
 * http://www.apache.org/licenses/LICENSE-2.0
7
 *
8
 * Designed and built with all the love in the world by @mdo and @fat.
9
 */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}}
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/bootstrap-2.3.2/css/bootstrap.css (+6167 lines)
Line 0 Link Here
1
/*!
2
 * Bootstrap v2.3.2
3
 *
4
 * Copyright 2013 Twitter, Inc
5
 * Licensed under the Apache License v2.0
6
 * http://www.apache.org/licenses/LICENSE-2.0
7
 *
8
 * Designed and built with all the love in the world by @mdo and @fat.
9
 */
10
11
.clearfix {
12
  *zoom: 1;
13
}
14
15
.clearfix:before,
16
.clearfix:after {
17
  display: table;
18
  line-height: 0;
19
  content: "";
20
}
21
22
.clearfix:after {
23
  clear: both;
24
}
25
26
.hide-text {
27
  font: 0/0 a;
28
  color: transparent;
29
  text-shadow: none;
30
  background-color: transparent;
31
  border: 0;
32
}
33
34
.input-block-level {
35
  display: block;
36
  width: 100%;
37
  min-height: 30px;
38
  -webkit-box-sizing: border-box;
39
     -moz-box-sizing: border-box;
40
          box-sizing: border-box;
41
}
42
43
article,
44
aside,
45
details,
46
figcaption,
47
figure,
48
footer,
49
header,
50
hgroup,
51
nav,
52
section {
53
  display: block;
54
}
55
56
audio,
57
canvas,
58
video {
59
  display: inline-block;
60
  *display: inline;
61
  *zoom: 1;
62
}
63
64
audio:not([controls]) {
65
  display: none;
66
}
67
68
html {
69
  font-size: 100%;
70
  -webkit-text-size-adjust: 100%;
71
      -ms-text-size-adjust: 100%;
72
}
73
74
a:focus {
75
  outline: thin dotted #333;
76
  outline: 5px auto -webkit-focus-ring-color;
77
  outline-offset: -2px;
78
}
79
80
a:hover,
81
a:active {
82
  outline: 0;
83
}
84
85
sub,
86
sup {
87
  position: relative;
88
  font-size: 75%;
89
  line-height: 0;
90
  vertical-align: baseline;
91
}
92
93
sup {
94
  top: -0.5em;
95
}
96
97
sub {
98
  bottom: -0.25em;
99
}
100
101
img {
102
  width: auto\9;
103
  height: auto;
104
  max-width: 100%;
105
  vertical-align: middle;
106
  border: 0;
107
  -ms-interpolation-mode: bicubic;
108
}
109
110
#map_canvas img,
111
.google-maps img {
112
  max-width: none;
113
}
114
115
button,
116
input,
117
select,
118
textarea {
119
  margin: 0;
120
  font-size: 100%;
121
  vertical-align: middle;
122
}
123
124
button,
125
input {
126
  *overflow: visible;
127
  line-height: normal;
128
}
129
130
button::-moz-focus-inner,
131
input::-moz-focus-inner {
132
  padding: 0;
133
  border: 0;
134
}
135
136
button,
137
html input[type="button"],
138
input[type="reset"],
139
input[type="submit"] {
140
  cursor: pointer;
141
  -webkit-appearance: button;
142
}
143
144
label,
145
select,
146
button,
147
input[type="button"],
148
input[type="reset"],
149
input[type="submit"],
150
input[type="radio"],
151
input[type="checkbox"] {
152
  cursor: pointer;
153
}
154
155
input[type="search"] {
156
  -webkit-box-sizing: content-box;
157
     -moz-box-sizing: content-box;
158
          box-sizing: content-box;
159
  -webkit-appearance: textfield;
160
}
161
162
input[type="search"]::-webkit-search-decoration,
163
input[type="search"]::-webkit-search-cancel-button {
164
  -webkit-appearance: none;
165
}
166
167
textarea {
168
  overflow: auto;
169
  vertical-align: top;
170
}
171
172
@media print {
173
  * {
174
    color: #000 !important;
175
    text-shadow: none !important;
176
    background: transparent !important;
177
    box-shadow: none !important;
178
  }
179
  a,
180
  a:visited {
181
    text-decoration: underline;
182
  }
183
  a[href]:after {
184
    content: " (" attr(href) ")";
185
  }
186
  abbr[title]:after {
187
    content: " (" attr(title) ")";
188
  }
189
  .ir a:after,
190
  a[href^="javascript:"]:after,
191
  a[href^="#"]:after {
192
    content: "";
193
  }
194
  pre,
195
  blockquote {
196
    border: 1px solid #999;
197
    page-break-inside: avoid;
198
  }
199
  thead {
200
    display: table-header-group;
201
  }
202
  tr,
203
  img {
204
    page-break-inside: avoid;
205
  }
206
  img {
207
    max-width: 100% !important;
208
  }
209
  @page  {
210
    margin: 0.5cm;
211
  }
212
  p,
213
  h2,
214
  h3 {
215
    orphans: 3;
216
    widows: 3;
217
  }
218
  h2,
219
  h3 {
220
    page-break-after: avoid;
221
  }
222
}
223
224
body {
225
  margin: 0;
226
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
227
  font-size: 14px;
228
  line-height: 20px;
229
  color: #333333;
230
  background-color: #ffffff;
231
}
232
233
a {
234
  color: #0088cc;
235
  text-decoration: none;
236
}
237
238
a:hover,
239
a:focus {
240
  color: #005580;
241
  text-decoration: underline;
242
}
243
244
.img-rounded {
245
  -webkit-border-radius: 6px;
246
     -moz-border-radius: 6px;
247
          border-radius: 6px;
248
}
249
250
.img-polaroid {
251
  padding: 4px;
252
  background-color: #fff;
253
  border: 1px solid #ccc;
254
  border: 1px solid rgba(0, 0, 0, 0.2);
255
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
256
     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
257
          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
258
}
259
260
.img-circle {
261
  -webkit-border-radius: 500px;
262
     -moz-border-radius: 500px;
263
          border-radius: 500px;
264
}
265
266
.row {
267
  margin-left: -20px;
268
  *zoom: 1;
269
}
270
271
.row:before,
272
.row:after {
273
  display: table;
274
  line-height: 0;
275
  content: "";
276
}
277
278
.row:after {
279
  clear: both;
280
}
281
282
[class*="span"] {
283
  float: left;
284
  min-height: 1px;
285
  margin-left: 20px;
286
}
287
288
.container,
289
.navbar-static-top .container,
290
.navbar-fixed-top .container,
291
.navbar-fixed-bottom .container {
292
  width: 940px;
293
}
294
295
.span12 {
296
  width: 940px;
297
}
298
299
.span11 {
300
  width: 860px;
301
}
302
303
.span10 {
304
  width: 780px;
305
}
306
307
.span9 {
308
  width: 700px;
309
}
310
311
.span8 {
312
  width: 620px;
313
}
314
315
.span7 {
316
  width: 540px;
317
}
318
319
.span6 {
320
  width: 460px;
321
}
322
323
.span5 {
324
  width: 380px;
325
}
326
327
.span4 {
328
  width: 300px;
329
}
330
331
.span3 {
332
  width: 220px;
333
}
334
335
.span2 {
336
  width: 140px;
337
}
338
339
.span1 {
340
  width: 60px;
341
}
342
343
.offset12 {
344
  margin-left: 980px;
345
}
346
347
.offset11 {
348
  margin-left: 900px;
349
}
350
351
.offset10 {
352
  margin-left: 820px;
353
}
354
355
.offset9 {
356
  margin-left: 740px;
357
}
358
359
.offset8 {
360
  margin-left: 660px;
361
}
362
363
.offset7 {
364
  margin-left: 580px;
365
}
366
367
.offset6 {
368
  margin-left: 500px;
369
}
370
371
.offset5 {
372
  margin-left: 420px;
373
}
374
375
.offset4 {
376
  margin-left: 340px;
377
}
378
379
.offset3 {
380
  margin-left: 260px;
381
}
382
383
.offset2 {
384
  margin-left: 180px;
385
}
386
387
.offset1 {
388
  margin-left: 100px;
389
}
390
391
.row-fluid {
392
  width: 100%;
393
  *zoom: 1;
394
}
395
396
.row-fluid:before,
397
.row-fluid:after {
398
  display: table;
399
  line-height: 0;
400
  content: "";
401
}
402
403
.row-fluid:after {
404
  clear: both;
405
}
406
407
.row-fluid [class*="span"] {
408
  display: block;
409
  float: left;
410
  width: 100%;
411
  min-height: 30px;
412
  margin-left: 2.127659574468085%;
413
  *margin-left: 2.074468085106383%;
414
  -webkit-box-sizing: border-box;
415
     -moz-box-sizing: border-box;
416
          box-sizing: border-box;
417
}
418
419
.row-fluid [class*="span"]:first-child {
420
  margin-left: 0;
421
}
422
423
.row-fluid .controls-row [class*="span"] + [class*="span"] {
424
  margin-left: 2.127659574468085%;
425
}
426
427
.row-fluid .span12 {
428
  width: 100%;
429
  *width: 99.94680851063829%;
430
}
431
432
.row-fluid .span11 {
433
  width: 91.48936170212765%;
434
  *width: 91.43617021276594%;
435
}
436
437
.row-fluid .span10 {
438
  width: 82.97872340425532%;
439
  *width: 82.92553191489361%;
440
}
441
442
.row-fluid .span9 {
443
  width: 74.46808510638297%;
444
  *width: 74.41489361702126%;
445
}
446
447
.row-fluid .span8 {
448
  width: 65.95744680851064%;
449
  *width: 65.90425531914893%;
450
}
451
452
.row-fluid .span7 {
453
  width: 57.44680851063829%;
454
  *width: 57.39361702127659%;
455
}
456
457
.row-fluid .span6 {
458
  width: 48.93617021276595%;
459
  *width: 48.88297872340425%;
460
}
461
462
.row-fluid .span5 {
463
  width: 40.42553191489362%;
464
  *width: 40.37234042553192%;
465
}
466
467
.row-fluid .span4 {
468
  width: 31.914893617021278%;
469
  *width: 31.861702127659576%;
470
}
471
472
.row-fluid .span3 {
473
  width: 23.404255319148934%;
474
  *width: 23.351063829787233%;
475
}
476
477
.row-fluid .span2 {
478
  width: 14.893617021276595%;
479
  *width: 14.840425531914894%;
480
}
481
482
.row-fluid .span1 {
483
  width: 6.382978723404255%;
484
  *width: 6.329787234042553%;
485
}
486
487
.row-fluid .offset12 {
488
  margin-left: 104.25531914893617%;
489
  *margin-left: 104.14893617021275%;
490
}
491
492
.row-fluid .offset12:first-child {
493
  margin-left: 102.12765957446808%;
494
  *margin-left: 102.02127659574467%;
495
}
496
497
.row-fluid .offset11 {
498
  margin-left: 95.74468085106382%;
499
  *margin-left: 95.6382978723404%;
500
}
501
502
.row-fluid .offset11:first-child {
503
  margin-left: 93.61702127659574%;
504
  *margin-left: 93.51063829787232%;
505
}
506
507
.row-fluid .offset10 {
508
  margin-left: 87.23404255319149%;
509
  *margin-left: 87.12765957446807%;
510
}
511
512
.row-fluid .offset10:first-child {
513
  margin-left: 85.1063829787234%;
514
  *margin-left: 84.99999999999999%;
515
}
516
517
.row-fluid .offset9 {
518
  margin-left: 78.72340425531914%;
519
  *margin-left: 78.61702127659572%;
520
}
521
522
.row-fluid .offset9:first-child {
523
  margin-left: 76.59574468085106%;
524
  *margin-left: 76.48936170212764%;
525
}
526
527
.row-fluid .offset8 {
528
  margin-left: 70.2127659574468%;
529
  *margin-left: 70.10638297872339%;
530
}
531
532
.row-fluid .offset8:first-child {
533
  margin-left: 68.08510638297872%;
534
  *margin-left: 67.9787234042553%;
535
}
536
537
.row-fluid .offset7 {
538
  margin-left: 61.70212765957446%;
539
  *margin-left: 61.59574468085106%;
540
}
541
542
.row-fluid .offset7:first-child {
543
  margin-left: 59.574468085106375%;
544
  *margin-left: 59.46808510638297%;
545
}
546
547
.row-fluid .offset6 {
548
  margin-left: 53.191489361702125%;
549
  *margin-left: 53.085106382978715%;
550
}
551
552
.row-fluid .offset6:first-child {
553
  margin-left: 51.063829787234035%;
554
  *margin-left: 50.95744680851063%;
555
}
556
557
.row-fluid .offset5 {
558
  margin-left: 44.68085106382979%;
559
  *margin-left: 44.57446808510638%;
560
}
561
562
.row-fluid .offset5:first-child {
563
  margin-left: 42.5531914893617%;
564
  *margin-left: 42.4468085106383%;
565
}
566
567
.row-fluid .offset4 {
568
  margin-left: 36.170212765957444%;
569
  *margin-left: 36.06382978723405%;
570
}
571
572
.row-fluid .offset4:first-child {
573
  margin-left: 34.04255319148936%;
574
  *margin-left: 33.93617021276596%;
575
}
576
577
.row-fluid .offset3 {
578
  margin-left: 27.659574468085104%;
579
  *margin-left: 27.5531914893617%;
580
}
581
582
.row-fluid .offset3:first-child {
583
  margin-left: 25.53191489361702%;
584
  *margin-left: 25.425531914893618%;
585
}
586
587
.row-fluid .offset2 {
588
  margin-left: 19.148936170212764%;
589
  *margin-left: 19.04255319148936%;
590
}
591
592
.row-fluid .offset2:first-child {
593
  margin-left: 17.02127659574468%;
594
  *margin-left: 16.914893617021278%;
595
}
596
597
.row-fluid .offset1 {
598
  margin-left: 10.638297872340425%;
599
  *margin-left: 10.53191489361702%;
600
}
601
602
.row-fluid .offset1:first-child {
603
  margin-left: 8.51063829787234%;
604
  *margin-left: 8.404255319148938%;
605
}
606
607
[class*="span"].hide,
608
.row-fluid [class*="span"].hide {
609
  display: none;
610
}
611
612
[class*="span"].pull-right,
613
.row-fluid [class*="span"].pull-right {
614
  float: right;
615
}
616
617
.container {
618
  margin-right: auto;
619
  margin-left: auto;
620
  *zoom: 1;
621
}
622
623
.container:before,
624
.container:after {
625
  display: table;
626
  line-height: 0;
627
  content: "";
628
}
629
630
.container:after {
631
  clear: both;
632
}
633
634
.container-fluid {
635
  padding-right: 20px;
636
  padding-left: 20px;
637
  *zoom: 1;
638
}
639
640
.container-fluid:before,
641
.container-fluid:after {
642
  display: table;
643
  line-height: 0;
644
  content: "";
645
}
646
647
.container-fluid:after {
648
  clear: both;
649
}
650
651
p {
652
  margin: 0 0 10px;
653
}
654
655
.lead {
656
  margin-bottom: 20px;
657
  font-size: 21px;
658
  font-weight: 200;
659
  line-height: 30px;
660
}
661
662
small {
663
  font-size: 85%;
664
}
665
666
strong {
667
  font-weight: bold;
668
}
669
670
em {
671
  font-style: italic;
672
}
673
674
cite {
675
  font-style: normal;
676
}
677
678
.muted {
679
  color: #999999;
680
}
681
682
a.muted:hover,
683
a.muted:focus {
684
  color: #808080;
685
}
686
687
.text-warning {
688
  color: #c09853;
689
}
690
691
a.text-warning:hover,
692
a.text-warning:focus {
693
  color: #a47e3c;
694
}
695
696
.text-error {
697
  color: #b94a48;
698
}
699
700
a.text-error:hover,
701
a.text-error:focus {
702
  color: #953b39;
703
}
704
705
.text-info {
706
  color: #3a87ad;
707
}
708
709
a.text-info:hover,
710
a.text-info:focus {
711
  color: #2d6987;
712
}
713
714
.text-success {
715
  color: #468847;
716
}
717
718
a.text-success:hover,
719
a.text-success:focus {
720
  color: #356635;
721
}
722
723
.text-left {
724
  text-align: left;
725
}
726
727
.text-right {
728
  text-align: right;
729
}
730
731
.text-center {
732
  text-align: center;
733
}
734
735
h1,
736
h2,
737
h3,
738
h4,
739
h5,
740
h6 {
741
  margin: 10px 0;
742
  font-family: inherit;
743
  font-weight: bold;
744
  line-height: 20px;
745
  color: inherit;
746
  text-rendering: optimizelegibility;
747
}
748
749
h1 small,
750
h2 small,
751
h3 small,
752
h4 small,
753
h5 small,
754
h6 small {
755
  font-weight: normal;
756
  line-height: 1;
757
  color: #999999;
758
}
759
760
h1,
761
h2,
762
h3 {
763
  line-height: 40px;
764
}
765
766
h1 {
767
  font-size: 38.5px;
768
}
769
770
h2 {
771
  font-size: 31.5px;
772
}
773
774
h3 {
775
  font-size: 24.5px;
776
}
777
778
h4 {
779
  font-size: 17.5px;
780
}
781
782
h5 {
783
  font-size: 14px;
784
}
785
786
h6 {
787
  font-size: 11.9px;
788
}
789
790
h1 small {
791
  font-size: 24.5px;
792
}
793
794
h2 small {
795
  font-size: 17.5px;
796
}
797
798
h3 small {
799
  font-size: 14px;
800
}
801
802
h4 small {
803
  font-size: 14px;
804
}
805
806
.page-header {
807
  padding-bottom: 9px;
808
  margin: 20px 0 30px;
809
  border-bottom: 1px solid #eeeeee;
810
}
811
812
ul,
813
ol {
814
  padding: 0;
815
  margin: 0 0 10px 25px;
816
}
817
818
ul ul,
819
ul ol,
820
ol ol,
821
ol ul {
822
  margin-bottom: 0;
823
}
824
825
li {
826
  line-height: 20px;
827
}
828
829
ul.unstyled,
830
ol.unstyled {
831
  margin-left: 0;
832
  list-style: none;
833
}
834
835
ul.inline,
836
ol.inline {
837
  margin-left: 0;
838
  list-style: none;
839
}
840
841
ul.inline > li,
842
ol.inline > li {
843
  display: inline-block;
844
  *display: inline;
845
  padding-right: 5px;
846
  padding-left: 5px;
847
  *zoom: 1;
848
}
849
850
dl {
851
  margin-bottom: 20px;
852
}
853
854
dt,
855
dd {
856
  line-height: 20px;
857
}
858
859
dt {
860
  font-weight: bold;
861
}
862
863
dd {
864
  margin-left: 10px;
865
}
866
867
.dl-horizontal {
868
  *zoom: 1;
869
}
870
871
.dl-horizontal:before,
872
.dl-horizontal:after {
873
  display: table;
874
  line-height: 0;
875
  content: "";
876
}
877
878
.dl-horizontal:after {
879
  clear: both;
880
}
881
882
.dl-horizontal dt {
883
  float: left;
884
  width: 160px;
885
  overflow: hidden;
886
  clear: left;
887
  text-align: right;
888
  text-overflow: ellipsis;
889
  white-space: nowrap;
890
}
891
892
.dl-horizontal dd {
893
  margin-left: 180px;
894
}
895
896
hr {
897
  margin: 20px 0;
898
  border: 0;
899
  border-top: 1px solid #eeeeee;
900
  border-bottom: 1px solid #ffffff;
901
}
902
903
abbr[title],
904
abbr[data-original-title] {
905
  cursor: help;
906
  border-bottom: 1px dotted #999999;
907
}
908
909
abbr.initialism {
910
  font-size: 90%;
911
  text-transform: uppercase;
912
}
913
914
blockquote {
915
  padding: 0 0 0 15px;
916
  margin: 0 0 20px;
917
  border-left: 5px solid #eeeeee;
918
}
919
920
blockquote p {
921
  margin-bottom: 0;
922
  font-size: 17.5px;
923
  font-weight: 300;
924
  line-height: 1.25;
925
}
926
927
blockquote small {
928
  display: block;
929
  line-height: 20px;
930
  color: #999999;
931
}
932
933
blockquote small:before {
934
  content: '\2014 \00A0';
935
}
936
937
blockquote.pull-right {
938
  float: right;
939
  padding-right: 15px;
940
  padding-left: 0;
941
  border-right: 5px solid #eeeeee;
942
  border-left: 0;
943
}
944
945
blockquote.pull-right p,
946
blockquote.pull-right small {
947
  text-align: right;
948
}
949
950
blockquote.pull-right small:before {
951
  content: '';
952
}
953
954
blockquote.pull-right small:after {
955
  content: '\00A0 \2014';
956
}
957
958
q:before,
959
q:after,
960
blockquote:before,
961
blockquote:after {
962
  content: "";
963
}
964
965
address {
966
  display: block;
967
  margin-bottom: 20px;
968
  font-style: normal;
969
  line-height: 20px;
970
}
971
972
code,
973
pre {
974
  padding: 0 3px 2px;
975
  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
976
  font-size: 12px;
977
  color: #333333;
978
  -webkit-border-radius: 3px;
979
     -moz-border-radius: 3px;
980
          border-radius: 3px;
981
}
982
983
code {
984
  padding: 2px 4px;
985
  color: #d14;
986
  white-space: nowrap;
987
  background-color: #f7f7f9;
988
  border: 1px solid #e1e1e8;
989
}
990
991
pre {
992
  display: block;
993
  padding: 9.5px;
994
  margin: 0 0 10px;
995
  font-size: 13px;
996
  line-height: 20px;
997
  word-break: break-all;
998
  word-wrap: break-word;
999
  white-space: pre;
1000
  white-space: pre-wrap;
1001
  background-color: #f5f5f5;
1002
  border: 1px solid #ccc;
1003
  border: 1px solid rgba(0, 0, 0, 0.15);
1004
  -webkit-border-radius: 4px;
1005
     -moz-border-radius: 4px;
1006
          border-radius: 4px;
1007
}
1008
1009
pre.prettyprint {
1010
  margin-bottom: 20px;
1011
}
1012
1013
pre code {
1014
  padding: 0;
1015
  color: inherit;
1016
  white-space: pre;
1017
  white-space: pre-wrap;
1018
  background-color: transparent;
1019
  border: 0;
1020
}
1021
1022
.pre-scrollable {
1023
  max-height: 340px;
1024
  overflow-y: scroll;
1025
}
1026
1027
form {
1028
  margin: 0 0 20px;
1029
}
1030
1031
fieldset {
1032
  padding: 0;
1033
  margin: 0;
1034
  border: 0;
1035
}
1036
1037
legend {
1038
  display: block;
1039
  width: 100%;
1040
  padding: 0;
1041
  margin-bottom: 20px;
1042
  font-size: 21px;
1043
  line-height: 40px;
1044
  color: #333333;
1045
  border: 0;
1046
  border-bottom: 1px solid #e5e5e5;
1047
}
1048
1049
legend small {
1050
  font-size: 15px;
1051
  color: #999999;
1052
}
1053
1054
label,
1055
input,
1056
button,
1057
select,
1058
textarea {
1059
  font-size: 14px;
1060
  font-weight: normal;
1061
  line-height: 20px;
1062
}
1063
1064
input,
1065
button,
1066
select,
1067
textarea {
1068
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
1069
}
1070
1071
label {
1072
  display: block;
1073
  margin-bottom: 5px;
1074
}
1075
1076
select,
1077
textarea,
1078
input[type="text"],
1079
input[type="password"],
1080
input[type="datetime"],
1081
input[type="datetime-local"],
1082
input[type="date"],
1083
input[type="month"],
1084
input[type="time"],
1085
input[type="week"],
1086
input[type="number"],
1087
input[type="email"],
1088
input[type="url"],
1089
input[type="search"],
1090
input[type="tel"],
1091
input[type="color"],
1092
.uneditable-input {
1093
  display: inline-block;
1094
  height: 20px;
1095
  padding: 4px 6px;
1096
  margin-bottom: 10px;
1097
  font-size: 14px;
1098
  line-height: 20px;
1099
  color: #555555;
1100
  vertical-align: middle;
1101
  -webkit-border-radius: 4px;
1102
     -moz-border-radius: 4px;
1103
          border-radius: 4px;
1104
}
1105
1106
input,
1107
textarea,
1108
.uneditable-input {
1109
  width: 206px;
1110
}
1111
1112
textarea {
1113
  height: auto;
1114
}
1115
1116
textarea,
1117
input[type="text"],
1118
input[type="password"],
1119
input[type="datetime"],
1120
input[type="datetime-local"],
1121
input[type="date"],
1122
input[type="month"],
1123
input[type="time"],
1124
input[type="week"],
1125
input[type="number"],
1126
input[type="email"],
1127
input[type="url"],
1128
input[type="search"],
1129
input[type="tel"],
1130
input[type="color"],
1131
.uneditable-input {
1132
  background-color: #ffffff;
1133
  border: 1px solid #cccccc;
1134
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1135
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1136
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1137
  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
1138
     -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
1139
       -o-transition: border linear 0.2s, box-shadow linear 0.2s;
1140
          transition: border linear 0.2s, box-shadow linear 0.2s;
1141
}
1142
1143
textarea:focus,
1144
input[type="text"]:focus,
1145
input[type="password"]:focus,
1146
input[type="datetime"]:focus,
1147
input[type="datetime-local"]:focus,
1148
input[type="date"]:focus,
1149
input[type="month"]:focus,
1150
input[type="time"]:focus,
1151
input[type="week"]:focus,
1152
input[type="number"]:focus,
1153
input[type="email"]:focus,
1154
input[type="url"]:focus,
1155
input[type="search"]:focus,
1156
input[type="tel"]:focus,
1157
input[type="color"]:focus,
1158
.uneditable-input:focus {
1159
  border-color: rgba(82, 168, 236, 0.8);
1160
  outline: 0;
1161
  outline: thin dotted \9;
1162
  /* IE6-9 */
1163
1164
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
1165
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
1166
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
1167
}
1168
1169
input[type="radio"],
1170
input[type="checkbox"] {
1171
  margin: 4px 0 0;
1172
  margin-top: 1px \9;
1173
  *margin-top: 0;
1174
  line-height: normal;
1175
}
1176
1177
input[type="file"],
1178
input[type="image"],
1179
input[type="submit"],
1180
input[type="reset"],
1181
input[type="button"],
1182
input[type="radio"],
1183
input[type="checkbox"] {
1184
  width: auto;
1185
}
1186
1187
select,
1188
input[type="file"] {
1189
  height: 30px;
1190
  /* In IE7, the height of the select element cannot be changed by height, only font-size */
1191
1192
  *margin-top: 4px;
1193
  /* For IE7, add top margin to align select with labels */
1194
1195
  line-height: 30px;
1196
}
1197
1198
select {
1199
  width: 220px;
1200
  background-color: #ffffff;
1201
  border: 1px solid #cccccc;
1202
}
1203
1204
select[multiple],
1205
select[size] {
1206
  height: auto;
1207
}
1208
1209
select:focus,
1210
input[type="file"]:focus,
1211
input[type="radio"]:focus,
1212
input[type="checkbox"]:focus {
1213
  outline: thin dotted #333;
1214
  outline: 5px auto -webkit-focus-ring-color;
1215
  outline-offset: -2px;
1216
}
1217
1218
.uneditable-input,
1219
.uneditable-textarea {
1220
  color: #999999;
1221
  cursor: not-allowed;
1222
  background-color: #fcfcfc;
1223
  border-color: #cccccc;
1224
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
1225
     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
1226
          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
1227
}
1228
1229
.uneditable-input {
1230
  overflow: hidden;
1231
  white-space: nowrap;
1232
}
1233
1234
.uneditable-textarea {
1235
  width: auto;
1236
  height: auto;
1237
}
1238
1239
input:-moz-placeholder,
1240
textarea:-moz-placeholder {
1241
  color: #999999;
1242
}
1243
1244
input:-ms-input-placeholder,
1245
textarea:-ms-input-placeholder {
1246
  color: #999999;
1247
}
1248
1249
input::-webkit-input-placeholder,
1250
textarea::-webkit-input-placeholder {
1251
  color: #999999;
1252
}
1253
1254
.radio,
1255
.checkbox {
1256
  min-height: 20px;
1257
  padding-left: 20px;
1258
}
1259
1260
.radio input[type="radio"],
1261
.checkbox input[type="checkbox"] {
1262
  float: left;
1263
  margin-left: -20px;
1264
}
1265
1266
.controls > .radio:first-child,
1267
.controls > .checkbox:first-child {
1268
  padding-top: 5px;
1269
}
1270
1271
.radio.inline,
1272
.checkbox.inline {
1273
  display: inline-block;
1274
  padding-top: 5px;
1275
  margin-bottom: 0;
1276
  vertical-align: middle;
1277
}
1278
1279
.radio.inline + .radio.inline,
1280
.checkbox.inline + .checkbox.inline {
1281
  margin-left: 10px;
1282
}
1283
1284
.input-mini {
1285
  width: 60px;
1286
}
1287
1288
.input-small {
1289
  width: 90px;
1290
}
1291
1292
.input-medium {
1293
  width: 150px;
1294
}
1295
1296
.input-large {
1297
  width: 210px;
1298
}
1299
1300
.input-xlarge {
1301
  width: 270px;
1302
}
1303
1304
.input-xxlarge {
1305
  width: 530px;
1306
}
1307
1308
input[class*="span"],
1309
select[class*="span"],
1310
textarea[class*="span"],
1311
.uneditable-input[class*="span"],
1312
.row-fluid input[class*="span"],
1313
.row-fluid select[class*="span"],
1314
.row-fluid textarea[class*="span"],
1315
.row-fluid .uneditable-input[class*="span"] {
1316
  float: none;
1317
  margin-left: 0;
1318
}
1319
1320
.input-append input[class*="span"],
1321
.input-append .uneditable-input[class*="span"],
1322
.input-prepend input[class*="span"],
1323
.input-prepend .uneditable-input[class*="span"],
1324
.row-fluid input[class*="span"],
1325
.row-fluid select[class*="span"],
1326
.row-fluid textarea[class*="span"],
1327
.row-fluid .uneditable-input[class*="span"],
1328
.row-fluid .input-prepend [class*="span"],
1329
.row-fluid .input-append [class*="span"] {
1330
  display: inline-block;
1331
}
1332
1333
input,
1334
textarea,
1335
.uneditable-input {
1336
  margin-left: 0;
1337
}
1338
1339
.controls-row [class*="span"] + [class*="span"] {
1340
  margin-left: 20px;
1341
}
1342
1343
input.span12,
1344
textarea.span12,
1345
.uneditable-input.span12 {
1346
  width: 926px;
1347
}
1348
1349
input.span11,
1350
textarea.span11,
1351
.uneditable-input.span11 {
1352
  width: 846px;
1353
}
1354
1355
input.span10,
1356
textarea.span10,
1357
.uneditable-input.span10 {
1358
  width: 766px;
1359
}
1360
1361
input.span9,
1362
textarea.span9,
1363
.uneditable-input.span9 {
1364
  width: 686px;
1365
}
1366
1367
input.span8,
1368
textarea.span8,
1369
.uneditable-input.span8 {
1370
  width: 606px;
1371
}
1372
1373
input.span7,
1374
textarea.span7,
1375
.uneditable-input.span7 {
1376
  width: 526px;
1377
}
1378
1379
input.span6,
1380
textarea.span6,
1381
.uneditable-input.span6 {
1382
  width: 446px;
1383
}
1384
1385
input.span5,
1386
textarea.span5,
1387
.uneditable-input.span5 {
1388
  width: 366px;
1389
}
1390
1391
input.span4,
1392
textarea.span4,
1393
.uneditable-input.span4 {
1394
  width: 286px;
1395
}
1396
1397
input.span3,
1398
textarea.span3,
1399
.uneditable-input.span3 {
1400
  width: 206px;
1401
}
1402
1403
input.span2,
1404
textarea.span2,
1405
.uneditable-input.span2 {
1406
  width: 126px;
1407
}
1408
1409
input.span1,
1410
textarea.span1,
1411
.uneditable-input.span1 {
1412
  width: 46px;
1413
}
1414
1415
.controls-row {
1416
  *zoom: 1;
1417
}
1418
1419
.controls-row:before,
1420
.controls-row:after {
1421
  display: table;
1422
  line-height: 0;
1423
  content: "";
1424
}
1425
1426
.controls-row:after {
1427
  clear: both;
1428
}
1429
1430
.controls-row [class*="span"],
1431
.row-fluid .controls-row [class*="span"] {
1432
  float: left;
1433
}
1434
1435
.controls-row .checkbox[class*="span"],
1436
.controls-row .radio[class*="span"] {
1437
  padding-top: 5px;
1438
}
1439
1440
input[disabled],
1441
select[disabled],
1442
textarea[disabled],
1443
input[readonly],
1444
select[readonly],
1445
textarea[readonly] {
1446
  cursor: not-allowed;
1447
  background-color: #eeeeee;
1448
}
1449
1450
input[type="radio"][disabled],
1451
input[type="checkbox"][disabled],
1452
input[type="radio"][readonly],
1453
input[type="checkbox"][readonly] {
1454
  background-color: transparent;
1455
}
1456
1457
.control-group.warning .control-label,
1458
.control-group.warning .help-block,
1459
.control-group.warning .help-inline {
1460
  color: #c09853;
1461
}
1462
1463
.control-group.warning .checkbox,
1464
.control-group.warning .radio,
1465
.control-group.warning input,
1466
.control-group.warning select,
1467
.control-group.warning textarea {
1468
  color: #c09853;
1469
}
1470
1471
.control-group.warning input,
1472
.control-group.warning select,
1473
.control-group.warning textarea {
1474
  border-color: #c09853;
1475
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1476
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1477
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1478
}
1479
1480
.control-group.warning input:focus,
1481
.control-group.warning select:focus,
1482
.control-group.warning textarea:focus {
1483
  border-color: #a47e3c;
1484
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
1485
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
1486
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
1487
}
1488
1489
.control-group.warning .input-prepend .add-on,
1490
.control-group.warning .input-append .add-on {
1491
  color: #c09853;
1492
  background-color: #fcf8e3;
1493
  border-color: #c09853;
1494
}
1495
1496
.control-group.error .control-label,
1497
.control-group.error .help-block,
1498
.control-group.error .help-inline {
1499
  color: #b94a48;
1500
}
1501
1502
.control-group.error .checkbox,
1503
.control-group.error .radio,
1504
.control-group.error input,
1505
.control-group.error select,
1506
.control-group.error textarea {
1507
  color: #b94a48;
1508
}
1509
1510
.control-group.error input,
1511
.control-group.error select,
1512
.control-group.error textarea {
1513
  border-color: #b94a48;
1514
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1515
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1516
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1517
}
1518
1519
.control-group.error input:focus,
1520
.control-group.error select:focus,
1521
.control-group.error textarea:focus {
1522
  border-color: #953b39;
1523
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
1524
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
1525
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
1526
}
1527
1528
.control-group.error .input-prepend .add-on,
1529
.control-group.error .input-append .add-on {
1530
  color: #b94a48;
1531
  background-color: #f2dede;
1532
  border-color: #b94a48;
1533
}
1534
1535
.control-group.success .control-label,
1536
.control-group.success .help-block,
1537
.control-group.success .help-inline {
1538
  color: #468847;
1539
}
1540
1541
.control-group.success .checkbox,
1542
.control-group.success .radio,
1543
.control-group.success input,
1544
.control-group.success select,
1545
.control-group.success textarea {
1546
  color: #468847;
1547
}
1548
1549
.control-group.success input,
1550
.control-group.success select,
1551
.control-group.success textarea {
1552
  border-color: #468847;
1553
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1554
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1555
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1556
}
1557
1558
.control-group.success input:focus,
1559
.control-group.success select:focus,
1560
.control-group.success textarea:focus {
1561
  border-color: #356635;
1562
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
1563
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
1564
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
1565
}
1566
1567
.control-group.success .input-prepend .add-on,
1568
.control-group.success .input-append .add-on {
1569
  color: #468847;
1570
  background-color: #dff0d8;
1571
  border-color: #468847;
1572
}
1573
1574
.control-group.info .control-label,
1575
.control-group.info .help-block,
1576
.control-group.info .help-inline {
1577
  color: #3a87ad;
1578
}
1579
1580
.control-group.info .checkbox,
1581
.control-group.info .radio,
1582
.control-group.info input,
1583
.control-group.info select,
1584
.control-group.info textarea {
1585
  color: #3a87ad;
1586
}
1587
1588
.control-group.info input,
1589
.control-group.info select,
1590
.control-group.info textarea {
1591
  border-color: #3a87ad;
1592
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1593
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1594
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1595
}
1596
1597
.control-group.info input:focus,
1598
.control-group.info select:focus,
1599
.control-group.info textarea:focus {
1600
  border-color: #2d6987;
1601
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
1602
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
1603
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
1604
}
1605
1606
.control-group.info .input-prepend .add-on,
1607
.control-group.info .input-append .add-on {
1608
  color: #3a87ad;
1609
  background-color: #d9edf7;
1610
  border-color: #3a87ad;
1611
}
1612
1613
input:focus:invalid,
1614
textarea:focus:invalid,
1615
select:focus:invalid {
1616
  color: #b94a48;
1617
  border-color: #ee5f5b;
1618
}
1619
1620
input:focus:invalid:focus,
1621
textarea:focus:invalid:focus,
1622
select:focus:invalid:focus {
1623
  border-color: #e9322d;
1624
  -webkit-box-shadow: 0 0 6px #f8b9b7;
1625
     -moz-box-shadow: 0 0 6px #f8b9b7;
1626
          box-shadow: 0 0 6px #f8b9b7;
1627
}
1628
1629
.form-actions {
1630
  padding: 19px 20px 20px;
1631
  margin-top: 20px;
1632
  margin-bottom: 20px;
1633
  background-color: #f5f5f5;
1634
  border-top: 1px solid #e5e5e5;
1635
  *zoom: 1;
1636
}
1637
1638
.form-actions:before,
1639
.form-actions:after {
1640
  display: table;
1641
  line-height: 0;
1642
  content: "";
1643
}
1644
1645
.form-actions:after {
1646
  clear: both;
1647
}
1648
1649
.help-block,
1650
.help-inline {
1651
  color: #595959;
1652
}
1653
1654
.help-block {
1655
  display: block;
1656
  margin-bottom: 10px;
1657
}
1658
1659
.help-inline {
1660
  display: inline-block;
1661
  *display: inline;
1662
  padding-left: 5px;
1663
  vertical-align: middle;
1664
  *zoom: 1;
1665
}
1666
1667
.input-append,
1668
.input-prepend {
1669
  display: inline-block;
1670
  margin-bottom: 10px;
1671
  font-size: 0;
1672
  white-space: nowrap;
1673
  vertical-align: middle;
1674
}
1675
1676
.input-append input,
1677
.input-prepend input,
1678
.input-append select,
1679
.input-prepend select,
1680
.input-append .uneditable-input,
1681
.input-prepend .uneditable-input,
1682
.input-append .dropdown-menu,
1683
.input-prepend .dropdown-menu,
1684
.input-append .popover,
1685
.input-prepend .popover {
1686
  font-size: 14px;
1687
}
1688
1689
.input-append input,
1690
.input-prepend input,
1691
.input-append select,
1692
.input-prepend select,
1693
.input-append .uneditable-input,
1694
.input-prepend .uneditable-input {
1695
  position: relative;
1696
  margin-bottom: 0;
1697
  *margin-left: 0;
1698
  vertical-align: top;
1699
  -webkit-border-radius: 0 4px 4px 0;
1700
     -moz-border-radius: 0 4px 4px 0;
1701
          border-radius: 0 4px 4px 0;
1702
}
1703
1704
.input-append input:focus,
1705
.input-prepend input:focus,
1706
.input-append select:focus,
1707
.input-prepend select:focus,
1708
.input-append .uneditable-input:focus,
1709
.input-prepend .uneditable-input:focus {
1710
  z-index: 2;
1711
}
1712
1713
.input-append .add-on,
1714
.input-prepend .add-on {
1715
  display: inline-block;
1716
  width: auto;
1717
  height: 20px;
1718
  min-width: 16px;
1719
  padding: 4px 5px;
1720
  font-size: 14px;
1721
  font-weight: normal;
1722
  line-height: 20px;
1723
  text-align: center;
1724
  text-shadow: 0 1px 0 #ffffff;
1725
  background-color: #eeeeee;
1726
  border: 1px solid #ccc;
1727
}
1728
1729
.input-append .add-on,
1730
.input-prepend .add-on,
1731
.input-append .btn,
1732
.input-prepend .btn,
1733
.input-append .btn-group > .dropdown-toggle,
1734
.input-prepend .btn-group > .dropdown-toggle {
1735
  vertical-align: top;
1736
  -webkit-border-radius: 0;
1737
     -moz-border-radius: 0;
1738
          border-radius: 0;
1739
}
1740
1741
.input-append .active,
1742
.input-prepend .active {
1743
  background-color: #a9dba9;
1744
  border-color: #46a546;
1745
}
1746
1747
.input-prepend .add-on,
1748
.input-prepend .btn {
1749
  margin-right: -1px;
1750
}
1751
1752
.input-prepend .add-on:first-child,
1753
.input-prepend .btn:first-child {
1754
  -webkit-border-radius: 4px 0 0 4px;
1755
     -moz-border-radius: 4px 0 0 4px;
1756
          border-radius: 4px 0 0 4px;
1757
}
1758
1759
.input-append input,
1760
.input-append select,
1761
.input-append .uneditable-input {
1762
  -webkit-border-radius: 4px 0 0 4px;
1763
     -moz-border-radius: 4px 0 0 4px;
1764
          border-radius: 4px 0 0 4px;
1765
}
1766
1767
.input-append input + .btn-group .btn:last-child,
1768
.input-append select + .btn-group .btn:last-child,
1769
.input-append .uneditable-input + .btn-group .btn:last-child {
1770
  -webkit-border-radius: 0 4px 4px 0;
1771
     -moz-border-radius: 0 4px 4px 0;
1772
          border-radius: 0 4px 4px 0;
1773
}
1774
1775
.input-append .add-on,
1776
.input-append .btn,
1777
.input-append .btn-group {
1778
  margin-left: -1px;
1779
}
1780
1781
.input-append .add-on:last-child,
1782
.input-append .btn:last-child,
1783
.input-append .btn-group:last-child > .dropdown-toggle {
1784
  -webkit-border-radius: 0 4px 4px 0;
1785
     -moz-border-radius: 0 4px 4px 0;
1786
          border-radius: 0 4px 4px 0;
1787
}
1788
1789
.input-prepend.input-append input,
1790
.input-prepend.input-append select,
1791
.input-prepend.input-append .uneditable-input {
1792
  -webkit-border-radius: 0;
1793
     -moz-border-radius: 0;
1794
          border-radius: 0;
1795
}
1796
1797
.input-prepend.input-append input + .btn-group .btn,
1798
.input-prepend.input-append select + .btn-group .btn,
1799
.input-prepend.input-append .uneditable-input + .btn-group .btn {
1800
  -webkit-border-radius: 0 4px 4px 0;
1801
     -moz-border-radius: 0 4px 4px 0;
1802
          border-radius: 0 4px 4px 0;
1803
}
1804
1805
.input-prepend.input-append .add-on:first-child,
1806
.input-prepend.input-append .btn:first-child {
1807
  margin-right: -1px;
1808
  -webkit-border-radius: 4px 0 0 4px;
1809
     -moz-border-radius: 4px 0 0 4px;
1810
          border-radius: 4px 0 0 4px;
1811
}
1812
1813
.input-prepend.input-append .add-on:last-child,
1814
.input-prepend.input-append .btn:last-child {
1815
  margin-left: -1px;
1816
  -webkit-border-radius: 0 4px 4px 0;
1817
     -moz-border-radius: 0 4px 4px 0;
1818
          border-radius: 0 4px 4px 0;
1819
}
1820
1821
.input-prepend.input-append .btn-group:first-child {
1822
  margin-left: 0;
1823
}
1824
1825
input.search-query {
1826
  padding-right: 14px;
1827
  padding-right: 4px \9;
1828
  padding-left: 14px;
1829
  padding-left: 4px \9;
1830
  /* IE7-8 doesn't have border-radius, so don't indent the padding */
1831
1832
  margin-bottom: 0;
1833
  -webkit-border-radius: 15px;
1834
     -moz-border-radius: 15px;
1835
          border-radius: 15px;
1836
}
1837
1838
/* Allow for input prepend/append in search forms */
1839
1840
.form-search .input-append .search-query,
1841
.form-search .input-prepend .search-query {
1842
  -webkit-border-radius: 0;
1843
     -moz-border-radius: 0;
1844
          border-radius: 0;
1845
}
1846
1847
.form-search .input-append .search-query {
1848
  -webkit-border-radius: 14px 0 0 14px;
1849
     -moz-border-radius: 14px 0 0 14px;
1850
          border-radius: 14px 0 0 14px;
1851
}
1852
1853
.form-search .input-append .btn {
1854
  -webkit-border-radius: 0 14px 14px 0;
1855
     -moz-border-radius: 0 14px 14px 0;
1856
          border-radius: 0 14px 14px 0;
1857
}
1858
1859
.form-search .input-prepend .search-query {
1860
  -webkit-border-radius: 0 14px 14px 0;
1861
     -moz-border-radius: 0 14px 14px 0;
1862
          border-radius: 0 14px 14px 0;
1863
}
1864
1865
.form-search .input-prepend .btn {
1866
  -webkit-border-radius: 14px 0 0 14px;
1867
     -moz-border-radius: 14px 0 0 14px;
1868
          border-radius: 14px 0 0 14px;
1869
}
1870
1871
.form-search input,
1872
.form-inline input,
1873
.form-horizontal input,
1874
.form-search textarea,
1875
.form-inline textarea,
1876
.form-horizontal textarea,
1877
.form-search select,
1878
.form-inline select,
1879
.form-horizontal select,
1880
.form-search .help-inline,
1881
.form-inline .help-inline,
1882
.form-horizontal .help-inline,
1883
.form-search .uneditable-input,
1884
.form-inline .uneditable-input,
1885
.form-horizontal .uneditable-input,
1886
.form-search .input-prepend,
1887
.form-inline .input-prepend,
1888
.form-horizontal .input-prepend,
1889
.form-search .input-append,
1890
.form-inline .input-append,
1891
.form-horizontal .input-append {
1892
  display: inline-block;
1893
  *display: inline;
1894
  margin-bottom: 0;
1895
  vertical-align: middle;
1896
  *zoom: 1;
1897
}
1898
1899
.form-search .hide,
1900
.form-inline .hide,
1901
.form-horizontal .hide {
1902
  display: none;
1903
}
1904
1905
.form-search label,
1906
.form-inline label,
1907
.form-search .btn-group,
1908
.form-inline .btn-group {
1909
  display: inline-block;
1910
}
1911
1912
.form-search .input-append,
1913
.form-inline .input-append,
1914
.form-search .input-prepend,
1915
.form-inline .input-prepend {
1916
  margin-bottom: 0;
1917
}
1918
1919
.form-search .radio,
1920
.form-search .checkbox,
1921
.form-inline .radio,
1922
.form-inline .checkbox {
1923
  padding-left: 0;
1924
  margin-bottom: 0;
1925
  vertical-align: middle;
1926
}
1927
1928
.form-search .radio input[type="radio"],
1929
.form-search .checkbox input[type="checkbox"],
1930
.form-inline .radio input[type="radio"],
1931
.form-inline .checkbox input[type="checkbox"] {
1932
  float: left;
1933
  margin-right: 3px;
1934
  margin-left: 0;
1935
}
1936
1937
.control-group {
1938
  margin-bottom: 10px;
1939
}
1940
1941
legend + .control-group {
1942
  margin-top: 20px;
1943
  -webkit-margin-top-collapse: separate;
1944
}
1945
1946
.form-horizontal .control-group {
1947
  margin-bottom: 20px;
1948
  *zoom: 1;
1949
}
1950
1951
.form-horizontal .control-group:before,
1952
.form-horizontal .control-group:after {
1953
  display: table;
1954
  line-height: 0;
1955
  content: "";
1956
}
1957
1958
.form-horizontal .control-group:after {
1959
  clear: both;
1960
}
1961
1962
.form-horizontal .control-label {
1963
  float: left;
1964
  width: 160px;
1965
  padding-top: 5px;
1966
  text-align: right;
1967
}
1968
1969
.form-horizontal .controls {
1970
  *display: inline-block;
1971
  *padding-left: 20px;
1972
  margin-left: 180px;
1973
  *margin-left: 0;
1974
}
1975
1976
.form-horizontal .controls:first-child {
1977
  *padding-left: 180px;
1978
}
1979
1980
.form-horizontal .help-block {
1981
  margin-bottom: 0;
1982
}
1983
1984
.form-horizontal input + .help-block,
1985
.form-horizontal select + .help-block,
1986
.form-horizontal textarea + .help-block,
1987
.form-horizontal .uneditable-input + .help-block,
1988
.form-horizontal .input-prepend + .help-block,
1989
.form-horizontal .input-append + .help-block {
1990
  margin-top: 10px;
1991
}
1992
1993
.form-horizontal .form-actions {
1994
  padding-left: 180px;
1995
}
1996
1997
table {
1998
  max-width: 100%;
1999
  background-color: transparent;
2000
  border-collapse: collapse;
2001
  border-spacing: 0;
2002
}
2003
2004
.table {
2005
  width: 100%;
2006
  margin-bottom: 20px;
2007
}
2008
2009
.table th,
2010
.table td {
2011
  padding: 8px;
2012
  line-height: 20px;
2013
  text-align: left;
2014
  vertical-align: top;
2015
  border-top: 1px solid #dddddd;
2016
}
2017
2018
.table th {
2019
  font-weight: bold;
2020
}
2021
2022
.table thead th {
2023
  vertical-align: bottom;
2024
}
2025
2026
.table caption + thead tr:first-child th,
2027
.table caption + thead tr:first-child td,
2028
.table colgroup + thead tr:first-child th,
2029
.table colgroup + thead tr:first-child td,
2030
.table thead:first-child tr:first-child th,
2031
.table thead:first-child tr:first-child td {
2032
  border-top: 0;
2033
}
2034
2035
.table tbody + tbody {
2036
  border-top: 2px solid #dddddd;
2037
}
2038
2039
.table .table {
2040
  background-color: #ffffff;
2041
}
2042
2043
.table-condensed th,
2044
.table-condensed td {
2045
  padding: 4px 5px;
2046
}
2047
2048
.table-bordered {
2049
  border: 1px solid #dddddd;
2050
  border-collapse: separate;
2051
  *border-collapse: collapse;
2052
  border-left: 0;
2053
  -webkit-border-radius: 4px;
2054
     -moz-border-radius: 4px;
2055
          border-radius: 4px;
2056
}
2057
2058
.table-bordered th,
2059
.table-bordered td {
2060
  border-left: 1px solid #dddddd;
2061
}
2062
2063
.table-bordered caption + thead tr:first-child th,
2064
.table-bordered caption + tbody tr:first-child th,
2065
.table-bordered caption + tbody tr:first-child td,
2066
.table-bordered colgroup + thead tr:first-child th,
2067
.table-bordered colgroup + tbody tr:first-child th,
2068
.table-bordered colgroup + tbody tr:first-child td,
2069
.table-bordered thead:first-child tr:first-child th,
2070
.table-bordered tbody:first-child tr:first-child th,
2071
.table-bordered tbody:first-child tr:first-child td {
2072
  border-top: 0;
2073
}
2074
2075
.table-bordered thead:first-child tr:first-child > th:first-child,
2076
.table-bordered tbody:first-child tr:first-child > td:first-child,
2077
.table-bordered tbody:first-child tr:first-child > th:first-child {
2078
  -webkit-border-top-left-radius: 4px;
2079
          border-top-left-radius: 4px;
2080
  -moz-border-radius-topleft: 4px;
2081
}
2082
2083
.table-bordered thead:first-child tr:first-child > th:last-child,
2084
.table-bordered tbody:first-child tr:first-child > td:last-child,
2085
.table-bordered tbody:first-child tr:first-child > th:last-child {
2086
  -webkit-border-top-right-radius: 4px;
2087
          border-top-right-radius: 4px;
2088
  -moz-border-radius-topright: 4px;
2089
}
2090
2091
.table-bordered thead:last-child tr:last-child > th:first-child,
2092
.table-bordered tbody:last-child tr:last-child > td:first-child,
2093
.table-bordered tbody:last-child tr:last-child > th:first-child,
2094
.table-bordered tfoot:last-child tr:last-child > td:first-child,
2095
.table-bordered tfoot:last-child tr:last-child > th:first-child {
2096
  -webkit-border-bottom-left-radius: 4px;
2097
          border-bottom-left-radius: 4px;
2098
  -moz-border-radius-bottomleft: 4px;
2099
}
2100
2101
.table-bordered thead:last-child tr:last-child > th:last-child,
2102
.table-bordered tbody:last-child tr:last-child > td:last-child,
2103
.table-bordered tbody:last-child tr:last-child > th:last-child,
2104
.table-bordered tfoot:last-child tr:last-child > td:last-child,
2105
.table-bordered tfoot:last-child tr:last-child > th:last-child {
2106
  -webkit-border-bottom-right-radius: 4px;
2107
          border-bottom-right-radius: 4px;
2108
  -moz-border-radius-bottomright: 4px;
2109
}
2110
2111
.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
2112
  -webkit-border-bottom-left-radius: 0;
2113
          border-bottom-left-radius: 0;
2114
  -moz-border-radius-bottomleft: 0;
2115
}
2116
2117
.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
2118
  -webkit-border-bottom-right-radius: 0;
2119
          border-bottom-right-radius: 0;
2120
  -moz-border-radius-bottomright: 0;
2121
}
2122
2123
.table-bordered caption + thead tr:first-child th:first-child,
2124
.table-bordered caption + tbody tr:first-child td:first-child,
2125
.table-bordered colgroup + thead tr:first-child th:first-child,
2126
.table-bordered colgroup + tbody tr:first-child td:first-child {
2127
  -webkit-border-top-left-radius: 4px;
2128
          border-top-left-radius: 4px;
2129
  -moz-border-radius-topleft: 4px;
2130
}
2131
2132
.table-bordered caption + thead tr:first-child th:last-child,
2133
.table-bordered caption + tbody tr:first-child td:last-child,
2134
.table-bordered colgroup + thead tr:first-child th:last-child,
2135
.table-bordered colgroup + tbody tr:first-child td:last-child {
2136
  -webkit-border-top-right-radius: 4px;
2137
          border-top-right-radius: 4px;
2138
  -moz-border-radius-topright: 4px;
2139
}
2140
2141
.table-striped tbody > tr:nth-child(odd) > td,
2142
.table-striped tbody > tr:nth-child(odd) > th {
2143
  background-color: #f9f9f9;
2144
}
2145
2146
.table-hover tbody tr:hover > td,
2147
.table-hover tbody tr:hover > th {
2148
  background-color: #f5f5f5;
2149
}
2150
2151
table td[class*="span"],
2152
table th[class*="span"],
2153
.row-fluid table td[class*="span"],
2154
.row-fluid table th[class*="span"] {
2155
  display: table-cell;
2156
  float: none;
2157
  margin-left: 0;
2158
}
2159
2160
.table td.span1,
2161
.table th.span1 {
2162
  float: none;
2163
  width: 44px;
2164
  margin-left: 0;
2165
}
2166
2167
.table td.span2,
2168
.table th.span2 {
2169
  float: none;
2170
  width: 124px;
2171
  margin-left: 0;
2172
}
2173
2174
.table td.span3,
2175
.table th.span3 {
2176
  float: none;
2177
  width: 204px;
2178
  margin-left: 0;
2179
}
2180
2181
.table td.span4,
2182
.table th.span4 {
2183
  float: none;
2184
  width: 284px;
2185
  margin-left: 0;
2186
}
2187
2188
.table td.span5,
2189
.table th.span5 {
2190
  float: none;
2191
  width: 364px;
2192
  margin-left: 0;
2193
}
2194
2195
.table td.span6,
2196
.table th.span6 {
2197
  float: none;
2198
  width: 444px;
2199
  margin-left: 0;
2200
}
2201
2202
.table td.span7,
2203
.table th.span7 {
2204
  float: none;
2205
  width: 524px;
2206
  margin-left: 0;
2207
}
2208
2209
.table td.span8,
2210
.table th.span8 {
2211
  float: none;
2212
  width: 604px;
2213
  margin-left: 0;
2214
}
2215
2216
.table td.span9,
2217
.table th.span9 {
2218
  float: none;
2219
  width: 684px;
2220
  margin-left: 0;
2221
}
2222
2223
.table td.span10,
2224
.table th.span10 {
2225
  float: none;
2226
  width: 764px;
2227
  margin-left: 0;
2228
}
2229
2230
.table td.span11,
2231
.table th.span11 {
2232
  float: none;
2233
  width: 844px;
2234
  margin-left: 0;
2235
}
2236
2237
.table td.span12,
2238
.table th.span12 {
2239
  float: none;
2240
  width: 924px;
2241
  margin-left: 0;
2242
}
2243
2244
.table tbody tr.success > td {
2245
  background-color: #dff0d8;
2246
}
2247
2248
.table tbody tr.error > td {
2249
  background-color: #f2dede;
2250
}
2251
2252
.table tbody tr.warning > td {
2253
  background-color: #fcf8e3;
2254
}
2255
2256
.table tbody tr.info > td {
2257
  background-color: #d9edf7;
2258
}
2259
2260
.table-hover tbody tr.success:hover > td {
2261
  background-color: #d0e9c6;
2262
}
2263
2264
.table-hover tbody tr.error:hover > td {
2265
  background-color: #ebcccc;
2266
}
2267
2268
.table-hover tbody tr.warning:hover > td {
2269
  background-color: #faf2cc;
2270
}
2271
2272
.table-hover tbody tr.info:hover > td {
2273
  background-color: #c4e3f3;
2274
}
2275
2276
[class^="icon-"],
2277
[class*=" icon-"] {
2278
  display: inline-block;
2279
  width: 14px;
2280
  height: 14px;
2281
  margin-top: 1px;
2282
  *margin-right: .3em;
2283
  line-height: 14px;
2284
  vertical-align: text-top;
2285
  background-image: url("../img/glyphicons-halflings.png");
2286
  background-position: 14px 14px;
2287
  background-repeat: no-repeat;
2288
}
2289
2290
/* White icons with optional class, or on hover/focus/active states of certain elements */
2291
2292
.icon-white,
2293
.nav-pills > .active > a > [class^="icon-"],
2294
.nav-pills > .active > a > [class*=" icon-"],
2295
.nav-list > .active > a > [class^="icon-"],
2296
.nav-list > .active > a > [class*=" icon-"],
2297
.navbar-inverse .nav > .active > a > [class^="icon-"],
2298
.navbar-inverse .nav > .active > a > [class*=" icon-"],
2299
.dropdown-menu > li > a:hover > [class^="icon-"],
2300
.dropdown-menu > li > a:focus > [class^="icon-"],
2301
.dropdown-menu > li > a:hover > [class*=" icon-"],
2302
.dropdown-menu > li > a:focus > [class*=" icon-"],
2303
.dropdown-menu > .active > a > [class^="icon-"],
2304
.dropdown-menu > .active > a > [class*=" icon-"],
2305
.dropdown-submenu:hover > a > [class^="icon-"],
2306
.dropdown-submenu:focus > a > [class^="icon-"],
2307
.dropdown-submenu:hover > a > [class*=" icon-"],
2308
.dropdown-submenu:focus > a > [class*=" icon-"] {
2309
  background-image: url("../img/glyphicons-halflings-white.png");
2310
}
2311
2312
.icon-glass {
2313
  background-position: 0      0;
2314
}
2315
2316
.icon-music {
2317
  background-position: -24px 0;
2318
}
2319
2320
.icon-search {
2321
  background-position: -48px 0;
2322
}
2323
2324
.icon-envelope {
2325
  background-position: -72px 0;
2326
}
2327
2328
.icon-heart {
2329
  background-position: -96px 0;
2330
}
2331
2332
.icon-star {
2333
  background-position: -120px 0;
2334
}
2335
2336
.icon-star-empty {
2337
  background-position: -144px 0;
2338
}
2339
2340
.icon-user {
2341
  background-position: -168px 0;
2342
}
2343
2344
.icon-film {
2345
  background-position: -192px 0;
2346
}
2347
2348
.icon-th-large {
2349
  background-position: -216px 0;
2350
}
2351
2352
.icon-th {
2353
  background-position: -240px 0;
2354
}
2355
2356
.icon-th-list {
2357
  background-position: -264px 0;
2358
}
2359
2360
.icon-ok {
2361
  background-position: -288px 0;
2362
}
2363
2364
.icon-remove {
2365
  background-position: -312px 0;
2366
}
2367
2368
.icon-zoom-in {
2369
  background-position: -336px 0;
2370
}
2371
2372
.icon-zoom-out {
2373
  background-position: -360px 0;
2374
}
2375
2376
.icon-off {
2377
  background-position: -384px 0;
2378
}
2379
2380
.icon-signal {
2381
  background-position: -408px 0;
2382
}
2383
2384
.icon-cog {
2385
  background-position: -432px 0;
2386
}
2387
2388
.icon-trash {
2389
  background-position: -456px 0;
2390
}
2391
2392
.icon-home {
2393
  background-position: 0 -24px;
2394
}
2395
2396
.icon-file {
2397
  background-position: -24px -24px;
2398
}
2399
2400
.icon-time {
2401
  background-position: -48px -24px;
2402
}
2403
2404
.icon-road {
2405
  background-position: -72px -24px;
2406
}
2407
2408
.icon-download-alt {
2409
  background-position: -96px -24px;
2410
}
2411
2412
.icon-download {
2413
  background-position: -120px -24px;
2414
}
2415
2416
.icon-upload {
2417
  background-position: -144px -24px;
2418
}
2419
2420
.icon-inbox {
2421
  background-position: -168px -24px;
2422
}
2423
2424
.icon-play-circle {
2425
  background-position: -192px -24px;
2426
}
2427
2428
.icon-repeat {
2429
  background-position: -216px -24px;
2430
}
2431
2432
.icon-refresh {
2433
  background-position: -240px -24px;
2434
}
2435
2436
.icon-list-alt {
2437
  background-position: -264px -24px;
2438
}
2439
2440
.icon-lock {
2441
  background-position: -287px -24px;
2442
}
2443
2444
.icon-flag {
2445
  background-position: -312px -24px;
2446
}
2447
2448
.icon-headphones {
2449
  background-position: -336px -24px;
2450
}
2451
2452
.icon-volume-off {
2453
  background-position: -360px -24px;
2454
}
2455
2456
.icon-volume-down {
2457
  background-position: -384px -24px;
2458
}
2459
2460
.icon-volume-up {
2461
  background-position: -408px -24px;
2462
}
2463
2464
.icon-qrcode {
2465
  background-position: -432px -24px;
2466
}
2467
2468
.icon-barcode {
2469
  background-position: -456px -24px;
2470
}
2471
2472
.icon-tag {
2473
  background-position: 0 -48px;
2474
}
2475
2476
.icon-tags {
2477
  background-position: -25px -48px;
2478
}
2479
2480
.icon-book {
2481
  background-position: -48px -48px;
2482
}
2483
2484
.icon-bookmark {
2485
  background-position: -72px -48px;
2486
}
2487
2488
.icon-print {
2489
  background-position: -96px -48px;
2490
}
2491
2492
.icon-camera {
2493
  background-position: -120px -48px;
2494
}
2495
2496
.icon-font {
2497
  background-position: -144px -48px;
2498
}
2499
2500
.icon-bold {
2501
  background-position: -167px -48px;
2502
}
2503
2504
.icon-italic {
2505
  background-position: -192px -48px;
2506
}
2507
2508
.icon-text-height {
2509
  background-position: -216px -48px;
2510
}
2511
2512
.icon-text-width {
2513
  background-position: -240px -48px;
2514
}
2515
2516
.icon-align-left {
2517
  background-position: -264px -48px;
2518
}
2519
2520
.icon-align-center {
2521
  background-position: -288px -48px;
2522
}
2523
2524
.icon-align-right {
2525
  background-position: -312px -48px;
2526
}
2527
2528
.icon-align-justify {
2529
  background-position: -336px -48px;
2530
}
2531
2532
.icon-list {
2533
  background-position: -360px -48px;
2534
}
2535
2536
.icon-indent-left {
2537
  background-position: -384px -48px;
2538
}
2539
2540
.icon-indent-right {
2541
  background-position: -408px -48px;
2542
}
2543
2544
.icon-facetime-video {
2545
  background-position: -432px -48px;
2546
}
2547
2548
.icon-picture {
2549
  background-position: -456px -48px;
2550
}
2551
2552
.icon-pencil {
2553
  background-position: 0 -72px;
2554
}
2555
2556
.icon-map-marker {
2557
  background-position: -24px -72px;
2558
}
2559
2560
.icon-adjust {
2561
  background-position: -48px -72px;
2562
}
2563
2564
.icon-tint {
2565
  background-position: -72px -72px;
2566
}
2567
2568
.icon-edit {
2569
  background-position: -96px -72px;
2570
}
2571
2572
.icon-share {
2573
  background-position: -120px -72px;
2574
}
2575
2576
.icon-check {
2577
  background-position: -144px -72px;
2578
}
2579
2580
.icon-move {
2581
  background-position: -168px -72px;
2582
}
2583
2584
.icon-step-backward {
2585
  background-position: -192px -72px;
2586
}
2587
2588
.icon-fast-backward {
2589
  background-position: -216px -72px;
2590
}
2591
2592
.icon-backward {
2593
  background-position: -240px -72px;
2594
}
2595
2596
.icon-play {
2597
  background-position: -264px -72px;
2598
}
2599
2600
.icon-pause {
2601
  background-position: -288px -72px;
2602
}
2603
2604
.icon-stop {
2605
  background-position: -312px -72px;
2606
}
2607
2608
.icon-forward {
2609
  background-position: -336px -72px;
2610
}
2611
2612
.icon-fast-forward {
2613
  background-position: -360px -72px;
2614
}
2615
2616
.icon-step-forward {
2617
  background-position: -384px -72px;
2618
}
2619
2620
.icon-eject {
2621
  background-position: -408px -72px;
2622
}
2623
2624
.icon-chevron-left {
2625
  background-position: -432px -72px;
2626
}
2627
2628
.icon-chevron-right {
2629
  background-position: -456px -72px;
2630
}
2631
2632
.icon-plus-sign {
2633
  background-position: 0 -96px;
2634
}
2635
2636
.icon-minus-sign {
2637
  background-position: -24px -96px;
2638
}
2639
2640
.icon-remove-sign {
2641
  background-position: -48px -96px;
2642
}
2643
2644
.icon-ok-sign {
2645
  background-position: -72px -96px;
2646
}
2647
2648
.icon-question-sign {
2649
  background-position: -96px -96px;
2650
}
2651
2652
.icon-info-sign {
2653
  background-position: -120px -96px;
2654
}
2655
2656
.icon-screenshot {
2657
  background-position: -144px -96px;
2658
}
2659
2660
.icon-remove-circle {
2661
  background-position: -168px -96px;
2662
}
2663
2664
.icon-ok-circle {
2665
  background-position: -192px -96px;
2666
}
2667
2668
.icon-ban-circle {
2669
  background-position: -216px -96px;
2670
}
2671
2672
.icon-arrow-left {
2673
  background-position: -240px -96px;
2674
}
2675
2676
.icon-arrow-right {
2677
  background-position: -264px -96px;
2678
}
2679
2680
.icon-arrow-up {
2681
  background-position: -289px -96px;
2682
}
2683
2684
.icon-arrow-down {
2685
  background-position: -312px -96px;
2686
}
2687
2688
.icon-share-alt {
2689
  background-position: -336px -96px;
2690
}
2691
2692
.icon-resize-full {
2693
  background-position: -360px -96px;
2694
}
2695
2696
.icon-resize-small {
2697
  background-position: -384px -96px;
2698
}
2699
2700
.icon-plus {
2701
  background-position: -408px -96px;
2702
}
2703
2704
.icon-minus {
2705
  background-position: -433px -96px;
2706
}
2707
2708
.icon-asterisk {
2709
  background-position: -456px -96px;
2710
}
2711
2712
.icon-exclamation-sign {
2713
  background-position: 0 -120px;
2714
}
2715
2716
.icon-gift {
2717
  background-position: -24px -120px;
2718
}
2719
2720
.icon-leaf {
2721
  background-position: -48px -120px;
2722
}
2723
2724
.icon-fire {
2725
  background-position: -72px -120px;
2726
}
2727
2728
.icon-eye-open {
2729
  background-position: -96px -120px;
2730
}
2731
2732
.icon-eye-close {
2733
  background-position: -120px -120px;
2734
}
2735
2736
.icon-warning-sign {
2737
  background-position: -144px -120px;
2738
}
2739
2740
.icon-plane {
2741
  background-position: -168px -120px;
2742
}
2743
2744
.icon-calendar {
2745
  background-position: -192px -120px;
2746
}
2747
2748
.icon-random {
2749
  width: 16px;
2750
  background-position: -216px -120px;
2751
}
2752
2753
.icon-comment {
2754
  background-position: -240px -120px;
2755
}
2756
2757
.icon-magnet {
2758
  background-position: -264px -120px;
2759
}
2760
2761
.icon-chevron-up {
2762
  background-position: -288px -120px;
2763
}
2764
2765
.icon-chevron-down {
2766
  background-position: -313px -119px;
2767
}
2768
2769
.icon-retweet {
2770
  background-position: -336px -120px;
2771
}
2772
2773
.icon-shopping-cart {
2774
  background-position: -360px -120px;
2775
}
2776
2777
.icon-folder-close {
2778
  width: 16px;
2779
  background-position: -384px -120px;
2780
}
2781
2782
.icon-folder-open {
2783
  width: 16px;
2784
  background-position: -408px -120px;
2785
}
2786
2787
.icon-resize-vertical {
2788
  background-position: -432px -119px;
2789
}
2790
2791
.icon-resize-horizontal {
2792
  background-position: -456px -118px;
2793
}
2794
2795
.icon-hdd {
2796
  background-position: 0 -144px;
2797
}
2798
2799
.icon-bullhorn {
2800
  background-position: -24px -144px;
2801
}
2802
2803
.icon-bell {
2804
  background-position: -48px -144px;
2805
}
2806
2807
.icon-certificate {
2808
  background-position: -72px -144px;
2809
}
2810
2811
.icon-thumbs-up {
2812
  background-position: -96px -144px;
2813
}
2814
2815
.icon-thumbs-down {
2816
  background-position: -120px -144px;
2817
}
2818
2819
.icon-hand-right {
2820
  background-position: -144px -144px;
2821
}
2822
2823
.icon-hand-left {
2824
  background-position: -168px -144px;
2825
}
2826
2827
.icon-hand-up {
2828
  background-position: -192px -144px;
2829
}
2830
2831
.icon-hand-down {
2832
  background-position: -216px -144px;
2833
}
2834
2835
.icon-circle-arrow-right {
2836
  background-position: -240px -144px;
2837
}
2838
2839
.icon-circle-arrow-left {
2840
  background-position: -264px -144px;
2841
}
2842
2843
.icon-circle-arrow-up {
2844
  background-position: -288px -144px;
2845
}
2846
2847
.icon-circle-arrow-down {
2848
  background-position: -312px -144px;
2849
}
2850
2851
.icon-globe {
2852
  background-position: -336px -144px;
2853
}
2854
2855
.icon-wrench {
2856
  background-position: -360px -144px;
2857
}
2858
2859
.icon-tasks {
2860
  background-position: -384px -144px;
2861
}
2862
2863
.icon-filter {
2864
  background-position: -408px -144px;
2865
}
2866
2867
.icon-briefcase {
2868
  background-position: -432px -144px;
2869
}
2870
2871
.icon-fullscreen {
2872
  background-position: -456px -144px;
2873
}
2874
2875
.dropup,
2876
.dropdown {
2877
  position: relative;
2878
}
2879
2880
.dropdown-toggle {
2881
  *margin-bottom: -3px;
2882
}
2883
2884
.dropdown-toggle:active,
2885
.open .dropdown-toggle {
2886
  outline: 0;
2887
}
2888
2889
.caret {
2890
  display: inline-block;
2891
  width: 0;
2892
  height: 0;
2893
  vertical-align: top;
2894
  border-top: 4px solid #000000;
2895
  border-right: 4px solid transparent;
2896
  border-left: 4px solid transparent;
2897
  content: "";
2898
}
2899
2900
.dropdown .caret {
2901
  margin-top: 8px;
2902
  margin-left: 2px;
2903
}
2904
2905
.dropdown-menu {
2906
  position: absolute;
2907
  top: 100%;
2908
  left: 0;
2909
  z-index: 1000;
2910
  display: none;
2911
  float: left;
2912
  min-width: 160px;
2913
  padding: 5px 0;
2914
  margin: 2px 0 0;
2915
  list-style: none;
2916
  background-color: #ffffff;
2917
  border: 1px solid #ccc;
2918
  border: 1px solid rgba(0, 0, 0, 0.2);
2919
  *border-right-width: 2px;
2920
  *border-bottom-width: 2px;
2921
  -webkit-border-radius: 6px;
2922
     -moz-border-radius: 6px;
2923
          border-radius: 6px;
2924
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
2925
     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
2926
          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
2927
  -webkit-background-clip: padding-box;
2928
     -moz-background-clip: padding;
2929
          background-clip: padding-box;
2930
}
2931
2932
.dropdown-menu.pull-right {
2933
  right: 0;
2934
  left: auto;
2935
}
2936
2937
.dropdown-menu .divider {
2938
  *width: 100%;
2939
  height: 1px;
2940
  margin: 9px 1px;
2941
  *margin: -5px 0 5px;
2942
  overflow: hidden;
2943
  background-color: #e5e5e5;
2944
  border-bottom: 1px solid #ffffff;
2945
}
2946
2947
.dropdown-menu > li > a {
2948
  display: block;
2949
  padding: 3px 20px;
2950
  clear: both;
2951
  font-weight: normal;
2952
  line-height: 20px;
2953
  color: #333333;
2954
  white-space: nowrap;
2955
}
2956
2957
.dropdown-menu > li > a:hover,
2958
.dropdown-menu > li > a:focus,
2959
.dropdown-submenu:hover > a,
2960
.dropdown-submenu:focus > a {
2961
  color: #ffffff;
2962
  text-decoration: none;
2963
  background-color: #0081c2;
2964
  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
2965
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
2966
  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
2967
  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
2968
  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
2969
  background-repeat: repeat-x;
2970
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
2971
}
2972
2973
.dropdown-menu > .active > a,
2974
.dropdown-menu > .active > a:hover,
2975
.dropdown-menu > .active > a:focus {
2976
  color: #ffffff;
2977
  text-decoration: none;
2978
  background-color: #0081c2;
2979
  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
2980
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
2981
  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
2982
  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
2983
  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
2984
  background-repeat: repeat-x;
2985
  outline: 0;
2986
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
2987
}
2988
2989
.dropdown-menu > .disabled > a,
2990
.dropdown-menu > .disabled > a:hover,
2991
.dropdown-menu > .disabled > a:focus {
2992
  color: #999999;
2993
}
2994
2995
.dropdown-menu > .disabled > a:hover,
2996
.dropdown-menu > .disabled > a:focus {
2997
  text-decoration: none;
2998
  cursor: default;
2999
  background-color: transparent;
3000
  background-image: none;
3001
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
3002
}
3003
3004
.open {
3005
  *z-index: 1000;
3006
}
3007
3008
.open > .dropdown-menu {
3009
  display: block;
3010
}
3011
3012
.dropdown-backdrop {
3013
  position: fixed;
3014
  top: 0;
3015
  right: 0;
3016
  bottom: 0;
3017
  left: 0;
3018
  z-index: 990;
3019
}
3020
3021
.pull-right > .dropdown-menu {
3022
  right: 0;
3023
  left: auto;
3024
}
3025
3026
.dropup .caret,
3027
.navbar-fixed-bottom .dropdown .caret {
3028
  border-top: 0;
3029
  border-bottom: 4px solid #000000;
3030
  content: "";
3031
}
3032
3033
.dropup .dropdown-menu,
3034
.navbar-fixed-bottom .dropdown .dropdown-menu {
3035
  top: auto;
3036
  bottom: 100%;
3037
  margin-bottom: 1px;
3038
}
3039
3040
.dropdown-submenu {
3041
  position: relative;
3042
}
3043
3044
.dropdown-submenu > .dropdown-menu {
3045
  top: 0;
3046
  left: 100%;
3047
  margin-top: -6px;
3048
  margin-left: -1px;
3049
  -webkit-border-radius: 0 6px 6px 6px;
3050
     -moz-border-radius: 0 6px 6px 6px;
3051
          border-radius: 0 6px 6px 6px;
3052
}
3053
3054
.dropdown-submenu:hover > .dropdown-menu {
3055
  display: block;
3056
}
3057
3058
.dropup .dropdown-submenu > .dropdown-menu {
3059
  top: auto;
3060
  bottom: 0;
3061
  margin-top: 0;
3062
  margin-bottom: -2px;
3063
  -webkit-border-radius: 5px 5px 5px 0;
3064
     -moz-border-radius: 5px 5px 5px 0;
3065
          border-radius: 5px 5px 5px 0;
3066
}
3067
3068
.dropdown-submenu > a:after {
3069
  display: block;
3070
  float: right;
3071
  width: 0;
3072
  height: 0;
3073
  margin-top: 5px;
3074
  margin-right: -10px;
3075
  border-color: transparent;
3076
  border-left-color: #cccccc;
3077
  border-style: solid;
3078
  border-width: 5px 0 5px 5px;
3079
  content: " ";
3080
}
3081
3082
.dropdown-submenu:hover > a:after {
3083
  border-left-color: #ffffff;
3084
}
3085
3086
.dropdown-submenu.pull-left {
3087
  float: none;
3088
}
3089
3090
.dropdown-submenu.pull-left > .dropdown-menu {
3091
  left: -100%;
3092
  margin-left: 10px;
3093
  -webkit-border-radius: 6px 0 6px 6px;
3094
     -moz-border-radius: 6px 0 6px 6px;
3095
          border-radius: 6px 0 6px 6px;
3096
}
3097
3098
.dropdown .dropdown-menu .nav-header {
3099
  padding-right: 20px;
3100
  padding-left: 20px;
3101
}
3102
3103
.typeahead {
3104
  z-index: 1051;
3105
  margin-top: 2px;
3106
  -webkit-border-radius: 4px;
3107
     -moz-border-radius: 4px;
3108
          border-radius: 4px;
3109
}
3110
3111
.well {
3112
  min-height: 20px;
3113
  padding: 19px;
3114
  margin-bottom: 20px;
3115
  background-color: #f5f5f5;
3116
  border: 1px solid #e3e3e3;
3117
  -webkit-border-radius: 4px;
3118
     -moz-border-radius: 4px;
3119
          border-radius: 4px;
3120
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
3121
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
3122
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
3123
}
3124
3125
.well blockquote {
3126
  border-color: #ddd;
3127
  border-color: rgba(0, 0, 0, 0.15);
3128
}
3129
3130
.well-large {
3131
  padding: 24px;
3132
  -webkit-border-radius: 6px;
3133
     -moz-border-radius: 6px;
3134
          border-radius: 6px;
3135
}
3136
3137
.well-small {
3138
  padding: 9px;
3139
  -webkit-border-radius: 3px;
3140
     -moz-border-radius: 3px;
3141
          border-radius: 3px;
3142
}
3143
3144
.fade {
3145
  opacity: 0;
3146
  -webkit-transition: opacity 0.15s linear;
3147
     -moz-transition: opacity 0.15s linear;
3148
       -o-transition: opacity 0.15s linear;
3149
          transition: opacity 0.15s linear;
3150
}
3151
3152
.fade.in {
3153
  opacity: 1;
3154
}
3155
3156
.collapse {
3157
  position: relative;
3158
  height: 0;
3159
  overflow: hidden;
3160
  -webkit-transition: height 0.35s ease;
3161
     -moz-transition: height 0.35s ease;
3162
       -o-transition: height 0.35s ease;
3163
          transition: height 0.35s ease;
3164
}
3165
3166
.collapse.in {
3167
  height: auto;
3168
}
3169
3170
.close {
3171
  float: right;
3172
  font-size: 20px;
3173
  font-weight: bold;
3174
  line-height: 20px;
3175
  color: #000000;
3176
  text-shadow: 0 1px 0 #ffffff;
3177
  opacity: 0.2;
3178
  filter: alpha(opacity=20);
3179
}
3180
3181
.close:hover,
3182
.close:focus {
3183
  color: #000000;
3184
  text-decoration: none;
3185
  cursor: pointer;
3186
  opacity: 0.4;
3187
  filter: alpha(opacity=40);
3188
}
3189
3190
button.close {
3191
  padding: 0;
3192
  cursor: pointer;
3193
  background: transparent;
3194
  border: 0;
3195
  -webkit-appearance: none;
3196
}
3197
3198
.btn {
3199
  display: inline-block;
3200
  *display: inline;
3201
  padding: 4px 12px;
3202
  margin-bottom: 0;
3203
  *margin-left: .3em;
3204
  font-size: 14px;
3205
  line-height: 20px;
3206
  color: #333333;
3207
  text-align: center;
3208
  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
3209
  vertical-align: middle;
3210
  cursor: pointer;
3211
  background-color: #f5f5f5;
3212
  *background-color: #e6e6e6;
3213
  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
3214
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
3215
  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
3216
  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
3217
  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
3218
  background-repeat: repeat-x;
3219
  border: 1px solid #cccccc;
3220
  *border: 0;
3221
  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
3222
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3223
  border-bottom-color: #b3b3b3;
3224
  -webkit-border-radius: 4px;
3225
     -moz-border-radius: 4px;
3226
          border-radius: 4px;
3227
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
3228
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
3229
  *zoom: 1;
3230
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
3231
     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
3232
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
3233
}
3234
3235
.btn:hover,
3236
.btn:focus,
3237
.btn:active,
3238
.btn.active,
3239
.btn.disabled,
3240
.btn[disabled] {
3241
  color: #333333;
3242
  background-color: #e6e6e6;
3243
  *background-color: #d9d9d9;
3244
}
3245
3246
.btn:active,
3247
.btn.active {
3248
  background-color: #cccccc \9;
3249
}
3250
3251
.btn:first-child {
3252
  *margin-left: 0;
3253
}
3254
3255
.btn:hover,
3256
.btn:focus {
3257
  color: #333333;
3258
  text-decoration: none;
3259
  background-position: 0 -15px;
3260
  -webkit-transition: background-position 0.1s linear;
3261
     -moz-transition: background-position 0.1s linear;
3262
       -o-transition: background-position 0.1s linear;
3263
          transition: background-position 0.1s linear;
3264
}
3265
3266
.btn:focus {
3267
  outline: thin dotted #333;
3268
  outline: 5px auto -webkit-focus-ring-color;
3269
  outline-offset: -2px;
3270
}
3271
3272
.btn.active,
3273
.btn:active {
3274
  background-image: none;
3275
  outline: 0;
3276
  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
3277
     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
3278
          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
3279
}
3280
3281
.btn.disabled,
3282
.btn[disabled] {
3283
  cursor: default;
3284
  background-image: none;
3285
  opacity: 0.65;
3286
  filter: alpha(opacity=65);
3287
  -webkit-box-shadow: none;
3288
     -moz-box-shadow: none;
3289
          box-shadow: none;
3290
}
3291
3292
.btn-large {
3293
  padding: 11px 19px;
3294
  font-size: 17.5px;
3295
  -webkit-border-radius: 6px;
3296
     -moz-border-radius: 6px;
3297
          border-radius: 6px;
3298
}
3299
3300
.btn-large [class^="icon-"],
3301
.btn-large [class*=" icon-"] {
3302
  margin-top: 4px;
3303
}
3304
3305
.btn-small {
3306
  padding: 2px 10px;
3307
  font-size: 11.9px;
3308
  -webkit-border-radius: 3px;
3309
     -moz-border-radius: 3px;
3310
          border-radius: 3px;
3311
}
3312
3313
.btn-small [class^="icon-"],
3314
.btn-small [class*=" icon-"] {
3315
  margin-top: 0;
3316
}
3317
3318
.btn-mini [class^="icon-"],
3319
.btn-mini [class*=" icon-"] {
3320
  margin-top: -1px;
3321
}
3322
3323
.btn-mini {
3324
  padding: 0 6px;
3325
  font-size: 10.5px;
3326
  -webkit-border-radius: 3px;
3327
     -moz-border-radius: 3px;
3328
          border-radius: 3px;
3329
}
3330
3331
.btn-block {
3332
  display: block;
3333
  width: 100%;
3334
  padding-right: 0;
3335
  padding-left: 0;
3336
  -webkit-box-sizing: border-box;
3337
     -moz-box-sizing: border-box;
3338
          box-sizing: border-box;
3339
}
3340
3341
.btn-block + .btn-block {
3342
  margin-top: 5px;
3343
}
3344
3345
input[type="submit"].btn-block,
3346
input[type="reset"].btn-block,
3347
input[type="button"].btn-block {
3348
  width: 100%;
3349
}
3350
3351
.btn-primary.active,
3352
.btn-warning.active,
3353
.btn-danger.active,
3354
.btn-success.active,
3355
.btn-info.active,
3356
.btn-inverse.active {
3357
  color: rgba(255, 255, 255, 0.75);
3358
}
3359
3360
.btn-primary {
3361
  color: #ffffff;
3362
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
3363
  background-color: #006dcc;
3364
  *background-color: #0044cc;
3365
  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
3366
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
3367
  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
3368
  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
3369
  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
3370
  background-repeat: repeat-x;
3371
  border-color: #0044cc #0044cc #002a80;
3372
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3373
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
3374
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
3375
}
3376
3377
.btn-primary:hover,
3378
.btn-primary:focus,
3379
.btn-primary:active,
3380
.btn-primary.active,
3381
.btn-primary.disabled,
3382
.btn-primary[disabled] {
3383
  color: #ffffff;
3384
  background-color: #0044cc;
3385
  *background-color: #003bb3;
3386
}
3387
3388
.btn-primary:active,
3389
.btn-primary.active {
3390
  background-color: #003399 \9;
3391
}
3392
3393
.btn-warning {
3394
  color: #ffffff;
3395
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
3396
  background-color: #faa732;
3397
  *background-color: #f89406;
3398
  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
3399
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
3400
  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
3401
  background-image: -o-linear-gradient(top, #fbb450, #f89406);
3402
  background-image: linear-gradient(to bottom, #fbb450, #f89406);
3403
  background-repeat: repeat-x;
3404
  border-color: #f89406 #f89406 #ad6704;
3405
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3406
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
3407
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
3408
}
3409
3410
.btn-warning:hover,
3411
.btn-warning:focus,
3412
.btn-warning:active,
3413
.btn-warning.active,
3414
.btn-warning.disabled,
3415
.btn-warning[disabled] {
3416
  color: #ffffff;
3417
  background-color: #f89406;
3418
  *background-color: #df8505;
3419
}
3420
3421
.btn-warning:active,
3422
.btn-warning.active {
3423
  background-color: #c67605 \9;
3424
}
3425
3426
.btn-danger {
3427
  color: #ffffff;
3428
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
3429
  background-color: #da4f49;
3430
  *background-color: #bd362f;
3431
  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
3432
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
3433
  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
3434
  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
3435
  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
3436
  background-repeat: repeat-x;
3437
  border-color: #bd362f #bd362f #802420;
3438
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3439
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
3440
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
3441
}
3442
3443
.btn-danger:hover,
3444
.btn-danger:focus,
3445
.btn-danger:active,
3446
.btn-danger.active,
3447
.btn-danger.disabled,
3448
.btn-danger[disabled] {
3449
  color: #ffffff;
3450
  background-color: #bd362f;
3451
  *background-color: #a9302a;
3452
}
3453
3454
.btn-danger:active,
3455
.btn-danger.active {
3456
  background-color: #942a25 \9;
3457
}
3458
3459
.btn-success {
3460
  color: #ffffff;
3461
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
3462
  background-color: #5bb75b;
3463
  *background-color: #51a351;
3464
  background-image: -moz-linear-gradient(top, #62c462, #51a351);
3465
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
3466
  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
3467
  background-image: -o-linear-gradient(top, #62c462, #51a351);
3468
  background-image: linear-gradient(to bottom, #62c462, #51a351);
3469
  background-repeat: repeat-x;
3470
  border-color: #51a351 #51a351 #387038;
3471
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3472
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
3473
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
3474
}
3475
3476
.btn-success:hover,
3477
.btn-success:focus,
3478
.btn-success:active,
3479
.btn-success.active,
3480
.btn-success.disabled,
3481
.btn-success[disabled] {
3482
  color: #ffffff;
3483
  background-color: #51a351;
3484
  *background-color: #499249;
3485
}
3486
3487
.btn-success:active,
3488
.btn-success.active {
3489
  background-color: #408140 \9;
3490
}
3491
3492
.btn-info {
3493
  color: #ffffff;
3494
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
3495
  background-color: #49afcd;
3496
  *background-color: #2f96b4;
3497
  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
3498
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
3499
  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
3500
  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
3501
  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
3502
  background-repeat: repeat-x;
3503
  border-color: #2f96b4 #2f96b4 #1f6377;
3504
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3505
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
3506
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
3507
}
3508
3509
.btn-info:hover,
3510
.btn-info:focus,
3511
.btn-info:active,
3512
.btn-info.active,
3513
.btn-info.disabled,
3514
.btn-info[disabled] {
3515
  color: #ffffff;
3516
  background-color: #2f96b4;
3517
  *background-color: #2a85a0;
3518
}
3519
3520
.btn-info:active,
3521
.btn-info.active {
3522
  background-color: #24748c \9;
3523
}
3524
3525
.btn-inverse {
3526
  color: #ffffff;
3527
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
3528
  background-color: #363636;
3529
  *background-color: #222222;
3530
  background-image: -moz-linear-gradient(top, #444444, #222222);
3531
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
3532
  background-image: -webkit-linear-gradient(top, #444444, #222222);
3533
  background-image: -o-linear-gradient(top, #444444, #222222);
3534
  background-image: linear-gradient(to bottom, #444444, #222222);
3535
  background-repeat: repeat-x;
3536
  border-color: #222222 #222222 #000000;
3537
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3538
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
3539
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
3540
}
3541
3542
.btn-inverse:hover,
3543
.btn-inverse:focus,
3544
.btn-inverse:active,
3545
.btn-inverse.active,
3546
.btn-inverse.disabled,
3547
.btn-inverse[disabled] {
3548
  color: #ffffff;
3549
  background-color: #222222;
3550
  *background-color: #151515;
3551
}
3552
3553
.btn-inverse:active,
3554
.btn-inverse.active {
3555
  background-color: #080808 \9;
3556
}
3557
3558
button.btn,
3559
input[type="submit"].btn {
3560
  *padding-top: 3px;
3561
  *padding-bottom: 3px;
3562
}
3563
3564
button.btn::-moz-focus-inner,
3565
input[type="submit"].btn::-moz-focus-inner {
3566
  padding: 0;
3567
  border: 0;
3568
}
3569
3570
button.btn.btn-large,
3571
input[type="submit"].btn.btn-large {
3572
  *padding-top: 7px;
3573
  *padding-bottom: 7px;
3574
}
3575
3576
button.btn.btn-small,
3577
input[type="submit"].btn.btn-small {
3578
  *padding-top: 3px;
3579
  *padding-bottom: 3px;
3580
}
3581
3582
button.btn.btn-mini,
3583
input[type="submit"].btn.btn-mini {
3584
  *padding-top: 1px;
3585
  *padding-bottom: 1px;
3586
}
3587
3588
.btn-link,
3589
.btn-link:active,
3590
.btn-link[disabled] {
3591
  background-color: transparent;
3592
  background-image: none;
3593
  -webkit-box-shadow: none;
3594
     -moz-box-shadow: none;
3595
          box-shadow: none;
3596
}
3597
3598
.btn-link {
3599
  color: #0088cc;
3600
  cursor: pointer;
3601
  border-color: transparent;
3602
  -webkit-border-radius: 0;
3603
     -moz-border-radius: 0;
3604
          border-radius: 0;
3605
}
3606
3607
.btn-link:hover,
3608
.btn-link:focus {
3609
  color: #005580;
3610
  text-decoration: underline;
3611
  background-color: transparent;
3612
}
3613
3614
.btn-link[disabled]:hover,
3615
.btn-link[disabled]:focus {
3616
  color: #333333;
3617
  text-decoration: none;
3618
}
3619
3620
.btn-group {
3621
  position: relative;
3622
  display: inline-block;
3623
  *display: inline;
3624
  *margin-left: .3em;
3625
  font-size: 0;
3626
  white-space: nowrap;
3627
  vertical-align: middle;
3628
  *zoom: 1;
3629
}
3630
3631
.btn-group:first-child {
3632
  *margin-left: 0;
3633
}
3634
3635
.btn-group + .btn-group {
3636
  margin-left: 5px;
3637
}
3638
3639
.btn-toolbar {
3640
  margin-top: 10px;
3641
  margin-bottom: 10px;
3642
  font-size: 0;
3643
}
3644
3645
.btn-toolbar > .btn + .btn,
3646
.btn-toolbar > .btn-group + .btn,
3647
.btn-toolbar > .btn + .btn-group {
3648
  margin-left: 5px;
3649
}
3650
3651
.btn-group > .btn {
3652
  position: relative;
3653
  -webkit-border-radius: 0;
3654
     -moz-border-radius: 0;
3655
          border-radius: 0;
3656
}
3657
3658
.btn-group > .btn + .btn {
3659
  margin-left: -1px;
3660
}
3661
3662
.btn-group > .btn,
3663
.btn-group > .dropdown-menu,
3664
.btn-group > .popover {
3665
  font-size: 14px;
3666
}
3667
3668
.btn-group > .btn-mini {
3669
  font-size: 10.5px;
3670
}
3671
3672
.btn-group > .btn-small {
3673
  font-size: 11.9px;
3674
}
3675
3676
.btn-group > .btn-large {
3677
  font-size: 17.5px;
3678
}
3679
3680
.btn-group > .btn:first-child {
3681
  margin-left: 0;
3682
  -webkit-border-bottom-left-radius: 4px;
3683
          border-bottom-left-radius: 4px;
3684
  -webkit-border-top-left-radius: 4px;
3685
          border-top-left-radius: 4px;
3686
  -moz-border-radius-bottomleft: 4px;
3687
  -moz-border-radius-topleft: 4px;
3688
}
3689
3690
.btn-group > .btn:last-child,
3691
.btn-group > .dropdown-toggle {
3692
  -webkit-border-top-right-radius: 4px;
3693
          border-top-right-radius: 4px;
3694
  -webkit-border-bottom-right-radius: 4px;
3695
          border-bottom-right-radius: 4px;
3696
  -moz-border-radius-topright: 4px;
3697
  -moz-border-radius-bottomright: 4px;
3698
}
3699
3700
.btn-group > .btn.large:first-child {
3701
  margin-left: 0;
3702
  -webkit-border-bottom-left-radius: 6px;
3703
          border-bottom-left-radius: 6px;
3704
  -webkit-border-top-left-radius: 6px;
3705
          border-top-left-radius: 6px;
3706
  -moz-border-radius-bottomleft: 6px;
3707
  -moz-border-radius-topleft: 6px;
3708
}
3709
3710
.btn-group > .btn.large:last-child,
3711
.btn-group > .large.dropdown-toggle {
3712
  -webkit-border-top-right-radius: 6px;
3713
          border-top-right-radius: 6px;
3714
  -webkit-border-bottom-right-radius: 6px;
3715
          border-bottom-right-radius: 6px;
3716
  -moz-border-radius-topright: 6px;
3717
  -moz-border-radius-bottomright: 6px;
3718
}
3719
3720
.btn-group > .btn:hover,
3721
.btn-group > .btn:focus,
3722
.btn-group > .btn:active,
3723
.btn-group > .btn.active {
3724
  z-index: 2;
3725
}
3726
3727
.btn-group .dropdown-toggle:active,
3728
.btn-group.open .dropdown-toggle {
3729
  outline: 0;
3730
}
3731
3732
.btn-group > .btn + .dropdown-toggle {
3733
  *padding-top: 5px;
3734
  padding-right: 8px;
3735
  *padding-bottom: 5px;
3736
  padding-left: 8px;
3737
  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
3738
     -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
3739
          box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
3740
}
3741
3742
.btn-group > .btn-mini + .dropdown-toggle {
3743
  *padding-top: 2px;
3744
  padding-right: 5px;
3745
  *padding-bottom: 2px;
3746
  padding-left: 5px;
3747
}
3748
3749
.btn-group > .btn-small + .dropdown-toggle {
3750
  *padding-top: 5px;
3751
  *padding-bottom: 4px;
3752
}
3753
3754
.btn-group > .btn-large + .dropdown-toggle {
3755
  *padding-top: 7px;
3756
  padding-right: 12px;
3757
  *padding-bottom: 7px;
3758
  padding-left: 12px;
3759
}
3760
3761
.btn-group.open .dropdown-toggle {
3762
  background-image: none;
3763
  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
3764
     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
3765
          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
3766
}
3767
3768
.btn-group.open .btn.dropdown-toggle {
3769
  background-color: #e6e6e6;
3770
}
3771
3772
.btn-group.open .btn-primary.dropdown-toggle {
3773
  background-color: #0044cc;
3774
}
3775
3776
.btn-group.open .btn-warning.dropdown-toggle {
3777
  background-color: #f89406;
3778
}
3779
3780
.btn-group.open .btn-danger.dropdown-toggle {
3781
  background-color: #bd362f;
3782
}
3783
3784
.btn-group.open .btn-success.dropdown-toggle {
3785
  background-color: #51a351;
3786
}
3787
3788
.btn-group.open .btn-info.dropdown-toggle {
3789
  background-color: #2f96b4;
3790
}
3791
3792
.btn-group.open .btn-inverse.dropdown-toggle {
3793
  background-color: #222222;
3794
}
3795
3796
.btn .caret {
3797
  margin-top: 8px;
3798
  margin-left: 0;
3799
}
3800
3801
.btn-large .caret {
3802
  margin-top: 6px;
3803
}
3804
3805
.btn-large .caret {
3806
  border-top-width: 5px;
3807
  border-right-width: 5px;
3808
  border-left-width: 5px;
3809
}
3810
3811
.btn-mini .caret,
3812
.btn-small .caret {
3813
  margin-top: 8px;
3814
}
3815
3816
.dropup .btn-large .caret {
3817
  border-bottom-width: 5px;
3818
}
3819
3820
.btn-primary .caret,
3821
.btn-warning .caret,
3822
.btn-danger .caret,
3823
.btn-info .caret,
3824
.btn-success .caret,
3825
.btn-inverse .caret {
3826
  border-top-color: #ffffff;
3827
  border-bottom-color: #ffffff;
3828
}
3829
3830
.btn-group-vertical {
3831
  display: inline-block;
3832
  *display: inline;
3833
  /* IE7 inline-block hack */
3834
3835
  *zoom: 1;
3836
}
3837
3838
.btn-group-vertical > .btn {
3839
  display: block;
3840
  float: none;
3841
  max-width: 100%;
3842
  -webkit-border-radius: 0;
3843
     -moz-border-radius: 0;
3844
          border-radius: 0;
3845
}
3846
3847
.btn-group-vertical > .btn + .btn {
3848
  margin-top: -1px;
3849
  margin-left: 0;
3850
}
3851
3852
.btn-group-vertical > .btn:first-child {
3853
  -webkit-border-radius: 4px 4px 0 0;
3854
     -moz-border-radius: 4px 4px 0 0;
3855
          border-radius: 4px 4px 0 0;
3856
}
3857
3858
.btn-group-vertical > .btn:last-child {
3859
  -webkit-border-radius: 0 0 4px 4px;
3860
     -moz-border-radius: 0 0 4px 4px;
3861
          border-radius: 0 0 4px 4px;
3862
}
3863
3864
.btn-group-vertical > .btn-large:first-child {
3865
  -webkit-border-radius: 6px 6px 0 0;
3866
     -moz-border-radius: 6px 6px 0 0;
3867
          border-radius: 6px 6px 0 0;
3868
}
3869
3870
.btn-group-vertical > .btn-large:last-child {
3871
  -webkit-border-radius: 0 0 6px 6px;
3872
     -moz-border-radius: 0 0 6px 6px;
3873
          border-radius: 0 0 6px 6px;
3874
}
3875
3876
.alert {
3877
  padding: 8px 35px 8px 14px;
3878
  margin-bottom: 20px;
3879
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
3880
  background-color: #fcf8e3;
3881
  border: 1px solid #fbeed5;
3882
  -webkit-border-radius: 4px;
3883
     -moz-border-radius: 4px;
3884
          border-radius: 4px;
3885
}
3886
3887
.alert,
3888
.alert h4 {
3889
  color: #c09853;
3890
}
3891
3892
.alert h4 {
3893
  margin: 0;
3894
}
3895
3896
.alert .close {
3897
  position: relative;
3898
  top: -2px;
3899
  right: -21px;
3900
  line-height: 20px;
3901
}
3902
3903
.alert-success {
3904
  color: #468847;
3905
  background-color: #dff0d8;
3906
  border-color: #d6e9c6;
3907
}
3908
3909
.alert-success h4 {
3910
  color: #468847;
3911
}
3912
3913
.alert-danger,
3914
.alert-error {
3915
  color: #b94a48;
3916
  background-color: #f2dede;
3917
  border-color: #eed3d7;
3918
}
3919
3920
.alert-danger h4,
3921
.alert-error h4 {
3922
  color: #b94a48;
3923
}
3924
3925
.alert-info {
3926
  color: #3a87ad;
3927
  background-color: #d9edf7;
3928
  border-color: #bce8f1;
3929
}
3930
3931
.alert-info h4 {
3932
  color: #3a87ad;
3933
}
3934
3935
.alert-block {
3936
  padding-top: 14px;
3937
  padding-bottom: 14px;
3938
}
3939
3940
.alert-block > p,
3941
.alert-block > ul {
3942
  margin-bottom: 0;
3943
}
3944
3945
.alert-block p + p {
3946
  margin-top: 5px;
3947
}
3948
3949
.nav {
3950
  margin-bottom: 20px;
3951
  margin-left: 0;
3952
  list-style: none;
3953
}
3954
3955
.nav > li > a {
3956
  display: block;
3957
}
3958
3959
.nav > li > a:hover,
3960
.nav > li > a:focus {
3961
  text-decoration: none;
3962
  background-color: #eeeeee;
3963
}
3964
3965
.nav > li > a > img {
3966
  max-width: none;
3967
}
3968
3969
.nav > .pull-right {
3970
  float: right;
3971
}
3972
3973
.nav-header {
3974
  display: block;
3975
  padding: 3px 15px;
3976
  font-size: 11px;
3977
  font-weight: bold;
3978
  line-height: 20px;
3979
  color: #999999;
3980
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
3981
  text-transform: uppercase;
3982
}
3983
3984
.nav li + .nav-header {
3985
  margin-top: 9px;
3986
}
3987
3988
.nav-list {
3989
  padding-right: 15px;
3990
  padding-left: 15px;
3991
  margin-bottom: 0;
3992
}
3993
3994
.nav-list > li > a,
3995
.nav-list .nav-header {
3996
  margin-right: -15px;
3997
  margin-left: -15px;
3998
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
3999
}
4000
4001
.nav-list > li > a {
4002
  padding: 3px 15px;
4003
}
4004
4005
.nav-list > .active > a,
4006
.nav-list > .active > a:hover,
4007
.nav-list > .active > a:focus {
4008
  color: #ffffff;
4009
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
4010
  background-color: #0088cc;
4011
}
4012
4013
.nav-list [class^="icon-"],
4014
.nav-list [class*=" icon-"] {
4015
  margin-right: 2px;
4016
}
4017
4018
.nav-list .divider {
4019
  *width: 100%;
4020
  height: 1px;
4021
  margin: 9px 1px;
4022
  *margin: -5px 0 5px;
4023
  overflow: hidden;
4024
  background-color: #e5e5e5;
4025
  border-bottom: 1px solid #ffffff;
4026
}
4027
4028
.nav-tabs,
4029
.nav-pills {
4030
  *zoom: 1;
4031
}
4032
4033
.nav-tabs:before,
4034
.nav-pills:before,
4035
.nav-tabs:after,
4036
.nav-pills:after {
4037
  display: table;
4038
  line-height: 0;
4039
  content: "";
4040
}
4041
4042
.nav-tabs:after,
4043
.nav-pills:after {
4044
  clear: both;
4045
}
4046
4047
.nav-tabs > li,
4048
.nav-pills > li {
4049
  float: left;
4050
}
4051
4052
.nav-tabs > li > a,
4053
.nav-pills > li > a {
4054
  padding-right: 12px;
4055
  padding-left: 12px;
4056
  margin-right: 2px;
4057
  line-height: 14px;
4058
}
4059
4060
.nav-tabs {
4061
  border-bottom: 1px solid #ddd;
4062
}
4063
4064
.nav-tabs > li {
4065
  margin-bottom: -1px;
4066
}
4067
4068
.nav-tabs > li > a {
4069
  padding-top: 8px;
4070
  padding-bottom: 8px;
4071
  line-height: 20px;
4072
  border: 1px solid transparent;
4073
  -webkit-border-radius: 4px 4px 0 0;
4074
     -moz-border-radius: 4px 4px 0 0;
4075
          border-radius: 4px 4px 0 0;
4076
}
4077
4078
.nav-tabs > li > a:hover,
4079
.nav-tabs > li > a:focus {
4080
  border-color: #eeeeee #eeeeee #dddddd;
4081
}
4082
4083
.nav-tabs > .active > a,
4084
.nav-tabs > .active > a:hover,
4085
.nav-tabs > .active > a:focus {
4086
  color: #555555;
4087
  cursor: default;
4088
  background-color: #ffffff;
4089
  border: 1px solid #ddd;
4090
  border-bottom-color: transparent;
4091
}
4092
4093
.nav-pills > li > a {
4094
  padding-top: 8px;
4095
  padding-bottom: 8px;
4096
  margin-top: 2px;
4097
  margin-bottom: 2px;
4098
  -webkit-border-radius: 5px;
4099
     -moz-border-radius: 5px;
4100
          border-radius: 5px;
4101
}
4102
4103
.nav-pills > .active > a,
4104
.nav-pills > .active > a:hover,
4105
.nav-pills > .active > a:focus {
4106
  color: #ffffff;
4107
  background-color: #0088cc;
4108
}
4109
4110
.nav-stacked > li {
4111
  float: none;
4112
}
4113
4114
.nav-stacked > li > a {
4115
  margin-right: 0;
4116
}
4117
4118
.nav-tabs.nav-stacked {
4119
  border-bottom: 0;
4120
}
4121
4122
.nav-tabs.nav-stacked > li > a {
4123
  border: 1px solid #ddd;
4124
  -webkit-border-radius: 0;
4125
     -moz-border-radius: 0;
4126
          border-radius: 0;
4127
}
4128
4129
.nav-tabs.nav-stacked > li:first-child > a {
4130
  -webkit-border-top-right-radius: 4px;
4131
          border-top-right-radius: 4px;
4132
  -webkit-border-top-left-radius: 4px;
4133
          border-top-left-radius: 4px;
4134
  -moz-border-radius-topright: 4px;
4135
  -moz-border-radius-topleft: 4px;
4136
}
4137
4138
.nav-tabs.nav-stacked > li:last-child > a {
4139
  -webkit-border-bottom-right-radius: 4px;
4140
          border-bottom-right-radius: 4px;
4141
  -webkit-border-bottom-left-radius: 4px;
4142
          border-bottom-left-radius: 4px;
4143
  -moz-border-radius-bottomright: 4px;
4144
  -moz-border-radius-bottomleft: 4px;
4145
}
4146
4147
.nav-tabs.nav-stacked > li > a:hover,
4148
.nav-tabs.nav-stacked > li > a:focus {
4149
  z-index: 2;
4150
  border-color: #ddd;
4151
}
4152
4153
.nav-pills.nav-stacked > li > a {
4154
  margin-bottom: 3px;
4155
}
4156
4157
.nav-pills.nav-stacked > li:last-child > a {
4158
  margin-bottom: 1px;
4159
}
4160
4161
.nav-tabs .dropdown-menu {
4162
  -webkit-border-radius: 0 0 6px 6px;
4163
     -moz-border-radius: 0 0 6px 6px;
4164
          border-radius: 0 0 6px 6px;
4165
}
4166
4167
.nav-pills .dropdown-menu {
4168
  -webkit-border-radius: 6px;
4169
     -moz-border-radius: 6px;
4170
          border-radius: 6px;
4171
}
4172
4173
.nav .dropdown-toggle .caret {
4174
  margin-top: 6px;
4175
  border-top-color: #0088cc;
4176
  border-bottom-color: #0088cc;
4177
}
4178
4179
.nav .dropdown-toggle:hover .caret,
4180
.nav .dropdown-toggle:focus .caret {
4181
  border-top-color: #005580;
4182
  border-bottom-color: #005580;
4183
}
4184
4185
/* move down carets for tabs */
4186
4187
.nav-tabs .dropdown-toggle .caret {
4188
  margin-top: 8px;
4189
}
4190
4191
.nav .active .dropdown-toggle .caret {
4192
  border-top-color: #fff;
4193
  border-bottom-color: #fff;
4194
}
4195
4196
.nav-tabs .active .dropdown-toggle .caret {
4197
  border-top-color: #555555;
4198
  border-bottom-color: #555555;
4199
}
4200
4201
.nav > .dropdown.active > a:hover,
4202
.nav > .dropdown.active > a:focus {
4203
  cursor: pointer;
4204
}
4205
4206
.nav-tabs .open .dropdown-toggle,
4207
.nav-pills .open .dropdown-toggle,
4208
.nav > li.dropdown.open.active > a:hover,
4209
.nav > li.dropdown.open.active > a:focus {
4210
  color: #ffffff;
4211
  background-color: #999999;
4212
  border-color: #999999;
4213
}
4214
4215
.nav li.dropdown.open .caret,
4216
.nav li.dropdown.open.active .caret,
4217
.nav li.dropdown.open a:hover .caret,
4218
.nav li.dropdown.open a:focus .caret {
4219
  border-top-color: #ffffff;
4220
  border-bottom-color: #ffffff;
4221
  opacity: 1;
4222
  filter: alpha(opacity=100);
4223
}
4224
4225
.tabs-stacked .open > a:hover,
4226
.tabs-stacked .open > a:focus {
4227
  border-color: #999999;
4228
}
4229
4230
.tabbable {
4231
  *zoom: 1;
4232
}
4233
4234
.tabbable:before,
4235
.tabbable:after {
4236
  display: table;
4237
  line-height: 0;
4238
  content: "";
4239
}
4240
4241
.tabbable:after {
4242
  clear: both;
4243
}
4244
4245
.tab-content {
4246
  overflow: auto;
4247
}
4248
4249
.tabs-below > .nav-tabs,
4250
.tabs-right > .nav-tabs,
4251
.tabs-left > .nav-tabs {
4252
  border-bottom: 0;
4253
}
4254
4255
.tab-content > .tab-pane,
4256
.pill-content > .pill-pane {
4257
  display: none;
4258
}
4259
4260
.tab-content > .active,
4261
.pill-content > .active {
4262
  display: block;
4263
}
4264
4265
.tabs-below > .nav-tabs {
4266
  border-top: 1px solid #ddd;
4267
}
4268
4269
.tabs-below > .nav-tabs > li {
4270
  margin-top: -1px;
4271
  margin-bottom: 0;
4272
}
4273
4274
.tabs-below > .nav-tabs > li > a {
4275
  -webkit-border-radius: 0 0 4px 4px;
4276
     -moz-border-radius: 0 0 4px 4px;
4277
          border-radius: 0 0 4px 4px;
4278
}
4279
4280
.tabs-below > .nav-tabs > li > a:hover,
4281
.tabs-below > .nav-tabs > li > a:focus {
4282
  border-top-color: #ddd;
4283
  border-bottom-color: transparent;
4284
}
4285
4286
.tabs-below > .nav-tabs > .active > a,
4287
.tabs-below > .nav-tabs > .active > a:hover,
4288
.tabs-below > .nav-tabs > .active > a:focus {
4289
  border-color: transparent #ddd #ddd #ddd;
4290
}
4291
4292
.tabs-left > .nav-tabs > li,
4293
.tabs-right > .nav-tabs > li {
4294
  float: none;
4295
}
4296
4297
.tabs-left > .nav-tabs > li > a,
4298
.tabs-right > .nav-tabs > li > a {
4299
  min-width: 74px;
4300
  margin-right: 0;
4301
  margin-bottom: 3px;
4302
}
4303
4304
.tabs-left > .nav-tabs {
4305
  float: left;
4306
  margin-right: 19px;
4307
  border-right: 1px solid #ddd;
4308
}
4309
4310
.tabs-left > .nav-tabs > li > a {
4311
  margin-right: -1px;
4312
  -webkit-border-radius: 4px 0 0 4px;
4313
     -moz-border-radius: 4px 0 0 4px;
4314
          border-radius: 4px 0 0 4px;
4315
}
4316
4317
.tabs-left > .nav-tabs > li > a:hover,
4318
.tabs-left > .nav-tabs > li > a:focus {
4319
  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
4320
}
4321
4322
.tabs-left > .nav-tabs .active > a,
4323
.tabs-left > .nav-tabs .active > a:hover,
4324
.tabs-left > .nav-tabs .active > a:focus {
4325
  border-color: #ddd transparent #ddd #ddd;
4326
  *border-right-color: #ffffff;
4327
}
4328
4329
.tabs-right > .nav-tabs {
4330
  float: right;
4331
  margin-left: 19px;
4332
  border-left: 1px solid #ddd;
4333
}
4334
4335
.tabs-right > .nav-tabs > li > a {
4336
  margin-left: -1px;
4337
  -webkit-border-radius: 0 4px 4px 0;
4338
     -moz-border-radius: 0 4px 4px 0;
4339
          border-radius: 0 4px 4px 0;
4340
}
4341
4342
.tabs-right > .nav-tabs > li > a:hover,
4343
.tabs-right > .nav-tabs > li > a:focus {
4344
  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
4345
}
4346
4347
.tabs-right > .nav-tabs .active > a,
4348
.tabs-right > .nav-tabs .active > a:hover,
4349
.tabs-right > .nav-tabs .active > a:focus {
4350
  border-color: #ddd #ddd #ddd transparent;
4351
  *border-left-color: #ffffff;
4352
}
4353
4354
.nav > .disabled > a {
4355
  color: #999999;
4356
}
4357
4358
.nav > .disabled > a:hover,
4359
.nav > .disabled > a:focus {
4360
  text-decoration: none;
4361
  cursor: default;
4362
  background-color: transparent;
4363
}
4364
4365
.navbar {
4366
  *position: relative;
4367
  *z-index: 2;
4368
  margin-bottom: 20px;
4369
  overflow: visible;
4370
}
4371
4372
.navbar-inner {
4373
  min-height: 40px;
4374
  padding-right: 20px;
4375
  padding-left: 20px;
4376
  background-color: #fafafa;
4377
  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
4378
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
4379
  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
4380
  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
4381
  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
4382
  background-repeat: repeat-x;
4383
  border: 1px solid #d4d4d4;
4384
  -webkit-border-radius: 4px;
4385
     -moz-border-radius: 4px;
4386
          border-radius: 4px;
4387
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
4388
  *zoom: 1;
4389
  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
4390
     -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
4391
          box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
4392
}
4393
4394
.navbar-inner:before,
4395
.navbar-inner:after {
4396
  display: table;
4397
  line-height: 0;
4398
  content: "";
4399
}
4400
4401
.navbar-inner:after {
4402
  clear: both;
4403
}
4404
4405
.navbar .container {
4406
  width: auto;
4407
}
4408
4409
.nav-collapse.collapse {
4410
  height: auto;
4411
  overflow: visible;
4412
}
4413
4414
.navbar .brand {
4415
  display: block;
4416
  float: left;
4417
  padding: 10px 20px 10px;
4418
  margin-left: -20px;
4419
  font-size: 20px;
4420
  font-weight: 200;
4421
  color: #777777;
4422
  text-shadow: 0 1px 0 #ffffff;
4423
}
4424
4425
.navbar .brand:hover,
4426
.navbar .brand:focus {
4427
  text-decoration: none;
4428
}
4429
4430
.navbar-text {
4431
  margin-bottom: 0;
4432
  line-height: 40px;
4433
  color: #777777;
4434
}
4435
4436
.navbar-link {
4437
  color: #777777;
4438
}
4439
4440
.navbar-link:hover,
4441
.navbar-link:focus {
4442
  color: #333333;
4443
}
4444
4445
.navbar .divider-vertical {
4446
  height: 40px;
4447
  margin: 0 9px;
4448
  border-right: 1px solid #ffffff;
4449
  border-left: 1px solid #f2f2f2;
4450
}
4451
4452
.navbar .btn,
4453
.navbar .btn-group {
4454
  margin-top: 5px;
4455
}
4456
4457
.navbar .btn-group .btn,
4458
.navbar .input-prepend .btn,
4459
.navbar .input-append .btn,
4460
.navbar .input-prepend .btn-group,
4461
.navbar .input-append .btn-group {
4462
  margin-top: 0;
4463
}
4464
4465
.navbar-form {
4466
  margin-bottom: 0;
4467
  *zoom: 1;
4468
}
4469
4470
.navbar-form:before,
4471
.navbar-form:after {
4472
  display: table;
4473
  line-height: 0;
4474
  content: "";
4475
}
4476
4477
.navbar-form:after {
4478
  clear: both;
4479
}
4480
4481
.navbar-form input,
4482
.navbar-form select,
4483
.navbar-form .radio,
4484
.navbar-form .checkbox {
4485
  margin-top: 5px;
4486
}
4487
4488
.navbar-form input,
4489
.navbar-form select,
4490
.navbar-form .btn {
4491
  display: inline-block;
4492
  margin-bottom: 0;
4493
}
4494
4495
.navbar-form input[type="image"],
4496
.navbar-form input[type="checkbox"],
4497
.navbar-form input[type="radio"] {
4498
  margin-top: 3px;
4499
}
4500
4501
.navbar-form .input-append,
4502
.navbar-form .input-prepend {
4503
  margin-top: 5px;
4504
  white-space: nowrap;
4505
}
4506
4507
.navbar-form .input-append input,
4508
.navbar-form .input-prepend input {
4509
  margin-top: 0;
4510
}
4511
4512
.navbar-search {
4513
  position: relative;
4514
  float: left;
4515
  margin-top: 5px;
4516
  margin-bottom: 0;
4517
}
4518
4519
.navbar-search .search-query {
4520
  padding: 4px 14px;
4521
  margin-bottom: 0;
4522
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
4523
  font-size: 13px;
4524
  font-weight: normal;
4525
  line-height: 1;
4526
  -webkit-border-radius: 15px;
4527
     -moz-border-radius: 15px;
4528
          border-radius: 15px;
4529
}
4530
4531
.navbar-static-top {
4532
  position: static;
4533
  margin-bottom: 0;
4534
}
4535
4536
.navbar-static-top .navbar-inner {
4537
  -webkit-border-radius: 0;
4538
     -moz-border-radius: 0;
4539
          border-radius: 0;
4540
}
4541
4542
.navbar-fixed-top,
4543
.navbar-fixed-bottom {
4544
  position: fixed;
4545
  right: 0;
4546
  left: 0;
4547
  z-index: 1030;
4548
  margin-bottom: 0;
4549
}
4550
4551
.navbar-fixed-top .navbar-inner,
4552
.navbar-static-top .navbar-inner {
4553
  border-width: 0 0 1px;
4554
}
4555
4556
.navbar-fixed-bottom .navbar-inner {
4557
  border-width: 1px 0 0;
4558
}
4559
4560
.navbar-fixed-top .navbar-inner,
4561
.navbar-fixed-bottom .navbar-inner {
4562
  padding-right: 0;
4563
  padding-left: 0;
4564
  -webkit-border-radius: 0;
4565
     -moz-border-radius: 0;
4566
          border-radius: 0;
4567
}
4568
4569
.navbar-static-top .container,
4570
.navbar-fixed-top .container,
4571
.navbar-fixed-bottom .container {
4572
  width: 940px;
4573
}
4574
4575
.navbar-fixed-top {
4576
  top: 0;
4577
}
4578
4579
.navbar-fixed-top .navbar-inner,
4580
.navbar-static-top .navbar-inner {
4581
  -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
4582
     -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
4583
          box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
4584
}
4585
4586
.navbar-fixed-bottom {
4587
  bottom: 0;
4588
}
4589
4590
.navbar-fixed-bottom .navbar-inner {
4591
  -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
4592
     -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
4593
          box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
4594
}
4595
4596
.navbar .nav {
4597
  position: relative;
4598
  left: 0;
4599
  display: block;
4600
  float: left;
4601
  margin: 0 10px 0 0;
4602
}
4603
4604
.navbar .nav.pull-right {
4605
  float: right;
4606
  margin-right: 0;
4607
}
4608
4609
.navbar .nav > li {
4610
  float: left;
4611
}
4612
4613
.navbar .nav > li > a {
4614
  float: none;
4615
  padding: 10px 15px 10px;
4616
  color: #777777;
4617
  text-decoration: none;
4618
  text-shadow: 0 1px 0 #ffffff;
4619
}
4620
4621
.navbar .nav .dropdown-toggle .caret {
4622
  margin-top: 8px;
4623
}
4624
4625
.navbar .nav > li > a:focus,
4626
.navbar .nav > li > a:hover {
4627
  color: #333333;
4628
  text-decoration: none;
4629
  background-color: transparent;
4630
}
4631
4632
.navbar .nav > .active > a,
4633
.navbar .nav > .active > a:hover,
4634
.navbar .nav > .active > a:focus {
4635
  color: #555555;
4636
  text-decoration: none;
4637
  background-color: #e5e5e5;
4638
  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
4639
     -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
4640
          box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
4641
}
4642
4643
.navbar .btn-navbar {
4644
  display: none;
4645
  float: right;
4646
  padding: 7px 10px;
4647
  margin-right: 5px;
4648
  margin-left: 5px;
4649
  color: #ffffff;
4650
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
4651
  background-color: #ededed;
4652
  *background-color: #e5e5e5;
4653
  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
4654
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
4655
  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
4656
  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
4657
  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
4658
  background-repeat: repeat-x;
4659
  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
4660
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
4661
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
4662
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
4663
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
4664
     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
4665
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
4666
}
4667
4668
.navbar .btn-navbar:hover,
4669
.navbar .btn-navbar:focus,
4670
.navbar .btn-navbar:active,
4671
.navbar .btn-navbar.active,
4672
.navbar .btn-navbar.disabled,
4673
.navbar .btn-navbar[disabled] {
4674
  color: #ffffff;
4675
  background-color: #e5e5e5;
4676
  *background-color: #d9d9d9;
4677
}
4678
4679
.navbar .btn-navbar:active,
4680
.navbar .btn-navbar.active {
4681
  background-color: #cccccc \9;
4682
}
4683
4684
.navbar .btn-navbar .icon-bar {
4685
  display: block;
4686
  width: 18px;
4687
  height: 2px;
4688
  background-color: #f5f5f5;
4689
  -webkit-border-radius: 1px;
4690
     -moz-border-radius: 1px;
4691
          border-radius: 1px;
4692
  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
4693
     -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
4694
          box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
4695
}
4696
4697
.btn-navbar .icon-bar + .icon-bar {
4698
  margin-top: 3px;
4699
}
4700
4701
.navbar .nav > li > .dropdown-menu:before {
4702
  position: absolute;
4703
  top: -7px;
4704
  left: 9px;
4705
  display: inline-block;
4706
  border-right: 7px solid transparent;
4707
  border-bottom: 7px solid #ccc;
4708
  border-left: 7px solid transparent;
4709
  border-bottom-color: rgba(0, 0, 0, 0.2);
4710
  content: '';
4711
}
4712
4713
.navbar .nav > li > .dropdown-menu:after {
4714
  position: absolute;
4715
  top: -6px;
4716
  left: 10px;
4717
  display: inline-block;
4718
  border-right: 6px solid transparent;
4719
  border-bottom: 6px solid #ffffff;
4720
  border-left: 6px solid transparent;
4721
  content: '';
4722
}
4723
4724
.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
4725
  top: auto;
4726
  bottom: -7px;
4727
  border-top: 7px solid #ccc;
4728
  border-bottom: 0;
4729
  border-top-color: rgba(0, 0, 0, 0.2);
4730
}
4731
4732
.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
4733
  top: auto;
4734
  bottom: -6px;
4735
  border-top: 6px solid #ffffff;
4736
  border-bottom: 0;
4737
}
4738
4739
.navbar .nav li.dropdown > a:hover .caret,
4740
.navbar .nav li.dropdown > a:focus .caret {
4741
  border-top-color: #333333;
4742
  border-bottom-color: #333333;
4743
}
4744
4745
.navbar .nav li.dropdown.open > .dropdown-toggle,
4746
.navbar .nav li.dropdown.active > .dropdown-toggle,
4747
.navbar .nav li.dropdown.open.active > .dropdown-toggle {
4748
  color: #555555;
4749
  background-color: #e5e5e5;
4750
}
4751
4752
.navbar .nav li.dropdown > .dropdown-toggle .caret {
4753
  border-top-color: #777777;
4754
  border-bottom-color: #777777;
4755
}
4756
4757
.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
4758
.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
4759
.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
4760
  border-top-color: #555555;
4761
  border-bottom-color: #555555;
4762
}
4763
4764
.navbar .pull-right > li > .dropdown-menu,
4765
.navbar .nav > li > .dropdown-menu.pull-right {
4766
  right: 0;
4767
  left: auto;
4768
}
4769
4770
.navbar .pull-right > li > .dropdown-menu:before,
4771
.navbar .nav > li > .dropdown-menu.pull-right:before {
4772
  right: 12px;
4773
  left: auto;
4774
}
4775
4776
.navbar .pull-right > li > .dropdown-menu:after,
4777
.navbar .nav > li > .dropdown-menu.pull-right:after {
4778
  right: 13px;
4779
  left: auto;
4780
}
4781
4782
.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
4783
.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
4784
  right: 100%;
4785
  left: auto;
4786
  margin-right: -1px;
4787
  margin-left: 0;
4788
  -webkit-border-radius: 6px 0 6px 6px;
4789
     -moz-border-radius: 6px 0 6px 6px;
4790
          border-radius: 6px 0 6px 6px;
4791
}
4792
4793
.navbar-inverse .navbar-inner {
4794
  background-color: #1b1b1b;
4795
  background-image: -moz-linear-gradient(top, #222222, #111111);
4796
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
4797
  background-image: -webkit-linear-gradient(top, #222222, #111111);
4798
  background-image: -o-linear-gradient(top, #222222, #111111);
4799
  background-image: linear-gradient(to bottom, #222222, #111111);
4800
  background-repeat: repeat-x;
4801
  border-color: #252525;
4802
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
4803
}
4804
4805
.navbar-inverse .brand,
4806
.navbar-inverse .nav > li > a {
4807
  color: #999999;
4808
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
4809
}
4810
4811
.navbar-inverse .brand:hover,
4812
.navbar-inverse .nav > li > a:hover,
4813
.navbar-inverse .brand:focus,
4814
.navbar-inverse .nav > li > a:focus {
4815
  color: #ffffff;
4816
}
4817
4818
.navbar-inverse .brand {
4819
  color: #999999;
4820
}
4821
4822
.navbar-inverse .navbar-text {
4823
  color: #999999;
4824
}
4825
4826
.navbar-inverse .nav > li > a:focus,
4827
.navbar-inverse .nav > li > a:hover {
4828
  color: #ffffff;
4829
  background-color: transparent;
4830
}
4831
4832
.navbar-inverse .nav .active > a,
4833
.navbar-inverse .nav .active > a:hover,
4834
.navbar-inverse .nav .active > a:focus {
4835
  color: #ffffff;
4836
  background-color: #111111;
4837
}
4838
4839
.navbar-inverse .navbar-link {
4840
  color: #999999;
4841
}
4842
4843
.navbar-inverse .navbar-link:hover,
4844
.navbar-inverse .navbar-link:focus {
4845
  color: #ffffff;
4846
}
4847
4848
.navbar-inverse .divider-vertical {
4849
  border-right-color: #222222;
4850
  border-left-color: #111111;
4851
}
4852
4853
.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
4854
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
4855
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
4856
  color: #ffffff;
4857
  background-color: #111111;
4858
}
4859
4860
.navbar-inverse .nav li.dropdown > a:hover .caret,
4861
.navbar-inverse .nav li.dropdown > a:focus .caret {
4862
  border-top-color: #ffffff;
4863
  border-bottom-color: #ffffff;
4864
}
4865
4866
.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
4867
  border-top-color: #999999;
4868
  border-bottom-color: #999999;
4869
}
4870
4871
.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
4872
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
4873
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
4874
  border-top-color: #ffffff;
4875
  border-bottom-color: #ffffff;
4876
}
4877
4878
.navbar-inverse .navbar-search .search-query {
4879
  color: #ffffff;
4880
  background-color: #515151;
4881
  border-color: #111111;
4882
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
4883
     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
4884
          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
4885
  -webkit-transition: none;
4886
     -moz-transition: none;
4887
       -o-transition: none;
4888
          transition: none;
4889
}
4890
4891
.navbar-inverse .navbar-search .search-query:-moz-placeholder {
4892
  color: #cccccc;
4893
}
4894
4895
.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
4896
  color: #cccccc;
4897
}
4898
4899
.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
4900
  color: #cccccc;
4901
}
4902
4903
.navbar-inverse .navbar-search .search-query:focus,
4904
.navbar-inverse .navbar-search .search-query.focused {
4905
  padding: 5px 15px;
4906
  color: #333333;
4907
  text-shadow: 0 1px 0 #ffffff;
4908
  background-color: #ffffff;
4909
  border: 0;
4910
  outline: 0;
4911
  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
4912
     -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
4913
          box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
4914
}
4915
4916
.navbar-inverse .btn-navbar {
4917
  color: #ffffff;
4918
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
4919
  background-color: #0e0e0e;
4920
  *background-color: #040404;
4921
  background-image: -moz-linear-gradient(top, #151515, #040404);
4922
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
4923
  background-image: -webkit-linear-gradient(top, #151515, #040404);
4924
  background-image: -o-linear-gradient(top, #151515, #040404);
4925
  background-image: linear-gradient(to bottom, #151515, #040404);
4926
  background-repeat: repeat-x;
4927
  border-color: #040404 #040404 #000000;
4928
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
4929
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
4930
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
4931
}
4932
4933
.navbar-inverse .btn-navbar:hover,
4934
.navbar-inverse .btn-navbar:focus,
4935
.navbar-inverse .btn-navbar:active,
4936
.navbar-inverse .btn-navbar.active,
4937
.navbar-inverse .btn-navbar.disabled,
4938
.navbar-inverse .btn-navbar[disabled] {
4939
  color: #ffffff;
4940
  background-color: #040404;
4941
  *background-color: #000000;
4942
}
4943
4944
.navbar-inverse .btn-navbar:active,
4945
.navbar-inverse .btn-navbar.active {
4946
  background-color: #000000 \9;
4947
}
4948
4949
.breadcrumb {
4950
  padding: 8px 15px;
4951
  margin: 0 0 20px;
4952
  list-style: none;
4953
  background-color: #f5f5f5;
4954
  -webkit-border-radius: 4px;
4955
     -moz-border-radius: 4px;
4956
          border-radius: 4px;
4957
}
4958
4959
.breadcrumb > li {
4960
  display: inline-block;
4961
  *display: inline;
4962
  text-shadow: 0 1px 0 #ffffff;
4963
  *zoom: 1;
4964
}
4965
4966
.breadcrumb > li > .divider {
4967
  padding: 0 5px;
4968
  color: #ccc;
4969
}
4970
4971
.breadcrumb > .active {
4972
  color: #999999;
4973
}
4974
4975
.pagination {
4976
  margin: 20px 0;
4977
}
4978
4979
.pagination ul {
4980
  display: inline-block;
4981
  *display: inline;
4982
  margin-bottom: 0;
4983
  margin-left: 0;
4984
  -webkit-border-radius: 4px;
4985
     -moz-border-radius: 4px;
4986
          border-radius: 4px;
4987
  *zoom: 1;
4988
  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
4989
     -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
4990
          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
4991
}
4992
4993
.pagination ul > li {
4994
  display: inline;
4995
}
4996
4997
.pagination ul > li > a,
4998
.pagination ul > li > span {
4999
  float: left;
5000
  padding: 4px 12px;
5001
  line-height: 20px;
5002
  text-decoration: none;
5003
  background-color: #ffffff;
5004
  border: 1px solid #dddddd;
5005
  border-left-width: 0;
5006
}
5007
5008
.pagination ul > li > a:hover,
5009
.pagination ul > li > a:focus,
5010
.pagination ul > .active > a,
5011
.pagination ul > .active > span {
5012
  background-color: #f5f5f5;
5013
}
5014
5015
.pagination ul > .active > a,
5016
.pagination ul > .active > span {
5017
  color: #999999;
5018
  cursor: default;
5019
}
5020
5021
.pagination ul > .disabled > span,
5022
.pagination ul > .disabled > a,
5023
.pagination ul > .disabled > a:hover,
5024
.pagination ul > .disabled > a:focus {
5025
  color: #999999;
5026
  cursor: default;
5027
  background-color: transparent;
5028
}
5029
5030
.pagination ul > li:first-child > a,
5031
.pagination ul > li:first-child > span {
5032
  border-left-width: 1px;
5033
  -webkit-border-bottom-left-radius: 4px;
5034
          border-bottom-left-radius: 4px;
5035
  -webkit-border-top-left-radius: 4px;
5036
          border-top-left-radius: 4px;
5037
  -moz-border-radius-bottomleft: 4px;
5038
  -moz-border-radius-topleft: 4px;
5039
}
5040
5041
.pagination ul > li:last-child > a,
5042
.pagination ul > li:last-child > span {
5043
  -webkit-border-top-right-radius: 4px;
5044
          border-top-right-radius: 4px;
5045
  -webkit-border-bottom-right-radius: 4px;
5046
          border-bottom-right-radius: 4px;
5047
  -moz-border-radius-topright: 4px;
5048
  -moz-border-radius-bottomright: 4px;
5049
}
5050
5051
.pagination-centered {
5052
  text-align: center;
5053
}
5054
5055
.pagination-right {
5056
  text-align: right;
5057
}
5058
5059
.pagination-large ul > li > a,
5060
.pagination-large ul > li > span {
5061
  padding: 11px 19px;
5062
  font-size: 17.5px;
5063
}
5064
5065
.pagination-large ul > li:first-child > a,
5066
.pagination-large ul > li:first-child > span {
5067
  -webkit-border-bottom-left-radius: 6px;
5068
          border-bottom-left-radius: 6px;
5069
  -webkit-border-top-left-radius: 6px;
5070
          border-top-left-radius: 6px;
5071
  -moz-border-radius-bottomleft: 6px;
5072
  -moz-border-radius-topleft: 6px;
5073
}
5074
5075
.pagination-large ul > li:last-child > a,
5076
.pagination-large ul > li:last-child > span {
5077
  -webkit-border-top-right-radius: 6px;
5078
          border-top-right-radius: 6px;
5079
  -webkit-border-bottom-right-radius: 6px;
5080
          border-bottom-right-radius: 6px;
5081
  -moz-border-radius-topright: 6px;
5082
  -moz-border-radius-bottomright: 6px;
5083
}
5084
5085
.pagination-mini ul > li:first-child > a,
5086
.pagination-small ul > li:first-child > a,
5087
.pagination-mini ul > li:first-child > span,
5088
.pagination-small ul > li:first-child > span {
5089
  -webkit-border-bottom-left-radius: 3px;
5090
          border-bottom-left-radius: 3px;
5091
  -webkit-border-top-left-radius: 3px;
5092
          border-top-left-radius: 3px;
5093
  -moz-border-radius-bottomleft: 3px;
5094
  -moz-border-radius-topleft: 3px;
5095
}
5096
5097
.pagination-mini ul > li:last-child > a,
5098
.pagination-small ul > li:last-child > a,
5099
.pagination-mini ul > li:last-child > span,
5100
.pagination-small ul > li:last-child > span {
5101
  -webkit-border-top-right-radius: 3px;
5102
          border-top-right-radius: 3px;
5103
  -webkit-border-bottom-right-radius: 3px;
5104
          border-bottom-right-radius: 3px;
5105
  -moz-border-radius-topright: 3px;
5106
  -moz-border-radius-bottomright: 3px;
5107
}
5108
5109
.pagination-small ul > li > a,
5110
.pagination-small ul > li > span {
5111
  padding: 2px 10px;
5112
  font-size: 11.9px;
5113
}
5114
5115
.pagination-mini ul > li > a,
5116
.pagination-mini ul > li > span {
5117
  padding: 0 6px;
5118
  font-size: 10.5px;
5119
}
5120
5121
.pager {
5122
  margin: 20px 0;
5123
  text-align: center;
5124
  list-style: none;
5125
  *zoom: 1;
5126
}
5127
5128
.pager:before,
5129
.pager:after {
5130
  display: table;
5131
  line-height: 0;
5132
  content: "";
5133
}
5134
5135
.pager:after {
5136
  clear: both;
5137
}
5138
5139
.pager li {
5140
  display: inline;
5141
}
5142
5143
.pager li > a,
5144
.pager li > span {
5145
  display: inline-block;
5146
  padding: 5px 14px;
5147
  background-color: #fff;
5148
  border: 1px solid #ddd;
5149
  -webkit-border-radius: 15px;
5150
     -moz-border-radius: 15px;
5151
          border-radius: 15px;
5152
}
5153
5154
.pager li > a:hover,
5155
.pager li > a:focus {
5156
  text-decoration: none;
5157
  background-color: #f5f5f5;
5158
}
5159
5160
.pager .next > a,
5161
.pager .next > span {
5162
  float: right;
5163
}
5164
5165
.pager .previous > a,
5166
.pager .previous > span {
5167
  float: left;
5168
}
5169
5170
.pager .disabled > a,
5171
.pager .disabled > a:hover,
5172
.pager .disabled > a:focus,
5173
.pager .disabled > span {
5174
  color: #999999;
5175
  cursor: default;
5176
  background-color: #fff;
5177
}
5178
5179
.modal-backdrop {
5180
  position: fixed;
5181
  top: 0;
5182
  right: 0;
5183
  bottom: 0;
5184
  left: 0;
5185
  z-index: 1040;
5186
  background-color: #000000;
5187
}
5188
5189
.modal-backdrop.fade {
5190
  opacity: 0;
5191
}
5192
5193
.modal-backdrop,
5194
.modal-backdrop.fade.in {
5195
  opacity: 0.8;
5196
  filter: alpha(opacity=80);
5197
}
5198
5199
.modal {
5200
  position: fixed;
5201
  top: 10%;
5202
  left: 50%;
5203
  z-index: 1050;
5204
  width: 560px;
5205
  margin-left: -280px;
5206
  background-color: #ffffff;
5207
  border: 1px solid #999;
5208
  border: 1px solid rgba(0, 0, 0, 0.3);
5209
  *border: 1px solid #999;
5210
  -webkit-border-radius: 6px;
5211
     -moz-border-radius: 6px;
5212
          border-radius: 6px;
5213
  outline: none;
5214
  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
5215
     -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
5216
          box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
5217
  -webkit-background-clip: padding-box;
5218
     -moz-background-clip: padding-box;
5219
          background-clip: padding-box;
5220
}
5221
5222
.modal.fade {
5223
  top: -25%;
5224
  -webkit-transition: opacity 0.3s linear, top 0.3s ease-out;
5225
     -moz-transition: opacity 0.3s linear, top 0.3s ease-out;
5226
       -o-transition: opacity 0.3s linear, top 0.3s ease-out;
5227
          transition: opacity 0.3s linear, top 0.3s ease-out;
5228
}
5229
5230
.modal.fade.in {
5231
  top: 10%;
5232
}
5233
5234
.modal-header {
5235
  padding: 9px 15px;
5236
  border-bottom: 1px solid #eee;
5237
}
5238
5239
.modal-header .close {
5240
  margin-top: 2px;
5241
}
5242
5243
.modal-header h3 {
5244
  margin: 0;
5245
  line-height: 30px;
5246
}
5247
5248
.modal-body {
5249
  position: relative;
5250
  max-height: 400px;
5251
  padding: 15px;
5252
  overflow-y: auto;
5253
}
5254
5255
.modal-form {
5256
  margin-bottom: 0;
5257
}
5258
5259
.modal-footer {
5260
  padding: 14px 15px 15px;
5261
  margin-bottom: 0;
5262
  text-align: right;
5263
  background-color: #f5f5f5;
5264
  border-top: 1px solid #ddd;
5265
  -webkit-border-radius: 0 0 6px 6px;
5266
     -moz-border-radius: 0 0 6px 6px;
5267
          border-radius: 0 0 6px 6px;
5268
  *zoom: 1;
5269
  -webkit-box-shadow: inset 0 1px 0 #ffffff;
5270
     -moz-box-shadow: inset 0 1px 0 #ffffff;
5271
          box-shadow: inset 0 1px 0 #ffffff;
5272
}
5273
5274
.modal-footer:before,
5275
.modal-footer:after {
5276
  display: table;
5277
  line-height: 0;
5278
  content: "";
5279
}
5280
5281
.modal-footer:after {
5282
  clear: both;
5283
}
5284
5285
.modal-footer .btn + .btn {
5286
  margin-bottom: 0;
5287
  margin-left: 5px;
5288
}
5289
5290
.modal-footer .btn-group .btn + .btn {
5291
  margin-left: -1px;
5292
}
5293
5294
.modal-footer .btn-block + .btn-block {
5295
  margin-left: 0;
5296
}
5297
5298
.tooltip {
5299
  position: absolute;
5300
  z-index: 1030;
5301
  display: block;
5302
  font-size: 11px;
5303
  line-height: 1.4;
5304
  opacity: 0;
5305
  filter: alpha(opacity=0);
5306
  visibility: visible;
5307
}
5308
5309
.tooltip.in {
5310
  opacity: 0.8;
5311
  filter: alpha(opacity=80);
5312
}
5313
5314
.tooltip.top {
5315
  padding: 5px 0;
5316
  margin-top: -3px;
5317
}
5318
5319
.tooltip.right {
5320
  padding: 0 5px;
5321
  margin-left: 3px;
5322
}
5323
5324
.tooltip.bottom {
5325
  padding: 5px 0;
5326
  margin-top: 3px;
5327
}
5328
5329
.tooltip.left {
5330
  padding: 0 5px;
5331
  margin-left: -3px;
5332
}
5333
5334
.tooltip-inner {
5335
  max-width: 200px;
5336
  padding: 8px;
5337
  color: #ffffff;
5338
  text-align: center;
5339
  text-decoration: none;
5340
  background-color: #000000;
5341
  -webkit-border-radius: 4px;
5342
     -moz-border-radius: 4px;
5343
          border-radius: 4px;
5344
}
5345
5346
.tooltip-arrow {
5347
  position: absolute;
5348
  width: 0;
5349
  height: 0;
5350
  border-color: transparent;
5351
  border-style: solid;
5352
}
5353
5354
.tooltip.top .tooltip-arrow {
5355
  bottom: 0;
5356
  left: 50%;
5357
  margin-left: -5px;
5358
  border-top-color: #000000;
5359
  border-width: 5px 5px 0;
5360
}
5361
5362
.tooltip.right .tooltip-arrow {
5363
  top: 50%;
5364
  left: 0;
5365
  margin-top: -5px;
5366
  border-right-color: #000000;
5367
  border-width: 5px 5px 5px 0;
5368
}
5369
5370
.tooltip.left .tooltip-arrow {
5371
  top: 50%;
5372
  right: 0;
5373
  margin-top: -5px;
5374
  border-left-color: #000000;
5375
  border-width: 5px 0 5px 5px;
5376
}
5377
5378
.tooltip.bottom .tooltip-arrow {
5379
  top: 0;
5380
  left: 50%;
5381
  margin-left: -5px;
5382
  border-bottom-color: #000000;
5383
  border-width: 0 5px 5px;
5384
}
5385
5386
.popover {
5387
  position: absolute;
5388
  top: 0;
5389
  left: 0;
5390
  z-index: 1010;
5391
  display: none;
5392
  max-width: 276px;
5393
  padding: 1px;
5394
  text-align: left;
5395
  white-space: normal;
5396
  background-color: #ffffff;
5397
  border: 1px solid #ccc;
5398
  border: 1px solid rgba(0, 0, 0, 0.2);
5399
  -webkit-border-radius: 6px;
5400
     -moz-border-radius: 6px;
5401
          border-radius: 6px;
5402
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5403
     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5404
          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5405
  -webkit-background-clip: padding-box;
5406
     -moz-background-clip: padding;
5407
          background-clip: padding-box;
5408
}
5409
5410
.popover.top {
5411
  margin-top: -10px;
5412
}
5413
5414
.popover.right {
5415
  margin-left: 10px;
5416
}
5417
5418
.popover.bottom {
5419
  margin-top: 10px;
5420
}
5421
5422
.popover.left {
5423
  margin-left: -10px;
5424
}
5425
5426
.popover-title {
5427
  padding: 8px 14px;
5428
  margin: 0;
5429
  font-size: 14px;
5430
  font-weight: normal;
5431
  line-height: 18px;
5432
  background-color: #f7f7f7;
5433
  border-bottom: 1px solid #ebebeb;
5434
  -webkit-border-radius: 5px 5px 0 0;
5435
     -moz-border-radius: 5px 5px 0 0;
5436
          border-radius: 5px 5px 0 0;
5437
}
5438
5439
.popover-title:empty {
5440
  display: none;
5441
}
5442
5443
.popover-content {
5444
  padding: 9px 14px;
5445
}
5446
5447
.popover .arrow,
5448
.popover .arrow:after {
5449
  position: absolute;
5450
  display: block;
5451
  width: 0;
5452
  height: 0;
5453
  border-color: transparent;
5454
  border-style: solid;
5455
}
5456
5457
.popover .arrow {
5458
  border-width: 11px;
5459
}
5460
5461
.popover .arrow:after {
5462
  border-width: 10px;
5463
  content: "";
5464
}
5465
5466
.popover.top .arrow {
5467
  bottom: -11px;
5468
  left: 50%;
5469
  margin-left: -11px;
5470
  border-top-color: #999;
5471
  border-top-color: rgba(0, 0, 0, 0.25);
5472
  border-bottom-width: 0;
5473
}
5474
5475
.popover.top .arrow:after {
5476
  bottom: 1px;
5477
  margin-left: -10px;
5478
  border-top-color: #ffffff;
5479
  border-bottom-width: 0;
5480
}
5481
5482
.popover.right .arrow {
5483
  top: 50%;
5484
  left: -11px;
5485
  margin-top: -11px;
5486
  border-right-color: #999;
5487
  border-right-color: rgba(0, 0, 0, 0.25);
5488
  border-left-width: 0;
5489
}
5490
5491
.popover.right .arrow:after {
5492
  bottom: -10px;
5493
  left: 1px;
5494
  border-right-color: #ffffff;
5495
  border-left-width: 0;
5496
}
5497
5498
.popover.bottom .arrow {
5499
  top: -11px;
5500
  left: 50%;
5501
  margin-left: -11px;
5502
  border-bottom-color: #999;
5503
  border-bottom-color: rgba(0, 0, 0, 0.25);
5504
  border-top-width: 0;
5505
}
5506
5507
.popover.bottom .arrow:after {
5508
  top: 1px;
5509
  margin-left: -10px;
5510
  border-bottom-color: #ffffff;
5511
  border-top-width: 0;
5512
}
5513
5514
.popover.left .arrow {
5515
  top: 50%;
5516
  right: -11px;
5517
  margin-top: -11px;
5518
  border-left-color: #999;
5519
  border-left-color: rgba(0, 0, 0, 0.25);
5520
  border-right-width: 0;
5521
}
5522
5523
.popover.left .arrow:after {
5524
  right: 1px;
5525
  bottom: -10px;
5526
  border-left-color: #ffffff;
5527
  border-right-width: 0;
5528
}
5529
5530
.thumbnails {
5531
  margin-left: -20px;
5532
  list-style: none;
5533
  *zoom: 1;
5534
}
5535
5536
.thumbnails:before,
5537
.thumbnails:after {
5538
  display: table;
5539
  line-height: 0;
5540
  content: "";
5541
}
5542
5543
.thumbnails:after {
5544
  clear: both;
5545
}
5546
5547
.row-fluid .thumbnails {
5548
  margin-left: 0;
5549
}
5550
5551
.thumbnails > li {
5552
  float: left;
5553
  margin-bottom: 20px;
5554
  margin-left: 20px;
5555
}
5556
5557
.thumbnail {
5558
  display: block;
5559
  padding: 4px;
5560
  line-height: 20px;
5561
  border: 1px solid #ddd;
5562
  -webkit-border-radius: 4px;
5563
     -moz-border-radius: 4px;
5564
          border-radius: 4px;
5565
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
5566
     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
5567
          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
5568
  -webkit-transition: all 0.2s ease-in-out;
5569
     -moz-transition: all 0.2s ease-in-out;
5570
       -o-transition: all 0.2s ease-in-out;
5571
          transition: all 0.2s ease-in-out;
5572
}
5573
5574
a.thumbnail:hover,
5575
a.thumbnail:focus {
5576
  border-color: #0088cc;
5577
  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
5578
     -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
5579
          box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
5580
}
5581
5582
.thumbnail > img {
5583
  display: block;
5584
  max-width: 100%;
5585
  margin-right: auto;
5586
  margin-left: auto;
5587
}
5588
5589
.thumbnail .caption {
5590
  padding: 9px;
5591
  color: #555555;
5592
}
5593
5594
.media,
5595
.media-body {
5596
  overflow: hidden;
5597
  *overflow: visible;
5598
  zoom: 1;
5599
}
5600
5601
.media,
5602
.media .media {
5603
  margin-top: 15px;
5604
}
5605
5606
.media:first-child {
5607
  margin-top: 0;
5608
}
5609
5610
.media-object {
5611
  display: block;
5612
}
5613
5614
.media-heading {
5615
  margin: 0 0 5px;
5616
}
5617
5618
.media > .pull-left {
5619
  margin-right: 10px;
5620
}
5621
5622
.media > .pull-right {
5623
  margin-left: 10px;
5624
}
5625
5626
.media-list {
5627
  margin-left: 0;
5628
  list-style: none;
5629
}
5630
5631
.label,
5632
.badge {
5633
  display: inline-block;
5634
  padding: 2px 4px;
5635
  font-size: 11.844px;
5636
  font-weight: bold;
5637
  line-height: 14px;
5638
  color: #ffffff;
5639
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
5640
  white-space: nowrap;
5641
  vertical-align: baseline;
5642
  background-color: #999999;
5643
}
5644
5645
.label {
5646
  -webkit-border-radius: 3px;
5647
     -moz-border-radius: 3px;
5648
          border-radius: 3px;
5649
}
5650
5651
.badge {
5652
  padding-right: 9px;
5653
  padding-left: 9px;
5654
  -webkit-border-radius: 9px;
5655
     -moz-border-radius: 9px;
5656
          border-radius: 9px;
5657
}
5658
5659
.label:empty,
5660
.badge:empty {
5661
  display: none;
5662
}
5663
5664
a.label:hover,
5665
a.label:focus,
5666
a.badge:hover,
5667
a.badge:focus {
5668
  color: #ffffff;
5669
  text-decoration: none;
5670
  cursor: pointer;
5671
}
5672
5673
.label-important,
5674
.badge-important {
5675
  background-color: #b94a48;
5676
}
5677
5678
.label-important[href],
5679
.badge-important[href] {
5680
  background-color: #953b39;
5681
}
5682
5683
.label-warning,
5684
.badge-warning {
5685
  background-color: #f89406;
5686
}
5687
5688
.label-warning[href],
5689
.badge-warning[href] {
5690
  background-color: #c67605;
5691
}
5692
5693
.label-success,
5694
.badge-success {
5695
  background-color: #468847;
5696
}
5697
5698
.label-success[href],
5699
.badge-success[href] {
5700
  background-color: #356635;
5701
}
5702
5703
.label-info,
5704
.badge-info {
5705
  background-color: #3a87ad;
5706
}
5707
5708
.label-info[href],
5709
.badge-info[href] {
5710
  background-color: #2d6987;
5711
}
5712
5713
.label-inverse,
5714
.badge-inverse {
5715
  background-color: #333333;
5716
}
5717
5718
.label-inverse[href],
5719
.badge-inverse[href] {
5720
  background-color: #1a1a1a;
5721
}
5722
5723
.btn .label,
5724
.btn .badge {
5725
  position: relative;
5726
  top: -1px;
5727
}
5728
5729
.btn-mini .label,
5730
.btn-mini .badge {
5731
  top: 0;
5732
}
5733
5734
@-webkit-keyframes progress-bar-stripes {
5735
  from {
5736
    background-position: 40px 0;
5737
  }
5738
  to {
5739
    background-position: 0 0;
5740
  }
5741
}
5742
5743
@-moz-keyframes progress-bar-stripes {
5744
  from {
5745
    background-position: 40px 0;
5746
  }
5747
  to {
5748
    background-position: 0 0;
5749
  }
5750
}
5751
5752
@-ms-keyframes progress-bar-stripes {
5753
  from {
5754
    background-position: 40px 0;
5755
  }
5756
  to {
5757
    background-position: 0 0;
5758
  }
5759
}
5760
5761
@-o-keyframes progress-bar-stripes {
5762
  from {
5763
    background-position: 0 0;
5764
  }
5765
  to {
5766
    background-position: 40px 0;
5767
  }
5768
}
5769
5770
@keyframes progress-bar-stripes {
5771
  from {
5772
    background-position: 40px 0;
5773
  }
5774
  to {
5775
    background-position: 0 0;
5776
  }
5777
}
5778
5779
.progress {
5780
  height: 20px;
5781
  margin-bottom: 20px;
5782
  overflow: hidden;
5783
  background-color: #f7f7f7;
5784
  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
5785
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
5786
  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
5787
  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
5788
  background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
5789
  background-repeat: repeat-x;
5790
  -webkit-border-radius: 4px;
5791
     -moz-border-radius: 4px;
5792
          border-radius: 4px;
5793
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
5794
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5795
     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5796
          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5797
}
5798
5799
.progress .bar {
5800
  float: left;
5801
  width: 0;
5802
  height: 100%;
5803
  font-size: 12px;
5804
  color: #ffffff;
5805
  text-align: center;
5806
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
5807
  background-color: #0e90d2;
5808
  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
5809
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
5810
  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
5811
  background-image: -o-linear-gradient(top, #149bdf, #0480be);
5812
  background-image: linear-gradient(to bottom, #149bdf, #0480be);
5813
  background-repeat: repeat-x;
5814
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
5815
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5816
     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5817
          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5818
  -webkit-box-sizing: border-box;
5819
     -moz-box-sizing: border-box;
5820
          box-sizing: border-box;
5821
  -webkit-transition: width 0.6s ease;
5822
     -moz-transition: width 0.6s ease;
5823
       -o-transition: width 0.6s ease;
5824
          transition: width 0.6s ease;
5825
}
5826
5827
.progress .bar + .bar {
5828
  -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5829
     -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5830
          box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5831
}
5832
5833
.progress-striped .bar {
5834
  background-color: #149bdf;
5835
  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
5836
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5837
  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5838
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5839
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5840
  -webkit-background-size: 40px 40px;
5841
     -moz-background-size: 40px 40px;
5842
       -o-background-size: 40px 40px;
5843
          background-size: 40px 40px;
5844
}
5845
5846
.progress.active .bar {
5847
  -webkit-animation: progress-bar-stripes 2s linear infinite;
5848
     -moz-animation: progress-bar-stripes 2s linear infinite;
5849
      -ms-animation: progress-bar-stripes 2s linear infinite;
5850
       -o-animation: progress-bar-stripes 2s linear infinite;
5851
          animation: progress-bar-stripes 2s linear infinite;
5852
}
5853
5854
.progress-danger .bar,
5855
.progress .bar-danger {
5856
  background-color: #dd514c;
5857
  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
5858
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
5859
  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
5860
  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
5861
  background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
5862
  background-repeat: repeat-x;
5863
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
5864
}
5865
5866
.progress-danger.progress-striped .bar,
5867
.progress-striped .bar-danger {
5868
  background-color: #ee5f5b;
5869
  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
5870
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5871
  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5872
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5873
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5874
}
5875
5876
.progress-success .bar,
5877
.progress .bar-success {
5878
  background-color: #5eb95e;
5879
  background-image: -moz-linear-gradient(top, #62c462, #57a957);
5880
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
5881
  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
5882
  background-image: -o-linear-gradient(top, #62c462, #57a957);
5883
  background-image: linear-gradient(to bottom, #62c462, #57a957);
5884
  background-repeat: repeat-x;
5885
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
5886
}
5887
5888
.progress-success.progress-striped .bar,
5889
.progress-striped .bar-success {
5890
  background-color: #62c462;
5891
  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
5892
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5893
  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5894
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5895
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5896
}
5897
5898
.progress-info .bar,
5899
.progress .bar-info {
5900
  background-color: #4bb1cf;
5901
  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
5902
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
5903
  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
5904
  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
5905
  background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
5906
  background-repeat: repeat-x;
5907
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
5908
}
5909
5910
.progress-info.progress-striped .bar,
5911
.progress-striped .bar-info {
5912
  background-color: #5bc0de;
5913
  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
5914
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5915
  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5916
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5917
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5918
}
5919
5920
.progress-warning .bar,
5921
.progress .bar-warning {
5922
  background-color: #faa732;
5923
  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
5924
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
5925
  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
5926
  background-image: -o-linear-gradient(top, #fbb450, #f89406);
5927
  background-image: linear-gradient(to bottom, #fbb450, #f89406);
5928
  background-repeat: repeat-x;
5929
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
5930
}
5931
5932
.progress-warning.progress-striped .bar,
5933
.progress-striped .bar-warning {
5934
  background-color: #fbb450;
5935
  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
5936
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5937
  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5938
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5939
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5940
}
5941
5942
.accordion {
5943
  margin-bottom: 20px;
5944
}
5945
5946
.accordion-group {
5947
  margin-bottom: 2px;
5948
  border: 1px solid #e5e5e5;
5949
  -webkit-border-radius: 4px;
5950
     -moz-border-radius: 4px;
5951
          border-radius: 4px;
5952
}
5953
5954
.accordion-heading {
5955
  border-bottom: 0;
5956
}
5957
5958
.accordion-heading .accordion-toggle {
5959
  display: block;
5960
  padding: 8px 15px;
5961
}
5962
5963
.accordion-toggle {
5964
  cursor: pointer;
5965
}
5966
5967
.accordion-inner {
5968
  padding: 9px 15px;
5969
  border-top: 1px solid #e5e5e5;
5970
}
5971
5972
.carousel {
5973
  position: relative;
5974
  margin-bottom: 20px;
5975
  line-height: 1;
5976
}
5977
5978
.carousel-inner {
5979
  position: relative;
5980
  width: 100%;
5981
  overflow: hidden;
5982
}
5983
5984
.carousel-inner > .item {
5985
  position: relative;
5986
  display: none;
5987
  -webkit-transition: 0.6s ease-in-out left;
5988
     -moz-transition: 0.6s ease-in-out left;
5989
       -o-transition: 0.6s ease-in-out left;
5990
          transition: 0.6s ease-in-out left;
5991
}
5992
5993
.carousel-inner > .item > img,
5994
.carousel-inner > .item > a > img {
5995
  display: block;
5996
  line-height: 1;
5997
}
5998
5999
.carousel-inner > .active,
6000
.carousel-inner > .next,
6001
.carousel-inner > .prev {
6002
  display: block;
6003
}
6004
6005
.carousel-inner > .active {
6006
  left: 0;
6007
}
6008
6009
.carousel-inner > .next,
6010
.carousel-inner > .prev {
6011
  position: absolute;
6012
  top: 0;
6013
  width: 100%;
6014
}
6015
6016
.carousel-inner > .next {
6017
  left: 100%;
6018
}
6019
6020
.carousel-inner > .prev {
6021
  left: -100%;
6022
}
6023
6024
.carousel-inner > .next.left,
6025
.carousel-inner > .prev.right {
6026
  left: 0;
6027
}
6028
6029
.carousel-inner > .active.left {
6030
  left: -100%;
6031
}
6032
6033
.carousel-inner > .active.right {
6034
  left: 100%;
6035
}
6036
6037
.carousel-control {
6038
  position: absolute;
6039
  top: 40%;
6040
  left: 15px;
6041
  width: 40px;
6042
  height: 40px;
6043
  margin-top: -20px;
6044
  font-size: 60px;
6045
  font-weight: 100;
6046
  line-height: 30px;
6047
  color: #ffffff;
6048
  text-align: center;
6049
  background: #222222;
6050
  border: 3px solid #ffffff;
6051
  -webkit-border-radius: 23px;
6052
     -moz-border-radius: 23px;
6053
          border-radius: 23px;
6054
  opacity: 0.5;
6055
  filter: alpha(opacity=50);
6056
}
6057
6058
.carousel-control.right {
6059
  right: 15px;
6060
  left: auto;
6061
}
6062
6063
.carousel-control:hover,
6064
.carousel-control:focus {
6065
  color: #ffffff;
6066
  text-decoration: none;
6067
  opacity: 0.9;
6068
  filter: alpha(opacity=90);
6069
}
6070
6071
.carousel-indicators {
6072
  position: absolute;
6073
  top: 15px;
6074
  right: 15px;
6075
  z-index: 5;
6076
  margin: 0;
6077
  list-style: none;
6078
}
6079
6080
.carousel-indicators li {
6081
  display: block;
6082
  float: left;
6083
  width: 10px;
6084
  height: 10px;
6085
  margin-left: 5px;
6086
  text-indent: -999px;
6087
  background-color: #ccc;
6088
  background-color: rgba(255, 255, 255, 0.25);
6089
  border-radius: 5px;
6090
}
6091
6092
.carousel-indicators .active {
6093
  background-color: #fff;
6094
}
6095
6096
.carousel-caption {
6097
  position: absolute;
6098
  right: 0;
6099
  bottom: 0;
6100
  left: 0;
6101
  padding: 15px;
6102
  background: #333333;
6103
  background: rgba(0, 0, 0, 0.75);
6104
}
6105
6106
.carousel-caption h4,
6107
.carousel-caption p {
6108
  line-height: 20px;
6109
  color: #ffffff;
6110
}
6111
6112
.carousel-caption h4 {
6113
  margin: 0 0 5px;
6114
}
6115
6116
.carousel-caption p {
6117
  margin-bottom: 0;
6118
}
6119
6120
.hero-unit {
6121
  padding: 60px;
6122
  margin-bottom: 30px;
6123
  font-size: 18px;
6124
  font-weight: 200;
6125
  line-height: 30px;
6126
  color: inherit;
6127
  background-color: #eeeeee;
6128
  -webkit-border-radius: 6px;
6129
     -moz-border-radius: 6px;
6130
          border-radius: 6px;
6131
}
6132
6133
.hero-unit h1 {
6134
  margin-bottom: 0;
6135
  font-size: 60px;
6136
  line-height: 1;
6137
  letter-spacing: -1px;
6138
  color: inherit;
6139
}
6140
6141
.hero-unit li {
6142
  line-height: 30px;
6143
}
6144
6145
.pull-right {
6146
  float: right;
6147
}
6148
6149
.pull-left {
6150
  float: left;
6151
}
6152
6153
.hide {
6154
  display: none;
6155
}
6156
6157
.show {
6158
  display: block;
6159
}
6160
6161
.invisible {
6162
  visibility: hidden;
6163
}
6164
6165
.affix {
6166
  position: fixed;
6167
}
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/bootstrap-2.3.2/css/bootstrap.min.css (+9 lines)
Line 0 Link Here
1
/*!
2
 * Bootstrap v2.3.2
3
 *
4
 * Copyright 2013 Twitter, Inc
5
 * Licensed under the Apache License v2.0
6
 * http://www.apache.org/licenses/LICENSE-2.0
7
 *
8
 * Designed and built with all the love in the world by @mdo and @fat.
9
 */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/bootstrap-2.3.2/js/bootstrap.js (+2280 lines)
Line 0 Link Here
1
/* ===================================================
2
 * bootstrap-transition.js v2.3.2
3
 * http://getbootstrap.com/2.3.2/javascript.html#transitions
4
 * ===================================================
5
 * Copyright 2013 Twitter, Inc.
6
 *
7
 * Licensed under the Apache License, Version 2.0 (the "License");
8
 * you may not use this file except in compliance with the License.
9
 * You may obtain a copy of the License at
10
 *
11
 * http://www.apache.org/licenses/LICENSE-2.0
12
 *
13
 * Unless required by applicable law or agreed to in writing, software
14
 * distributed under the License is distributed on an "AS IS" BASIS,
15
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
 * See the License for the specific language governing permissions and
17
 * limitations under the License.
18
 * ========================================================== */
19
20
21
!function ($) {
22
23
  "use strict"; // jshint ;_;
24
25
26
  /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
27
   * ======================================================= */
28
29
  $(function () {
30
31
    $.support.transition = (function () {
32
33
      var transitionEnd = (function () {
34
35
        var el = document.createElement('bootstrap')
36
          , transEndEventNames = {
37
               'WebkitTransition' : 'webkitTransitionEnd'
38
            ,  'MozTransition'    : 'transitionend'
39
            ,  'OTransition'      : 'oTransitionEnd otransitionend'
40
            ,  'transition'       : 'transitionend'
41
            }
42
          , name
43
44
        for (name in transEndEventNames){
45
          if (el.style[name] !== undefined) {
46
            return transEndEventNames[name]
47
          }
48
        }
49
50
      }())
51
52
      return transitionEnd && {
53
        end: transitionEnd
54
      }
55
56
    })()
57
58
  })
59
60
}(window.jQuery);/* ==========================================================
61
 * bootstrap-alert.js v2.3.2
62
 * http://getbootstrap.com/2.3.2/javascript.html#alerts
63
 * ==========================================================
64
 * Copyright 2013 Twitter, Inc.
65
 *
66
 * Licensed under the Apache License, Version 2.0 (the "License");
67
 * you may not use this file except in compliance with the License.
68
 * You may obtain a copy of the License at
69
 *
70
 * http://www.apache.org/licenses/LICENSE-2.0
71
 *
72
 * Unless required by applicable law or agreed to in writing, software
73
 * distributed under the License is distributed on an "AS IS" BASIS,
74
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
75
 * See the License for the specific language governing permissions and
76
 * limitations under the License.
77
 * ========================================================== */
78
79
80
!function ($) {
81
82
  "use strict"; // jshint ;_;
83
84
85
 /* ALERT CLASS DEFINITION
86
  * ====================== */
87
88
  var dismiss = '[data-dismiss="alert"]'
89
    , Alert = function (el) {
90
        $(el).on('click', dismiss, this.close)
91
      }
92
93
  Alert.prototype.close = function (e) {
94
    var $this = $(this)
95
      , selector = $this.attr('data-target')
96
      , $parent
97
98
    if (!selector) {
99
      selector = $this.attr('href')
100
      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
101
    }
102
103
    $parent = $(selector)
104
105
    e && e.preventDefault()
106
107
    $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
108
109
    $parent.trigger(e = $.Event('close'))
110
111
    if (e.isDefaultPrevented()) return
112
113
    $parent.removeClass('in')
114
115
    function removeElement() {
116
      $parent
117
        .trigger('closed')
118
        .remove()
119
    }
120
121
    $.support.transition && $parent.hasClass('fade') ?
122
      $parent.on($.support.transition.end, removeElement) :
123
      removeElement()
124
  }
125
126
127
 /* ALERT PLUGIN DEFINITION
128
  * ======================= */
129
130
  var old = $.fn.alert
131
132
  $.fn.alert = function (option) {
133
    return this.each(function () {
134
      var $this = $(this)
135
        , data = $this.data('alert')
136
      if (!data) $this.data('alert', (data = new Alert(this)))
137
      if (typeof option == 'string') data[option].call($this)
138
    })
139
  }
140
141
  $.fn.alert.Constructor = Alert
142
143
144
 /* ALERT NO CONFLICT
145
  * ================= */
146
147
  $.fn.alert.noConflict = function () {
148
    $.fn.alert = old
149
    return this
150
  }
151
152
153
 /* ALERT DATA-API
154
  * ============== */
155
156
  $(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
157
158
}(window.jQuery);/* ============================================================
159
 * bootstrap-button.js v2.3.2
160
 * http://getbootstrap.com/2.3.2/javascript.html#buttons
161
 * ============================================================
162
 * Copyright 2013 Twitter, Inc.
163
 *
164
 * Licensed under the Apache License, Version 2.0 (the "License");
165
 * you may not use this file except in compliance with the License.
166
 * You may obtain a copy of the License at
167
 *
168
 * http://www.apache.org/licenses/LICENSE-2.0
169
 *
170
 * Unless required by applicable law or agreed to in writing, software
171
 * distributed under the License is distributed on an "AS IS" BASIS,
172
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
173
 * See the License for the specific language governing permissions and
174
 * limitations under the License.
175
 * ============================================================ */
176
177
178
!function ($) {
179
180
  "use strict"; // jshint ;_;
181
182
183
 /* BUTTON PUBLIC CLASS DEFINITION
184
  * ============================== */
185
186
  var Button = function (element, options) {
187
    this.$element = $(element)
188
    this.options = $.extend({}, $.fn.button.defaults, options)
189
  }
190
191
  Button.prototype.setState = function (state) {
192
    var d = 'disabled'
193
      , $el = this.$element
194
      , data = $el.data()
195
      , val = $el.is('input') ? 'val' : 'html'
196
197
    state = state + 'Text'
198
    data.resetText || $el.data('resetText', $el[val]())
199
200
    $el[val](data[state] || this.options[state])
201
202
    // push to event loop to allow forms to submit
203
    setTimeout(function () {
204
      state == 'loadingText' ?
205
        $el.addClass(d).attr(d, d) :
206
        $el.removeClass(d).removeAttr(d)
207
    }, 0)
208
  }
209
210
  Button.prototype.toggle = function () {
211
    var $parent = this.$element.closest('[data-toggle="buttons-radio"]')
212
213
    $parent && $parent
214
      .find('.active')
215
      .removeClass('active')
216
217
    this.$element.toggleClass('active')
218
  }
219
220
221
 /* BUTTON PLUGIN DEFINITION
222
  * ======================== */
223
224
  var old = $.fn.button
225
226
  $.fn.button = function (option) {
227
    return this.each(function () {
228
      var $this = $(this)
229
        , data = $this.data('button')
230
        , options = typeof option == 'object' && option
231
      if (!data) $this.data('button', (data = new Button(this, options)))
232
      if (option == 'toggle') data.toggle()
233
      else if (option) data.setState(option)
234
    })
235
  }
236
237
  $.fn.button.defaults = {
238
    loadingText: 'loading...'
239
  }
240
241
  $.fn.button.Constructor = Button
242
243
244
 /* BUTTON NO CONFLICT
245
  * ================== */
246
247
  $.fn.button.noConflict = function () {
248
    $.fn.button = old
249
    return this
250
  }
251
252
253
 /* BUTTON DATA-API
254
  * =============== */
255
256
  $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) {
257
    var $btn = $(e.target)
258
    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
259
    $btn.button('toggle')
260
  })
261
262
}(window.jQuery);/* ==========================================================
263
 * bootstrap-carousel.js v2.3.2
264
 * http://getbootstrap.com/2.3.2/javascript.html#carousel
265
 * ==========================================================
266
 * Copyright 2013 Twitter, Inc.
267
 *
268
 * Licensed under the Apache License, Version 2.0 (the "License");
269
 * you may not use this file except in compliance with the License.
270
 * You may obtain a copy of the License at
271
 *
272
 * http://www.apache.org/licenses/LICENSE-2.0
273
 *
274
 * Unless required by applicable law or agreed to in writing, software
275
 * distributed under the License is distributed on an "AS IS" BASIS,
276
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
277
 * See the License for the specific language governing permissions and
278
 * limitations under the License.
279
 * ========================================================== */
280
281
282
!function ($) {
283
284
  "use strict"; // jshint ;_;
285
286
287
 /* CAROUSEL CLASS DEFINITION
288
  * ========================= */
289
290
  var Carousel = function (element, options) {
291
    this.$element = $(element)
292
    this.$indicators = this.$element.find('.carousel-indicators')
293
    this.options = options
294
    this.options.pause == 'hover' && this.$element
295
      .on('mouseenter', $.proxy(this.pause, this))
296
      .on('mouseleave', $.proxy(this.cycle, this))
297
  }
298
299
  Carousel.prototype = {
300
301
    cycle: function (e) {
302
      if (!e) this.paused = false
303
      if (this.interval) clearInterval(this.interval);
304
      this.options.interval
305
        && !this.paused
306
        && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
307
      return this
308
    }
309
310
  , getActiveIndex: function () {
311
      this.$active = this.$element.find('.item.active')
312
      this.$items = this.$active.parent().children()
313
      return this.$items.index(this.$active)
314
    }
315
316
  , to: function (pos) {
317
      var activeIndex = this.getActiveIndex()
318
        , that = this
319
320
      if (pos > (this.$items.length - 1) || pos < 0) return
321
322
      if (this.sliding) {
323
        return this.$element.one('slid', function () {
324
          that.to(pos)
325
        })
326
      }
327
328
      if (activeIndex == pos) {
329
        return this.pause().cycle()
330
      }
331
332
      return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
333
    }
334
335
  , pause: function (e) {
336
      if (!e) this.paused = true
337
      if (this.$element.find('.next, .prev').length && $.support.transition.end) {
338
        this.$element.trigger($.support.transition.end)
339
        this.cycle(true)
340
      }
341
      clearInterval(this.interval)
342
      this.interval = null
343
      return this
344
    }
345
346
  , next: function () {
347
      if (this.sliding) return
348
      return this.slide('next')
349
    }
350
351
  , prev: function () {
352
      if (this.sliding) return
353
      return this.slide('prev')
354
    }
355
356
  , slide: function (type, next) {
357
      var $active = this.$element.find('.item.active')
358
        , $next = next || $active[type]()
359
        , isCycling = this.interval
360
        , direction = type == 'next' ? 'left' : 'right'
361
        , fallback  = type == 'next' ? 'first' : 'last'
362
        , that = this
363
        , e
364
365
      this.sliding = true
366
367
      isCycling && this.pause()
368
369
      $next = $next.length ? $next : this.$element.find('.item')[fallback]()
370
371
      e = $.Event('slide', {
372
        relatedTarget: $next[0]
373
      , direction: direction
374
      })
375
376
      if ($next.hasClass('active')) return
377
378
      if (this.$indicators.length) {
379
        this.$indicators.find('.active').removeClass('active')
380
        this.$element.one('slid', function () {
381
          var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
382
          $nextIndicator && $nextIndicator.addClass('active')
383
        })
384
      }
385
386
      if ($.support.transition && this.$element.hasClass('slide')) {
387
        this.$element.trigger(e)
388
        if (e.isDefaultPrevented()) return
389
        $next.addClass(type)
390
        $next[0].offsetWidth // force reflow
391
        $active.addClass(direction)
392
        $next.addClass(direction)
393
        this.$element.one($.support.transition.end, function () {
394
          $next.removeClass([type, direction].join(' ')).addClass('active')
395
          $active.removeClass(['active', direction].join(' '))
396
          that.sliding = false
397
          setTimeout(function () { that.$element.trigger('slid') }, 0)
398
        })
399
      } else {
400
        this.$element.trigger(e)
401
        if (e.isDefaultPrevented()) return
402
        $active.removeClass('active')
403
        $next.addClass('active')
404
        this.sliding = false
405
        this.$element.trigger('slid')
406
      }
407
408
      isCycling && this.cycle()
409
410
      return this
411
    }
412
413
  }
414
415
416
 /* CAROUSEL PLUGIN DEFINITION
417
  * ========================== */
418
419
  var old = $.fn.carousel
420
421
  $.fn.carousel = function (option) {
422
    return this.each(function () {
423
      var $this = $(this)
424
        , data = $this.data('carousel')
425
        , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
426
        , action = typeof option == 'string' ? option : options.slide
427
      if (!data) $this.data('carousel', (data = new Carousel(this, options)))
428
      if (typeof option == 'number') data.to(option)
429
      else if (action) data[action]()
430
      else if (options.interval) data.pause().cycle()
431
    })
432
  }
433
434
  $.fn.carousel.defaults = {
435
    interval: 5000
436
  , pause: 'hover'
437
  }
438
439
  $.fn.carousel.Constructor = Carousel
440
441
442
 /* CAROUSEL NO CONFLICT
443
  * ==================== */
444
445
  $.fn.carousel.noConflict = function () {
446
    $.fn.carousel = old
447
    return this
448
  }
449
450
 /* CAROUSEL DATA-API
451
  * ================= */
452
453
  $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
454
    var $this = $(this), href
455
      , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
456
      , options = $.extend({}, $target.data(), $this.data())
457
      , slideIndex
458
459
    $target.carousel(options)
460
461
    if (slideIndex = $this.attr('data-slide-to')) {
462
      $target.data('carousel').pause().to(slideIndex).cycle()
463
    }
464
465
    e.preventDefault()
466
  })
467
468
}(window.jQuery);/* =============================================================
469
 * bootstrap-collapse.js v2.3.2
470
 * http://getbootstrap.com/2.3.2/javascript.html#collapse
471
 * =============================================================
472
 * Copyright 2013 Twitter, Inc.
473
 *
474
 * Licensed under the Apache License, Version 2.0 (the "License");
475
 * you may not use this file except in compliance with the License.
476
 * You may obtain a copy of the License at
477
 *
478
 * http://www.apache.org/licenses/LICENSE-2.0
479
 *
480
 * Unless required by applicable law or agreed to in writing, software
481
 * distributed under the License is distributed on an "AS IS" BASIS,
482
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
483
 * See the License for the specific language governing permissions and
484
 * limitations under the License.
485
 * ============================================================ */
486
487
488
!function ($) {
489
490
  "use strict"; // jshint ;_;
491
492
493
 /* COLLAPSE PUBLIC CLASS DEFINITION
494
  * ================================ */
495
496
  var Collapse = function (element, options) {
497
    this.$element = $(element)
498
    this.options = $.extend({}, $.fn.collapse.defaults, options)
499
500
    if (this.options.parent) {
501
      this.$parent = $(this.options.parent)
502
    }
503
504
    this.options.toggle && this.toggle()
505
  }
506
507
  Collapse.prototype = {
508
509
    constructor: Collapse
510
511
  , dimension: function () {
512
      var hasWidth = this.$element.hasClass('width')
513
      return hasWidth ? 'width' : 'height'
514
    }
515
516
  , show: function () {
517
      var dimension
518
        , scroll
519
        , actives
520
        , hasData
521
522
      if (this.transitioning || this.$element.hasClass('in')) return
523
524
      dimension = this.dimension()
525
      scroll = $.camelCase(['scroll', dimension].join('-'))
526
      actives = this.$parent && this.$parent.find('> .accordion-group > .in')
527
528
      if (actives && actives.length) {
529
        hasData = actives.data('collapse')
530
        if (hasData && hasData.transitioning) return
531
        actives.collapse('hide')
532
        hasData || actives.data('collapse', null)
533
      }
534
535
      this.$element[dimension](0)
536
      this.transition('addClass', $.Event('show'), 'shown')
537
      $.support.transition && this.$element[dimension](this.$element[0][scroll])
538
    }
539
540
  , hide: function () {
541
      var dimension
542
      if (this.transitioning || !this.$element.hasClass('in')) return
543
      dimension = this.dimension()
544
      this.reset(this.$element[dimension]())
545
      this.transition('removeClass', $.Event('hide'), 'hidden')
546
      this.$element[dimension](0)
547
    }
548
549
  , reset: function (size) {
550
      var dimension = this.dimension()
551
552
      this.$element
553
        .removeClass('collapse')
554
        [dimension](size || 'auto')
555
        [0].offsetWidth
556
557
      this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
558
559
      return this
560
    }
561
562
  , transition: function (method, startEvent, completeEvent) {
563
      var that = this
564
        , complete = function () {
565
            if (startEvent.type == 'show') that.reset()
566
            that.transitioning = 0
567
            that.$element.trigger(completeEvent)
568
          }
569
570
      this.$element.trigger(startEvent)
571
572
      if (startEvent.isDefaultPrevented()) return
573
574
      this.transitioning = 1
575
576
      this.$element[method]('in')
577
578
      $.support.transition && this.$element.hasClass('collapse') ?
579
        this.$element.one($.support.transition.end, complete) :
580
        complete()
581
    }
582
583
  , toggle: function () {
584
      this[this.$element.hasClass('in') ? 'hide' : 'show']()
585
    }
586
587
  }
588
589
590
 /* COLLAPSE PLUGIN DEFINITION
591
  * ========================== */
592
593
  var old = $.fn.collapse
594
595
  $.fn.collapse = function (option) {
596
    return this.each(function () {
597
      var $this = $(this)
598
        , data = $this.data('collapse')
599
        , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option)
600
      if (!data) $this.data('collapse', (data = new Collapse(this, options)))
601
      if (typeof option == 'string') data[option]()
602
    })
603
  }
604
605
  $.fn.collapse.defaults = {
606
    toggle: true
607
  }
608
609
  $.fn.collapse.Constructor = Collapse
610
611
612
 /* COLLAPSE NO CONFLICT
613
  * ==================== */
614
615
  $.fn.collapse.noConflict = function () {
616
    $.fn.collapse = old
617
    return this
618
  }
619
620
621
 /* COLLAPSE DATA-API
622
  * ================= */
623
624
  $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
625
    var $this = $(this), href
626
      , target = $this.attr('data-target')
627
        || e.preventDefault()
628
        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
629
      , option = $(target).data('collapse') ? 'toggle' : $this.data()
630
    $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
631
    $(target).collapse(option)
632
  })
633
634
}(window.jQuery);/* ============================================================
635
 * bootstrap-dropdown.js v2.3.2
636
 * http://getbootstrap.com/2.3.2/javascript.html#dropdowns
637
 * ============================================================
638
 * Copyright 2013 Twitter, Inc.
639
 *
640
 * Licensed under the Apache License, Version 2.0 (the "License");
641
 * you may not use this file except in compliance with the License.
642
 * You may obtain a copy of the License at
643
 *
644
 * http://www.apache.org/licenses/LICENSE-2.0
645
 *
646
 * Unless required by applicable law or agreed to in writing, software
647
 * distributed under the License is distributed on an "AS IS" BASIS,
648
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
649
 * See the License for the specific language governing permissions and
650
 * limitations under the License.
651
 * ============================================================ */
652
653
654
!function ($) {
655
656
  "use strict"; // jshint ;_;
657
658
659
 /* DROPDOWN CLASS DEFINITION
660
  * ========================= */
661
662
  var toggle = '[data-toggle=dropdown]'
663
    , Dropdown = function (element) {
664
        var $el = $(element).on('click.dropdown.data-api', this.toggle)
665
        $('html').on('click.dropdown.data-api', function () {
666
          $el.parent().removeClass('open')
667
        })
668
      }
669
670
  Dropdown.prototype = {
671
672
    constructor: Dropdown
673
674
  , toggle: function (e) {
675
      var $this = $(this)
676
        , $parent
677
        , isActive
678
679
      if ($this.is('.disabled, :disabled')) return
680
681
      $parent = getParent($this)
682
683
      isActive = $parent.hasClass('open')
684
685
      clearMenus()
686
687
      if (!isActive) {
688
        if ('ontouchstart' in document.documentElement) {
689
          // if mobile we we use a backdrop because click events don't delegate
690
          $('<div class="dropdown-backdrop"/>').insertBefore($(this)).on('click', clearMenus)
691
        }
692
        $parent.toggleClass('open')
693
      }
694
695
      $this.focus()
696
697
      return false
698
    }
699
700
  , keydown: function (e) {
701
      var $this
702
        , $items
703
        , $active
704
        , $parent
705
        , isActive
706
        , index
707
708
      if (!/(38|40|27)/.test(e.keyCode)) return
709
710
      $this = $(this)
711
712
      e.preventDefault()
713
      e.stopPropagation()
714
715
      if ($this.is('.disabled, :disabled')) return
716
717
      $parent = getParent($this)
718
719
      isActive = $parent.hasClass('open')
720
721
      if (!isActive || (isActive && e.keyCode == 27)) {
722
        if (e.which == 27) $parent.find(toggle).focus()
723
        return $this.click()
724
      }
725
726
      $items = $('[role=menu] li:not(.divider):visible a', $parent)
727
728
      if (!$items.length) return
729
730
      index = $items.index($items.filter(':focus'))
731
732
      if (e.keyCode == 38 && index > 0) index--                                        // up
733
      if (e.keyCode == 40 && index < $items.length - 1) index++                        // down
734
      if (!~index) index = 0
735
736
      $items
737
        .eq(index)
738
        .focus()
739
    }
740
741
  }
742
743
  function clearMenus() {
744
    $('.dropdown-backdrop').remove()
745
    $(toggle).each(function () {
746
      getParent($(this)).removeClass('open')
747
    })
748
  }
749
750
  function getParent($this) {
751
    var selector = $this.attr('data-target')
752
      , $parent
753
754
    if (!selector) {
755
      selector = $this.attr('href')
756
      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
757
    }
758
759
    $parent = selector && $(selector)
760
761
    if (!$parent || !$parent.length) $parent = $this.parent()
762
763
    return $parent
764
  }
765
766
767
  /* DROPDOWN PLUGIN DEFINITION
768
   * ========================== */
769
770
  var old = $.fn.dropdown
771
772
  $.fn.dropdown = function (option) {
773
    return this.each(function () {
774
      var $this = $(this)
775
        , data = $this.data('dropdown')
776
      if (!data) $this.data('dropdown', (data = new Dropdown(this)))
777
      if (typeof option == 'string') data[option].call($this)
778
    })
779
  }
780
781
  $.fn.dropdown.Constructor = Dropdown
782
783
784
 /* DROPDOWN NO CONFLICT
785
  * ==================== */
786
787
  $.fn.dropdown.noConflict = function () {
788
    $.fn.dropdown = old
789
    return this
790
  }
791
792
793
  /* APPLY TO STANDARD DROPDOWN ELEMENTS
794
   * =================================== */
795
796
  $(document)
797
    .on('click.dropdown.data-api', clearMenus)
798
    .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
799
    .on('click.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)
800
    .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
801
802
}(window.jQuery);
803
/* =========================================================
804
 * bootstrap-modal.js v2.3.2
805
 * http://getbootstrap.com/2.3.2/javascript.html#modals
806
 * =========================================================
807
 * Copyright 2013 Twitter, Inc.
808
 *
809
 * Licensed under the Apache License, Version 2.0 (the "License");
810
 * you may not use this file except in compliance with the License.
811
 * You may obtain a copy of the License at
812
 *
813
 * http://www.apache.org/licenses/LICENSE-2.0
814
 *
815
 * Unless required by applicable law or agreed to in writing, software
816
 * distributed under the License is distributed on an "AS IS" BASIS,
817
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
818
 * See the License for the specific language governing permissions and
819
 * limitations under the License.
820
 * ========================================================= */
821
822
823
!function ($) {
824
825
  "use strict"; // jshint ;_;
826
827
828
 /* MODAL CLASS DEFINITION
829
  * ====================== */
830
831
  var Modal = function (element, options) {
832
    this.options = options
833
    this.$element = $(element)
834
      .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
835
    this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
836
  }
837
838
  Modal.prototype = {
839
840
      constructor: Modal
841
842
    , toggle: function () {
843
        return this[!this.isShown ? 'show' : 'hide']()
844
      }
845
846
    , show: function () {
847
        var that = this
848
          , e = $.Event('show')
849
850
        this.$element.trigger(e)
851
852
        if (this.isShown || e.isDefaultPrevented()) return
853
854
        this.isShown = true
855
856
        this.escape()
857
858
        this.backdrop(function () {
859
          var transition = $.support.transition && that.$element.hasClass('fade')
860
861
          if (!that.$element.parent().length) {
862
            that.$element.appendTo(document.body) //don't move modals dom position
863
          }
864
865
          that.$element.show()
866
867
          if (transition) {
868
            that.$element[0].offsetWidth // force reflow
869
          }
870
871
          that.$element
872
            .addClass('in')
873
            .attr('aria-hidden', false)
874
875
          that.enforceFocus()
876
877
          transition ?
878
            that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) :
879
            that.$element.focus().trigger('shown')
880
881
        })
882
      }
883
884
    , hide: function (e) {
885
        e && e.preventDefault()
886
887
        var that = this
888
889
        e = $.Event('hide')
890
891
        this.$element.trigger(e)
892
893
        if (!this.isShown || e.isDefaultPrevented()) return
894
895
        this.isShown = false
896
897
        this.escape()
898
899
        $(document).off('focusin.modal')
900
901
        this.$element
902
          .removeClass('in')
903
          .attr('aria-hidden', true)
904
905
        $.support.transition && this.$element.hasClass('fade') ?
906
          this.hideWithTransition() :
907
          this.hideModal()
908
      }
909
910
    , enforceFocus: function () {
911
        var that = this
912
        $(document).on('focusin.modal', function (e) {
913
          if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
914
            that.$element.focus()
915
          }
916
        })
917
      }
918
919
    , escape: function () {
920
        var that = this
921
        if (this.isShown && this.options.keyboard) {
922
          this.$element.on('keyup.dismiss.modal', function ( e ) {
923
            e.which == 27 && that.hide()
924
          })
925
        } else if (!this.isShown) {
926
          this.$element.off('keyup.dismiss.modal')
927
        }
928
      }
929
930
    , hideWithTransition: function () {
931
        var that = this
932
          , timeout = setTimeout(function () {
933
              that.$element.off($.support.transition.end)
934
              that.hideModal()
935
            }, 500)
936
937
        this.$element.one($.support.transition.end, function () {
938
          clearTimeout(timeout)
939
          that.hideModal()
940
        })
941
      }
942
943
    , hideModal: function () {
944
        var that = this
945
        this.$element.hide()
946
        this.backdrop(function () {
947
          that.removeBackdrop()
948
          that.$element.trigger('hidden')
949
        })
950
      }
951
952
    , removeBackdrop: function () {
953
        this.$backdrop && this.$backdrop.remove()
954
        this.$backdrop = null
955
      }
956
957
    , backdrop: function (callback) {
958
        var that = this
959
          , animate = this.$element.hasClass('fade') ? 'fade' : ''
960
961
        if (this.isShown && this.options.backdrop) {
962
          var doAnimate = $.support.transition && animate
963
964
          this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
965
            .appendTo(document.body)
966
967
          this.$backdrop.click(
968
            this.options.backdrop == 'static' ?
969
              $.proxy(this.$element[0].focus, this.$element[0])
970
            : $.proxy(this.hide, this)
971
          )
972
973
          if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
974
975
          this.$backdrop.addClass('in')
976
977
          if (!callback) return
978
979
          doAnimate ?
980
            this.$backdrop.one($.support.transition.end, callback) :
981
            callback()
982
983
        } else if (!this.isShown && this.$backdrop) {
984
          this.$backdrop.removeClass('in')
985
986
          $.support.transition && this.$element.hasClass('fade')?
987
            this.$backdrop.one($.support.transition.end, callback) :
988
            callback()
989
990
        } else if (callback) {
991
          callback()
992
        }
993
      }
994
  }
995
996
997
 /* MODAL PLUGIN DEFINITION
998
  * ======================= */
999
1000
  var old = $.fn.modal
1001
1002
  $.fn.modal = function (option) {
1003
    return this.each(function () {
1004
      var $this = $(this)
1005
        , data = $this.data('modal')
1006
        , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
1007
      if (!data) $this.data('modal', (data = new Modal(this, options)))
1008
      if (typeof option == 'string') data[option]()
1009
      else if (options.show) data.show()
1010
    })
1011
  }
1012
1013
  $.fn.modal.defaults = {
1014
      backdrop: true
1015
    , keyboard: true
1016
    , show: true
1017
  }
1018
1019
  $.fn.modal.Constructor = Modal
1020
1021
1022
 /* MODAL NO CONFLICT
1023
  * ================= */
1024
1025
  $.fn.modal.noConflict = function () {
1026
    $.fn.modal = old
1027
    return this
1028
  }
1029
1030
1031
 /* MODAL DATA-API
1032
  * ============== */
1033
1034
  $(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) {
1035
    var $this = $(this)
1036
      , href = $this.attr('href')
1037
      , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
1038
      , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())
1039
1040
    e.preventDefault()
1041
1042
    $target
1043
      .modal(option)
1044
      .one('hide', function () {
1045
        $this.focus()
1046
      })
1047
  })
1048
1049
}(window.jQuery);
1050
/* ===========================================================
1051
 * bootstrap-tooltip.js v2.3.2
1052
 * http://getbootstrap.com/2.3.2/javascript.html#tooltips
1053
 * Inspired by the original jQuery.tipsy by Jason Frame
1054
 * ===========================================================
1055
 * Copyright 2013 Twitter, Inc.
1056
 *
1057
 * Licensed under the Apache License, Version 2.0 (the "License");
1058
 * you may not use this file except in compliance with the License.
1059
 * You may obtain a copy of the License at
1060
 *
1061
 * http://www.apache.org/licenses/LICENSE-2.0
1062
 *
1063
 * Unless required by applicable law or agreed to in writing, software
1064
 * distributed under the License is distributed on an "AS IS" BASIS,
1065
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1066
 * See the License for the specific language governing permissions and
1067
 * limitations under the License.
1068
 * ========================================================== */
1069
1070
1071
!function ($) {
1072
1073
  "use strict"; // jshint ;_;
1074
1075
1076
 /* TOOLTIP PUBLIC CLASS DEFINITION
1077
  * =============================== */
1078
1079
  var Tooltip = function (element, options) {
1080
    this.init('tooltip', element, options)
1081
  }
1082
1083
  Tooltip.prototype = {
1084
1085
    constructor: Tooltip
1086
1087
  , init: function (type, element, options) {
1088
      var eventIn
1089
        , eventOut
1090
        , triggers
1091
        , trigger
1092
        , i
1093
1094
      this.type = type
1095
      this.$element = $(element)
1096
      this.options = this.getOptions(options)
1097
      this.enabled = true
1098
1099
      triggers = this.options.trigger.split(' ')
1100
1101
      for (i = triggers.length; i--;) {
1102
        trigger = triggers[i]
1103
        if (trigger == 'click') {
1104
          this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1105
        } else if (trigger != 'manual') {
1106
          eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
1107
          eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
1108
          this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1109
          this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1110
        }
1111
      }
1112
1113
      this.options.selector ?
1114
        (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
1115
        this.fixTitle()
1116
    }
1117
1118
  , getOptions: function (options) {
1119
      options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
1120
1121
      if (options.delay && typeof options.delay == 'number') {
1122
        options.delay = {
1123
          show: options.delay
1124
        , hide: options.delay
1125
        }
1126
      }
1127
1128
      return options
1129
    }
1130
1131
  , enter: function (e) {
1132
      var defaults = $.fn[this.type].defaults
1133
        , options = {}
1134
        , self
1135
1136
      this._options && $.each(this._options, function (key, value) {
1137
        if (defaults[key] != value) options[key] = value
1138
      }, this)
1139
1140
      self = $(e.currentTarget)[this.type](options).data(this.type)
1141
1142
      if (!self.options.delay || !self.options.delay.show) return self.show()
1143
1144
      clearTimeout(this.timeout)
1145
      self.hoverState = 'in'
1146
      this.timeout = setTimeout(function() {
1147
        if (self.hoverState == 'in') self.show()
1148
      }, self.options.delay.show)
1149
    }
1150
1151
  , leave: function (e) {
1152
      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
1153
1154
      if (this.timeout) clearTimeout(this.timeout)
1155
      if (!self.options.delay || !self.options.delay.hide) return self.hide()
1156
1157
      self.hoverState = 'out'
1158
      this.timeout = setTimeout(function() {
1159
        if (self.hoverState == 'out') self.hide()
1160
      }, self.options.delay.hide)
1161
    }
1162
1163
  , show: function () {
1164
      var $tip
1165
        , pos
1166
        , actualWidth
1167
        , actualHeight
1168
        , placement
1169
        , tp
1170
        , e = $.Event('show')
1171
1172
      if (this.hasContent() && this.enabled) {
1173
        this.$element.trigger(e)
1174
        if (e.isDefaultPrevented()) return
1175
        $tip = this.tip()
1176
        this.setContent()
1177
1178
        if (this.options.animation) {
1179
          $tip.addClass('fade')
1180
        }
1181
1182
        placement = typeof this.options.placement == 'function' ?
1183
          this.options.placement.call(this, $tip[0], this.$element[0]) :
1184
          this.options.placement
1185
1186
        $tip
1187
          .detach()
1188
          .css({ top: 0, left: 0, display: 'block' })
1189
1190
        this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
1191
1192
        pos = this.getPosition()
1193
1194
        actualWidth = $tip[0].offsetWidth
1195
        actualHeight = $tip[0].offsetHeight
1196
1197
        switch (placement) {
1198
          case 'bottom':
1199
            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
1200
            break
1201
          case 'top':
1202
            tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
1203
            break
1204
          case 'left':
1205
            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
1206
            break
1207
          case 'right':
1208
            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
1209
            break
1210
        }
1211
1212
        this.applyPlacement(tp, placement)
1213
        this.$element.trigger('shown')
1214
      }
1215
    }
1216
1217
  , applyPlacement: function(offset, placement){
1218
      var $tip = this.tip()
1219
        , width = $tip[0].offsetWidth
1220
        , height = $tip[0].offsetHeight
1221
        , actualWidth
1222
        , actualHeight
1223
        , delta
1224
        , replace
1225
1226
      $tip
1227
        .offset(offset)
1228
        .addClass(placement)
1229
        .addClass('in')
1230
1231
      actualWidth = $tip[0].offsetWidth
1232
      actualHeight = $tip[0].offsetHeight
1233
1234
      if (placement == 'top' && actualHeight != height) {
1235
        offset.top = offset.top + height - actualHeight
1236
        replace = true
1237
      }
1238
1239
      if (placement == 'bottom' || placement == 'top') {
1240
        delta = 0
1241
1242
        if (offset.left < 0){
1243
          delta = offset.left * -2
1244
          offset.left = 0
1245
          $tip.offset(offset)
1246
          actualWidth = $tip[0].offsetWidth
1247
          actualHeight = $tip[0].offsetHeight
1248
        }
1249
1250
        this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
1251
      } else {
1252
        this.replaceArrow(actualHeight - height, actualHeight, 'top')
1253
      }
1254
1255
      if (replace) $tip.offset(offset)
1256
    }
1257
1258
  , replaceArrow: function(delta, dimension, position){
1259
      this
1260
        .arrow()
1261
        .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
1262
    }
1263
1264
  , setContent: function () {
1265
      var $tip = this.tip()
1266
        , title = this.getTitle()
1267
1268
      $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
1269
      $tip.removeClass('fade in top bottom left right')
1270
    }
1271
1272
  , hide: function () {
1273
      var that = this
1274
        , $tip = this.tip()
1275
        , e = $.Event('hide')
1276
1277
      this.$element.trigger(e)
1278
      if (e.isDefaultPrevented()) return
1279
1280
      $tip.removeClass('in')
1281
1282
      function removeWithAnimation() {
1283
        var timeout = setTimeout(function () {
1284
          $tip.off($.support.transition.end).detach()
1285
        }, 500)
1286
1287
        $tip.one($.support.transition.end, function () {
1288
          clearTimeout(timeout)
1289
          $tip.detach()
1290
        })
1291
      }
1292
1293
      $.support.transition && this.$tip.hasClass('fade') ?
1294
        removeWithAnimation() :
1295
        $tip.detach()
1296
1297
      this.$element.trigger('hidden')
1298
1299
      return this
1300
    }
1301
1302
  , fixTitle: function () {
1303
      var $e = this.$element
1304
      if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
1305
        $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
1306
      }
1307
    }
1308
1309
  , hasContent: function () {
1310
      return this.getTitle()
1311
    }
1312
1313
  , getPosition: function () {
1314
      var el = this.$element[0]
1315
      return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
1316
        width: el.offsetWidth
1317
      , height: el.offsetHeight
1318
      }, this.$element.offset())
1319
    }
1320
1321
  , getTitle: function () {
1322
      var title
1323
        , $e = this.$element
1324
        , o = this.options
1325
1326
      title = $e.attr('data-original-title')
1327
        || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
1328
1329
      return title
1330
    }
1331
1332
  , tip: function () {
1333
      return this.$tip = this.$tip || $(this.options.template)
1334
    }
1335
1336
  , arrow: function(){
1337
      return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
1338
    }
1339
1340
  , validate: function () {
1341
      if (!this.$element[0].parentNode) {
1342
        this.hide()
1343
        this.$element = null
1344
        this.options = null
1345
      }
1346
    }
1347
1348
  , enable: function () {
1349
      this.enabled = true
1350
    }
1351
1352
  , disable: function () {
1353
      this.enabled = false
1354
    }
1355
1356
  , toggleEnabled: function () {
1357
      this.enabled = !this.enabled
1358
    }
1359
1360
  , toggle: function (e) {
1361
      var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
1362
      self.tip().hasClass('in') ? self.hide() : self.show()
1363
    }
1364
1365
  , destroy: function () {
1366
      this.hide().$element.off('.' + this.type).removeData(this.type)
1367
    }
1368
1369
  }
1370
1371
1372
 /* TOOLTIP PLUGIN DEFINITION
1373
  * ========================= */
1374
1375
  var old = $.fn.tooltip
1376
1377
  $.fn.tooltip = function ( option ) {
1378
    return this.each(function () {
1379
      var $this = $(this)
1380
        , data = $this.data('tooltip')
1381
        , options = typeof option == 'object' && option
1382
      if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
1383
      if (typeof option == 'string') data[option]()
1384
    })
1385
  }
1386
1387
  $.fn.tooltip.Constructor = Tooltip
1388
1389
  $.fn.tooltip.defaults = {
1390
    animation: true
1391
  , placement: 'top'
1392
  , selector: false
1393
  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
1394
  , trigger: 'hover focus'
1395
  , title: ''
1396
  , delay: 0
1397
  , html: false
1398
  , container: false
1399
  }
1400
1401
1402
 /* TOOLTIP NO CONFLICT
1403
  * =================== */
1404
1405
  $.fn.tooltip.noConflict = function () {
1406
    $.fn.tooltip = old
1407
    return this
1408
  }
1409
1410
}(window.jQuery);
1411
/* ===========================================================
1412
 * bootstrap-popover.js v2.3.2
1413
 * http://getbootstrap.com/2.3.2/javascript.html#popovers
1414
 * ===========================================================
1415
 * Copyright 2013 Twitter, Inc.
1416
 *
1417
 * Licensed under the Apache License, Version 2.0 (the "License");
1418
 * you may not use this file except in compliance with the License.
1419
 * You may obtain a copy of the License at
1420
 *
1421
 * http://www.apache.org/licenses/LICENSE-2.0
1422
 *
1423
 * Unless required by applicable law or agreed to in writing, software
1424
 * distributed under the License is distributed on an "AS IS" BASIS,
1425
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1426
 * See the License for the specific language governing permissions and
1427
 * limitations under the License.
1428
 * =========================================================== */
1429
1430
1431
!function ($) {
1432
1433
  "use strict"; // jshint ;_;
1434
1435
1436
 /* POPOVER PUBLIC CLASS DEFINITION
1437
  * =============================== */
1438
1439
  var Popover = function (element, options) {
1440
    this.init('popover', element, options)
1441
  }
1442
1443
1444
  /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
1445
     ========================================== */
1446
1447
  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
1448
1449
    constructor: Popover
1450
1451
  , setContent: function () {
1452
      var $tip = this.tip()
1453
        , title = this.getTitle()
1454
        , content = this.getContent()
1455
1456
      $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
1457
      $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
1458
1459
      $tip.removeClass('fade top bottom left right in')
1460
    }
1461
1462
  , hasContent: function () {
1463
      return this.getTitle() || this.getContent()
1464
    }
1465
1466
  , getContent: function () {
1467
      var content
1468
        , $e = this.$element
1469
        , o = this.options
1470
1471
      content = (typeof o.content == 'function' ? o.content.call($e[0]) :  o.content)
1472
        || $e.attr('data-content')
1473
1474
      return content
1475
    }
1476
1477
  , tip: function () {
1478
      if (!this.$tip) {
1479
        this.$tip = $(this.options.template)
1480
      }
1481
      return this.$tip
1482
    }
1483
1484
  , destroy: function () {
1485
      this.hide().$element.off('.' + this.type).removeData(this.type)
1486
    }
1487
1488
  })
1489
1490
1491
 /* POPOVER PLUGIN DEFINITION
1492
  * ======================= */
1493
1494
  var old = $.fn.popover
1495
1496
  $.fn.popover = function (option) {
1497
    return this.each(function () {
1498
      var $this = $(this)
1499
        , data = $this.data('popover')
1500
        , options = typeof option == 'object' && option
1501
      if (!data) $this.data('popover', (data = new Popover(this, options)))
1502
      if (typeof option == 'string') data[option]()
1503
    })
1504
  }
1505
1506
  $.fn.popover.Constructor = Popover
1507
1508
  $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
1509
    placement: 'right'
1510
  , trigger: 'click'
1511
  , content: ''
1512
  , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
1513
  })
1514
1515
1516
 /* POPOVER NO CONFLICT
1517
  * =================== */
1518
1519
  $.fn.popover.noConflict = function () {
1520
    $.fn.popover = old
1521
    return this
1522
  }
1523
1524
}(window.jQuery);
1525
/* =============================================================
1526
 * bootstrap-scrollspy.js v2.3.2
1527
 * http://getbootstrap.com/2.3.2/javascript.html#scrollspy
1528
 * =============================================================
1529
 * Copyright 2013 Twitter, Inc.
1530
 *
1531
 * Licensed under the Apache License, Version 2.0 (the "License");
1532
 * you may not use this file except in compliance with the License.
1533
 * You may obtain a copy of the License at
1534
 *
1535
 * http://www.apache.org/licenses/LICENSE-2.0
1536
 *
1537
 * Unless required by applicable law or agreed to in writing, software
1538
 * distributed under the License is distributed on an "AS IS" BASIS,
1539
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1540
 * See the License for the specific language governing permissions and
1541
 * limitations under the License.
1542
 * ============================================================== */
1543
1544
1545
!function ($) {
1546
1547
  "use strict"; // jshint ;_;
1548
1549
1550
 /* SCROLLSPY CLASS DEFINITION
1551
  * ========================== */
1552
1553
  function ScrollSpy(element, options) {
1554
    var process = $.proxy(this.process, this)
1555
      , $element = $(element).is('body') ? $(window) : $(element)
1556
      , href
1557
    this.options = $.extend({}, $.fn.scrollspy.defaults, options)
1558
    this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
1559
    this.selector = (this.options.target
1560
      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
1561
      || '') + ' .nav li > a'
1562
    this.$body = $('body')
1563
    this.refresh()
1564
    this.process()
1565
  }
1566
1567
  ScrollSpy.prototype = {
1568
1569
      constructor: ScrollSpy
1570
1571
    , refresh: function () {
1572
        var self = this
1573
          , $targets
1574
1575
        this.offsets = $([])
1576
        this.targets = $([])
1577
1578
        $targets = this.$body
1579
          .find(this.selector)
1580
          .map(function () {
1581
            var $el = $(this)
1582
              , href = $el.data('target') || $el.attr('href')
1583
              , $href = /^#\w/.test(href) && $(href)
1584
            return ( $href
1585
              && $href.length
1586
              && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null
1587
          })
1588
          .sort(function (a, b) { return a[0] - b[0] })
1589
          .each(function () {
1590
            self.offsets.push(this[0])
1591
            self.targets.push(this[1])
1592
          })
1593
      }
1594
1595
    , process: function () {
1596
        var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
1597
          , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
1598
          , maxScroll = scrollHeight - this.$scrollElement.height()
1599
          , offsets = this.offsets
1600
          , targets = this.targets
1601
          , activeTarget = this.activeTarget
1602
          , i
1603
1604
        if (scrollTop >= maxScroll) {
1605
          return activeTarget != (i = targets.last()[0])
1606
            && this.activate ( i )
1607
        }
1608
1609
        for (i = offsets.length; i--;) {
1610
          activeTarget != targets[i]
1611
            && scrollTop >= offsets[i]
1612
            && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
1613
            && this.activate( targets[i] )
1614
        }
1615
      }
1616
1617
    , activate: function (target) {
1618
        var active
1619
          , selector
1620
1621
        this.activeTarget = target
1622
1623
        $(this.selector)
1624
          .parent('.active')
1625
          .removeClass('active')
1626
1627
        selector = this.selector
1628
          + '[data-target="' + target + '"],'
1629
          + this.selector + '[href="' + target + '"]'
1630
1631
        active = $(selector)
1632
          .parent('li')
1633
          .addClass('active')
1634
1635
        if (active.parent('.dropdown-menu').length)  {
1636
          active = active.closest('li.dropdown').addClass('active')
1637
        }
1638
1639
        active.trigger('activate')
1640
      }
1641
1642
  }
1643
1644
1645
 /* SCROLLSPY PLUGIN DEFINITION
1646
  * =========================== */
1647
1648
  var old = $.fn.scrollspy
1649
1650
  $.fn.scrollspy = function (option) {
1651
    return this.each(function () {
1652
      var $this = $(this)
1653
        , data = $this.data('scrollspy')
1654
        , options = typeof option == 'object' && option
1655
      if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
1656
      if (typeof option == 'string') data[option]()
1657
    })
1658
  }
1659
1660
  $.fn.scrollspy.Constructor = ScrollSpy
1661
1662
  $.fn.scrollspy.defaults = {
1663
    offset: 10
1664
  }
1665
1666
1667
 /* SCROLLSPY NO CONFLICT
1668
  * ===================== */
1669
1670
  $.fn.scrollspy.noConflict = function () {
1671
    $.fn.scrollspy = old
1672
    return this
1673
  }
1674
1675
1676
 /* SCROLLSPY DATA-API
1677
  * ================== */
1678
1679
  $(window).on('load', function () {
1680
    $('[data-spy="scroll"]').each(function () {
1681
      var $spy = $(this)
1682
      $spy.scrollspy($spy.data())
1683
    })
1684
  })
1685
1686
}(window.jQuery);/* ========================================================
1687
 * bootstrap-tab.js v2.3.2
1688
 * http://getbootstrap.com/2.3.2/javascript.html#tabs
1689
 * ========================================================
1690
 * Copyright 2013 Twitter, Inc.
1691
 *
1692
 * Licensed under the Apache License, Version 2.0 (the "License");
1693
 * you may not use this file except in compliance with the License.
1694
 * You may obtain a copy of the License at
1695
 *
1696
 * http://www.apache.org/licenses/LICENSE-2.0
1697
 *
1698
 * Unless required by applicable law or agreed to in writing, software
1699
 * distributed under the License is distributed on an "AS IS" BASIS,
1700
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1701
 * See the License for the specific language governing permissions and
1702
 * limitations under the License.
1703
 * ======================================================== */
1704
1705
1706
!function ($) {
1707
1708
  "use strict"; // jshint ;_;
1709
1710
1711
 /* TAB CLASS DEFINITION
1712
  * ==================== */
1713
1714
  var Tab = function (element) {
1715
    this.element = $(element)
1716
  }
1717
1718
  Tab.prototype = {
1719
1720
    constructor: Tab
1721
1722
  , show: function () {
1723
      var $this = this.element
1724
        , $ul = $this.closest('ul:not(.dropdown-menu)')
1725
        , selector = $this.attr('data-target')
1726
        , previous
1727
        , $target
1728
        , e
1729
1730
      if (!selector) {
1731
        selector = $this.attr('href')
1732
        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
1733
      }
1734
1735
      if ( $this.parent('li').hasClass('active') ) return
1736
1737
      previous = $ul.find('.active:last a')[0]
1738
1739
      e = $.Event('show', {
1740
        relatedTarget: previous
1741
      })
1742
1743
      $this.trigger(e)
1744
1745
      if (e.isDefaultPrevented()) return
1746
1747
      $target = $(selector)
1748
1749
      this.activate($this.parent('li'), $ul)
1750
      this.activate($target, $target.parent(), function () {
1751
        $this.trigger({
1752
          type: 'shown'
1753
        , relatedTarget: previous
1754
        })
1755
      })
1756
    }
1757
1758
  , activate: function ( element, container, callback) {
1759
      var $active = container.find('> .active')
1760
        , transition = callback
1761
            && $.support.transition
1762
            && $active.hasClass('fade')
1763
1764
      function next() {
1765
        $active
1766
          .removeClass('active')
1767
          .find('> .dropdown-menu > .active')
1768
          .removeClass('active')
1769
1770
        element.addClass('active')
1771
1772
        if (transition) {
1773
          element[0].offsetWidth // reflow for transition
1774
          element.addClass('in')
1775
        } else {
1776
          element.removeClass('fade')
1777
        }
1778
1779
        if ( element.parent('.dropdown-menu') ) {
1780
          element.closest('li.dropdown').addClass('active')
1781
        }
1782
1783
        callback && callback()
1784
      }
1785
1786
      transition ?
1787
        $active.one($.support.transition.end, next) :
1788
        next()
1789
1790
      $active.removeClass('in')
1791
    }
1792
  }
1793
1794
1795
 /* TAB PLUGIN DEFINITION
1796
  * ===================== */
1797
1798
  var old = $.fn.tab
1799
1800
  $.fn.tab = function ( option ) {
1801
    return this.each(function () {
1802
      var $this = $(this)
1803
        , data = $this.data('tab')
1804
      if (!data) $this.data('tab', (data = new Tab(this)))
1805
      if (typeof option == 'string') data[option]()
1806
    })
1807
  }
1808
1809
  $.fn.tab.Constructor = Tab
1810
1811
1812
 /* TAB NO CONFLICT
1813
  * =============== */
1814
1815
  $.fn.tab.noConflict = function () {
1816
    $.fn.tab = old
1817
    return this
1818
  }
1819
1820
1821
 /* TAB DATA-API
1822
  * ============ */
1823
1824
  $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
1825
    e.preventDefault()
1826
    $(this).tab('show')
1827
  })
1828
1829
}(window.jQuery);/* =============================================================
1830
 * bootstrap-typeahead.js v2.3.2
1831
 * http://getbootstrap.com/2.3.2/javascript.html#typeahead
1832
 * =============================================================
1833
 * Copyright 2013 Twitter, Inc.
1834
 *
1835
 * Licensed under the Apache License, Version 2.0 (the "License");
1836
 * you may not use this file except in compliance with the License.
1837
 * You may obtain a copy of the License at
1838
 *
1839
 * http://www.apache.org/licenses/LICENSE-2.0
1840
 *
1841
 * Unless required by applicable law or agreed to in writing, software
1842
 * distributed under the License is distributed on an "AS IS" BASIS,
1843
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1844
 * See the License for the specific language governing permissions and
1845
 * limitations under the License.
1846
 * ============================================================ */
1847
1848
1849
!function($){
1850
1851
  "use strict"; // jshint ;_;
1852
1853
1854
 /* TYPEAHEAD PUBLIC CLASS DEFINITION
1855
  * ================================= */
1856
1857
  var Typeahead = function (element, options) {
1858
    this.$element = $(element)
1859
    this.options = $.extend({}, $.fn.typeahead.defaults, options)
1860
    this.matcher = this.options.matcher || this.matcher
1861
    this.sorter = this.options.sorter || this.sorter
1862
    this.highlighter = this.options.highlighter || this.highlighter
1863
    this.updater = this.options.updater || this.updater
1864
    this.source = this.options.source
1865
    this.$menu = $(this.options.menu)
1866
    this.shown = false
1867
    this.listen()
1868
  }
1869
1870
  Typeahead.prototype = {
1871
1872
    constructor: Typeahead
1873
1874
  , select: function () {
1875
      var val = this.$menu.find('.active').attr('data-value')
1876
      this.$element
1877
        .val(this.updater(val))
1878
        .change()
1879
      return this.hide()
1880
    }
1881
1882
  , updater: function (item) {
1883
      return item
1884
    }
1885
1886
  , show: function () {
1887
      var pos = $.extend({}, this.$element.position(), {
1888
        height: this.$element[0].offsetHeight
1889
      })
1890
1891
      this.$menu
1892
        .insertAfter(this.$element)
1893
        .css({
1894
          top: pos.top + pos.height
1895
        , left: pos.left
1896
        })
1897
        .show()
1898
1899
      this.shown = true
1900
      return this
1901
    }
1902
1903
  , hide: function () {
1904
      this.$menu.hide()
1905
      this.shown = false
1906
      return this
1907
    }
1908
1909
  , lookup: function (event) {
1910
      var items
1911
1912
      this.query = this.$element.val()
1913
1914
      if (!this.query || this.query.length < this.options.minLength) {
1915
        return this.shown ? this.hide() : this
1916
      }
1917
1918
      items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
1919
1920
      return items ? this.process(items) : this
1921
    }
1922
1923
  , process: function (items) {
1924
      var that = this
1925
1926
      items = $.grep(items, function (item) {
1927
        return that.matcher(item)
1928
      })
1929
1930
      items = this.sorter(items)
1931
1932
      if (!items.length) {
1933
        return this.shown ? this.hide() : this
1934
      }
1935
1936
      return this.render(items.slice(0, this.options.items)).show()
1937
    }
1938
1939
  , matcher: function (item) {
1940
      return ~item.toLowerCase().indexOf(this.query.toLowerCase())
1941
    }
1942
1943
  , sorter: function (items) {
1944
      var beginswith = []
1945
        , caseSensitive = []
1946
        , caseInsensitive = []
1947
        , item
1948
1949
      while (item = items.shift()) {
1950
        if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
1951
        else if (~item.indexOf(this.query)) caseSensitive.push(item)
1952
        else caseInsensitive.push(item)
1953
      }
1954
1955
      return beginswith.concat(caseSensitive, caseInsensitive)
1956
    }
1957
1958
  , highlighter: function (item) {
1959
      var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
1960
      return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
1961
        return '<strong>' + match + '</strong>'
1962
      })
1963
    }
1964
1965
  , render: function (items) {
1966
      var that = this
1967
1968
      items = $(items).map(function (i, item) {
1969
        i = $(that.options.item).attr('data-value', item)
1970
        i.find('a').html(that.highlighter(item))
1971
        return i[0]
1972
      })
1973
1974
      items.first().addClass('active')
1975
      this.$menu.html(items)
1976
      return this
1977
    }
1978
1979
  , next: function (event) {
1980
      var active = this.$menu.find('.active').removeClass('active')
1981
        , next = active.next()
1982
1983
      if (!next.length) {
1984
        next = $(this.$menu.find('li')[0])
1985
      }
1986
1987
      next.addClass('active')
1988
    }
1989
1990
  , prev: function (event) {
1991
      var active = this.$menu.find('.active').removeClass('active')
1992
        , prev = active.prev()
1993
1994
      if (!prev.length) {
1995
        prev = this.$menu.find('li').last()
1996
      }
1997
1998
      prev.addClass('active')
1999
    }
2000
2001
  , listen: function () {
2002
      this.$element
2003
        .on('focus',    $.proxy(this.focus, this))
2004
        .on('blur',     $.proxy(this.blur, this))
2005
        .on('keypress', $.proxy(this.keypress, this))
2006
        .on('keyup',    $.proxy(this.keyup, this))
2007
2008
      if (this.eventSupported('keydown')) {
2009
        this.$element.on('keydown', $.proxy(this.keydown, this))
2010
      }
2011
2012
      this.$menu
2013
        .on('click', $.proxy(this.click, this))
2014
        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
2015
        .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
2016
    }
2017
2018
  , eventSupported: function(eventName) {
2019
      var isSupported = eventName in this.$element
2020
      if (!isSupported) {
2021
        this.$element.setAttribute(eventName, 'return;')
2022
        isSupported = typeof this.$element[eventName] === 'function'
2023
      }
2024
      return isSupported
2025
    }
2026
2027
  , move: function (e) {
2028
      if (!this.shown) return
2029
2030
      switch(e.keyCode) {
2031
        case 9: // tab
2032
        case 13: // enter
2033
        case 27: // escape
2034
          e.preventDefault()
2035
          break
2036
2037
        case 38: // up arrow
2038
          e.preventDefault()
2039
          this.prev()
2040
          break
2041
2042
        case 40: // down arrow
2043
          e.preventDefault()
2044
          this.next()
2045
          break
2046
      }
2047
2048
      e.stopPropagation()
2049
    }
2050
2051
  , keydown: function (e) {
2052
      this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27])
2053
      this.move(e)
2054
    }
2055
2056
  , keypress: function (e) {
2057
      if (this.suppressKeyPressRepeat) return
2058
      this.move(e)
2059
    }
2060
2061
  , keyup: function (e) {
2062
      switch(e.keyCode) {
2063
        case 40: // down arrow
2064
        case 38: // up arrow
2065
        case 16: // shift
2066
        case 17: // ctrl
2067
        case 18: // alt
2068
          break
2069
2070
        case 9: // tab
2071
        case 13: // enter
2072
          if (!this.shown) return
2073
          this.select()
2074
          break
2075
2076
        case 27: // escape
2077
          if (!this.shown) return
2078
          this.hide()
2079
          break
2080
2081
        default:
2082
          this.lookup()
2083
      }
2084
2085
      e.stopPropagation()
2086
      e.preventDefault()
2087
  }
2088
2089
  , focus: function (e) {
2090
      this.focused = true
2091
    }
2092
2093
  , blur: function (e) {
2094
      this.focused = false
2095
      if (!this.mousedover && this.shown) this.hide()
2096
    }
2097
2098
  , click: function (e) {
2099
      e.stopPropagation()
2100
      e.preventDefault()
2101
      this.select()
2102
      this.$element.focus()
2103
    }
2104
2105
  , mouseenter: function (e) {
2106
      this.mousedover = true
2107
      this.$menu.find('.active').removeClass('active')
2108
      $(e.currentTarget).addClass('active')
2109
    }
2110
2111
  , mouseleave: function (e) {
2112
      this.mousedover = false
2113
      if (!this.focused && this.shown) this.hide()
2114
    }
2115
2116
  }
2117
2118
2119
  /* TYPEAHEAD PLUGIN DEFINITION
2120
   * =========================== */
2121
2122
  var old = $.fn.typeahead
2123
2124
  $.fn.typeahead = function (option) {
2125
    return this.each(function () {
2126
      var $this = $(this)
2127
        , data = $this.data('typeahead')
2128
        , options = typeof option == 'object' && option
2129
      if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
2130
      if (typeof option == 'string') data[option]()
2131
    })
2132
  }
2133
2134
  $.fn.typeahead.defaults = {
2135
    source: []
2136
  , items: 8
2137
  , menu: '<ul class="typeahead dropdown-menu"></ul>'
2138
  , item: '<li><a href="#"></a></li>'
2139
  , minLength: 1
2140
  }
2141
2142
  $.fn.typeahead.Constructor = Typeahead
2143
2144
2145
 /* TYPEAHEAD NO CONFLICT
2146
  * =================== */
2147
2148
  $.fn.typeahead.noConflict = function () {
2149
    $.fn.typeahead = old
2150
    return this
2151
  }
2152
2153
2154
 /* TYPEAHEAD DATA-API
2155
  * ================== */
2156
2157
  $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
2158
    var $this = $(this)
2159
    if ($this.data('typeahead')) return
2160
    $this.typeahead($this.data())
2161
  })
2162
2163
}(window.jQuery);
2164
/* ==========================================================
2165
 * bootstrap-affix.js v2.3.2
2166
 * http://getbootstrap.com/2.3.2/javascript.html#affix
2167
 * ==========================================================
2168
 * Copyright 2013 Twitter, Inc.
2169
 *
2170
 * Licensed under the Apache License, Version 2.0 (the "License");
2171
 * you may not use this file except in compliance with the License.
2172
 * You may obtain a copy of the License at
2173
 *
2174
 * http://www.apache.org/licenses/LICENSE-2.0
2175
 *
2176
 * Unless required by applicable law or agreed to in writing, software
2177
 * distributed under the License is distributed on an "AS IS" BASIS,
2178
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2179
 * See the License for the specific language governing permissions and
2180
 * limitations under the License.
2181
 * ========================================================== */
2182
2183
2184
!function ($) {
2185
2186
  "use strict"; // jshint ;_;
2187
2188
2189
 /* AFFIX CLASS DEFINITION
2190
  * ====================== */
2191
2192
  var Affix = function (element, options) {
2193
    this.options = $.extend({}, $.fn.affix.defaults, options)
2194
    this.$window = $(window)
2195
      .on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
2196
      .on('click.affix.data-api',  $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this))
2197
    this.$element = $(element)
2198
    this.checkPosition()
2199
  }
2200
2201
  Affix.prototype.checkPosition = function () {
2202
    if (!this.$element.is(':visible')) return
2203
2204
    var scrollHeight = $(document).height()
2205
      , scrollTop = this.$window.scrollTop()
2206
      , position = this.$element.offset()
2207
      , offset = this.options.offset
2208
      , offsetBottom = offset.bottom
2209
      , offsetTop = offset.top
2210
      , reset = 'affix affix-top affix-bottom'
2211
      , affix
2212
2213
    if (typeof offset != 'object') offsetBottom = offsetTop = offset
2214
    if (typeof offsetTop == 'function') offsetTop = offset.top()
2215
    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
2216
2217
    affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
2218
      false    : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
2219
      'bottom' : offsetTop != null && scrollTop <= offsetTop ?
2220
      'top'    : false
2221
2222
    if (this.affixed === affix) return
2223
2224
    this.affixed = affix
2225
    this.unpin = affix == 'bottom' ? position.top - scrollTop : null
2226
2227
    this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
2228
  }
2229
2230
2231
 /* AFFIX PLUGIN DEFINITION
2232
  * ======================= */
2233
2234
  var old = $.fn.affix
2235
2236
  $.fn.affix = function (option) {
2237
    return this.each(function () {
2238
      var $this = $(this)
2239
        , data = $this.data('affix')
2240
        , options = typeof option == 'object' && option
2241
      if (!data) $this.data('affix', (data = new Affix(this, options)))
2242
      if (typeof option == 'string') data[option]()
2243
    })
2244
  }
2245
2246
  $.fn.affix.Constructor = Affix
2247
2248
  $.fn.affix.defaults = {
2249
    offset: 0
2250
  }
2251
2252
2253
 /* AFFIX NO CONFLICT
2254
  * ================= */
2255
2256
  $.fn.affix.noConflict = function () {
2257
    $.fn.affix = old
2258
    return this
2259
  }
2260
2261
2262
 /* AFFIX DATA-API
2263
  * ============== */
2264
2265
  $(window).on('load', function () {
2266
    $('[data-spy="affix"]').each(function () {
2267
      var $spy = $(this)
2268
        , data = $spy.data()
2269
2270
      data.offset = data.offset || {}
2271
2272
      data.offsetBottom && (data.offset.bottom = data.offsetBottom)
2273
      data.offsetTop && (data.offset.top = data.offsetTop)
2274
2275
      $spy.affix(data)
2276
    })
2277
  })
2278
2279
2280
}(window.jQuery);
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/bootstrap-2.3.2/js/bootstrap.min.js (+6 lines)
Line 0 Link Here
1
/*!
2
* Bootstrap.js by @fat & @mdo
3
* Copyright 2013 Twitter, Inc.
4
* http://www.apache.org/licenses/LICENSE-2.0.txt
5
*/
6
!function(e){"use strict";e(function(){e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()};var r=e.fn.alert;e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e.fn.alert.noConflict=function(){return e.fn.alert=r,this},e(document).on("click.alert.data-api",t,n.prototype.close)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")};var n=e.fn.button;e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e.fn.button.noConflict=function(){return e.fn.button=n,this},e(document).on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(t){var n=this.getActiveIndex(),r=this;if(t>this.$items.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){r.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",e(this.$items[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0],direction:o});if(i.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var t=e(a.$indicators.children()[a.getActiveIndex()]);t&&t.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var n=e.fn.carousel;e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.pause().cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e.fn.carousel.noConflict=function(){return e.fn.carousel=n,this},e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data()),o;i.carousel(s),(o=n.attr("data-slide-to"))&&i.data("carousel").pause().to(o).cycle(),t.preventDefault()})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning||this.$element.hasClass("in"))return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning||!this.$element.hasClass("in"))return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var n=e.fn.collapse;e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=e.extend({},e.fn.collapse.defaults,r.data(),typeof n=="object"&&n);i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e.fn.collapse.noConflict=function(){return e.fn.collapse=n,this},e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.jQuery),!function(e){"use strict";function r(){e(".dropdown-backdrop").remove(),e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=n&&e(n);if(!r||!r.length)r=t.parent();return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||("ontouchstart"in document.documentElement&&e('<div class="dropdown-backdrop"/>').insertBefore(e(this)).on("click",r),s.toggleClass("open")),n.focus(),!1},keydown:function(n){var r,s,o,u,a,f;if(!/(38|40|27)/.test(n.keyCode))return;r=e(this),n.preventDefault(),n.stopPropagation();if(r.is(".disabled, :disabled"))return;u=i(r),a=u.hasClass("open");if(!a||a&&n.keyCode==27)return n.which==27&&u.find(t).focus(),r.click();s=e("[role=menu] li:not(.divider):visible a",u);if(!s.length)return;f=s.index(s.filter(":focus")),n.keyCode==38&&f>0&&f--,n.keyCode==40&&f<s.length-1&&f++,~f||(f=0),s.eq(f).focus()}};var s=e.fn.dropdown;e.fn.dropdown=function(t){return this.each(function(){var r=e(this),i=r.data("dropdown");i||r.data("dropdown",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.dropdown.Constructor=n,e.fn.dropdown.noConflict=function(){return e.fn.dropdown=s,this},e(document).on("click.dropdown.data-api",r).on("click.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("click.dropdown.data-api",t,n.prototype.toggle).on("keydown.dropdown.data-api",t+", [role=menu]",n.prototype.keydown)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=n,this.$element=e(t).delegate('[data-dismiss="modal"]',"click.dismiss.modal",e.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};t.prototype={constructor:t,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var t=this,n=e.Event("show");this.$element.trigger(n);if(this.isShown||n.isDefaultPrevented())return;this.isShown=!0,this.escape(),this.backdrop(function(){var n=e.support.transition&&t.$element.hasClass("fade");t.$element.parent().length||t.$element.appendTo(document.body),t.$element.show(),n&&t.$element[0].offsetWidth,t.$element.addClass("in").attr("aria-hidden",!1),t.enforceFocus(),n?t.$element.one(e.support.transition.end,function(){t.$element.focus().trigger("shown")}):t.$element.focus().trigger("shown")})},hide:function(t){t&&t.preventDefault();var n=this;t=e.Event("hide"),this.$element.trigger(t);if(!this.isShown||t.isDefaultPrevented())return;this.isShown=!1,this.escape(),e(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),e.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var t=this;e(document).on("focusin.modal",function(e){t.$element[0]!==e.target&&!t.$element.has(e.target).length&&t.$element.focus()})},escape:function(){var e=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(t){t.which==27&&e.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var t=this,n=setTimeout(function(){t.$element.off(e.support.transition.end),t.hideModal()},500);this.$element.one(e.support.transition.end,function(){clearTimeout(n),t.hideModal()})},hideModal:function(){var e=this;this.$element.hide(),this.backdrop(function(){e.removeBackdrop(),e.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},backdrop:function(t){var n=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var i=e.support.transition&&r;this.$backdrop=e('<div class="modal-backdrop '+r+'" />').appendTo(document.body),this.$backdrop.click(this.options.backdrop=="static"?e.proxy(this.$element[0].focus,this.$element[0]):e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!t)return;i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,t):t()):t&&t()}};var n=e.fn.modal;e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s)),typeof n=="string"?i[n]():s.show&&i.show()})},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e.fn.modal.noConflict=function(){return e.fn.modal=n,this},e(document).on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault(),i.modal(s).one("hide",function(){n.focus()})})}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s,o,u,a;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,o=this.options.trigger.split(" ");for(a=o.length;a--;)u=o[a],u=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):u!="manual"&&(i=u=="hover"?"mouseenter":"focus",s=u=="hover"?"mouseleave":"blur",this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this)));this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return t=e.extend({},e.fn[this.type].defaults,this.$element.data(),t),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e.fn[this.type].defaults,r={},i;this._options&&e.each(this._options,function(e,t){n[e]!=t&&(r[e]=t)},this),i=e(t.currentTarget)[this.type](r).data(this.type);if(!i.options.delay||!i.options.delay.show)return i.show();clearTimeout(this.timeout),i.hoverState="in",this.timeout=setTimeout(function(){i.hoverState=="in"&&i.show()},i.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var t,n,r,i,s,o,u=e.Event("show");if(this.hasContent()&&this.enabled){this.$element.trigger(u);if(u.isDefaultPrevented())return;t=this.tip(),this.setContent(),this.options.animation&&t.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,t[0],this.$element[0]):this.options.placement,t.detach().css({top:0,left:0,display:"block"}),this.options.container?t.appendTo(this.options.container):t.insertAfter(this.$element),n=this.getPosition(),r=t[0].offsetWidth,i=t[0].offsetHeight;switch(s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}this.applyPlacement(o,s),this.$element.trigger("shown")}},applyPlacement:function(e,t){var n=this.tip(),r=n[0].offsetWidth,i=n[0].offsetHeight,s,o,u,a;n.offset(e).addClass(t).addClass("in"),s=n[0].offsetWidth,o=n[0].offsetHeight,t=="top"&&o!=i&&(e.top=e.top+i-o,a=!0),t=="bottom"||t=="top"?(u=0,e.left<0&&(u=e.left*-2,e.left=0,n.offset(e),s=n[0].offsetWidth,o=n[0].offsetHeight),this.replaceArrow(u-r+s,s,"left")):this.replaceArrow(o-i,o,"top"),a&&n.offset(e)},replaceArrow:function(e,t,n){this.arrow().css(n,e?50*(1-e/t)+"%":"")},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){function i(){var t=setTimeout(function(){n.off(e.support.transition.end).detach()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.detach()})}var t=this,n=this.tip(),r=e.Event("hide");this.$element.trigger(r);if(r.isDefaultPrevented())return;return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?i():n.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var t=this.$element[0];return e.extend({},typeof t.getBoundingClientRect=="function"?t.getBoundingClientRect():{width:t.offsetWidth,height:t.offsetHeight},this.$element.offset())},getTitle:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title),e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(t){var n=t?e(t.currentTarget)[this.type](this._options).data(this.type):this;n.tip().hasClass("in")?n.hide():n.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var n=e.fn.tooltip;e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.tooltip.Constructor=t,e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},e.fn.tooltip.noConflict=function(){return e.fn.tooltip=n,this}}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;return e=(typeof n.content=="function"?n.content.call(t[0]):n.content)||t.attr("data-content"),e},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var n=e.fn.popover;e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),e.fn.popover.noConflict=function(){return e.fn.popover=n,this}}(window.jQuery),!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=i.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]),this.targets=e([]),n=this.$body.find(this.selector).map(function(){var n=e(this),r=n.data("target")||n.attr("href"),i=/^#\w/.test(r)&&e(r);return i&&i.length&&[[i.position().top+(!e.isWindow(t.$scrollElement.get(0))&&t.$scrollElement.scrollTop()),r]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',n=e(r).parent("li").addClass("active"),n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}};var n=e.fn.scrollspy;e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e.fn.scrollspy.noConflict=function(){return e.fn.scrollspy=n,this},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));if(t.parent("li").hasClass("active"))return;i=n.find(".active:last a")[0],o=e.Event("show",{relatedTarget:i}),t.trigger(o);if(o.isDefaultPrevented())return;s=e(r),this.activate(t.parent("li"),n),this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o(),i.removeClass("in")}};var n=e.fn.tab;e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this)),typeof n=="string"&&i[n]()})},e.fn.tab.Constructor=t,e.fn.tab.noConflict=function(){return e.fn.tab=n,this},e(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault(),e(this).tab("show")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=e(this.options.menu),this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:t.top+t.height,left:t.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(n=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source,n?this.process(n):this)},process:function(t){var n=this;return t=e.grep(t,function(e){return n.matcher(e)}),t=this.sorter(t),t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){var t=[],n=[],r=[],i;while(i=e.shift())i.toLowerCase().indexOf(this.query.toLowerCase())?~i.indexOf(this.query)?n.push(i):r.push(i):t.push(i);return t.concat(n,r)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this)).on("mouseleave","li",e.proxy(this.mouseleave,this))},eventSupported:function(e){var t=e in this.$element;return t||(this.$element.setAttribute(e,"return;"),t=typeof this.$element[e]=="function"),t},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},focus:function(e){this.focused=!0},blur:function(e){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(e){e.stopPropagation(),e.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(t){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")},mouseleave:function(e){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var n=e.fn.typeahead;e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},e.fn.typeahead.Constructor=t,e.fn.typeahead.noConflict=function(){return e.fn.typeahead=n,this},e(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;n.typeahead(n.data())})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)).on("click.affix.data-api",e.proxy(function(){setTimeout(e.proxy(this.checkPosition,this),1)},this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var t=e(document).height(),n=this.$window.scrollTop(),r=this.$element.offset(),i=this.options.offset,s=i.bottom,o=i.top,u="affix affix-top affix-bottom",a;typeof i!="object"&&(s=o=i),typeof o=="function"&&(o=i.top()),typeof s=="function"&&(s=i.bottom()),a=this.unpin!=null&&n+this.unpin<=r.top?!1:s!=null&&r.top+this.$element.height()>=t-s?"bottom":o!=null&&n<=o?"top":!1;if(this.affixed===a)return;this.affixed=a,this.unpin=a=="bottom"?r.top-n:null,this.$element.removeClass(u).addClass("affix"+(a?"-"+a:""))};var n=e.fn.affix;e.fn.affix=function(n){return this.each(function(){var r=e(this),i=r.data("affix"),s=typeof n=="object"&&n;i||r.data("affix",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e.fn.affix.noConflict=function(){return e.fn.affix=n,this},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)})})}(window.jQuery);
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/example-basic.html (+131 lines)
Line 0 Link Here
1
<!doctype html>
2
<html>
3
  <head>
4
    <meta charset="utf-8">
5
    <meta http-equiv="X-UA-Compatible" content="chrome=1">
6
    <title>Jquery-treegrid basic example</title>
7
8
    <link rel="stylesheet" href="../styles.css">
9
    <link rel="stylesheet" href="http://yandex.st/highlightjs/7.3/styles/default.min.css">
10
    <link rel="stylesheet" href="../css/jquery.treegrid.css">
11
12
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
13
    <script type="text/javascript" src="../js/jquery.treegrid.js"></script>
14
    <script type="text/javascript">
15
      $(document).ready(function() {
16
        $('.tree').treegrid();
17
      });
18
    </script>
19
20
21
    <script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script>
22
    <script>hljs.initHighlightingOnLoad();</script>
23
    <script>
24
      (function(i, s, o, g, r, a, m) {
25
        i['GoogleAnalyticsObject'] = r;
26
        i[r] = i[r] || function() {
27
          (i[r].q = i[r].q || []).push(arguments)
28
        }, i[r].l = 1 * new Date();
29
        a = s.createElement(o),
30
                m = s.getElementsByTagName(o)[0];
31
        a.async = 1;
32
        a.src = g;
33
        m.parentNode.insertBefore(a, m)
34
      })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
35
36
      ga('create', 'UA-43342702-1', 'maxazan.github.io');
37
      ga('send', 'pageview');
38
39
    </script>
40
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
41
    <!--[if lt IE 9]>
42
    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
43
    <![endif]-->
44
  </head>
45
  <body>
46
    <div class="wrapper">
47
48
49
      <h1><a href="http://maxazan.github.io/jquery-treegrid/">TreeGrid</a> Basic example</h1>
50
51
      <table class="tree">
52
        <tr class="treegrid-1">
53
          <td>Root node</td><td>Additional info</td>
54
        </tr>
55
        <tr class="treegrid-2 treegrid-parent-1">
56
          <td>Node 1-1</td><td>Additional info</td>
57
        </tr>
58
        <tr class="treegrid-3 treegrid-parent-1">
59
          <td>Node 1-2</td><td>Additional info</td>
60
        </tr>
61
        <tr class="treegrid-4 treegrid-parent-3">
62
          <td>Node 1-2-1</td><td>Additional info</td>
63
        </tr>
64
      </table>
65
66
      <h2>Code</h2>
67
68
      <pre>
69
<code class='html'>
70
&lt;!doctype html&gt;
71
&lt;html&gt;
72
  &lt;head&gt;
73
    &lt;meta charset=&quot;utf-8&quot;&gt;
74
    &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;chrome=1&quot;&gt;
75
    &lt;title&gt;Jquery-treegrid basic example&lt;/title&gt;
76
77
    &lt;link rel=&quot;stylesheet&quot; href=&quot;../css/jquery.treegrid.css&quot;&gt;
78
79
    &lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js&quot;&gt;&lt;/script&gt;
80
    &lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.js&quot;&gt;&lt;/script&gt;
81
    &lt;script type=&quot;text/javascript&quot;&gt;
82
      $(document).ready(function() {
83
        $('.tree').treegrid();
84
      });
85
    &lt;/script&gt;
86
87
  &lt;/head&gt;
88
  &lt;body&gt;
89
90
      &lt;table class=&quot;tree&quot;&gt;
91
        &lt;tr class=&quot;treegrid-1&quot;&gt;
92
          &lt;td&gt;Root node&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
93
        &lt;/tr&gt;
94
        &lt;tr class=&quot;treegrid-2 treegrid-parent-1&quot;&gt;
95
          &lt;td&gt;Node 1-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
96
        &lt;/tr&gt;
97
        &lt;tr class=&quot;treegrid-3 treegrid-parent-1&quot;&gt;
98
          &lt;td&gt;Node 1-2&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
99
        &lt;/tr&gt;
100
        &lt;tr class=&quot;treegrid-4 treegrid-parent-3&quot;&gt;
101
          &lt;td&gt;Node 1-2-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
102
        &lt;/tr&gt;
103
      &lt;/table&gt;
104
105
  &lt;/body&gt;
106
&lt;/html&gt;
107
</code>
108
      </pre>
109
    </div>
110
111
    <script type="text/javascript">
112
      var metas = document.getElementsByTagName('meta');
113
      var i;
114
      if (navigator.userAgent.match(/iPhone/i)) {
115
        for (i = 0; i < metas.length; i++) {
116
          if (metas[i].name == "viewport") {
117
            metas[i].content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";
118
          }
119
        }
120
        document.addEventListener("gesturestart", gestureStart, false);
121
      }
122
      function gestureStart() {
123
        for (i = 0; i < metas.length; i++) {
124
          if (metas[i].name == "viewport") {
125
            metas[i].content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";
126
          }
127
        }
128
      }</script>
129
130
  </body>
131
</html>
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/example-bootstrap-2.html (+144 lines)
Line 0 Link Here
1
<!DOCTYPE html>
2
<html lang="en">
3
    <head>
4
        <meta charset="utf-8">
5
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
        <meta name="description" content="">
7
        <meta name="author" content="">
8
        <link rel="shortcut icon" href="../../assets/ico/favicon.png">
9
10
        <title>TreeGrid for Bootstrap 2.3.x</title>
11
12
        <!-- Bootstrap core CSS -->
13
        <link href="bootstrap-2.3.2/css/bootstrap.css" rel="stylesheet">
14
        <link rel="stylesheet" href="../css/jquery.treegrid.css">
15
        <link rel="stylesheet" href="http://yandex.st/highlightjs/7.3/styles/default.min.css">
16
        <script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script>
17
		<script>hljs.initHighlightingOnLoad();</script>
18
19
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
20
        <script type="text/javascript" src="../js/jquery.treegrid.js"></script>
21
        <script type="text/javascript" src="../js/jquery.treegrid.bootstrap2.js"></script>
22
        <script type="text/javascript">
23
            $(document).ready(function() {
24
                $('.tree').treegrid();
25
                $('.tree2').treegrid({
26
                    expanderExpandedClass: 'icon-minus-sign',
27
                    expanderCollapsedClass: 'icon-plus-sign'
28
                });
29
            });
30
        </script>
31
    <script>
32
      (function(i, s, o, g, r, a, m) {
33
        i['GoogleAnalyticsObject'] = r;
34
        i[r] = i[r] || function() {
35
          (i[r].q = i[r].q || []).push(arguments)
36
        }, i[r].l = 1 * new Date();
37
        a = s.createElement(o),
38
                m = s.getElementsByTagName(o)[0];
39
        a.async = 1;
40
        a.src = g;
41
        m.parentNode.insertBefore(a, m)
42
      })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
43
44
      ga('create', 'UA-43342702-1', 'maxazan.github.io');
45
      ga('send', 'pageview');
46
47
    </script>
48
    </head>
49
50
    <body>
51
        <div class="container">
52
53
            <h1><a href="http://maxazan.github.io/jquery-treegrid/">TreeGrid</a> Bootstrap 2.3.2 examples</h1>
54
55
            <table class="table tree">
56
                <tr class="treegrid-1">
57
                    <td>Root node 1</td><td>Additional info</td>
58
                </tr>
59
                <tr class="treegrid-2 treegrid-parent-1">
60
                    <td>Node 1-1</td><td>Additional info</td>
61
                </tr>
62
                <tr class="treegrid-3 treegrid-parent-1">
63
                    <td>Node 1-2</td><td>Additional info</td>
64
                </tr>
65
                <tr class="treegrid-4 treegrid-parent-3">
66
                    <td>Node 1-2-1</td><td>Additional info</td>
67
                </tr>
68
                <tr class="treegrid-5">
69
                    <td>Root node 2</td><td>Additional info</td>
70
                </tr>
71
                <tr class="treegrid-6 treegrid-parent-5">
72
                    <td>Node 2-1</td><td>Additional info</td>
73
                </tr>
74
                <tr class="treegrid-7 treegrid-parent-5">
75
                    <td>Node 2-2</td><td>Additional info</td>
76
                </tr>
77
                <tr class="treegrid-8 treegrid-parent-7">
78
                    <td>Node 2-2-1</td><td>Additional info</td>
79
                </tr>
80
            </table>
81
            <h3>Source</h3>
82
83
            <pre><code class="html">&lt;link href=&quot;bootstrap-2.3.2/css/bootstrap.css&quot; rel=&quot;stylesheet&quot;&gt;
84
&lt;link rel=&quot;stylesheet&quot; href=&quot;../css/jquery.treegrid.css&quot;&gt;
85
86
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.js&quot;&gt;&lt;/script&gt;
87
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.bootstrap2.js&quot;&gt;&lt;/script&gt;
88
&lt;script type=&quot;text/javascript&quot;&gt;
89
    $(document).ready(function() {
90
        $(&#39;.tree&#39;).treegrid();
91
    });
92
&lt;/script&gt;</code></pre>
93
            <h2>Bootstrap grid example<br>
94
                table-bordered table-striped table-condensed<br>
95
                with custom expander</h2>
96
            <table class="table tree2 table-bordered table-striped table-condensed">
97
                <tr class="treegrid-1">
98
                    <td>Root node 1</td><td>Additional info</td>
99
                </tr>
100
                <tr class="treegrid-2 treegrid-parent-1">
101
                    <td>Node 1-1</td><td>Additional info</td>
102
                </tr>
103
                <tr class="treegrid-3 treegrid-parent-1">
104
                    <td>Node 1-2</td><td>Additional info</td>
105
                </tr>
106
                <tr class="treegrid-4 treegrid-parent-3">
107
                    <td>Node 1-2-1</td><td>Additional info</td>
108
                </tr>
109
                <tr class="treegrid-5">
110
                    <td>Root node 2</td><td>Additional info</td>
111
                </tr>
112
                <tr class="treegrid-6 treegrid-parent-5">
113
                    <td>Node 2-1</td><td>Additional info</td>
114
                </tr>
115
                <tr class="treegrid-7 treegrid-parent-5">
116
                    <td>Node 2-2</td><td>Additional info</td>
117
                </tr>
118
                <tr class="treegrid-8 treegrid-parent-7">
119
                    <td>Node 2-2-1</td><td>Additional info</td>
120
                </tr>
121
            </table>
122
            <h3>Source</h3>
123
124
            <pre><code class="html">&lt;link href=&quot;bootstrap-2.3.2/css/bootstrap.css&quot; rel=&quot;stylesheet&quot;&gt;
125
&lt;link rel=&quot;stylesheet&quot; href=&quot;../css/jquery.treegrid.css&quot;&gt;
126
127
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.js&quot;&gt;&lt;/script&gt;
128
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.bootstrap2.js&quot;&gt;&lt;/script&gt;
129
&lt;script type=&quot;text/javascript&quot;&gt;
130
    $(document).ready(function() {
131
                $('.tree').treegrid({
132
                    expanderExpandedClass: 'icon-minus-sign',
133
                    expanderCollapsedClass: 'icon-plus-sign'
134
                });
135
    });
136
&lt;/script&gt;</code></pre>
137
        </div> <!-- /container -->
138
139
140
        <!-- Bootstrap core JavaScript
141
        ================================================== -->
142
        <!-- Placed at the end of the document so the pages load faster -->
143
    </body>
144
</html>
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/example-bootstrap-3.html (+146 lines)
Line 0 Link Here
1
<!DOCTYPE html>
2
<html lang="en">
3
    <head>
4
        <meta charset="utf-8">
5
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
        <meta name="description" content="">
7
        <meta name="author" content="">
8
        <link rel="shortcut icon" href="../../assets/ico/favicon.png">
9
10
        <title>TreeGrid for Bootstrap 3.0.x</title>
11
12
        <!-- Bootstrap core CSS -->
13
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
14
        <link rel="stylesheet" href="../css/jquery.treegrid.css">
15
        <link rel="stylesheet" href="http://yandex.st/highlightjs/7.3/styles/default.min.css">
16
        <script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script>
17
		<script>hljs.initHighlightingOnLoad();</script>
18
19
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
20
        <script type="text/javascript" src="../js/jquery.treegrid.js"></script>
21
        <script type="text/javascript" src="../js/jquery.treegrid.bootstrap3.js"></script>
22
        <script type="text/javascript">
23
24
            $(document).ready(function() {
25
                $('.tree').treegrid();
26
                $('.tree-2').treegrid({
27
                    expanderExpandedClass: 'glyphicon glyphicon-minus',
28
                    expanderCollapsedClass: 'glyphicon glyphicon-plus'
29
                });
30
31
            });
32
        </script>
33
    <script>
34
      (function(i, s, o, g, r, a, m) {
35
        i['GoogleAnalyticsObject'] = r;
36
        i[r] = i[r] || function() {
37
          (i[r].q = i[r].q || []).push(arguments)
38
        }, i[r].l = 1 * new Date();
39
        a = s.createElement(o),
40
                m = s.getElementsByTagName(o)[0];
41
        a.async = 1;
42
        a.src = g;
43
        m.parentNode.insertBefore(a, m)
44
      })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
45
46
      ga('create', 'UA-43342702-1', 'maxazan.github.io');
47
      ga('send', 'pageview');
48
49
    </script>
50
    </head>
51
52
    <body>
53
        <div class="container">
54
55
            <h1><a href="http://maxazan.github.io/jquery-treegrid/">TreeGrid</a> Bootstrap 3 examples</h1>
56
57
            <table class="table tree">
58
                <tr class="treegrid-1">
59
                    <td>Root node 1</td><td>Additional info</td>
60
                </tr>
61
                <tr class="treegrid-2 treegrid-parent-1">
62
                    <td>Node 1-1</td><td>Additional info</td>
63
                </tr>
64
                <tr class="treegrid-3 treegrid-parent-1">
65
                    <td>Node 1-2</td><td>Additional info</td>
66
                </tr>
67
                <tr class="treegrid-4 treegrid-parent-3">
68
                    <td>Node 1-2-1</td><td>Additional info</td>
69
                </tr>
70
                <tr class="treegrid-5">
71
                    <td>Root node 2</td><td>Additional info</td>
72
                </tr>
73
                <tr class="treegrid-6 treegrid-parent-5">
74
                    <td>Node 2-1</td><td>Additional info</td>
75
                </tr>
76
                <tr class="treegrid-7 treegrid-parent-5">
77
                    <td>Node 2-2</td><td>Additional info</td>
78
                </tr>
79
                <tr class="treegrid-8 treegrid-parent-7">
80
                    <td>Node 2-2-1</td><td>Additional info</td>
81
                </tr>
82
            </table>
83
            <h3>Code</h3>
84
85
            <pre><code class="html">&lt;link href=&quot;bootstrap-3.0.0/css/bootstrap.css&quot; rel=&quot;stylesheet&quot;&gt;
86
&lt;link rel=&quot;stylesheet&quot; href=&quot;../css/jquery.treegrid.css&quot;&gt;
87
88
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.js&quot;&gt;&lt;/script&gt;
89
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.bootstrap3.js&quot;&gt;&lt;/script&gt;
90
&lt;script type=&quot;text/javascript&quot;&gt;
91
    $(document).ready(function() {
92
        $(&#39;.tree&#39;).treegrid();
93
    });
94
&lt;/script&gt;</code></pre>
95
            <h2>Bootstrap TreeGrid example<br>
96
                table-bordered table-striped table-condensed<br>
97
                custom expander</h2>
98
            <table class="table tree-2 table-bordered table-striped table-condensed">
99
                <tr class="treegrid-1">
100
                    <td>Root node 1</td><td>Additional info</td>
101
                </tr>
102
                <tr class="treegrid-2 treegrid-parent-1">
103
                    <td>Node 1-1</td><td>Additional info</td>
104
                </tr>
105
                <tr class="treegrid-3 treegrid-parent-1">
106
                    <td>Node 1-2</td><td>Additional info</td>
107
                </tr>
108
                <tr class="treegrid-4 treegrid-parent-3">
109
                    <td>Node 1-2-1</td><td>Additional info</td>
110
                </tr>
111
                <tr class="treegrid-5">
112
                    <td>Root node 2</td><td>Additional info</td>
113
                </tr>
114
                <tr class="treegrid-6 treegrid-parent-5">
115
                    <td>Node 2-1</td><td>Additional info</td>
116
                </tr>
117
                <tr class="treegrid-7 treegrid-parent-5">
118
                    <td>Node 2-2</td><td>Additional info</td>
119
                </tr>
120
                <tr class="treegrid-8 treegrid-parent-7">
121
                    <td>Node 2-2-1</td><td>Additional info</td>
122
                </tr>
123
            </table>
124
125
            <h3>Code</h3>
126
            <pre><code class="html">&lt;link href=&quot;bootstrap-3.0.0/css/bootstrap.css&quot; rel=&quot;stylesheet&quot;&gt;
127
&lt;link rel=&quot;stylesheet&quot; href=&quot;../css/jquery.treegrid.css&quot;&gt;
128
129
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.js&quot;&gt;&lt;/script&gt;
130
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.bootstrap3.js&quot;&gt;&lt;/script&gt;
131
&lt;script type=&quot;text/javascript&quot;&gt;
132
    $(document).ready(function() {
133
        $(&#39;.tree&#39;).treegrid({
134
                    expanderExpandedClass: &#39;glyphicon glyphicon-minus&#39;,
135
                    expanderCollapsedClass: &#39;glyphicon glyphicon-plus&#39;
136
                });
137
    });
138
&lt;/script&gt;</code></pre>
139
        </div> <!-- /container -->
140
141
142
        <!-- Bootstrap core JavaScript
143
        ================================================== -->
144
        <!-- Placed at the end of the document so the pages load faster -->
145
    </body>
146
</html>
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/example-bootstrap-resize.html (+146 lines)
Line 0 Link Here
1
<!DOCTYPE html>
2
<html lang="en">
3
    <head>
4
        <meta charset="utf-8">
5
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
        <meta name="description" content="">
7
        <meta name="author" content="">
8
        <link rel="shortcut icon" href="../../assets/ico/favicon.png">
9
10
        <title>TreeGrid for Bootstrap 3.0.x</title>
11
12
        <!-- Bootstrap core CSS -->
13
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
14
        <link rel="stylesheet" href="../css/jquery.treegrid.css">
15
        <link rel="stylesheet" href="http://yandex.st/highlightjs/7.3/styles/default.min.css">
16
        <script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script>
17
		<script>hljs.initHighlightingOnLoad();</script>
18
19
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
20
        <script type="text/javascript" src="../js/jquery.treegrid.js"></script>
21
        <script type="text/javascript" src="../js/jquery.treegrid.bootstrap3.js"></script>
22
        <script type="text/javascript">
23
24
            $(document).ready(function() {
25
                $('.tree').treegrid();
26
                $('.tree-2').treegrid({
27
                    expanderExpandedClass: 'glyphicon glyphicon-minus',
28
                    expanderCollapsedClass: 'glyphicon glyphicon-plus'
29
                });
30
31
            });
32
        </script>
33
    <script>
34
      (function(i, s, o, g, r, a, m) {
35
        i['GoogleAnalyticsObject'] = r;
36
        i[r] = i[r] || function() {
37
          (i[r].q = i[r].q || []).push(arguments)
38
        }, i[r].l = 1 * new Date();
39
        a = s.createElement(o),
40
                m = s.getElementsByTagName(o)[0];
41
        a.async = 1;
42
        a.src = g;
43
        m.parentNode.insertBefore(a, m)
44
      })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
45
46
      ga('create', 'UA-43342702-1', 'maxazan.github.io');
47
      ga('send', 'pageview');
48
49
    </script>
50
    </head>
51
52
    <body>
53
        <div class="container">
54
55
            <h1><a href="http://maxazan.github.io/jquery-treegrid/">TreeGrid</a> Bootstrap 3 resize examples</h1>
56
57
            <table class="table tree">
58
                <tr class="treegrid-1">
59
                    <td>Root node 1</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
60
                </tr>
61
                <tr class="treegrid-2 treegrid-parent-1">
62
                    <td>Node 1-1</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
63
                </tr>
64
                <tr class="treegrid-3 treegrid-parent-1">
65
                    <td>Node 1-2</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
66
                </tr>
67
                <tr class="treegrid-4 treegrid-parent-3">
68
                    <td>Node 1-2-1</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
69
                </tr>
70
                <tr class="treegrid-5">
71
                    <td>Root node 2</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
72
                </tr>
73
                <tr class="treegrid-6 treegrid-parent-5">
74
                    <td>Node 2-1</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
75
                </tr>
76
                <tr class="treegrid-7 treegrid-parent-5">
77
                    <td>Node 2-2</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
78
                </tr>
79
                <tr class="treegrid-8 treegrid-parent-7">
80
                    <td>Node 2-2-1</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
81
                </tr>
82
            </table>
83
            <h3>Code</h3>
84
85
            <pre><code class="html">&lt;link href=&quot;bootstrap-3.0.0/css/bootstrap.css&quot; rel=&quot;stylesheet&quot;&gt;
86
&lt;link rel=&quot;stylesheet&quot; href=&quot;../css/jquery.treegrid.css&quot;&gt;
87
88
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.js&quot;&gt;&lt;/script&gt;
89
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.bootstrap3.js&quot;&gt;&lt;/script&gt;
90
&lt;script type=&quot;text/javascript&quot;&gt;
91
    $(document).ready(function() {
92
        $(&#39;.tree&#39;).treegrid();
93
    });
94
&lt;/script&gt;</code></pre>
95
            <h2>Bootstrap TreeGrid example<br>
96
                table-bordered table-striped table-condensed<br>
97
                custom expander</h2>
98
            <table class="table tree-2 table-bordered table-striped table-condensed">
99
                <tr class="treegrid-1">
100
                    <td>Root node 1</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
101
                </tr>
102
                <tr class="treegrid-2 treegrid-parent-1">
103
                    <td>Node 1-1</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
104
                </tr>
105
                <tr class="treegrid-3 treegrid-parent-1">
106
                    <td>Node 1-2</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
107
                </tr>
108
                <tr class="treegrid-4 treegrid-parent-3">
109
                    <td>Node 1-2-1</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
110
                </tr>
111
                <tr class="treegrid-5">
112
                    <td>Root node 2</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
113
                </tr>
114
                <tr class="treegrid-6 treegrid-parent-5">
115
                    <td>Node 2-1</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
116
                </tr>
117
                <tr class="treegrid-7 treegrid-parent-5">
118
                    <td>Node 2-2</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
119
                </tr>
120
                <tr class="treegrid-8 treegrid-parent-7">
121
                    <td>Node 2-2-1</td><td class="hidden-xs">Additional info</td><td class="hidden-xs hidden-sm">Additional info2</td><td class="hidden-xs hidden-sm hidden-md">Additional info3</td>
122
                </tr>
123
            </table>
124
125
            <h3>Code</h3>
126
            <pre><code class="html">&lt;link href=&quot;bootstrap-3.0.0/css/bootstrap.css&quot; rel=&quot;stylesheet&quot;&gt;
127
&lt;link rel=&quot;stylesheet&quot; href=&quot;../css/jquery.treegrid.css&quot;&gt;
128
129
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.js&quot;&gt;&lt;/script&gt;
130
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.bootstrap3.js&quot;&gt;&lt;/script&gt;
131
&lt;script type=&quot;text/javascript&quot;&gt;
132
    $(document).ready(function() {
133
        $(&#39;.tree&#39;).treegrid({
134
                    expanderExpandedClass: &#39;glyphicon glyphicon-minus&#39;,
135
                    expanderCollapsedClass: &#39;glyphicon glyphicon-plus&#39;
136
                });
137
    });
138
&lt;/script&gt;</code></pre>
139
        </div> <!-- /container -->
140
141
142
        <!-- Bootstrap core JavaScript
143
        ================================================== -->
144
        <!-- Placed at the end of the document so the pages load faster -->
145
    </body>
146
</html>
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/example-column.html (+135 lines)
Line 0 Link Here
1
<!doctype html>
2
<html>
3
  <head>
4
    <meta charset="utf-8">
5
    <meta http-equiv="X-UA-Compatible" content="chrome=1">
6
    <title>TreeGrid example with tree in 2nd column</title>
7
8
    <link rel="stylesheet" href="../styles.css">
9
    <link rel="stylesheet" href="http://yandex.st/highlightjs/7.3/styles/default.min.css">
10
    <link rel="stylesheet" href="../css/jquery.treegrid.css">
11
12
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
13
    <script type="text/javascript" src="../js/jquery.treegrid.js"></script>
14
    <script type="text/javascript">
15
      $(document).ready(function() {
16
        $('.tree').treegrid({
17
          treeColumn: 1
18
        });
19
      });
20
    </script>
21
22
23
    <script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script>
24
    <script>hljs.initHighlightingOnLoad();</script>
25
    <script>
26
      (function(i, s, o, g, r, a, m) {
27
        i['GoogleAnalyticsObject'] = r;
28
        i[r] = i[r] || function() {
29
          (i[r].q = i[r].q || []).push(arguments)
30
        }, i[r].l = 1 * new Date();
31
        a = s.createElement(o),
32
                m = s.getElementsByTagName(o)[0];
33
        a.async = 1;
34
        a.src = g;
35
        m.parentNode.insertBefore(a, m)
36
      })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
37
38
      ga('create', 'UA-43342702-1', 'maxazan.github.io');
39
      ga('send', 'pageview');
40
41
    </script>
42
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
43
    <!--[if lt IE 9]>
44
    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
45
    <![endif]-->
46
  </head>
47
  <body>
48
    <div class="wrapper">
49
50
51
      <h1><a href="http://maxazan.github.io/jquery-treegrid/">TreeGrid</a> example with tree in 2nd column</h1>
52
53
      <table class="tree">
54
        <tr class="treegrid-1">
55
          <td>Root node</td><td>Additional info</td>
56
        </tr>
57
        <tr class="treegrid-2 treegrid-parent-1">
58
          <td>Node 1-1</td><td>Additional info</td>
59
        </tr>
60
        <tr class="treegrid-3 treegrid-parent-1">
61
          <td>Node 1-2</td><td>Additional info</td>
62
        </tr>
63
        <tr class="treegrid-4 treegrid-parent-3">
64
          <td>Node 1-2-1</td><td>Additional info</td>
65
        </tr>
66
      </table>
67
68
      <h2>Code</h2>
69
70
      <pre>
71
<code class='html'>
72
&lt;!doctype html&gt;
73
&lt;html&gt;
74
  &lt;head&gt;
75
    &lt;meta charset=&quot;utf-8&quot;&gt;
76
    &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;chrome=1&quot;&gt;
77
    &lt;title&gt;Jquery-treegrid basic example&lt;/title&gt;
78
79
    &lt;link rel=&quot;stylesheet&quot; href=&quot;../css/jquery.treegrid.css&quot;&gt;
80
81
    &lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js&quot;&gt;&lt;/script&gt;
82
    &lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.js&quot;&gt;&lt;/script&gt;
83
    &lt;script type=&quot;text/javascript&quot;&gt;
84
      $(document).ready(function() {
85
        $('.tree').treegrid({
86
          treeColumn: 1
87
        });
88
      });
89
    &lt;/script&gt;
90
91
  &lt;/head&gt;
92
  &lt;body&gt;
93
94
      &lt;table class=&quot;tree&quot;&gt;
95
        &lt;tr class=&quot;treegrid-1&quot;&gt;
96
          &lt;td&gt;Root node&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
97
        &lt;/tr&gt;
98
        &lt;tr class=&quot;treegrid-2 treegrid-parent-1&quot;&gt;
99
          &lt;td&gt;Node 1-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
100
        &lt;/tr&gt;
101
        &lt;tr class=&quot;treegrid-3 treegrid-parent-1&quot;&gt;
102
          &lt;td&gt;Node 1-2&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
103
        &lt;/tr&gt;
104
        &lt;tr class=&quot;treegrid-4 treegrid-parent-3&quot;&gt;
105
          &lt;td&gt;Node 1-2-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
106
        &lt;/tr&gt;
107
      &lt;/table&gt;
108
109
  &lt;/body&gt;
110
&lt;/html&gt;
111
</code>
112
      </pre>
113
    </div>
114
115
    <script type="text/javascript">
116
      var metas = document.getElementsByTagName('meta');
117
      var i;
118
      if (navigator.userAgent.match(/iPhone/i)) {
119
        for (i = 0; i < metas.length; i++) {
120
          if (metas[i].name == "viewport") {
121
            metas[i].content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";
122
          }
123
        }
124
        document.addEventListener("gesturestart", gestureStart, false);
125
      }
126
      function gestureStart() {
127
        for (i = 0; i < metas.length; i++) {
128
          if (metas[i].name == "viewport") {
129
            metas[i].content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";
130
          }
131
        }
132
      }</script>
133
134
  </body>
135
</html>
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/example-events.html (+155 lines)
Line 0 Link Here
1
<!doctype html>
2
<html>
3
    <head>
4
        <meta charset="utf-8">
5
        <meta http-equiv="X-UA-Compatible" content="chrome=1">
6
        <title>TreeGrid events example</title>
7
8
        <link rel="stylesheet" href="../styles.css">
9
        <link rel="stylesheet" href="http://yandex.st/highlightjs/7.3/styles/default.min.css">
10
        <link rel="stylesheet" href="../css/jquery.treegrid.css">
11
12
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
13
        <script type="text/javascript" src="../js/jquery.treegrid.js"></script>
14
        <script type="text/javascript">
15
            $(document).ready(function() {
16
                $('.tree').treegrid({
17
                    onChange: function() {
18
                        alert("Changed: " + $(this).attr("id"));
19
                    },
20
                    onCollapse: function() {
21
                        alert("Collapsed " + $(this).attr("id"));
22
                    },
23
                    onExpand: function() {
24
                        alert("Expanded: " + $(this).attr("id"));
25
                    }});
26
                $('#node-1').on("change", function() {
27
                    alert("Event from " + $(this).attr("id"));
28
                });
29
            });
30
        </script>
31
32
33
        <script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script>
34
        <script>hljs.initHighlightingOnLoad();</script>
35
        <script>
36
            (function(i, s, o, g, r, a, m) {
37
                i['GoogleAnalyticsObject'] = r;
38
                i[r] = i[r] || function() {
39
                    (i[r].q = i[r].q || []).push(arguments)
40
                }, i[r].l = 1 * new Date();
41
                a = s.createElement(o),
42
                        m = s.getElementsByTagName(o)[0];
43
                a.async = 1;
44
                a.src = g;
45
                m.parentNode.insertBefore(a, m)
46
            })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
47
48
            ga('create', 'UA-43342702-1', 'maxazan.github.io');
49
            ga('send', 'pageview');
50
51
        </script>
52
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
53
        <!--[if lt IE 9]>
54
        <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
55
        <![endif]-->
56
    </head>
57
    <body>
58
        <div class="wrapper">
59
60
61
            <h1><a href="http://maxazan.github.io/jquery-treegrid/">TreeGrid</a> events example</h1>
62
63
            <table class="tree">
64
                <tr id="node-1" class="treegrid-1">
65
                    <td>Root node</td><td>Additional info</td>
66
                </tr>
67
                <tr id="node-1-1" class="treegrid-2 treegrid-parent-1">
68
                    <td>Node 1-1</td><td>Additional info</td>
69
                </tr>
70
                <tr id="node-1-2" class="treegrid-3 treegrid-parent-1">
71
                    <td>Node 1-2</td><td>Additional info</td>
72
                </tr>
73
                <tr id="node-1-2-1" class="treegrid-4 treegrid-parent-3">
74
                    <td>Node 1-2-1</td><td>Additional info</td>
75
                </tr>
76
            </table>
77
78
            <h2>Code</h2>
79
80
            <pre>
81
<code class='html'>
82
&lt;!doctype html&gt;
83
&lt;html&gt;
84
  &lt;head&gt;
85
    &lt;meta charset=&quot;utf-8&quot;&gt;
86
    &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;chrome=1&quot;&gt;
87
    &lt;title&gt;Jquery-treegrid basic example&lt;/title&gt;
88
89
    &lt;link rel=&quot;stylesheet&quot; href=&quot;../css/jquery.treegrid.css&quot;&gt;
90
91
    &lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js&quot;&gt;&lt;/script&gt;
92
    &lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.js&quot;&gt;&lt;/script&gt;
93
    &lt;script type=&quot;text/javascript&quot;&gt;
94
      $(document).ready(function() {
95
            $('.tree').treegrid({
96
            onChange: function() {
97
                alert("Changed: "+$(this).attr("id"));
98
            },
99
            onCollapse: function() {
100
                alert("Collapsed: "+$(this).attr("id"));
101
            },
102
            onExpand: function() {
103
                alert("Expanded "+$(this).attr("id"));
104
            }});
105
            $('#node-1').on("change", function() {
106
                alert("Event from " + $(this).attr("id"));
107
            });
108
      });
109
    &lt;/script&gt;
110
111
  &lt;/head&gt;
112
  &lt;body&gt;
113
114
      &lt;table class=&quot;tree&quot;&gt;
115
        &lt;tr class=&quot;treegrid-1&quot;&gt;
116
          &lt;td&gt;Root node&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
117
        &lt;/tr&gt;
118
        &lt;tr class=&quot;treegrid-2 treegrid-parent-1&quot;&gt;
119
          &lt;td&gt;Node 1-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
120
        &lt;/tr&gt;
121
        &lt;tr class=&quot;treegrid-3 treegrid-parent-1&quot;&gt;
122
          &lt;td&gt;Node 1-2&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
123
        &lt;/tr&gt;
124
        &lt;tr class=&quot;treegrid-4 treegrid-parent-3&quot;&gt;
125
          &lt;td&gt;Node 1-2-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
126
        &lt;/tr&gt;
127
      &lt;/table&gt;
128
129
  &lt;/body&gt;
130
&lt;/html&gt;
131
</code>
132
            </pre>
133
        </div>
134
135
        <script type="text/javascript">
136
            var metas = document.getElementsByTagName('meta');
137
            var i;
138
            if (navigator.userAgent.match(/iPhone/i)) {
139
                for (i = 0; i < metas.length; i++) {
140
                    if (metas[i].name == "viewport") {
141
                        metas[i].content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";
142
                    }
143
                }
144
                document.addEventListener("gesturestart", gestureStart, false);
145
            }
146
            function gestureStart() {
147
                for (i = 0; i < metas.length; i++) {
148
                    if (metas[i].name == "viewport") {
149
                        metas[i].content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";
150
                    }
151
                }
152
            }</script>
153
154
    </body>
155
</html>
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/example-huge.html (+113 lines)
Line 0 Link Here
1
<!doctype html>
2
<html>
3
  <head>
4
    <meta charset="utf-8">
5
    <meta http-equiv="X-UA-Compatible" content="chrome=1">
6
    <title>Jquery-treegrid basic example</title>
7
8
    <link rel="stylesheet" href="../styles.css">
9
    <link rel="stylesheet" href="../css/jquery.treegrid.css">
10
11
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
12
    <script type="text/javascript" src="../js/jquery.treegrid.js"></script>
13
    <script type="text/javascript">
14
      $(document).ready(function() {
15
	//create huge treetable
16
	var count_root_elements=100;
17
	var count_deep=10;
18
	console.log('init');
19
	for(var i=0; i<count_root_elements; i++){
20
		console.log('add');
21
		var tr=$("<tr></tr>").addClass("treegrid-"+i+"-0").appendTo($('.tree')).html("<td>Root node "+i+"</td><td>Additional info</td>");
22
23
		for(var j=1; j<count_deep; j++){
24
				$("<tr></tr>").addClass("treegrid-"+i+"-"+j).addClass("treegrid-parent-"+i+"-"+(j-1)).appendTo($('.tree')).html("<td>Child node "+i+"-"+j+"</td><td>Additional info</td>");
25
		}
26
	}
27
28
        $('.tree').treegrid();
29
      });
30
    </script>
31
32
33
34
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
35
    <!--[if lt IE 9]>
36
    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
37
    <![endif]-->
38
  </head>
39
  <body>
40
    <div class="wrapper">
41
42
43
      <h1><a href="http://maxazan.github.io/jquery-treegrid/">TreeGrid</a> Big data example</h1>
44
45
      <table class="tree"></table>
46
47
      <h2>Code</h2>
48
49
      <pre>
50
<code class='html'>
51
&lt;!doctype html&gt;
52
&lt;html&gt;
53
  &lt;head&gt;
54
    &lt;meta charset=&quot;utf-8&quot;&gt;
55
    &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;chrome=1&quot;&gt;
56
    &lt;title&gt;Jquery-treegrid basic example&lt;/title&gt;
57
58
    &lt;link rel=&quot;stylesheet&quot; href=&quot;../css/jquery.treegrid.css&quot;&gt;
59
60
    &lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js&quot;&gt;&lt;/script&gt;
61
    &lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.js&quot;&gt;&lt;/script&gt;
62
    &lt;script type=&quot;text/javascript&quot;&gt;
63
      $(document).ready(function() {
64
        $('.tree').treegrid();
65
      });
66
    &lt;/script&gt;
67
68
  &lt;/head&gt;
69
  &lt;body&gt;
70
71
      &lt;table class=&quot;tree&quot;&gt;
72
        &lt;tr class=&quot;treegrid-1&quot;&gt;
73
          &lt;td&gt;Root node&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
74
        &lt;/tr&gt;
75
        &lt;tr class=&quot;treegrid-2 treegrid-parent-1&quot;&gt;
76
          &lt;td&gt;Node 1-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
77
        &lt;/tr&gt;
78
        &lt;tr class=&quot;treegrid-3 treegrid-parent-1&quot;&gt;
79
          &lt;td&gt;Node 1-2&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
80
        &lt;/tr&gt;
81
        &lt;tr class=&quot;treegrid-4 treegrid-parent-3&quot;&gt;
82
          &lt;td&gt;Node 1-2-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
83
        &lt;/tr&gt;
84
      &lt;/table&gt;
85
86
  &lt;/body&gt;
87
&lt;/html&gt;
88
</code>
89
      </pre>
90
    </div>
91
92
    <script type="text/javascript">
93
      var metas = document.getElementsByTagName('meta');
94
      var i;
95
      if (navigator.userAgent.match(/iPhone/i)) {
96
        for (i = 0; i < metas.length; i++) {
97
          if (metas[i].name == "viewport") {
98
            metas[i].content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";
99
          }
100
        }
101
        document.addEventListener("gesturestart", gestureStart, false);
102
      }
103
      function gestureStart() {
104
        for (i = 0; i < metas.length; i++) {
105
          if (metas[i].name == "viewport") {
106
            metas[i].content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";
107
          }
108
        }
109
      }
110
      </script>
111
112
  </body>
113
</html>
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/examples/example-save-state.html (+162 lines)
Line 0 Link Here
1
<!doctype html>
2
<html>
3
  <head>
4
    <meta charset="utf-8">
5
    <meta http-equiv="X-UA-Compatible" content="chrome=1">
6
    <title>Jquery-treegrid save state example</title>
7
8
    <link rel="stylesheet" href="../styles.css">
9
    <link rel="stylesheet" href="http://yandex.st/highlightjs/7.3/styles/default.min.css">
10
    <link rel="stylesheet" href="../css/jquery.treegrid.css">
11
12
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
13
    <script type="text/javascript" src="../js/jquery.treegrid.js"></script>
14
    <script type="text/javascript" src="../js/jquery.cookie.js"></script>
15
    <script type="text/javascript">
16
      $(document).ready(function() {
17
        $('.tree').treegrid({
18
          'initialState': 'collapsed',
19
          'saveState': true,
20
        });
21
      });
22
    </script>
23
24
25
    <script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script>
26
    <script>hljs.initHighlightingOnLoad();</script>
27
    <script>
28
      (function(i, s, o, g, r, a, m) {
29
        i['GoogleAnalyticsObject'] = r;
30
        i[r] = i[r] || function() {
31
          (i[r].q = i[r].q || []).push(arguments)
32
        }, i[r].l = 1 * new Date();
33
        a = s.createElement(o),
34
                m = s.getElementsByTagName(o)[0];
35
        a.async = 1;
36
        a.src = g;
37
        m.parentNode.insertBefore(a, m)
38
      })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
39
40
      ga('create', 'UA-43342702-1', 'maxazan.github.io');
41
      ga('send', 'pageview');
42
43
    </script>
44
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
45
    <!--[if lt IE 9]>
46
    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
47
    <![endif]-->
48
  </head>
49
  <body>
50
    <div class="wrapper">
51
52
53
      <h1><a href="http://maxazan.github.io/jquery-treegrid/">TreeGrid</a> save state example</h1>
54
      <p>You can reload page. The tree state is saved.</p>
55
      <table class="tree">
56
        <tr class="treegrid-1">
57
          <td>Root node 1</td><td>Additional info</td>
58
        </tr>
59
        <tr class="treegrid-2 treegrid-parent-1">
60
          <td>Node 1-1</td><td>Additional info</td>
61
        </tr>
62
        <tr class="treegrid-3 treegrid-parent-1">
63
          <td>Node 1-2</td><td>Additional info</td>
64
        </tr>
65
        <tr class="treegrid-4 treegrid-parent-3">
66
          <td>Node 1-2-1</td><td>Additional info</td>
67
        </tr>
68
        <tr class="treegrid-5">
69
          <td>Root node 2</td><td>Additional info</td>
70
        </tr>
71
        <tr class="treegrid-6 treegrid-parent-5">
72
          <td>Node 2-1</td><td>Additional info</td>
73
        </tr>
74
        <tr class="treegrid-7 treegrid-parent-5">
75
          <td>Node 2-2</td><td>Additional info</td>
76
        </tr>
77
        <tr class="treegrid-8 treegrid-parent-7">
78
          <td>Node 2-2-1</td><td>Additional info</td>
79
        </tr>
80
      </table>
81
82
      <h2>Code</h2>
83
84
      <pre>
85
<code class='html'>
86
&lt;!doctype html&gt;
87
&lt;html&gt;
88
  &lt;head&gt;
89
    &lt;meta charset=&quot;utf-8&quot;&gt;
90
    &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;chrome=1&quot;&gt;
91
    &lt;title&gt;Jquery-treegrid basic example&lt;/title&gt;
92
93
    &lt;link rel=&quot;stylesheet&quot; href=&quot;../css/jquery.treegrid.css&quot;&gt;
94
95
    &lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js&quot;&gt;&lt;/script&gt;
96
    &lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.treegrid.js&quot;&gt;&lt;/script&gt;
97
    &lt;script type=&quot;text/javascript&quot;&gt;
98
      $(document).ready(function() {
99
        $('.tree').treegrid({
100
          'initialState': 'collapsed',
101
          'saveState': true,
102
        });
103
      });
104
    &lt;/script&gt;
105
106
  &lt;/head&gt;
107
  &lt;body&gt;
108
109
      &lt;table class=&quot;tree&quot;&gt;
110
        &lt;tr class=&quot;treegrid-1&quot;&gt;
111
          &lt;td&gt;Root node 1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
112
        &lt;/tr&gt;
113
        &lt;tr class=&quot;treegrid-2 treegrid-parent-1&quot;&gt;
114
          &lt;td&gt;Node 1-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
115
        &lt;/tr&gt;
116
        &lt;tr class=&quot;treegrid-3 treegrid-parent-1&quot;&gt;
117
          &lt;td&gt;Node 1-2&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
118
        &lt;/tr&gt;
119
        &lt;tr class=&quot;treegrid-4 treegrid-parent-3&quot;&gt;
120
          &lt;td&gt;Node 1-2-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
121
        &lt;/tr&gt;
122
        &lt;tr class=&quot;treegrid-5&quot;&gt;
123
          &lt;td&gt;Root node 2&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
124
        &lt;/tr&gt;
125
        &lt;tr class=&quot;treegrid-6 treegrid-parent-5&quot;&gt;
126
          &lt;td&gt;Node 2-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
127
        &lt;/tr&gt;
128
        &lt;tr class=&quot;treegrid-7 treegrid-parent-5&quot;&gt;
129
          &lt;td&gt;Node 2-2&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
130
        &lt;/tr&gt;
131
        &lt;tr class=&quot;treegrid-8 treegrid-parent-7&quot;&gt;
132
          &lt;td&gt;Node 2-2-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
133
        &lt;/tr&gt;
134
      &lt;/table&gt;
135
136
  &lt;/body&gt;
137
&lt;/html&gt;
138
</code>
139
      </pre>
140
    </div>
141
142
    <script type="text/javascript">
143
      var metas = document.getElementsByTagName('meta');
144
      var i;
145
      if (navigator.userAgent.match(/iPhone/i)) {
146
        for (i = 0; i < metas.length; i++) {
147
          if (metas[i].name == "viewport") {
148
            metas[i].content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";
149
          }
150
        }
151
        document.addEventListener("gesturestart", gestureStart, false);
152
      }
153
      function gestureStart() {
154
        for (i = 0; i < metas.length; i++) {
155
          if (metas[i].name == "viewport") {
156
            metas[i].content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";
157
          }
158
        }
159
      }</script>
160
161
  </body>
162
</html>
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/index.html (+478 lines)
Line 0 Link Here
1
<!doctype html>
2
<html>
3
    <head>
4
        <meta charset="utf-8">
5
        <meta http-equiv="X-UA-Compatible" content="chrome=1">
6
        <meta name="google-site-verification" content="Qsvvve1CBtl2_PikToO7CdVGsY7bwLrjc_9AgZtt_bk" />
7
        <title>Treegrid jquery plugin</title>
8
9
        <link rel="stylesheet" href="styles.css">
10
        <link rel="stylesheet" href="http://yandex.st/highlightjs/7.3/styles/default.min.css">
11
        <link rel="stylesheet" href="css/jquery.treegrid.css">
12
        <script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script>
13
        <script>hljs.initHighlightingOnLoad();</script>
14
        <script>
15
            (function(i, s, o, g, r, a, m) {
16
                i['GoogleAnalyticsObject'] = r;
17
                i[r] = i[r] || function() {
18
                    (i[r].q = i[r].q || []).push(arguments)
19
                }, i[r].l = 1 * new Date();
20
                a = s.createElement(o),
21
                        m = s.getElementsByTagName(o)[0];
22
                a.async = 1;
23
                a.src = g;
24
                m.parentNode.insertBefore(a, m)
25
            })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
26
27
            ga('create', 'UA-43342702-1', 'maxazan.github.io');
28
            ga('send', 'pageview');
29
30
        </script>
31
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
32
        <!--[if lt IE 9]>
33
        <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
34
        <![endif]-->
35
    </head>
36
    <body>
37
        <div class="wrapper">
38
39
            <ul class="download" style="float:right;">
40
                <li><a href="https://github.com/maxazan/jquery-treegrid/zipball/master">Download <br><strong>ZIP File</strong></a></li>
41
                <li><a href="https://github.com/maxazan/jquery-treegrid/tarball/master">Download <br><strong>TAR Ball</strong></a></li>
42
                <li><a href="https://github.com/maxazan/jquery-treegrid">View On <br><strong>GitHub</strong></a></li>
43
            </ul>
44
45
            <h1>TreeGrid jQuery plugin</h1>
46
            <h2>Features</h2>
47
            <ul>
48
                <li>Create TreeGrid from HTML table</li>
49
                <li>Simple and flexible javascript</li>
50
                <li>Compatible with bootstrap</li>
51
                <li>Ability to save the state of the tree</li>
52
                <li>Events support</li>
53
54
            </ul>
55
            <h2>Usage</h2>
56
            <p>Step 1. Initialize plugin</p>
57
            <pre><code>
58
&lt;script type="text/javascript" src="js/jquery.js"&gt;&lt;/script&gt;
59
&lt;script type="text/javascript" src="js/jquery.treegrid.js"&gt;&lt;/script&gt;
60
&lt;link rel="stylesheet" href="css/jquery.treegrid.css"&gt;
61
62
&lt;script type="text/javascript"&gt;
63
  $('.tree').treegrid();
64
&lt;/script&gt;</code></pre>
65
            <p>Step 2. Make table</p>
66
            <pre><code class="html">
67
&lt;table class="tree"&gt;
68
	&lt;tr class="treegrid-1"&gt;
69
		&lt;td&gt;Root node&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
70
	&lt;/tr&gt;
71
	&lt;tr class="treegrid-2 treegrid-parent-1"&gt;
72
		&lt;td&gt;Node 1-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
73
	&lt;/tr&gt;
74
	&lt;tr class="treegrid-3 treegrid-parent-1"&gt;
75
		&lt;td&gt;Node 1-2&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
76
	&lt;/tr&gt;
77
	&lt;tr class="treegrid-4 treegrid-parent-3"&gt;
78
		&lt;td&gt;Node 1-2-1&lt;/td&gt;&lt;td&gt;Additional info&lt;/td&gt;
79
	&lt;/tr&gt;
80
&lt;/table&gt;
81
82
	  </code></pre>
83
            <p>Step 3. See result</p>
84
85
            <table class="tree">
86
                <tr class="treegrid-1">
87
                    <td>Root node</td><td>Additional info</td>
88
                </tr>
89
                <tr class="treegrid-2 treegrid-parent-1">
90
                    <td>Node 1-1</td><td>Additional info</td>
91
                </tr>
92
                <tr class="treegrid-3 treegrid-parent-1">
93
                    <td>Node 1-2</td><td>Additional info</td>
94
                </tr>
95
                <tr class="treegrid-4 treegrid-parent-3">
96
                    <td>Node 1-2-1</td><td>Additional info</td>
97
                </tr>
98
            </table>
99
100
            <h2>Other examples</h2>
101
            <p><a href="examples/example-basic.html" target="_blank">Basic example</a></p>
102
            <p><a href="examples/example-column.html" target="_blank">Tree on 2nd column example</a></p>
103
            <p><a href="examples/example-save-state.html" target="_blank">Save state example</a></p>
104
            <p><a href="examples/example-bootstrap-2.html" target="_blank">TreeGrid for bootstrap 2.x</a></p>
105
            <p><a href="examples/example-bootstrap-3.html" target="_blank">TreeGrid for bootstrap 3.x</a></p>
106
            <p><a href="examples/example-bootstrap-resize.html" target="_blank">TreeGrid for bootstrap 3.x resize demo</a></p>
107
            <p><a href="examples/example-events.html" target="_blank">Events examples</a></p>
108
            <p><a href="examples/example-huge.html" target="_blank">Big data example</a></p>
109
110
111
            <h2>Configuration Settings</h2>
112
            <h3>Settings</h3>
113
            <table>
114
                <tr><th>Parameter</th><th>Type</th><th>Default value</th><th>Description</th></tr>
115
                <tr>
116
                    <td>treeColumn</td>
117
                    <td>Numeric</td>
118
                    <td>0</td>
119
                    <td>Number of column using for tree</td>
120
                </tr>
121
122
                <tr>
123
                    <td>initialState</td>
124
                    <td>String</td>
125
                    <td>expanded</td>
126
                    <td>Initial state of tree<br>
127
                        'expanded' - all nodes will be expanded<br>
128
                        'collapsed' - all nodes will be collapsed<br>
129
                    </td>
130
                </tr>
131
                <tr>
132
                    <td>saveState</td>
133
                    <td>Boolean</td>
134
                    <td>false</td>
135
                    <td>If true you can reload page and tree state was saved</td>
136
                </tr>
137
                <tr>
138
                    <td>saveStateMethod</td>
139
                    <td>String</td>
140
                    <td>cookie</td>
141
                    <td>
142
                        'cookie' - save state to cookie<br>
143
                        'hash' - save state to hash<br>
144
                    </td>
145
                </tr>
146
                <tr>
147
                    <td>saveStateName</td>
148
                    <td>String</td>
149
                    <td>tree-grid-state</td>
150
                    <td>
151
                        Name of cookie or hash to save state.
152
                    </td>
153
                </tr>
154
155
                <tr>
156
                    <td>expanderTemplate</td>
157
                    <td>String</td>
158
                    <td>&lt;span class="treegrid-expander"&gt;&lt;/span&gt;</td>
159
                    <td>HTML Element when you click on that will be collapse/expand branches</td>
160
                </tr>
161
                <tr>
162
                    <td>expanderExpandedClass</td>
163
                    <td>String</td>
164
                    <td>treegrid-expander-expanded</td>
165
                    <td>Class using for expander element when it expanded</td>
166
                </tr>
167
                <tr>
168
                    <td>expanderCollapsedClass</td>
169
                    <td>String</td>
170
                    <td>treegrid-expander-collapsed</td>
171
                    <td>Class using for expander element when it collapsed</td>
172
                </tr>
173
                <tr>
174
                    <td>indentTemplate</td>
175
                    <td>String</td>
176
                    <td>&lt;span class="treegrid-indent"&gt;&lt;/span&gt;</td>
177
                    <td>HTML Element that will be placed as padding, depending on the depth of nesting node</td>
178
                </tr>
179
180
                <tr>
181
                    <td>onCollapse</td>
182
                    <td>Function</td>
183
                    <td>null</td>
184
                    <td>Function, which will be executed when one of node will be collapsed</td>
185
                </tr>
186
                <tr>
187
                    <td>onExpand</td>
188
                    <td>Function</td>
189
                    <td>null</td>
190
                    <td>Function, which will be executed when one of node will be expanded</td>
191
                </tr>
192
                <tr>
193
                    <td>onChange</td>
194
                    <td>Function</td>
195
                    <td>null</td>
196
                    <td>Function, which will be executed when one of node will be expanded or collapsed</td>
197
                </tr>
198
            </table>
199
200
            <h3>Public methods</h3>
201
202
            <table>
203
                <tr>
204
                    <th>Method name</th>
205
                    <th>Description</th>
206
                    <th>Example</th>
207
                </tr>
208
                <tr>
209
                    <td>getRootNodes</td>
210
                    <td>Returns the root branches</td>
211
                    <td>
212
                        <pre><code class="javascript">// Expand all root nodes
213
$('.tree').treegrid('getRootNodes').treegrid('expand');</code></pre>
214
                    </td>
215
                </tr>
216
                <tr>
217
                    <td>getNodeId</td>
218
                    <td>Return the id of node</td>
219
                    <td>
220
                        <pre><code class="javascript">if($('#node-2').treegrid('getNodeId')===2){
221
  // Do something with node 2
222
};</code></pre>
223
                    </td>
224
                </tr>
225
                <tr>
226
                    <td>getParentNodeId</td>
227
                    <td>Return the id of parent node or null if node is root</td>
228
                    <td>
229
                        <pre><code class="javascript">if($('#node-2').treegrid('getParentNodeId')===2){
230
  // Do something if parent node Id is 2
231
};</code></pre>
232
                    </td>
233
                </tr>
234
                <tr>
235
                    <td>getAllNodes</td>
236
                    <td>Return the all nodes of tree</td>
237
                    <td>
238
                        <pre><code class="javascript">// Find all nodes
239
  $('#tree-1').treegrid('getAllNodes').each(function() {
240
    if ($(this).treegrid("isLast")) {
241
      //Do something with all last nodes
242
    }
243
  });
244
</code></pre>
245
                    </td>
246
                </tr>
247
                <tr>
248
                    <td>getParentNode</td>
249
                    <td>Return the parent node or null if node is root</td>
250
                    <td>
251
                        <pre><code class="javascript">// Expand parent node
252
$('#node-2').treegrid('getParentNode').treegrid('collapse');
253
</code></pre>
254
                    </td>
255
                </tr>
256
                <tr>
257
                    <td>getChildNodes</td>
258
                    <td>Return the child nodes or null if node is leaf</td>
259
                    <td>
260
                        <pre><code class="javascript">// Expand child nodes
261
$('#node-2').treegrid('getChildNodes').treegrid('expand');
262
</code></pre>
263
                    </td>
264
                </tr>
265
                <tr>
266
                    <td>getDepth</td>
267
                    <td>Returns the depth of nested branch</td>
268
                    <td>
269
                        <pre><code class="javascript">// Expand all nodes 2nd nesting
270
$('.tree').find('tr').each(function(){
271
  if ($(this).treegrid('getDepth')<2){
272
	$(this).treegrid('expand');
273
  }
274
});</code></pre>
275
                    </td>
276
                <tr>
277
                    <td>isNode</td>
278
                    <td>return true if element is node</td>
279
                    <td>
280
                        <pre><code class="javascript">
281
  $('#tree-1').find('tr').each(function() {
282
    if ($(this).treegrid("isNode")) {
283
      //Do something
284
    }
285
  });
286
</code></pre>
287
                    </td>
288
                </tr>
289
                <tr>
290
                    <td>isLeaf</td>
291
                    <td>Is there a node leaf</td>
292
                    <td>
293
                        <pre><code class="javascript">// hide all files
294
$('.tree').find('tr').each(function(){
295
  if ($(this).treegrid('isLeaf')){
296
	$(this).hide();
297
  }
298
});</code></pre>
299
                    </td>
300
301
                </tr>
302
                <tr>
303
                    <td>isLast</td>
304
                    <td>Return true if node is last in branch</td>
305
                    <td>
306
                        <pre><code class="javascript">// hide all last elements
307
$('.tree').find('tr').each(function(){
308
  if ($(this).treegrid('isLast')){
309
	$(this).hide();
310
  }
311
});</code></pre>
312
                    </td>
313
                </tr>
314
                <tr>
315
                    <td>isFirst</td>
316
                    <td>Return true if node is first in branch</td>
317
                    <td>
318
                        <pre><code class="javascript">// hide all last elements
319
$('.tree').find('tr').each(function(){
320
  if ($(this).treegrid('isFirst')){
321
	$(this).hide();
322
  }
323
});</code></pre>
324
                    </td>
325
                </tr>
326
                <tr>
327
                    <td>isExpanded</td>
328
                    <td>Is node expanded</td>
329
                    <td>
330
                        <pre><code class="javascript">if($('#node-2').treegrid('isExpanded')){
331
  // Do something if node expanded
332
};</code></pre>
333
                    </td>
334
                </tr>
335
                <tr>
336
                    <td>isCollapsed</td>
337
                    <td>Is node collapsed</td>
338
                    <td>
339
                        <pre><code class="javascript">if($('#node-2').treegrid('isCollapsed')){
340
  // Do something if node collapsed
341
};</code></pre>
342
                    </td>
343
                </tr>
344
                <tr>
345
                    <td>isOneOfParentsCollapsed</td>
346
                    <td>Is at least one of the parent nodes is collapsed</td>
347
                    <td>
348
                        <pre><code class="javascript">if($('#node-2').treegrid('isOneOfParentCollapsed')){
349
  // Do something if one of parent collapsed
350
};</code></pre>
351
                    </td>
352
                </tr>
353
                <tr>
354
                    <td>expand</td>
355
                    <td>Expand node</td>
356
                    <td>
357
                        <pre><code class="javascript">$('#node-2').treegrid('expand');</code></pre>
358
                    </td>
359
                </tr>
360
                <tr>
361
                    <td>collapse</td>
362
                    <td>Collapse node</td>
363
                    <td>
364
                        <pre><code class="javascript">$('#node-2').treegrid('collapse');</code></pre>
365
                    </td>
366
                </tr>
367
                <tr>
368
                    <td>expandRecursive</td>
369
                    <td>Expand nodes recursively</td>
370
                    <td>
371
                        <pre><code class="javascript">$('#node-2').treegrid('expandRecursive');</code></pre>
372
                    </td>
373
                </tr>
374
                <tr>
375
                    <td>collapseRecursive</td>
376
                    <td>Collapse nodes recursively</td>
377
                    <td>
378
                        <pre><code class="javascript">$('#node-2').treegrid('collapseRecursive');</code></pre>
379
                    </td>
380
                </tr>
381
                <tr>
382
                    <td>expandAll</td>
383
                    <td>Expand all nodes</td>
384
                    <td>
385
                        <pre><code class="javascript">$('#tree').treegrid('expandAll');</code></pre>
386
                    </td>
387
                </tr>
388
                <tr>
389
                    <td>collapseAll</td>
390
                    <td>Collapse all nodes</td>
391
                    <td>
392
                        <pre><code class="javascript">$('#tree').treegrid('collapseAll');</code></pre>
393
                    </td>
394
                </tr>
395
                <tr>
396
                    <td>toggle</td>
397
                    <td>Collapse node if it expanded and expand when collapsed</td>
398
                    <td>
399
                        <pre><code class="javascript">$('#node-2').treegrid('toggle');</code></pre>
400
                    </td>
401
                </tr>
402
                <tr>
403
                    <td>render</td>
404
                    <td>Redraw the node and all its children</td>
405
                    <td>
406
                        <pre><code class="javascript">$('#node-2').treegrid('render');</code></pre>
407
                    </td>
408
                </tr>
409
410
411
            </table>
412
            <h3>Events</h3>
413
            <table>
414
                <tr>
415
                    <th>Event name</th>
416
                    <th>Description</th>
417
                    <th>Example</th>
418
                </tr>
419
                <tr>
420
                    <td>collapse</td>
421
                    <td>Will fire when node collapsed</td>
422
                    <td>
423
                        <pre><code class="javascript">//Alert when node in treegrid with class "tree" collapsed
424
$('.tree').treegrid('getRootNodes').on('collapse', function(){
425
   alert(this);
426
});</code></pre>
427
                    </td>
428
                </tr>
429
                <tr>
430
                    <td>expand</td>
431
                    <td>Will fire when node expanded</td>
432
                    <td>
433
                        <pre><code class="javascript">//Alert when node with id "node1" expanded
434
$('#node1').on('expand', function(){
435
   alert(this);
436
});</code></pre>
437
                    </td>
438
                </tr>
439
                <tr>
440
                    <td>change</td>
441
                    <td>Will fire when node changed. Expanded or collapsed</td>
442
                    <td>
443
                        <pre><code class="javascript">//Alert when node in treegrid with class "tree" changed.
444
$('.tree').treegrid('getRootNodes').on('change', function(){
445
   alert(this);
446
});</code></pre>
447
                    </td>
448
                </tr>
449
            </table>
450
            <h2><a href="test.html">Unit Tests</a></h2>
451
452
        </div>
453
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
454
        <script type="text/javascript" src="js/jquery.treegrid.min.js"></script>
455
        <script type="text/javascript">
456
            $('.tree').treegrid();
457
        </script>
458
        <script type="text/javascript">
459
            var metas = document.getElementsByTagName('meta');
460
            var i;
461
            if (navigator.userAgent.match(/iPhone/i)) {
462
                for (i = 0; i < metas.length; i++) {
463
                    if (metas[i].name == "viewport") {
464
                        metas[i].content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";
465
                    }
466
                }
467
                document.addEventListener("gesturestart", gestureStart, false);
468
            }
469
            function gestureStart() {
470
                for (i = 0; i < metas.length; i++) {
471
                    if (metas[i].name == "viewport") {
472
                        metas[i].content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";
473
                    }
474
                }
475
            }</script>
476
477
    </body>
478
</html>
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/js/jquery.cookie.js (+96 lines)
Line 0 Link Here
1
/*!
2
 * jQuery Cookie Plugin v1.3.1
3
 * https://github.com/carhartl/jquery-cookie
4
 *
5
 * Copyright 2013 Klaus Hartl
6
 * Released under the MIT license
7
 */
8
(function (factory) {
9
	if (typeof define === 'function' && define.amd) {
10
		// AMD. Register as anonymous module.
11
		define(['jquery'], factory);
12
	} else {
13
		// Browser globals.
14
		factory(jQuery);
15
	}
16
}(function ($) {
17
18
	var pluses = /\+/g;
19
20
	function decode(s) {
21
		if (config.raw) {
22
			return s;
23
		}
24
		return decodeURIComponent(s.replace(pluses, ' '));
25
	}
26
27
	function decodeAndParse(s) {
28
		if (s.indexOf('"') === 0) {
29
			// This is a quoted cookie as according to RFC2068, unescape...
30
			s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
31
		}
32
33
		s = decode(s);
34
35
		try {
36
			return config.json ? JSON.parse(s) : s;
37
		} catch(e) {}
38
	}
39
40
	var config = $.cookie = function (key, value, options) {
41
42
		// Write
43
		if (value !== undefined) {
44
			options = $.extend({}, config.defaults, options);
45
46
			if (typeof options.expires === 'number') {
47
				var days = options.expires, t = options.expires = new Date();
48
				t.setDate(t.getDate() + days);
49
			}
50
51
			value = config.json ? JSON.stringify(value) : String(value);
52
53
			return (document.cookie = [
54
				config.raw ? key : encodeURIComponent(key),
55
				'=',
56
				config.raw ? value : encodeURIComponent(value),
57
				options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
58
				options.path    ? '; path=' + options.path : '',
59
				options.domain  ? '; domain=' + options.domain : '',
60
				options.secure  ? '; secure' : ''
61
			].join(''));
62
		}
63
64
		// Read
65
		var cookies = document.cookie.split('; ');
66
		var result = key ? undefined : {};
67
		for (var i = 0, l = cookies.length; i < l; i++) {
68
			var parts = cookies[i].split('=');
69
			var name = decode(parts.shift());
70
			var cookie = parts.join('=');
71
72
			if (key && key === name) {
73
				result = decodeAndParse(cookie);
74
				break;
75
			}
76
77
			if (!key) {
78
				result[name] = decodeAndParse(cookie);
79
			}
80
		}
81
82
		return result;
83
	};
84
85
	config.defaults = {};
86
87
	$.removeCookie = function (key, options) {
88
		if ($.cookie(key) !== undefined) {
89
			// Must not alter options, thus extending a fresh object...
90
			$.cookie(key, '', $.extend({}, options, { expires: -1 }));
91
			return true;
92
		}
93
		return false;
94
	};
95
96
}));
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/js/jquery.treegrid.bootstrap2.js (+5 lines)
Line 0 Link Here
1
$.extend($.fn.treegrid.defaults, {
2
    expanderTemplate: '<i class="treegrid-expander"></i>',
3
    expanderExpandedClass: 'icon-chevron-down',
4
    expanderCollapsedClass: 'icon-chevron-right'
5
});
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/js/jquery.treegrid.bootstrap3.js (+4 lines)
Line 0 Link Here
1
$.extend($.fn.treegrid.defaults, {
2
    expanderExpandedClass: 'glyphicon glyphicon-chevron-down',
3
    expanderCollapsedClass: 'glyphicon glyphicon-chevron-right'
4
});
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/js/jquery.treegrid.js (+626 lines)
Line 0 Link Here
1
/*
2
 * jQuery treegrid Plugin 0.3.0
3
 * https://github.com/maxazan/jquery-treegrid
4
 *
5
 * Copyright 2013, Pomazan Max
6
 * Licensed under the MIT licenses.
7
 */
8
(function($) {
9
10
    var methods = {
11
        /**
12
         * Initialize tree
13
         *
14
         * @param {Object} options
15
         * @returns {Object[]}
16
         */
17
        initTree: function(options) {
18
            var settings = $.extend({}, this.treegrid.defaults, options);
19
            return this.each(function() {
20
                var $this = $(this);
21
                $this.treegrid('setTreeContainer', $(this));
22
                $this.treegrid('setSettings', settings);
23
                settings.getRootNodes.apply(this, [$(this)]).treegrid('initNode', settings);
24
                $this.treegrid('getRootNodes').treegrid('render');
25
            });
26
        },
27
        /**
28
         * Initialize node
29
         *
30
         * @param {Object} settings
31
         * @returns {Object[]}
32
         */
33
        initNode: function(settings) {
34
            return this.each(function() {
35
                var $this = $(this);
36
                $this.treegrid('setTreeContainer', settings.getTreeGridContainer.apply(this));
37
                $this.treegrid('getChildNodes').treegrid('initNode', settings);
38
                $this.treegrid('initExpander').treegrid('initIndent').treegrid('initEvents').treegrid('initState').treegrid('initChangeEvent').treegrid("initSettingsEvents");
39
            });
40
        },
41
        initChangeEvent: function() {
42
            var $this = $(this);
43
            //Save state on change
44
            $this.on("change", function() {
45
                var $this = $(this);
46
                $this.treegrid('render');
47
                if ($this.treegrid('getSetting', 'saveState')) {
48
                    $this.treegrid('saveState');
49
                }
50
            });
51
            return $this;
52
        },
53
        /**
54
         * Initialize node events
55
         *
56
         * @returns {Node}
57
         */
58
        initEvents: function() {
59
            var $this = $(this);
60
            //Default behavior on collapse
61
            $this.on("collapse", function() {
62
                var $this = $(this);
63
                $this.removeClass('treegrid-expanded');
64
                $this.addClass('treegrid-collapsed');
65
            });
66
            //Default behavior on expand
67
            $this.on("expand", function() {
68
                var $this = $(this);
69
                $this.removeClass('treegrid-collapsed');
70
                $this.addClass('treegrid-expanded');
71
            });
72
73
            return $this;
74
        },
75
        /**
76
         * Initialize events from settings
77
         *
78
         * @returns {Node}
79
         */
80
        initSettingsEvents: function() {
81
            var $this = $(this);
82
            //Save state on change
83
            $this.on("change", function() {
84
                var $this = $(this);
85
                if (typeof($this.treegrid('getSetting', 'onChange')) === "function") {
86
                    $this.treegrid('getSetting', 'onChange').apply($this);
87
                }
88
            });
89
            //Default behavior on collapse
90
            $this.on("collapse", function() {
91
                var $this = $(this);
92
                if (typeof($this.treegrid('getSetting', 'onCollapse')) === "function") {
93
                    $this.treegrid('getSetting', 'onCollapse').apply($this);
94
                }
95
            });
96
            //Default behavior on expand
97
            $this.on("expand", function() {
98
                var $this = $(this);
99
                if (typeof($this.treegrid('getSetting', 'onExpand')) === "function") {
100
                    $this.treegrid('getSetting', 'onExpand').apply($this);
101
                }
102
103
            });
104
105
            return $this;
106
        },
107
        /**
108
         * Initialize expander for node
109
         *
110
         * @returns {Node}
111
         */
112
        initExpander: function() {
113
            var $this = $(this);
114
            var cell = $this.find('td').get($this.treegrid('getSetting', 'treeColumn'));
115
            var tpl = $this.treegrid('getSetting', 'expanderTemplate');
116
            var expander = $this.treegrid('getSetting', 'getExpander').apply(this);
117
            if (expander) {
118
                expander.remove();
119
            }
120
            $(tpl).prependTo(cell).click(function() {
121
                $($(this).closest('tr')).treegrid('toggle');
122
            });
123
            return $this;
124
        },
125
        /**
126
         * Initialize indent for node
127
         *
128
         * @returns {Node}
129
         */
130
        initIndent: function() {
131
            var $this = $(this);
132
            $this.find('.treegrid-indent').remove();
133
            var tpl = $this.treegrid('getSetting', 'indentTemplate');
134
            var expander = $this.find('.treegrid-expander');
135
            var depth = $this.treegrid('getDepth');
136
            for (var i = 0; i < depth; i++) {
137
                $(tpl).insertBefore(expander);
138
            }
139
            return $this;
140
        },
141
        /**
142
         * Initialise state of node
143
         *
144
         * @returns {Node}
145
         */
146
        initState: function() {
147
            var $this = $(this);
148
            if ($this.treegrid('getSetting', 'saveState') && !$this.treegrid('isFirstInit')) {
149
                $this.treegrid('restoreState');
150
            } else {
151
                if ($this.treegrid('getSetting', 'initialState') === "expanded") {
152
                    $this.treegrid('expand');
153
                } else {
154
                    $this.treegrid('collapse');
155
                }
156
            }
157
            return $this;
158
        },
159
        /**
160
         * Return true if this tree was never been initialised
161
         *
162
         * @returns {Boolean}
163
         */
164
        isFirstInit: function() {
165
            var tree = $(this).treegrid('getTreeContainer');
166
            if (tree.data('first_init') === undefined) {
167
                tree.data('first_init', $.cookie(tree.treegrid('getSetting', 'saveStateName')) === undefined);
168
            }
169
            return tree.data('first_init');
170
        },
171
        /**
172
         * Save state of current node
173
         *
174
         * @returns {Node}
175
         */
176
        saveState: function() {
177
            var $this = $(this);
178
            if ($this.treegrid('getSetting', 'saveStateMethod') === 'cookie') {
179
180
                var stateArrayString = $.cookie($this.treegrid('getSetting', 'saveStateName')) || '';
181
                var stateArray = (stateArrayString === '' ? [] : stateArrayString.split(','));
182
                var nodeId = $this.treegrid('getNodeId');
183
184
                if ($this.treegrid('isExpanded')) {
185
                    if ($.inArray(nodeId, stateArray) === -1) {
186
                        stateArray.push(nodeId);
187
                    }
188
                } else if ($this.treegrid('isCollapsed')) {
189
                    if ($.inArray(nodeId, stateArray) !== -1) {
190
                        stateArray.splice($.inArray(nodeId, stateArray), 1);
191
                    }
192
                }
193
                $.cookie($this.treegrid('getSetting', 'saveStateName'), stateArray.join(','));
194
            }
195
            return $this;
196
        },
197
        /**
198
         * Restore state of current node.
199
         *
200
         * @returns {Node}
201
         */
202
        restoreState: function() {
203
            var $this = $(this);
204
            if ($this.treegrid('getSetting', 'saveStateMethod') === 'cookie') {
205
                var stateArray = $.cookie($this.treegrid('getSetting', 'saveStateName')).split(',');
206
                if ($.inArray($this.treegrid('getNodeId'), stateArray) !== -1) {
207
                    $this.treegrid('expand');
208
                } else {
209
                    $this.treegrid('collapse');
210
                }
211
212
            }
213
            return $this;
214
        },
215
        /**
216
         * Method return setting by name
217
         *
218
         * @param {type} name
219
         * @returns {unresolved}
220
         */
221
        getSetting: function(name) {
222
            if (!$(this).treegrid('getTreeContainer')) {
223
                return null;
224
            }
225
            return $(this).treegrid('getTreeContainer').data('settings')[name];
226
        },
227
        /**
228
         * Add new settings
229
         *
230
         * @param {Object} settings
231
         */
232
        setSettings: function(settings) {
233
            $(this).treegrid('getTreeContainer').data('settings', settings);
234
        },
235
        /**
236
         * Return tree container
237
         *
238
         * @returns {HtmlElement}
239
         */
240
        getTreeContainer: function() {
241
            return $(this).data('treegrid');
242
        },
243
        /**
244
         * Set tree container
245
         *
246
         * @param {HtmlE;ement} container
247
         */
248
        setTreeContainer: function(container) {
249
            return $(this).data('treegrid', container);
250
        },
251
        /**
252
         * Method return all root nodes of tree.
253
         *
254
         * Start init all child nodes from it.
255
         *
256
         * @returns {Array}
257
         */
258
        getRootNodes: function() {
259
            return $(this).treegrid('getSetting', 'getRootNodes').apply(this, [$(this).treegrid('getTreeContainer')]);
260
        },
261
        /**
262
         * Method return all nodes of tree.
263
         *
264
         * @returns {Array}
265
         */
266
        getAllNodes: function() {
267
            return $(this).treegrid('getSetting', 'getAllNodes').apply(this, [$(this).treegrid('getTreeContainer')]);
268
        },
269
        /**
270
         * Mthod return true if element is Node
271
         *
272
         * @returns {String}
273
         */
274
        isNode: function() {
275
            return $(this).treegrid('getNodeId') !== null;
276
        },
277
        /**
278
         * Mthod return id of node
279
         *
280
         * @returns {String}
281
         */
282
        getNodeId: function() {
283
            if ($(this).treegrid('getSetting', 'getNodeId') === null) {
284
                return null;
285
            } else {
286
                return $(this).treegrid('getSetting', 'getNodeId').apply(this);
287
            }
288
        },
289
        /**
290
         * Method return parent id of node or null if root node
291
         *
292
         * @returns {String}
293
         */
294
        getParentNodeId: function() {
295
            return $(this).treegrid('getSetting', 'getParentNodeId').apply(this);
296
        },
297
        /**
298
         * Method return parent node or null if root node
299
         *
300
         * @returns {Object[]}
301
         */
302
        getParentNode: function() {
303
            if ($(this).treegrid('getParentNodeId') === null) {
304
                return null;
305
            } else {
306
                return $(this).treegrid('getSetting', 'getNodeById').apply(this, [$(this).treegrid('getParentNodeId'), $(this).treegrid('getTreeContainer')]);
307
            }
308
        },
309
        /**
310
         * Method return array of child nodes or null if node is leaf
311
         *
312
         * @returns {Object[]}
313
         */
314
        getChildNodes: function() {
315
            return $(this).treegrid('getSetting', 'getChildNodes').apply(this, [$(this).treegrid('getNodeId'), $(this).treegrid('getTreeContainer')]);
316
        },
317
        /**
318
         * Method return depth of tree.
319
         *
320
         * This method is needs for calculate indent
321
         *
322
         * @returns {Number}
323
         */
324
        getDepth: function() {
325
            if ($(this).treegrid('getParentNode') === null) {
326
                return 0;
327
            }
328
            return $(this).treegrid('getParentNode').treegrid('getDepth') + 1;
329
        },
330
        /**
331
         * Method return true if node is root
332
         *
333
         * @returns {Boolean}
334
         */
335
        isRoot: function() {
336
            return $(this).treegrid('getDepth') === 0;
337
        },
338
        /**
339
         * Method return true if node has no child nodes
340
         *
341
         * @returns {Boolean}
342
         */
343
        isLeaf: function() {
344
            return $(this).treegrid('getChildNodes').length === 0;
345
        },
346
        /**
347
         * Method return true if node last in branch
348
         *
349
         * @returns {Boolean}
350
         */
351
        isLast: function() {
352
            if ($(this).treegrid('isNode')) {
353
                var parentNode = $(this).treegrid('getParentNode');
354
                if (parentNode === null) {
355
                    if ($(this).treegrid('getNodeId') === $(this).treegrid('getRootNodes').last().treegrid('getNodeId')) {
356
                        return true;
357
                    }
358
                } else {
359
                    if ($(this).treegrid('getNodeId') === parentNode.treegrid('getChildNodes').last().treegrid('getNodeId')) {
360
                        return true;
361
                    }
362
                }
363
            }
364
            return false;
365
        },
366
        /**
367
         * Method return true if node first in branch
368
         *
369
         * @returns {Boolean}
370
         */
371
        isFirst: function() {
372
            if ($(this).treegrid('isNode')) {
373
                var parentNode = $(this).treegrid('getParentNode');
374
                if (parentNode === null) {
375
                    if ($(this).treegrid('getNodeId') === $(this).treegrid('getRootNodes').first().treegrid('getNodeId')) {
376
                        return true;
377
                    }
378
                } else {
379
                    if ($(this).treegrid('getNodeId') === parentNode.treegrid('getChildNodes').first().treegrid('getNodeId')) {
380
                        return true;
381
                    }
382
                }
383
            }
384
            return false;
385
        },
386
        /**
387
         * Return true if node expanded
388
         *
389
         * @returns {Boolean}
390
         */
391
        isExpanded: function() {
392
            return $(this).hasClass('treegrid-expanded');
393
        },
394
        /**
395
         * Return true if node collapsed
396
         *
397
         * @returns {Boolean}
398
         */
399
        isCollapsed: function() {
400
            return $(this).hasClass('treegrid-collapsed');
401
        },
402
        /**
403
         * Return true if at least one of parent node is collapsed
404
         *
405
         * @returns {Boolean}
406
         */
407
        isOneOfParentsCollapsed: function() {
408
            var $this = $(this);
409
            if ($this.treegrid('isRoot')) {
410
                return false;
411
            } else {
412
                if ($this.treegrid('getParentNode').treegrid('isCollapsed')) {
413
                    return true;
414
                } else {
415
                    return $this.treegrid('getParentNode').treegrid('isOneOfParentsCollapsed');
416
                }
417
            }
418
        },
419
        /**
420
         * Expand node
421
         *
422
         * @returns {Node}
423
         */
424
        expand: function() {
425
            if (!this.treegrid('isLeaf') && !this.treegrid("isExpanded")) {
426
                this.trigger("expand");
427
                this.trigger("change");
428
                return this;
429
            }
430
            return this;
431
        },
432
        /**
433
         * Expand all nodes
434
         *
435
         * @returns {Node}
436
         */
437
        expandAll: function() {
438
            var $this = $(this);
439
            $this.treegrid('getRootNodes').treegrid('expandRecursive');
440
            return $this;
441
        },
442
        /**
443
         * Expand current node and all child nodes begin from current
444
         *
445
         * @returns {Node}
446
         */
447
        expandRecursive: function() {
448
            return $(this).each(function() {
449
                var $this = $(this);
450
                $this.treegrid('expand');
451
                if (!$this.treegrid('isLeaf')) {
452
                    $this.treegrid('getChildNodes').treegrid('expandRecursive');
453
                }
454
            });
455
        },
456
        /**
457
         * Collapse node
458
         *
459
         * @returns {Node}
460
         */
461
        collapse: function() {
462
            return $(this).each(function() {
463
                var $this = $(this);
464
                if (!$this.treegrid('isLeaf') && !$this.treegrid("isCollapsed")) {
465
                    $this.trigger("collapse");
466
                    $this.trigger("change");
467
                }
468
            });
469
        },
470
        /**
471
         * Collapse all nodes
472
         *
473
         * @returns {Node}
474
         */
475
        collapseAll: function() {
476
            var $this = $(this);
477
            $this.treegrid('getRootNodes').treegrid('collapseRecursive');
478
            return $this;
479
        },
480
        /**
481
         * Collapse current node and all child nodes begin from current
482
         *
483
         * @returns {Node}
484
         */
485
        collapseRecursive: function() {
486
            return $(this).each(function() {
487
                var $this = $(this);
488
                $this.treegrid('collapse');
489
                if (!$this.treegrid('isLeaf')) {
490
                    $this.treegrid('getChildNodes').treegrid('collapseRecursive');
491
                }
492
            });
493
        },
494
        /**
495
         * Expand if collapsed, Collapse if expanded
496
         *
497
         * @returns {Node}
498
         */
499
        toggle: function() {
500
            var $this = $(this);
501
            if ($this.treegrid('isExpanded')) {
502
                $this.treegrid('collapse');
503
            } else {
504
                $this.treegrid('expand');
505
            }
506
            return $this;
507
        },
508
        /**
509
         * Rendering node
510
         *
511
         * @returns {Node}
512
         */
513
        render: function() {
514
            return $(this).each(function() {
515
                var $this = $(this);
516
                //if parent colapsed we hidden
517
                if ($this.treegrid('isOneOfParentsCollapsed')) {
518
                    $this.hide();
519
                } else {
520
                    $this.show();
521
                }
522
                if (!$this.treegrid('isLeaf')) {
523
                    $this.treegrid('renderExpander');
524
                    $this.treegrid('getChildNodes').treegrid('render');
525
                }
526
            });
527
        },
528
        /**
529
         * Rendering expander depends on node state
530
         *
531
         * @returns {Node}
532
         */
533
        renderExpander: function() {
534
            return $(this).each(function() {
535
                var $this = $(this);
536
                var expander = $this.treegrid('getSetting', 'getExpander').apply(this);
537
                if (expander) {
538
539
                    if (!$this.treegrid('isCollapsed')) {
540
                        expander.removeClass($this.treegrid('getSetting', 'expanderCollapsedClass'));
541
                        expander.addClass($this.treegrid('getSetting', 'expanderExpandedClass'));
542
                    } else {
543
                        expander.removeClass($this.treegrid('getSetting', 'expanderExpandedClass'));
544
                        expander.addClass($this.treegrid('getSetting', 'expanderCollapsedClass'));
545
                    }
546
                } else {
547
                    $this.treegrid('initExpander');
548
                    $this.treegrid('renderExpander');
549
                }
550
            });
551
        }
552
    };
553
    $.fn.treegrid = function(method) {
554
        if (methods[method]) {
555
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
556
        } else if (typeof method === 'object' || !method) {
557
            return methods.initTree.apply(this, arguments);
558
        } else {
559
            $.error('Method with name ' + method + ' does not exists for jQuery.treegrid');
560
        }
561
    };
562
    /**
563
     *  Plugin's default options
564
     */
565
    $.fn.treegrid.defaults = {
566
        initialState: 'expanded',
567
        saveState: false,
568
        saveStateMethod: 'cookie',
569
        saveStateName: 'tree-grid-state',
570
        expanderTemplate: '<span class="treegrid-expander"></span>',
571
        indentTemplate: '<span class="treegrid-indent"></span>',
572
        expanderExpandedClass: 'treegrid-expander-expanded',
573
        expanderCollapsedClass: 'treegrid-expander-collapsed',
574
        treeColumn: 0,
575
        getExpander: function() {
576
            return $(this).find('.treegrid-expander');
577
        },
578
        getNodeId: function() {
579
            var template = /treegrid-([A-Za-z0-9_-]+)/;
580
            if (template.test($(this).attr('class'))) {
581
                return template.exec($(this).attr('class'))[1];
582
            }
583
            return null;
584
        },
585
        getParentNodeId: function() {
586
            var template = /treegrid-parent-([A-Za-z0-9_-]+)/;
587
            if (template.test($(this).attr('class'))) {
588
                return template.exec($(this).attr('class'))[1];
589
            }
590
            return null;
591
        },
592
        getNodeById: function(id, treegridContainer) {
593
            var templateClass = "treegrid-" + id;
594
            return treegridContainer.find('tr.' + templateClass);
595
        },
596
        getChildNodes: function(id, treegridContainer) {
597
            var templateClass = "treegrid-parent-" + id;
598
            return treegridContainer.find('tr.' + templateClass);
599
        },
600
        getTreeGridContainer: function() {
601
            return $(this).closest('table');
602
        },
603
        getRootNodes: function(treegridContainer) {
604
            var result = $.grep(treegridContainer.find('tr'), function(element) {
605
                var classNames = $(element).attr('class');
606
                var templateClass = /treegrid-([A-Za-z0-9_-]+)/;
607
                var templateParentClass = /treegrid-parent-([A-Za-z0-9_-]+)/;
608
                return templateClass.test(classNames) && !templateParentClass.test(classNames);
609
            });
610
            return $(result);
611
        },
612
        getAllNodes: function(treegridContainer) {
613
            var result = $.grep(treegridContainer.find('tr'), function(element) {
614
                var classNames = $(element).attr('class');
615
                var templateClass = /treegrid-([A-Za-z0-9_-]+)/;
616
                return templateClass.test(classNames);
617
            });
618
            return $(result);
619
        },
620
        //Events
621
        onCollapse: null,
622
        onExpand: null,
623
        onChange: null
624
625
    };
626
})(jQuery);
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/js/jquery.treegrid.min.js (+2 lines)
Line 0 Link Here
1
/*! jquery-treegrid 0.3.0 */
2
!function(a){var b={initTree:function(b){var c=a.extend({},this.treegrid.defaults,b);return this.each(function(){var b=a(this);b.treegrid("setTreeContainer",a(this)),b.treegrid("setSettings",c),c.getRootNodes.apply(this,[a(this)]).treegrid("initNode",c),b.treegrid("getRootNodes").treegrid("render")})},initNode:function(b){return this.each(function(){var c=a(this);c.treegrid("setTreeContainer",b.getTreeGridContainer.apply(this)),c.treegrid("getChildNodes").treegrid("initNode",b),c.treegrid("initExpander").treegrid("initIndent").treegrid("initEvents").treegrid("initState").treegrid("initChangeEvent").treegrid("initSettingsEvents")})},initChangeEvent:function(){var b=a(this);return b.on("change",function(){var b=a(this);b.treegrid("render"),b.treegrid("getSetting","saveState")&&b.treegrid("saveState")}),b},initEvents:function(){var b=a(this);return b.on("collapse",function(){var b=a(this);b.removeClass("treegrid-expanded"),b.addClass("treegrid-collapsed")}),b.on("expand",function(){var b=a(this);b.removeClass("treegrid-collapsed"),b.addClass("treegrid-expanded")}),b},initSettingsEvents:function(){var b=a(this);return b.on("change",function(){var b=a(this);"function"==typeof b.treegrid("getSetting","onChange")&&b.treegrid("getSetting","onChange").apply(b)}),b.on("collapse",function(){var b=a(this);"function"==typeof b.treegrid("getSetting","onCollapse")&&b.treegrid("getSetting","onCollapse").apply(b)}),b.on("expand",function(){var b=a(this);"function"==typeof b.treegrid("getSetting","onExpand")&&b.treegrid("getSetting","onExpand").apply(b)}),b},initExpander:function(){var b=a(this),c=b.find("td").get(b.treegrid("getSetting","treeColumn")),d=b.treegrid("getSetting","expanderTemplate"),e=b.treegrid("getSetting","getExpander").apply(this);return e&&e.remove(),a(d).prependTo(c).click(function(){a(a(this).closest("tr")).treegrid("toggle")}),b},initIndent:function(){var b=a(this);b.find(".treegrid-indent").remove();for(var c=b.treegrid("getSetting","indentTemplate"),d=b.find(".treegrid-expander"),e=b.treegrid("getDepth"),f=0;e>f;f++)a(c).insertBefore(d);return b},initState:function(){var b=a(this);return b.treegrid(b.treegrid("getSetting","saveState")&&!b.treegrid("isFirstInit")?"restoreState":"expanded"===b.treegrid("getSetting","initialState")?"expand":"collapse"),b},isFirstInit:function(){var b=a(this).treegrid("getTreeContainer");return void 0===b.data("first_init")&&b.data("first_init",void 0===a.cookie(b.treegrid("getSetting","saveStateName"))),b.data("first_init")},saveState:function(){var b=a(this);if("cookie"===b.treegrid("getSetting","saveStateMethod")){var c=a.cookie(b.treegrid("getSetting","saveStateName"))||"",d=""===c?[]:c.split(","),e=b.treegrid("getNodeId");b.treegrid("isExpanded")?-1===a.inArray(e,d)&&d.push(e):b.treegrid("isCollapsed")&&-1!==a.inArray(e,d)&&d.splice(a.inArray(e,d),1),a.cookie(b.treegrid("getSetting","saveStateName"),d.join(","))}return b},restoreState:function(){var b=a(this);if("cookie"===b.treegrid("getSetting","saveStateMethod")){var c=a.cookie(b.treegrid("getSetting","saveStateName")).split(",");b.treegrid(-1!==a.inArray(b.treegrid("getNodeId"),c)?"expand":"collapse")}return b},getSetting:function(b){return a(this).treegrid("getTreeContainer")?a(this).treegrid("getTreeContainer").data("settings")[b]:null},setSettings:function(b){a(this).treegrid("getTreeContainer").data("settings",b)},getTreeContainer:function(){return a(this).data("treegrid")},setTreeContainer:function(b){return a(this).data("treegrid",b)},getRootNodes:function(){return a(this).treegrid("getSetting","getRootNodes").apply(this,[a(this).treegrid("getTreeContainer")])},getAllNodes:function(){return a(this).treegrid("getSetting","getAllNodes").apply(this,[a(this).treegrid("getTreeContainer")])},isNode:function(){return null!==a(this).treegrid("getNodeId")},getNodeId:function(){return null===a(this).treegrid("getSetting","getNodeId")?null:a(this).treegrid("getSetting","getNodeId").apply(this)},getParentNodeId:function(){return a(this).treegrid("getSetting","getParentNodeId").apply(this)},getParentNode:function(){return null===a(this).treegrid("getParentNodeId")?null:a(this).treegrid("getSetting","getNodeById").apply(this,[a(this).treegrid("getParentNodeId"),a(this).treegrid("getTreeContainer")])},getChildNodes:function(){return a(this).treegrid("getSetting","getChildNodes").apply(this,[a(this).treegrid("getNodeId"),a(this).treegrid("getTreeContainer")])},getDepth:function(){return null===a(this).treegrid("getParentNode")?0:a(this).treegrid("getParentNode").treegrid("getDepth")+1},isRoot:function(){return 0===a(this).treegrid("getDepth")},isLeaf:function(){return 0===a(this).treegrid("getChildNodes").length},isLast:function(){if(a(this).treegrid("isNode")){var b=a(this).treegrid("getParentNode");if(null===b){if(a(this).treegrid("getNodeId")===a(this).treegrid("getRootNodes").last().treegrid("getNodeId"))return!0}else if(a(this).treegrid("getNodeId")===b.treegrid("getChildNodes").last().treegrid("getNodeId"))return!0}return!1},isFirst:function(){if(a(this).treegrid("isNode")){var b=a(this).treegrid("getParentNode");if(null===b){if(a(this).treegrid("getNodeId")===a(this).treegrid("getRootNodes").first().treegrid("getNodeId"))return!0}else if(a(this).treegrid("getNodeId")===b.treegrid("getChildNodes").first().treegrid("getNodeId"))return!0}return!1},isExpanded:function(){return a(this).hasClass("treegrid-expanded")},isCollapsed:function(){return a(this).hasClass("treegrid-collapsed")},isOneOfParentsCollapsed:function(){var b=a(this);return b.treegrid("isRoot")?!1:b.treegrid("getParentNode").treegrid("isCollapsed")?!0:b.treegrid("getParentNode").treegrid("isOneOfParentsCollapsed")},expand:function(){return this.treegrid("isLeaf")||this.treegrid("isExpanded")?this:(this.trigger("expand"),this.trigger("change"),this)},expandAll:function(){var b=a(this);return b.treegrid("getRootNodes").treegrid("expandRecursive"),b},expandRecursive:function(){return a(this).each(function(){var b=a(this);b.treegrid("expand"),b.treegrid("isLeaf")||b.treegrid("getChildNodes").treegrid("expandRecursive")})},collapse:function(){return a(this).each(function(){var b=a(this);b.treegrid("isLeaf")||b.treegrid("isCollapsed")||(b.trigger("collapse"),b.trigger("change"))})},collapseAll:function(){var b=a(this);return b.treegrid("getRootNodes").treegrid("collapseRecursive"),b},collapseRecursive:function(){return a(this).each(function(){var b=a(this);b.treegrid("collapse"),b.treegrid("isLeaf")||b.treegrid("getChildNodes").treegrid("collapseRecursive")})},toggle:function(){var b=a(this);return b.treegrid(b.treegrid("isExpanded")?"collapse":"expand"),b},render:function(){return a(this).each(function(){var b=a(this);b.treegrid("isOneOfParentsCollapsed")?b.hide():b.show(),b.treegrid("isLeaf")||(b.treegrid("renderExpander"),b.treegrid("getChildNodes").treegrid("render"))})},renderExpander:function(){return a(this).each(function(){var b=a(this),c=b.treegrid("getSetting","getExpander").apply(this);c?b.treegrid("isCollapsed")?(c.removeClass(b.treegrid("getSetting","expanderExpandedClass")),c.addClass(b.treegrid("getSetting","expanderCollapsedClass"))):(c.removeClass(b.treegrid("getSetting","expanderCollapsedClass")),c.addClass(b.treegrid("getSetting","expanderExpandedClass"))):(b.treegrid("initExpander"),b.treegrid("renderExpander"))})}};a.fn.treegrid=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method with name "+c+" does not exists for jQuery.treegrid"):b.initTree.apply(this,arguments)},a.fn.treegrid.defaults={initialState:"expanded",saveState:!1,saveStateMethod:"cookie",saveStateName:"tree-grid-state",expanderTemplate:'<span class="treegrid-expander"></span>',indentTemplate:'<span class="treegrid-indent"></span>',expanderExpandedClass:"treegrid-expander-expanded",expanderCollapsedClass:"treegrid-expander-collapsed",treeColumn:0,getExpander:function(){return a(this).find(".treegrid-expander")},getNodeId:function(){var b=/treegrid-([A-Za-z0-9_-]+)/;return b.test(a(this).attr("class"))?b.exec(a(this).attr("class"))[1]:null},getParentNodeId:function(){var b=/treegrid-parent-([A-Za-z0-9_-]+)/;return b.test(a(this).attr("class"))?b.exec(a(this).attr("class"))[1]:null},getNodeById:function(a,b){var c="treegrid-"+a;return b.find("tr."+c)},getChildNodes:function(a,b){var c="treegrid-parent-"+a;return b.find("tr."+c)},getTreeGridContainer:function(){return a(this).closest("table")},getRootNodes:function(b){var c=a.grep(b.find("tr"),function(b){var c=a(b).attr("class"),d=/treegrid-([A-Za-z0-9_-]+)/,e=/treegrid-parent-([A-Za-z0-9_-]+)/;return d.test(c)&&!e.test(c)});return a(c)},getAllNodes:function(b){var c=a.grep(b.find("tr"),function(b){var c=a(b).attr("class"),d=/treegrid-([A-Za-z0-9_-]+)/;return d.test(c)});return a(c)},onCollapse:null,onExpand:null,onChange:null}}(jQuery);
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/package.json (+35 lines)
Line 0 Link Here
1
{
2
    "name": "jquery-treegrid",
3
    "version": "0.3.0",
4
    "description": "jQuery TreeGrid plugin",
5
    "main": "index.js",
6
    "directories": {
7
        "example": "examples",
8
        "test": "tests"
9
    },
10
    "scripts": {
11
        "test": "echo \"Error: no test specified\" && exit 1"
12
    },
13
    "repository": {
14
        "type": "git",
15
        "url": "https://github.com/maxazan/jquery-treegrid.git"
16
    },
17
    "devDependencies": {
18
        "grunt": "~0.4.5",
19
        "grunt-contrib-jshint": "~0.10.0",
20
        "grunt-contrib-nodeunit": "~0.4.1",
21
        "grunt-contrib-uglify": "~0.5.0"
22
    },
23
    "keywords": [
24
        "treegrid",
25
        "table",
26
        "grid",
27
        "ui"
28
    ],
29
    "author": "Maksym Pomazan",
30
    "license": "MIT",
31
    "bugs": {
32
        "url": "https://github.com/maxazan/jquery-treegrid/issues"
33
    },
34
    "homepage": "https://github.com/maxazan/jquery-treegrid"
35
}
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/params.json (+1 lines)
Line 0 Link Here
1
{"name":"Jquery-treegrid","tagline":"TreeGrid plugin for jQuery","body":"### Welcome to GitHub Pages.\r\nThis automatic page generator is the easiest way to create beautiful pages for all of your projects. Author your page content here using GitHub Flavored Markdown, select a template crafted by a designer, and publish. After your page is generated, you can check out the new branch:\r\n\r\n```\r\n$ cd your_repo_root/repo_name\r\n$ git fetch origin\r\n$ git checkout gh-pages\r\n```\r\n\r\nIf you're using the GitHub for Mac, simply sync your repository and you'll see the new branch.\r\n\r\n### Designer Templates\r\nWe've crafted some handsome templates for you to use. Go ahead and continue to layouts to browse through them. You can easily go back to edit your page before publishing. After publishing your page, you can revisit the page generator and switch to another theme. Your Page content will be preserved if it remained markdown format.\r\n\r\n### Rather Drive Stick?\r\nIf you prefer to not use the automatic generator, push a branch named `gh-pages` to your repository to create a page manually. In addition to supporting regular HTML content, GitHub Pages support Jekyll, a simple, blog aware static site generator written by our own Tom Preston-Werner. Jekyll makes it easy to create site-wide headers and footers without having to copy them across every page. It also offers intelligent blog support and other advanced templating features.\r\n\r\n### Authors and Contributors\r\nYou can @mention a GitHub username to generate a link to their profile. The resulting `<a>` element will link to the contributor's GitHub Profile. For example: In 2007, Chris Wanstrath (@defunkt), PJ Hyett (@pjhyett), and Tom Preston-Werner (@mojombo) founded GitHub.\r\n\r\n### Support or Contact\r\nHaving trouble with Pages? Check out the documentation at http://help.github.com/pages or contact support@github.com and we’ll help you sort it out.\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."}
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/styles.css (+250 lines)
Line 0 Link Here
1
@import url(https://fonts.googleapis.com/css?family=Lato:300italic,700italic,300,700);
2
3
body {
4
  padding:50px;
5
  font:14px/1.5 Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
6
  color:#777;
7
  font-weight:300;
8
}
9
10
h1, h2, h3, h4, h5, h6 {
11
  color:#222;
12
  margin:0 0 20px;
13
}
14
15
p, ul, ol, table, pre, dl {
16
  margin:0 0 20px;
17
}
18
19
h1, h2, h3 {
20
  line-height:1.1;
21
}
22
23
h1 {
24
  font-size:28px;
25
}
26
27
h2 {
28
  color:#393939;
29
}
30
31
h3, h4, h5, h6 {
32
  color:#494949;
33
}
34
35
a {
36
  color:#39c;
37
  font-weight:400;
38
  text-decoration:none;
39
}
40
41
a small {
42
  font-size:11px;
43
  color:#777;
44
  margin-top:-0.6em;
45
  display:block;
46
}
47
48
.wrapper {
49
  width:860px;
50
  margin:0 auto;
51
}
52
53
blockquote {
54
  border-left:1px solid #e5e5e5;
55
  margin:0;
56
  padding:0 0 0 20px;
57
  font-style:italic;
58
}
59
60
code, pre {
61
  font-family:Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal;
62
  color:#333;
63
  font-size:12px;
64
}
65
66
pre {
67
  padding:8px 15px;
68
  background: #f8f8f8;
69
  border-radius:5px;
70
  border:1px solid #e5e5e5;
71
  overflow-x: auto;
72
}
73
74
table {
75
  width:100%;
76
  border-collapse:collapse;
77
}
78
79
th, td {
80
  text-align:left;
81
  padding:5px 10px;
82
  border-bottom:1px solid #e5e5e5;
83
}
84
85
dt {
86
  color:#444;
87
  font-weight:700;
88
}
89
90
th {
91
  color:#444;
92
}
93
94
img {
95
  max-width:100%;
96
}
97
98
99
ul.download {
100
  list-style:none;
101
  height:40px;
102
103
  padding:0;
104
105
  background: #eee;
106
  background: -moz-linear-gradient(top, #f8f8f8 0%, #dddddd 100%);
107
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#dddddd));
108
  background: -webkit-linear-gradient(top, #f8f8f8 0%,#dddddd 100%);
109
  background: -o-linear-gradient(top, #f8f8f8 0%,#dddddd 100%);
110
  background: -ms-linear-gradient(top, #f8f8f8 0%,#dddddd 100%);
111
  background: linear-gradient(top, #f8f8f8 0%,#dddddd 100%);
112
113
  border-radius:5px;
114
  border:1px solid #d2d2d2;
115
  box-shadow:inset #fff 0 1px 0, inset rgba(0,0,0,0.03) 0 -1px 0;
116
  width:270px;
117
}
118
119
ul.download li {
120
  width:89px;
121
  float:left;
122
  border-right:1px solid #d2d2d2;
123
  height:40px;
124
}
125
126
ul.download a {
127
  line-height:1;
128
  font-size:11px;
129
  color:#999;
130
  display:block;
131
  text-align:center;
132
  padding-top:6px;
133
  height:40px;
134
}
135
136
strong {
137
  color:#222;
138
  font-weight:700;
139
}
140
141
header ul li + li {
142
  width:88px;
143
  border-left:1px solid #fff;
144
}
145
146
header ul li + li + li {
147
  border-right:none;
148
  width:89px;
149
}
150
151
header ul a strong {
152
  font-size:14px;
153
  display:block;
154
  color:#222;
155
}
156
157
section {
158
  width:500px;
159
  float:right;
160
  padding-bottom:50px;
161
}
162
163
small {
164
  font-size:11px;
165
}
166
167
hr {
168
  border:0;
169
  background:#e5e5e5;
170
  height:1px;
171
  margin:0 0 20px;
172
}
173
174
footer {
175
  width:270px;
176
  float:left;
177
  position:fixed;
178
  bottom:50px;
179
}
180
181
@media print, screen and (max-width: 960px) {
182
183
  div.wrapper {
184
    width:auto;
185
    margin:0;
186
  }
187
188
  header, section, footer {
189
    float:none;
190
    position:static;
191
    width:auto;
192
  }
193
194
  header {
195
    padding-right:320px;
196
  }
197
198
  section {
199
    border:1px solid #e5e5e5;
200
    border-width:1px 0;
201
    padding:20px 0;
202
    margin:0 0 20px;
203
  }
204
205
  header a small {
206
    display:inline;
207
  }
208
209
  header ul {
210
    position:absolute;
211
    right:50px;
212
    top:52px;
213
  }
214
}
215
216
@media print, screen and (max-width: 720px) {
217
  body {
218
    word-wrap:break-word;
219
  }
220
221
  header {
222
    padding:0;
223
  }
224
225
  header ul, header p.view {
226
    position:static;
227
  }
228
229
  pre, code {
230
    word-wrap:normal;
231
  }
232
}
233
234
@media print, screen and (max-width: 480px) {
235
  body {
236
    padding:15px;
237
  }
238
239
  header ul {
240
    display:none;
241
  }
242
}
243
244
@media print {
245
  body {
246
    padding:0.4in;
247
    font-size:12pt;
248
    color:#444;
249
  }
250
}
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/test.html (+207 lines)
Line 0 Link Here
1
<!DOCTYPE html>
2
<html>
3
    <head>
4
        <meta charset="utf-8">
5
        <title>jQuery TreeGrid Unit tests</title>
6
        <link rel="stylesheet" href="tests/qunit-1.12.0.css">
7
        <link rel="stylesheet" href="css/jquery.treegrid.css">
8
    </head>
9
    <body>
10
        <div id="qunit"></div>
11
        <div id="qunit-fixture"></div>
12
        <table>
13
            <tr>
14
                <td>
15
                    <table id='tree-1' border="1" cellpadding="0" cellspacing="0">
16
                        <tr id="tree-head-1">
17
                            <th>1</th><th>2</th>
18
                        </tr>
19
                        <tr class="treegrid-1" id="node-1">
20
                            <td>1</td><td>Simple text of ...</td>
21
                        </tr>
22
                        <tr class="treegrid-2 treegrid-parent-1" id="node-1-1">
23
                            <td>1.1</td><td>Simple text of ...</td>
24
                        </tr>
25
                        <tr class='treegrid-3 treegrid-parent-2' id="node-1-1-1">
26
                            <td>1.1.1</td><td>Simple text of ...</td>
27
                        </tr>
28
                        <tr class='treegrid-9 treegrid-parent-2' id="node-1-1-2">
29
                            <td>1.1.2</td><td>Simple text of ...</td>
30
                        </tr>
31
                        <tr class='treegrid-10 treegrid-parent-9' id="node-1-1-2-1">
32
                            <td>1.1.2.1</td><td>Simple text of ...</td>
33
                        </tr>
34
                        <tr class='treegrid-4 treegrid-parent-1' id="node-1-2">
35
                            <td>1.2</td><td>Simple text of ...</td>
36
                        </tr>
37
                        <tr class='treegrid-5 treegrid-parent-1' id="node-1-3">
38
                            <td>1.3</td><td>Simple text of ...</td>
39
                        </tr>
40
                        <tr class='treegrid-6 treegrid-parent-5' id="node-1-3-1">
41
                            <td>1.3.1</td><td>Simple text of ...</td>
42
                        </tr>
43
                        <tr class='treegrid-7 treegrid-parent-1' id="node-1-4">
44
                            <td>1.4</td><td>Simple text of ...</td>
45
                        </tr>
46
                        <tr class='treegrid-8 treegrid-parent-7' id="node-1-4-1">
47
                            <td>1.4.1</td><td>Simple text of ...</td>
48
                        </tr>
49
                        <tr class='treegrid-12 treegrid-parent-1' id="node-1-5">
50
                            <td>1.5</td><td>Simple text of ...</td>
51
                        </tr>
52
53
                        <tr class="treegrid-11" id="node-2">
54
                            <td>2</td><td>Simple text of ...</td>
55
                        </tr>
56
                        <tr id="tree-summary-1">
57
                            <td>Total</td><td>343</td>
58
                        </tr>
59
60
                    </table>
61
                </td>
62
            </tr>
63
        </table>
64
        <hr>
65
        <table id='tree-2' border="1" cellpadding="0" cellspacing="0">
66
            <tr>
67
                <th>1</th><th>2</th>
68
            </tr>
69
            <tr class="treegrid-1" id="tnode-1">
70
                <td>1</td><td>Simple text of ...</td>
71
            </tr>
72
            <tr class="treegrid-2 treegrid-parent-1" id="tnode-1-1">
73
                <td>1.1</td><td>Simple text of ...</td>
74
            </tr>
75
            <tr class='treegrid-3 treegrid-parent-2' id="tnode-1-1-1">
76
                <td>1.1.1</td><td>Simple text of ...</td>
77
            </tr>
78
            <tr class='treegrid-9 treegrid-parent-2' id="tnode-1-1-2">
79
                <td>1.1.2</td><td>Simple text of ...</td>
80
            </tr>
81
            <tr class='treegrid-10 treegrid-parent-9' id="tnode-1-1-2-1">
82
                <td>1.1.2.1</td><td>Simple text of ...</td>
83
            </tr>
84
            <tr class='treegrid-4 treegrid-parent-1' id="tnode-1-2">
85
                <td>1.2</td><td>Simple text of ...</td>
86
            </tr>
87
            <tr class='treegrid-5 treegrid-parent-1' id="tnode-1-3">
88
                <td>1.3</td><td>Simple text of ...</td>
89
            </tr>
90
            <tr class='treegrid-6 treegrid-parent-5' id="tnode-1-3-1">
91
                <td>1.3.1</td><td>Simple text of ...</td>
92
            </tr>
93
            <tr class='treegrid-7 treegrid-parent-1' id="tnode-1-4">
94
                <td>1.4</td><td>Simple text of ...</td>
95
            </tr>
96
            <tr class='treegrid-8 treegrid-parent-7' id="tnode-1-4-1">
97
                <td>1.4.1</td><td>Simple text of ...</td>
98
            </tr>
99
            <tr class="treegrid-11" id="tnode-2">
100
                <td>2</td><td>Simple text of ...</td>
101
            </tr>
102
        </table>
103
        <hr>
104
105
        <table id='tree-3' border="1" cellpadding="0" cellspacing="0">
106
            <tr>
107
                <th>1</th><th>2</th>
108
            </tr>
109
            <tr class="treegrid-alfa1" id="anode-1">
110
                <td>1</td><td>Simple text of ...</td>
111
            </tr>
112
            <tr class="treegrid-alfa2 treegrid-parent-alfa1" id="anode-1-1">
113
                <td>1.1</td><td>Simple text of ...</td>
114
            </tr>
115
            <tr class='treegrid-alfa3 treegrid-parent-alfa2' id="anode-1-1-1">
116
                <td>1.1.1</td><td>Simple text of ...</td>
117
            </tr>
118
            <tr class='treegrid-alfa9 treegrid-parent-alfa2' id="anode-1-1-2">
119
                <td>1.1.2</td><td>Simple text of ...</td>
120
            </tr>
121
            <tr class='treegrid-alfa10 treegrid-parent-alfa9' id="anode-1-1-2-1">
122
                <td>1.1.2.1</td><td>Simple text of ...</td>
123
            </tr>
124
            <tr class='treegrid-alfa4 treegrid-parent-alfa1' id="anode-1-2">
125
                <td>1.2</td><td>Simple text of ...</td>
126
            </tr>
127
            <tr class='treegrid-alfa5 treegrid-parent-alfa1' id="anode-1-3">
128
                <td>1.3</td><td>Simple text of ...</td>
129
            </tr>
130
            <tr class='treegrid-alfa6 treegrid-parent-alfa5' id="anode-1-3-1">
131
                <td>1.3.1</td><td>Simple text of ...</td>
132
            </tr>
133
            <tr class='treegrid-alfa7 treegrid-parent-alfa1' id="anode-1-4">
134
                <td>1.4</td><td>Simple text of ...</td>
135
            </tr>
136
            <tr class='treegrid-alfa8 treegrid-parent-alfa7' id="anode-1-4-1">
137
                <td>1.4.1</td><td>Simple text of ...</td>
138
            </tr>
139
            <tr class="treegrid-alfa11" id="anode-2">
140
                <td>2</td><td>Simple text of ...</td>
141
            </tr>
142
        </table>
143
144
        <hr>
145
        Event tests
146
        <table id='tree-4' border="1" cellpadding="0" cellspacing="0">
147
            <tr>
148
                <th>1</th><th>2</th>
149
            </tr>
150
            <tr class="treegrid-alfa1" id="anode-1">
151
                <td>1</td><td>Simple text of ...</td>
152
            </tr>
153
            <tr class="treegrid-alfa2 treegrid-parent-alfa1" id="anode-1-1">
154
                <td>1.1</td><td>Simple text of ...</td>
155
            </tr>
156
            <tr class='treegrid-alfa3 treegrid-parent-alfa2' id="anode-1-1-1">
157
                <td>1.1.1</td><td>Simple text of ...</td>
158
            </tr>
159
            <tr class='treegrid-alfa9 treegrid-parent-alfa2' id="anode-1-1-2">
160
                <td>1.1.2</td><td>Simple text of ...</td>
161
            </tr>
162
            <tr class='treegrid-alfa10 treegrid-parent-alfa9' id="anode-1-1-2-1">
163
                <td>1.1.2.1</td><td>Simple text of ...</td>
164
            </tr>
165
            <tr class='treegrid-alfa4 treegrid-parent-alfa1' id="anode-1-2">
166
                <td>1.2</td><td>Simple text of ...</td>
167
            </tr>
168
            <tr class='treegrid-alfa5 treegrid-parent-alfa1' id="anode-1-3">
169
                <td>1.3</td><td>Simple text of ...</td>
170
            </tr>
171
            <tr class='treegrid-alfa6 treegrid-parent-alfa5' id="anode-1-3-1">
172
                <td>1.3.1</td><td>Simple text of ...</td>
173
            </tr>
174
            <tr class='treegrid-alfa7 treegrid-parent-alfa1' id="anode-1-4">
175
                <td>1.4</td><td>Simple text of ...</td>
176
            </tr>
177
            <tr class='treegrid-alfa8 treegrid-parent-alfa7' id="anode-1-4-1">
178
                <td>1.4.1</td><td>Simple text of ...</td>
179
            </tr>
180
            <tr class="treegrid-alfa11" id="anode-2">
181
                <td>2</td><td>Simple text of ...</td>
182
            </tr>
183
        </table>
184
185
        <hr>
186
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
187
        <script src="js/jquery.treegrid.min.js"></script>
188
        <script src="js/jquery.cookie.js"></script>
189
        <script>
190
            var globalCounter = 0;
191
            var saveStateName = 'state-save-4';
192
            $("#tree-1").treegrid({initialState: 'collapsed'});
193
            $("#tree-2").treegrid({treeColumn: 1, initialState: 'expanded', 'saveState': true, 'saveStateName': saveStateName});
194
            $("#tree-3").treegrid({initialState: 'collapsed'});
195
            $("#tree-4").treegrid({onChange: function() {
196
                    globalCounter++;
197
                }, onCollapse: function() {
198
                    globalCounter++;
199
                }, onExpand: function() {
200
                    globalCounter++;
201
                }});
202
        </script>
203
        <script src="tests/qunit-1.12.0.js"></script>
204
        <script src="tests/tests.js"></script>
205
206
    </body>
207
</html>
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/tests/qunit-1.12.0.css (+244 lines)
Line 0 Link Here
1
/**
2
 * QUnit v1.12.0 - A JavaScript Unit Testing Framework
3
 *
4
 * http://qunitjs.com
5
 *
6
 * Copyright 2012 jQuery Foundation and other contributors
7
 * Released under the MIT license.
8
 * http://jquery.org/license
9
 */
10
11
/** Font Family and Sizes */
12
13
#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
14
	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
15
}
16
17
#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
18
#qunit-tests { font-size: smaller; }
19
20
21
/** Resets */
22
23
#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
24
	margin: 0;
25
	padding: 0;
26
}
27
28
29
/** Header */
30
31
#qunit-header {
32
	padding: 0.5em 0 0.5em 1em;
33
34
	color: #8699a4;
35
	background-color: #0d3349;
36
37
	font-size: 1.5em;
38
	line-height: 1em;
39
	font-weight: normal;
40
41
	border-radius: 5px 5px 0 0;
42
	-moz-border-radius: 5px 5px 0 0;
43
	-webkit-border-top-right-radius: 5px;
44
	-webkit-border-top-left-radius: 5px;
45
}
46
47
#qunit-header a {
48
	text-decoration: none;
49
	color: #c2ccd1;
50
}
51
52
#qunit-header a:hover,
53
#qunit-header a:focus {
54
	color: #fff;
55
}
56
57
#qunit-testrunner-toolbar label {
58
	display: inline-block;
59
	padding: 0 .5em 0 .1em;
60
}
61
62
#qunit-banner {
63
	height: 5px;
64
}
65
66
#qunit-testrunner-toolbar {
67
	padding: 0.5em 0 0.5em 2em;
68
	color: #5E740B;
69
	background-color: #eee;
70
	overflow: hidden;
71
}
72
73
#qunit-userAgent {
74
	padding: 0.5em 0 0.5em 2.5em;
75
	background-color: #2b81af;
76
	color: #fff;
77
	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
78
}
79
80
#qunit-modulefilter-container {
81
	float: right;
82
}
83
84
/** Tests: Pass/Fail */
85
86
#qunit-tests {
87
	list-style-position: inside;
88
}
89
90
#qunit-tests li {
91
	padding: 0.4em 0.5em 0.4em 2.5em;
92
	border-bottom: 1px solid #fff;
93
	list-style-position: inside;
94
}
95
96
#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {
97
	display: none;
98
}
99
100
#qunit-tests li strong {
101
	cursor: pointer;
102
}
103
104
#qunit-tests li a {
105
	padding: 0.5em;
106
	color: #c2ccd1;
107
	text-decoration: none;
108
}
109
#qunit-tests li a:hover,
110
#qunit-tests li a:focus {
111
	color: #000;
112
}
113
114
#qunit-tests li .runtime {
115
	float: right;
116
	font-size: smaller;
117
}
118
119
.qunit-assert-list {
120
	margin-top: 0.5em;
121
	padding: 0.5em;
122
123
	background-color: #fff;
124
125
	border-radius: 5px;
126
	-moz-border-radius: 5px;
127
	-webkit-border-radius: 5px;
128
}
129
130
.qunit-collapsed {
131
	display: none;
132
}
133
134
#qunit-tests table {
135
	border-collapse: collapse;
136
	margin-top: .2em;
137
}
138
139
#qunit-tests th {
140
	text-align: right;
141
	vertical-align: top;
142
	padding: 0 .5em 0 0;
143
}
144
145
#qunit-tests td {
146
	vertical-align: top;
147
}
148
149
#qunit-tests pre {
150
	margin: 0;
151
	white-space: pre-wrap;
152
	word-wrap: break-word;
153
}
154
155
#qunit-tests del {
156
	background-color: #e0f2be;
157
	color: #374e0c;
158
	text-decoration: none;
159
}
160
161
#qunit-tests ins {
162
	background-color: #ffcaca;
163
	color: #500;
164
	text-decoration: none;
165
}
166
167
/*** Test Counts */
168
169
#qunit-tests b.counts                       { color: black; }
170
#qunit-tests b.passed                       { color: #5E740B; }
171
#qunit-tests b.failed                       { color: #710909; }
172
173
#qunit-tests li li {
174
	padding: 5px;
175
	background-color: #fff;
176
	border-bottom: none;
177
	list-style-position: inside;
178
}
179
180
/*** Passing Styles */
181
182
#qunit-tests li li.pass {
183
	color: #3c510c;
184
	background-color: #fff;
185
	border-left: 10px solid #C6E746;
186
}
187
188
#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
189
#qunit-tests .pass .test-name               { color: #366097; }
190
191
#qunit-tests .pass .test-actual,
192
#qunit-tests .pass .test-expected           { color: #999999; }
193
194
#qunit-banner.qunit-pass                    { background-color: #C6E746; }
195
196
/*** Failing Styles */
197
198
#qunit-tests li li.fail {
199
	color: #710909;
200
	background-color: #fff;
201
	border-left: 10px solid #EE5757;
202
	white-space: pre;
203
}
204
205
#qunit-tests > li:last-child {
206
	border-radius: 0 0 5px 5px;
207
	-moz-border-radius: 0 0 5px 5px;
208
	-webkit-border-bottom-right-radius: 5px;
209
	-webkit-border-bottom-left-radius: 5px;
210
}
211
212
#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }
213
#qunit-tests .fail .test-name,
214
#qunit-tests .fail .module-name             { color: #000000; }
215
216
#qunit-tests .fail .test-actual             { color: #EE5757; }
217
#qunit-tests .fail .test-expected           { color: green;   }
218
219
#qunit-banner.qunit-fail                    { background-color: #EE5757; }
220
221
222
/** Result */
223
224
#qunit-testresult {
225
	padding: 0.5em 0.5em 0.5em 2.5em;
226
227
	color: #2b81af;
228
	background-color: #D2E0E6;
229
230
	border-bottom: 1px solid white;
231
}
232
#qunit-testresult .module-name {
233
	font-weight: bold;
234
}
235
236
/** Fixture */
237
238
#qunit-fixture {
239
	position: absolute;
240
	top: -10000px;
241
	left: -10000px;
242
	width: 1000px;
243
	height: 1000px;
244
}
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/tests/qunit-1.12.0.js (+2212 lines)
Line 0 Link Here
1
/**
2
 * QUnit v1.12.0 - A JavaScript Unit Testing Framework
3
 *
4
 * http://qunitjs.com
5
 *
6
 * Copyright 2013 jQuery Foundation and other contributors
7
 * Released under the MIT license.
8
 * https://jquery.org/license/
9
 */
10
11
(function( window ) {
12
13
var QUnit,
14
	assert,
15
	config,
16
	onErrorFnPrev,
17
	testId = 0,
18
	fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
19
	toString = Object.prototype.toString,
20
	hasOwn = Object.prototype.hasOwnProperty,
21
	// Keep a local reference to Date (GH-283)
22
	Date = window.Date,
23
	setTimeout = window.setTimeout,
24
	defined = {
25
		setTimeout: typeof window.setTimeout !== "undefined",
26
		sessionStorage: (function() {
27
			var x = "qunit-test-string";
28
			try {
29
				sessionStorage.setItem( x, x );
30
				sessionStorage.removeItem( x );
31
				return true;
32
			} catch( e ) {
33
				return false;
34
			}
35
		}())
36
	},
37
	/**
38
	 * Provides a normalized error string, correcting an issue
39
	 * with IE 7 (and prior) where Error.prototype.toString is
40
	 * not properly implemented
41
	 *
42
	 * Based on http://es5.github.com/#x15.11.4.4
43
	 *
44
	 * @param {String|Error} error
45
	 * @return {String} error message
46
	 */
47
	errorString = function( error ) {
48
		var name, message,
49
			errorString = error.toString();
50
		if ( errorString.substring( 0, 7 ) === "[object" ) {
51
			name = error.name ? error.name.toString() : "Error";
52
			message = error.message ? error.message.toString() : "";
53
			if ( name && message ) {
54
				return name + ": " + message;
55
			} else if ( name ) {
56
				return name;
57
			} else if ( message ) {
58
				return message;
59
			} else {
60
				return "Error";
61
			}
62
		} else {
63
			return errorString;
64
		}
65
	},
66
	/**
67
	 * Makes a clone of an object using only Array or Object as base,
68
	 * and copies over the own enumerable properties.
69
	 *
70
	 * @param {Object} obj
71
	 * @return {Object} New object with only the own properties (recursively).
72
	 */
73
	objectValues = function( obj ) {
74
		// Grunt 0.3.x uses an older version of jshint that still has jshint/jshint#392.
75
		/*jshint newcap: false */
76
		var key, val,
77
			vals = QUnit.is( "array", obj ) ? [] : {};
78
		for ( key in obj ) {
79
			if ( hasOwn.call( obj, key ) ) {
80
				val = obj[key];
81
				vals[key] = val === Object(val) ? objectValues(val) : val;
82
			}
83
		}
84
		return vals;
85
	};
86
87
function Test( settings ) {
88
	extend( this, settings );
89
	this.assertions = [];
90
	this.testNumber = ++Test.count;
91
}
92
93
Test.count = 0;
94
95
Test.prototype = {
96
	init: function() {
97
		var a, b, li,
98
			tests = id( "qunit-tests" );
99
100
		if ( tests ) {
101
			b = document.createElement( "strong" );
102
			b.innerHTML = this.nameHtml;
103
104
			// `a` initialized at top of scope
105
			a = document.createElement( "a" );
106
			a.innerHTML = "Rerun";
107
			a.href = QUnit.url({ testNumber: this.testNumber });
108
109
			li = document.createElement( "li" );
110
			li.appendChild( b );
111
			li.appendChild( a );
112
			li.className = "running";
113
			li.id = this.id = "qunit-test-output" + testId++;
114
115
			tests.appendChild( li );
116
		}
117
	},
118
	setup: function() {
119
		if (
120
			// Emit moduleStart when we're switching from one module to another
121
			this.module !== config.previousModule ||
122
				// They could be equal (both undefined) but if the previousModule property doesn't
123
				// yet exist it means this is the first test in a suite that isn't wrapped in a
124
				// module, in which case we'll just emit a moduleStart event for 'undefined'.
125
				// Without this, reporters can get testStart before moduleStart  which is a problem.
126
				!hasOwn.call( config, "previousModule" )
127
		) {
128
			if ( hasOwn.call( config, "previousModule" ) ) {
129
				runLoggingCallbacks( "moduleDone", QUnit, {
130
					name: config.previousModule,
131
					failed: config.moduleStats.bad,
132
					passed: config.moduleStats.all - config.moduleStats.bad,
133
					total: config.moduleStats.all
134
				});
135
			}
136
			config.previousModule = this.module;
137
			config.moduleStats = { all: 0, bad: 0 };
138
			runLoggingCallbacks( "moduleStart", QUnit, {
139
				name: this.module
140
			});
141
		}
142
143
		config.current = this;
144
145
		this.testEnvironment = extend({
146
			setup: function() {},
147
			teardown: function() {}
148
		}, this.moduleTestEnvironment );
149
150
		this.started = +new Date();
151
		runLoggingCallbacks( "testStart", QUnit, {
152
			name: this.testName,
153
			module: this.module
154
		});
155
156
		/*jshint camelcase:false */
157
158
159
		/**
160
		 * Expose the current test environment.
161
		 *
162
		 * @deprecated since 1.12.0: Use QUnit.config.current.testEnvironment instead.
163
		 */
164
		QUnit.current_testEnvironment = this.testEnvironment;
165
166
		/*jshint camelcase:true */
167
168
		if ( !config.pollution ) {
169
			saveGlobal();
170
		}
171
		if ( config.notrycatch ) {
172
			this.testEnvironment.setup.call( this.testEnvironment, QUnit.assert );
173
			return;
174
		}
175
		try {
176
			this.testEnvironment.setup.call( this.testEnvironment, QUnit.assert );
177
		} catch( e ) {
178
			QUnit.pushFailure( "Setup failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) );
179
		}
180
	},
181
	run: function() {
182
		config.current = this;
183
184
		var running = id( "qunit-testresult" );
185
186
		if ( running ) {
187
			running.innerHTML = "Running: <br/>" + this.nameHtml;
188
		}
189
190
		if ( this.async ) {
191
			QUnit.stop();
192
		}
193
194
		this.callbackStarted = +new Date();
195
196
		if ( config.notrycatch ) {
197
			this.callback.call( this.testEnvironment, QUnit.assert );
198
			this.callbackRuntime = +new Date() - this.callbackStarted;
199
			return;
200
		}
201
202
		try {
203
			this.callback.call( this.testEnvironment, QUnit.assert );
204
			this.callbackRuntime = +new Date() - this.callbackStarted;
205
		} catch( e ) {
206
			this.callbackRuntime = +new Date() - this.callbackStarted;
207
208
			QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) );
209
			// else next test will carry the responsibility
210
			saveGlobal();
211
212
			// Restart the tests if they're blocking
213
			if ( config.blocking ) {
214
				QUnit.start();
215
			}
216
		}
217
	},
218
	teardown: function() {
219
		config.current = this;
220
		if ( config.notrycatch ) {
221
			if ( typeof this.callbackRuntime === "undefined" ) {
222
				this.callbackRuntime = +new Date() - this.callbackStarted;
223
			}
224
			this.testEnvironment.teardown.call( this.testEnvironment, QUnit.assert );
225
			return;
226
		} else {
227
			try {
228
				this.testEnvironment.teardown.call( this.testEnvironment, QUnit.assert );
229
			} catch( e ) {
230
				QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) );
231
			}
232
		}
233
		checkPollution();
234
	},
235
	finish: function() {
236
		config.current = this;
237
		if ( config.requireExpects && this.expected === null ) {
238
			QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack );
239
		} else if ( this.expected !== null && this.expected !== this.assertions.length ) {
240
			QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack );
241
		} else if ( this.expected === null && !this.assertions.length ) {
242
			QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack );
243
		}
244
245
		var i, assertion, a, b, time, li, ol,
246
			test = this,
247
			good = 0,
248
			bad = 0,
249
			tests = id( "qunit-tests" );
250
251
		this.runtime = +new Date() - this.started;
252
		config.stats.all += this.assertions.length;
253
		config.moduleStats.all += this.assertions.length;
254
255
		if ( tests ) {
256
			ol = document.createElement( "ol" );
257
			ol.className = "qunit-assert-list";
258
259
			for ( i = 0; i < this.assertions.length; i++ ) {
260
				assertion = this.assertions[i];
261
262
				li = document.createElement( "li" );
263
				li.className = assertion.result ? "pass" : "fail";
264
				li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" );
265
				ol.appendChild( li );
266
267
				if ( assertion.result ) {
268
					good++;
269
				} else {
270
					bad++;
271
					config.stats.bad++;
272
					config.moduleStats.bad++;
273
				}
274
			}
275
276
			// store result when possible
277
			if ( QUnit.config.reorder && defined.sessionStorage ) {
278
				if ( bad ) {
279
					sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad );
280
				} else {
281
					sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName );
282
				}
283
			}
284
285
			if ( bad === 0 ) {
286
				addClass( ol, "qunit-collapsed" );
287
			}
288
289
			// `b` initialized at top of scope
290
			b = document.createElement( "strong" );
291
			b.innerHTML = this.nameHtml + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
292
293
			addEvent(b, "click", function() {
294
				var next = b.parentNode.lastChild,
295
					collapsed = hasClass( next, "qunit-collapsed" );
296
				( collapsed ? removeClass : addClass )( next, "qunit-collapsed" );
297
			});
298
299
			addEvent(b, "dblclick", function( e ) {
300
				var target = e && e.target ? e.target : window.event.srcElement;
301
				if ( target.nodeName.toLowerCase() === "span" || target.nodeName.toLowerCase() === "b" ) {
302
					target = target.parentNode;
303
				}
304
				if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
305
					window.location = QUnit.url({ testNumber: test.testNumber });
306
				}
307
			});
308
309
			// `time` initialized at top of scope
310
			time = document.createElement( "span" );
311
			time.className = "runtime";
312
			time.innerHTML = this.runtime + " ms";
313
314
			// `li` initialized at top of scope
315
			li = id( this.id );
316
			li.className = bad ? "fail" : "pass";
317
			li.removeChild( li.firstChild );
318
			a = li.firstChild;
319
			li.appendChild( b );
320
			li.appendChild( a );
321
			li.appendChild( time );
322
			li.appendChild( ol );
323
324
		} else {
325
			for ( i = 0; i < this.assertions.length; i++ ) {
326
				if ( !this.assertions[i].result ) {
327
					bad++;
328
					config.stats.bad++;
329
					config.moduleStats.bad++;
330
				}
331
			}
332
		}
333
334
		runLoggingCallbacks( "testDone", QUnit, {
335
			name: this.testName,
336
			module: this.module,
337
			failed: bad,
338
			passed: this.assertions.length - bad,
339
			total: this.assertions.length,
340
			duration: this.runtime
341
		});
342
343
		QUnit.reset();
344
345
		config.current = undefined;
346
	},
347
348
	queue: function() {
349
		var bad,
350
			test = this;
351
352
		synchronize(function() {
353
			test.init();
354
		});
355
		function run() {
356
			// each of these can by async
357
			synchronize(function() {
358
				test.setup();
359
			});
360
			synchronize(function() {
361
				test.run();
362
			});
363
			synchronize(function() {
364
				test.teardown();
365
			});
366
			synchronize(function() {
367
				test.finish();
368
			});
369
		}
370
371
		// `bad` initialized at top of scope
372
		// defer when previous test run passed, if storage is available
373
		bad = QUnit.config.reorder && defined.sessionStorage &&
374
						+sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName );
375
376
		if ( bad ) {
377
			run();
378
		} else {
379
			synchronize( run, true );
380
		}
381
	}
382
};
383
384
// Root QUnit object.
385
// `QUnit` initialized at top of scope
386
QUnit = {
387
388
	// call on start of module test to prepend name to all tests
389
	module: function( name, testEnvironment ) {
390
		config.currentModule = name;
391
		config.currentModuleTestEnvironment = testEnvironment;
392
		config.modules[name] = true;
393
	},
394
395
	asyncTest: function( testName, expected, callback ) {
396
		if ( arguments.length === 2 ) {
397
			callback = expected;
398
			expected = null;
399
		}
400
401
		QUnit.test( testName, expected, callback, true );
402
	},
403
404
	test: function( testName, expected, callback, async ) {
405
		var test,
406
			nameHtml = "<span class='test-name'>" + escapeText( testName ) + "</span>";
407
408
		if ( arguments.length === 2 ) {
409
			callback = expected;
410
			expected = null;
411
		}
412
413
		if ( config.currentModule ) {
414
			nameHtml = "<span class='module-name'>" + escapeText( config.currentModule ) + "</span>: " + nameHtml;
415
		}
416
417
		test = new Test({
418
			nameHtml: nameHtml,
419
			testName: testName,
420
			expected: expected,
421
			async: async,
422
			callback: callback,
423
			module: config.currentModule,
424
			moduleTestEnvironment: config.currentModuleTestEnvironment,
425
			stack: sourceFromStacktrace( 2 )
426
		});
427
428
		if ( !validTest( test ) ) {
429
			return;
430
		}
431
432
		test.queue();
433
	},
434
435
	// Specify the number of expected assertions to guarantee that failed test (no assertions are run at all) don't slip through.
436
	expect: function( asserts ) {
437
		if (arguments.length === 1) {
438
			config.current.expected = asserts;
439
		} else {
440
			return config.current.expected;
441
		}
442
	},
443
444
	start: function( count ) {
445
		// QUnit hasn't been initialized yet.
446
		// Note: RequireJS (et al) may delay onLoad
447
		if ( config.semaphore === undefined ) {
448
			QUnit.begin(function() {
449
				// This is triggered at the top of QUnit.load, push start() to the event loop, to allow QUnit.load to finish first
450
				setTimeout(function() {
451
					QUnit.start( count );
452
				});
453
			});
454
			return;
455
		}
456
457
		config.semaphore -= count || 1;
458
		// don't start until equal number of stop-calls
459
		if ( config.semaphore > 0 ) {
460
			return;
461
		}
462
		// ignore if start is called more often then stop
463
		if ( config.semaphore < 0 ) {
464
			config.semaphore = 0;
465
			QUnit.pushFailure( "Called start() while already started (QUnit.config.semaphore was 0 already)", null, sourceFromStacktrace(2) );
466
			return;
467
		}
468
		// A slight delay, to avoid any current callbacks
469
		if ( defined.setTimeout ) {
470
			setTimeout(function() {
471
				if ( config.semaphore > 0 ) {
472
					return;
473
				}
474
				if ( config.timeout ) {
475
					clearTimeout( config.timeout );
476
				}
477
478
				config.blocking = false;
479
				process( true );
480
			}, 13);
481
		} else {
482
			config.blocking = false;
483
			process( true );
484
		}
485
	},
486
487
	stop: function( count ) {
488
		config.semaphore += count || 1;
489
		config.blocking = true;
490
491
		if ( config.testTimeout && defined.setTimeout ) {
492
			clearTimeout( config.timeout );
493
			config.timeout = setTimeout(function() {
494
				QUnit.ok( false, "Test timed out" );
495
				config.semaphore = 1;
496
				QUnit.start();
497
			}, config.testTimeout );
498
		}
499
	}
500
};
501
502
// `assert` initialized at top of scope
503
// Assert helpers
504
// All of these must either call QUnit.push() or manually do:
505
// - runLoggingCallbacks( "log", .. );
506
// - config.current.assertions.push({ .. });
507
// We attach it to the QUnit object *after* we expose the public API,
508
// otherwise `assert` will become a global variable in browsers (#341).
509
assert = {
510
	/**
511
	 * Asserts rough true-ish result.
512
	 * @name ok
513
	 * @function
514
	 * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
515
	 */
516
	ok: function( result, msg ) {
517
		if ( !config.current ) {
518
			throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) );
519
		}
520
		result = !!result;
521
		msg = msg || (result ? "okay" : "failed" );
522
523
		var source,
524
			details = {
525
				module: config.current.module,
526
				name: config.current.testName,
527
				result: result,
528
				message: msg
529
			};
530
531
		msg = "<span class='test-message'>" + escapeText( msg ) + "</span>";
532
533
		if ( !result ) {
534
			source = sourceFromStacktrace( 2 );
535
			if ( source ) {
536
				details.source = source;
537
				msg += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeText( source ) + "</pre></td></tr></table>";
538
			}
539
		}
540
		runLoggingCallbacks( "log", QUnit, details );
541
		config.current.assertions.push({
542
			result: result,
543
			message: msg
544
		});
545
	},
546
547
	/**
548
	 * Assert that the first two arguments are equal, with an optional message.
549
	 * Prints out both actual and expected values.
550
	 * @name equal
551
	 * @function
552
	 * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" );
553
	 */
554
	equal: function( actual, expected, message ) {
555
		/*jshint eqeqeq:false */
556
		QUnit.push( expected == actual, actual, expected, message );
557
	},
558
559
	/**
560
	 * @name notEqual
561
	 * @function
562
	 */
563
	notEqual: function( actual, expected, message ) {
564
		/*jshint eqeqeq:false */
565
		QUnit.push( expected != actual, actual, expected, message );
566
	},
567
568
	/**
569
	 * @name propEqual
570
	 * @function
571
	 */
572
	propEqual: function( actual, expected, message ) {
573
		actual = objectValues(actual);
574
		expected = objectValues(expected);
575
		QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
576
	},
577
578
	/**
579
	 * @name notPropEqual
580
	 * @function
581
	 */
582
	notPropEqual: function( actual, expected, message ) {
583
		actual = objectValues(actual);
584
		expected = objectValues(expected);
585
		QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
586
	},
587
588
	/**
589
	 * @name deepEqual
590
	 * @function
591
	 */
592
	deepEqual: function( actual, expected, message ) {
593
		QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
594
	},
595
596
	/**
597
	 * @name notDeepEqual
598
	 * @function
599
	 */
600
	notDeepEqual: function( actual, expected, message ) {
601
		QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
602
	},
603
604
	/**
605
	 * @name strictEqual
606
	 * @function
607
	 */
608
	strictEqual: function( actual, expected, message ) {
609
		QUnit.push( expected === actual, actual, expected, message );
610
	},
611
612
	/**
613
	 * @name notStrictEqual
614
	 * @function
615
	 */
616
	notStrictEqual: function( actual, expected, message ) {
617
		QUnit.push( expected !== actual, actual, expected, message );
618
	},
619
620
	"throws": function( block, expected, message ) {
621
		var actual,
622
			expectedOutput = expected,
623
			ok = false;
624
625
		// 'expected' is optional
626
		if ( typeof expected === "string" ) {
627
			message = expected;
628
			expected = null;
629
		}
630
631
		config.current.ignoreGlobalErrors = true;
632
		try {
633
			block.call( config.current.testEnvironment );
634
		} catch (e) {
635
			actual = e;
636
		}
637
		config.current.ignoreGlobalErrors = false;
638
639
		if ( actual ) {
640
			// we don't want to validate thrown error
641
			if ( !expected ) {
642
				ok = true;
643
				expectedOutput = null;
644
			// expected is a regexp
645
			} else if ( QUnit.objectType( expected ) === "regexp" ) {
646
				ok = expected.test( errorString( actual ) );
647
			// expected is a constructor
648
			} else if ( actual instanceof expected ) {
649
				ok = true;
650
			// expected is a validation function which returns true is validation passed
651
			} else if ( expected.call( {}, actual ) === true ) {
652
				expectedOutput = null;
653
				ok = true;
654
			}
655
656
			QUnit.push( ok, actual, expectedOutput, message );
657
		} else {
658
			QUnit.pushFailure( message, null, "No exception was thrown." );
659
		}
660
	}
661
};
662
663
/**
664
 * @deprecated since 1.8.0
665
 * Kept assertion helpers in root for backwards compatibility.
666
 */
667
extend( QUnit, assert );
668
669
/**
670
 * @deprecated since 1.9.0
671
 * Kept root "raises()" for backwards compatibility.
672
 * (Note that we don't introduce assert.raises).
673
 */
674
QUnit.raises = assert[ "throws" ];
675
676
/**
677
 * @deprecated since 1.0.0, replaced with error pushes since 1.3.0
678
 * Kept to avoid TypeErrors for undefined methods.
679
 */
680
QUnit.equals = function() {
681
	QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" );
682
};
683
QUnit.same = function() {
684
	QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" );
685
};
686
687
// We want access to the constructor's prototype
688
(function() {
689
	function F() {}
690
	F.prototype = QUnit;
691
	QUnit = new F();
692
	// Make F QUnit's constructor so that we can add to the prototype later
693
	QUnit.constructor = F;
694
}());
695
696
/**
697
 * Config object: Maintain internal state
698
 * Later exposed as QUnit.config
699
 * `config` initialized at top of scope
700
 */
701
config = {
702
	// The queue of tests to run
703
	queue: [],
704
705
	// block until document ready
706
	blocking: true,
707
708
	// when enabled, show only failing tests
709
	// gets persisted through sessionStorage and can be changed in UI via checkbox
710
	hidepassed: false,
711
712
	// by default, run previously failed tests first
713
	// very useful in combination with "Hide passed tests" checked
714
	reorder: true,
715
716
	// by default, modify document.title when suite is done
717
	altertitle: true,
718
719
	// when enabled, all tests must call expect()
720
	requireExpects: false,
721
722
	// add checkboxes that are persisted in the query-string
723
	// when enabled, the id is set to `true` as a `QUnit.config` property
724
	urlConfig: [
725
		{
726
			id: "noglobals",
727
			label: "Check for Globals",
728
			tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings."
729
		},
730
		{
731
			id: "notrycatch",
732
			label: "No try-catch",
733
			tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings."
734
		}
735
	],
736
737
	// Set of all modules.
738
	modules: {},
739
740
	// logging callback queues
741
	begin: [],
742
	done: [],
743
	log: [],
744
	testStart: [],
745
	testDone: [],
746
	moduleStart: [],
747
	moduleDone: []
748
};
749
750
// Export global variables, unless an 'exports' object exists,
751
// in that case we assume we're in CommonJS (dealt with on the bottom of the script)
752
if ( typeof exports === "undefined" ) {
753
	extend( window, QUnit.constructor.prototype );
754
755
	// Expose QUnit object
756
	window.QUnit = QUnit;
757
}
758
759
// Initialize more QUnit.config and QUnit.urlParams
760
(function() {
761
	var i,
762
		location = window.location || { search: "", protocol: "file:" },
763
		params = location.search.slice( 1 ).split( "&" ),
764
		length = params.length,
765
		urlParams = {},
766
		current;
767
768
	if ( params[ 0 ] ) {
769
		for ( i = 0; i < length; i++ ) {
770
			current = params[ i ].split( "=" );
771
			current[ 0 ] = decodeURIComponent( current[ 0 ] );
772
			// allow just a key to turn on a flag, e.g., test.html?noglobals
773
			current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
774
			urlParams[ current[ 0 ] ] = current[ 1 ];
775
		}
776
	}
777
778
	QUnit.urlParams = urlParams;
779
780
	// String search anywhere in moduleName+testName
781
	config.filter = urlParams.filter;
782
783
	// Exact match of the module name
784
	config.module = urlParams.module;
785
786
	config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
787
788
	// Figure out if we're running the tests from a server or not
789
	QUnit.isLocal = location.protocol === "file:";
790
}());
791
792
// Extend QUnit object,
793
// these after set here because they should not be exposed as global functions
794
extend( QUnit, {
795
	assert: assert,
796
797
	config: config,
798
799
	// Initialize the configuration options
800
	init: function() {
801
		extend( config, {
802
			stats: { all: 0, bad: 0 },
803
			moduleStats: { all: 0, bad: 0 },
804
			started: +new Date(),
805
			updateRate: 1000,
806
			blocking: false,
807
			autostart: true,
808
			autorun: false,
809
			filter: "",
810
			queue: [],
811
			semaphore: 1
812
		});
813
814
		var tests, banner, result,
815
			qunit = id( "qunit" );
816
817
		if ( qunit ) {
818
			qunit.innerHTML =
819
				"<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" +
820
				"<h2 id='qunit-banner'></h2>" +
821
				"<div id='qunit-testrunner-toolbar'></div>" +
822
				"<h2 id='qunit-userAgent'></h2>" +
823
				"<ol id='qunit-tests'></ol>";
824
		}
825
826
		tests = id( "qunit-tests" );
827
		banner = id( "qunit-banner" );
828
		result = id( "qunit-testresult" );
829
830
		if ( tests ) {
831
			tests.innerHTML = "";
832
		}
833
834
		if ( banner ) {
835
			banner.className = "";
836
		}
837
838
		if ( result ) {
839
			result.parentNode.removeChild( result );
840
		}
841
842
		if ( tests ) {
843
			result = document.createElement( "p" );
844
			result.id = "qunit-testresult";
845
			result.className = "result";
846
			tests.parentNode.insertBefore( result, tests );
847
			result.innerHTML = "Running...<br/>&nbsp;";
848
		}
849
	},
850
851
	// Resets the test setup. Useful for tests that modify the DOM.
852
	/*
853
	DEPRECATED: Use multiple tests instead of resetting inside a test.
854
	Use testStart or testDone for custom cleanup.
855
	This method will throw an error in 2.0, and will be removed in 2.1
856
	*/
857
	reset: function() {
858
		var fixture = id( "qunit-fixture" );
859
		if ( fixture ) {
860
			fixture.innerHTML = config.fixture;
861
		}
862
	},
863
864
	// Trigger an event on an element.
865
	// @example triggerEvent( document.body, "click" );
866
	triggerEvent: function( elem, type, event ) {
867
		if ( document.createEvent ) {
868
			event = document.createEvent( "MouseEvents" );
869
			event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
870
				0, 0, 0, 0, 0, false, false, false, false, 0, null);
871
872
			elem.dispatchEvent( event );
873
		} else if ( elem.fireEvent ) {
874
			elem.fireEvent( "on" + type );
875
		}
876
	},
877
878
	// Safe object type checking
879
	is: function( type, obj ) {
880
		return QUnit.objectType( obj ) === type;
881
	},
882
883
	objectType: function( obj ) {
884
		if ( typeof obj === "undefined" ) {
885
				return "undefined";
886
		// consider: typeof null === object
887
		}
888
		if ( obj === null ) {
889
				return "null";
890
		}
891
892
		var match = toString.call( obj ).match(/^\[object\s(.*)\]$/),
893
			type = match && match[1] || "";
894
895
		switch ( type ) {
896
			case "Number":
897
				if ( isNaN(obj) ) {
898
					return "nan";
899
				}
900
				return "number";
901
			case "String":
902
			case "Boolean":
903
			case "Array":
904
			case "Date":
905
			case "RegExp":
906
			case "Function":
907
				return type.toLowerCase();
908
		}
909
		if ( typeof obj === "object" ) {
910
			return "object";
911
		}
912
		return undefined;
913
	},
914
915
	push: function( result, actual, expected, message ) {
916
		if ( !config.current ) {
917
			throw new Error( "assertion outside test context, was " + sourceFromStacktrace() );
918
		}
919
920
		var output, source,
921
			details = {
922
				module: config.current.module,
923
				name: config.current.testName,
924
				result: result,
925
				message: message,
926
				actual: actual,
927
				expected: expected
928
			};
929
930
		message = escapeText( message ) || ( result ? "okay" : "failed" );
931
		message = "<span class='test-message'>" + message + "</span>";
932
		output = message;
933
934
		if ( !result ) {
935
			expected = escapeText( QUnit.jsDump.parse(expected) );
936
			actual = escapeText( QUnit.jsDump.parse(actual) );
937
			output += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" + expected + "</pre></td></tr>";
938
939
			if ( actual !== expected ) {
940
				output += "<tr class='test-actual'><th>Result: </th><td><pre>" + actual + "</pre></td></tr>";
941
				output += "<tr class='test-diff'><th>Diff: </th><td><pre>" + QUnit.diff( expected, actual ) + "</pre></td></tr>";
942
			}
943
944
			source = sourceFromStacktrace();
945
946
			if ( source ) {
947
				details.source = source;
948
				output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeText( source ) + "</pre></td></tr>";
949
			}
950
951
			output += "</table>";
952
		}
953
954
		runLoggingCallbacks( "log", QUnit, details );
955
956
		config.current.assertions.push({
957
			result: !!result,
958
			message: output
959
		});
960
	},
961
962
	pushFailure: function( message, source, actual ) {
963
		if ( !config.current ) {
964
			throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) );
965
		}
966
967
		var output,
968
			details = {
969
				module: config.current.module,
970
				name: config.current.testName,
971
				result: false,
972
				message: message
973
			};
974
975
		message = escapeText( message ) || "error";
976
		message = "<span class='test-message'>" + message + "</span>";
977
		output = message;
978
979
		output += "<table>";
980
981
		if ( actual ) {
982
			output += "<tr class='test-actual'><th>Result: </th><td><pre>" + escapeText( actual ) + "</pre></td></tr>";
983
		}
984
985
		if ( source ) {
986
			details.source = source;
987
			output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeText( source ) + "</pre></td></tr>";
988
		}
989
990
		output += "</table>";
991
992
		runLoggingCallbacks( "log", QUnit, details );
993
994
		config.current.assertions.push({
995
			result: false,
996
			message: output
997
		});
998
	},
999
1000
	url: function( params ) {
1001
		params = extend( extend( {}, QUnit.urlParams ), params );
1002
		var key,
1003
			querystring = "?";
1004
1005
		for ( key in params ) {
1006
			if ( hasOwn.call( params, key ) ) {
1007
				querystring += encodeURIComponent( key ) + "=" +
1008
					encodeURIComponent( params[ key ] ) + "&";
1009
			}
1010
		}
1011
		return window.location.protocol + "//" + window.location.host +
1012
			window.location.pathname + querystring.slice( 0, -1 );
1013
	},
1014
1015
	extend: extend,
1016
	id: id,
1017
	addEvent: addEvent,
1018
	addClass: addClass,
1019
	hasClass: hasClass,
1020
	removeClass: removeClass
1021
	// load, equiv, jsDump, diff: Attached later
1022
});
1023
1024
/**
1025
 * @deprecated: Created for backwards compatibility with test runner that set the hook function
1026
 * into QUnit.{hook}, instead of invoking it and passing the hook function.
1027
 * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
1028
 * Doing this allows us to tell if the following methods have been overwritten on the actual
1029
 * QUnit object.
1030
 */
1031
extend( QUnit.constructor.prototype, {
1032
1033
	// Logging callbacks; all receive a single argument with the listed properties
1034
	// run test/logs.html for any related changes
1035
	begin: registerLoggingCallback( "begin" ),
1036
1037
	// done: { failed, passed, total, runtime }
1038
	done: registerLoggingCallback( "done" ),
1039
1040
	// log: { result, actual, expected, message }
1041
	log: registerLoggingCallback( "log" ),
1042
1043
	// testStart: { name }
1044
	testStart: registerLoggingCallback( "testStart" ),
1045
1046
	// testDone: { name, failed, passed, total, duration }
1047
	testDone: registerLoggingCallback( "testDone" ),
1048
1049
	// moduleStart: { name }
1050
	moduleStart: registerLoggingCallback( "moduleStart" ),
1051
1052
	// moduleDone: { name, failed, passed, total }
1053
	moduleDone: registerLoggingCallback( "moduleDone" )
1054
});
1055
1056
if ( typeof document === "undefined" || document.readyState === "complete" ) {
1057
	config.autorun = true;
1058
}
1059
1060
QUnit.load = function() {
1061
	runLoggingCallbacks( "begin", QUnit, {} );
1062
1063
	// Initialize the config, saving the execution queue
1064
	var banner, filter, i, label, len, main, ol, toolbar, userAgent, val,
1065
		urlConfigCheckboxesContainer, urlConfigCheckboxes, moduleFilter,
1066
		numModules = 0,
1067
		moduleNames = [],
1068
		moduleFilterHtml = "",
1069
		urlConfigHtml = "",
1070
		oldconfig = extend( {}, config );
1071
1072
	QUnit.init();
1073
	extend(config, oldconfig);
1074
1075
	config.blocking = false;
1076
1077
	len = config.urlConfig.length;
1078
1079
	for ( i = 0; i < len; i++ ) {
1080
		val = config.urlConfig[i];
1081
		if ( typeof val === "string" ) {
1082
			val = {
1083
				id: val,
1084
				label: val,
1085
				tooltip: "[no tooltip available]"
1086
			};
1087
		}
1088
		config[ val.id ] = QUnit.urlParams[ val.id ];
1089
		urlConfigHtml += "<input id='qunit-urlconfig-" + escapeText( val.id ) +
1090
			"' name='" + escapeText( val.id ) +
1091
			"' type='checkbox'" + ( config[ val.id ] ? " checked='checked'" : "" ) +
1092
			" title='" + escapeText( val.tooltip ) +
1093
			"'><label for='qunit-urlconfig-" + escapeText( val.id ) +
1094
			"' title='" + escapeText( val.tooltip ) + "'>" + val.label + "</label>";
1095
	}
1096
	for ( i in config.modules ) {
1097
		if ( config.modules.hasOwnProperty( i ) ) {
1098
			moduleNames.push(i);
1099
		}
1100
	}
1101
	numModules = moduleNames.length;
1102
	moduleNames.sort( function( a, b ) {
1103
		return a.localeCompare( b );
1104
	});
1105
	moduleFilterHtml += "<label for='qunit-modulefilter'>Module: </label><select id='qunit-modulefilter' name='modulefilter'><option value='' " +
1106
		( config.module === undefined  ? "selected='selected'" : "" ) +
1107
		">< All Modules ></option>";
1108
1109
1110
	for ( i = 0; i < numModules; i++) {
1111
			moduleFilterHtml += "<option value='" + escapeText( encodeURIComponent(moduleNames[i]) ) + "' " +
1112
				( config.module === moduleNames[i] ? "selected='selected'" : "" ) +
1113
				">" + escapeText(moduleNames[i]) + "</option>";
1114
	}
1115
	moduleFilterHtml += "</select>";
1116
1117
	// `userAgent` initialized at top of scope
1118
	userAgent = id( "qunit-userAgent" );
1119
	if ( userAgent ) {
1120
		userAgent.innerHTML = navigator.userAgent;
1121
	}
1122
1123
	// `banner` initialized at top of scope
1124
	banner = id( "qunit-header" );
1125
	if ( banner ) {
1126
		banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined, module: undefined, testNumber: undefined }) + "'>" + banner.innerHTML + "</a> ";
1127
	}
1128
1129
	// `toolbar` initialized at top of scope
1130
	toolbar = id( "qunit-testrunner-toolbar" );
1131
	if ( toolbar ) {
1132
		// `filter` initialized at top of scope
1133
		filter = document.createElement( "input" );
1134
		filter.type = "checkbox";
1135
		filter.id = "qunit-filter-pass";
1136
1137
		addEvent( filter, "click", function() {
1138
			var tmp,
1139
				ol = document.getElementById( "qunit-tests" );
1140
1141
			if ( filter.checked ) {
1142
				ol.className = ol.className + " hidepass";
1143
			} else {
1144
				tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
1145
				ol.className = tmp.replace( / hidepass /, " " );
1146
			}
1147
			if ( defined.sessionStorage ) {
1148
				if (filter.checked) {
1149
					sessionStorage.setItem( "qunit-filter-passed-tests", "true" );
1150
				} else {
1151
					sessionStorage.removeItem( "qunit-filter-passed-tests" );
1152
				}
1153
			}
1154
		});
1155
1156
		if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) {
1157
			filter.checked = true;
1158
			// `ol` initialized at top of scope
1159
			ol = document.getElementById( "qunit-tests" );
1160
			ol.className = ol.className + " hidepass";
1161
		}
1162
		toolbar.appendChild( filter );
1163
1164
		// `label` initialized at top of scope
1165
		label = document.createElement( "label" );
1166
		label.setAttribute( "for", "qunit-filter-pass" );
1167
		label.setAttribute( "title", "Only show tests and assertions that fail. Stored in sessionStorage." );
1168
		label.innerHTML = "Hide passed tests";
1169
		toolbar.appendChild( label );
1170
1171
		urlConfigCheckboxesContainer = document.createElement("span");
1172
		urlConfigCheckboxesContainer.innerHTML = urlConfigHtml;
1173
		urlConfigCheckboxes = urlConfigCheckboxesContainer.getElementsByTagName("input");
1174
		// For oldIE support:
1175
		// * Add handlers to the individual elements instead of the container
1176
		// * Use "click" instead of "change"
1177
		// * Fallback from event.target to event.srcElement
1178
		addEvents( urlConfigCheckboxes, "click", function( event ) {
1179
			var params = {},
1180
				target = event.target || event.srcElement;
1181
			params[ target.name ] = target.checked ? true : undefined;
1182
			window.location = QUnit.url( params );
1183
		});
1184
		toolbar.appendChild( urlConfigCheckboxesContainer );
1185
1186
		if (numModules > 1) {
1187
			moduleFilter = document.createElement( "span" );
1188
			moduleFilter.setAttribute( "id", "qunit-modulefilter-container" );
1189
			moduleFilter.innerHTML = moduleFilterHtml;
1190
			addEvent( moduleFilter.lastChild, "change", function() {
1191
				var selectBox = moduleFilter.getElementsByTagName("select")[0],
1192
					selectedModule = decodeURIComponent(selectBox.options[selectBox.selectedIndex].value);
1193
1194
				window.location = QUnit.url({
1195
					module: ( selectedModule === "" ) ? undefined : selectedModule,
1196
					// Remove any existing filters
1197
					filter: undefined,
1198
					testNumber: undefined
1199
				});
1200
			});
1201
			toolbar.appendChild(moduleFilter);
1202
		}
1203
	}
1204
1205
	// `main` initialized at top of scope
1206
	main = id( "qunit-fixture" );
1207
	if ( main ) {
1208
		config.fixture = main.innerHTML;
1209
	}
1210
1211
	if ( config.autostart ) {
1212
		QUnit.start();
1213
	}
1214
};
1215
1216
addEvent( window, "load", QUnit.load );
1217
1218
// `onErrorFnPrev` initialized at top of scope
1219
// Preserve other handlers
1220
onErrorFnPrev = window.onerror;
1221
1222
// Cover uncaught exceptions
1223
// Returning true will suppress the default browser handler,
1224
// returning false will let it run.
1225
window.onerror = function ( error, filePath, linerNr ) {
1226
	var ret = false;
1227
	if ( onErrorFnPrev ) {
1228
		ret = onErrorFnPrev( error, filePath, linerNr );
1229
	}
1230
1231
	// Treat return value as window.onerror itself does,
1232
	// Only do our handling if not suppressed.
1233
	if ( ret !== true ) {
1234
		if ( QUnit.config.current ) {
1235
			if ( QUnit.config.current.ignoreGlobalErrors ) {
1236
				return true;
1237
			}
1238
			QUnit.pushFailure( error, filePath + ":" + linerNr );
1239
		} else {
1240
			QUnit.test( "global failure", extend( function() {
1241
				QUnit.pushFailure( error, filePath + ":" + linerNr );
1242
			}, { validTest: validTest } ) );
1243
		}
1244
		return false;
1245
	}
1246
1247
	return ret;
1248
};
1249
1250
function done() {
1251
	config.autorun = true;
1252
1253
	// Log the last module results
1254
	if ( config.currentModule ) {
1255
		runLoggingCallbacks( "moduleDone", QUnit, {
1256
			name: config.currentModule,
1257
			failed: config.moduleStats.bad,
1258
			passed: config.moduleStats.all - config.moduleStats.bad,
1259
			total: config.moduleStats.all
1260
		});
1261
	}
1262
	delete config.previousModule;
1263
1264
	var i, key,
1265
		banner = id( "qunit-banner" ),
1266
		tests = id( "qunit-tests" ),
1267
		runtime = +new Date() - config.started,
1268
		passed = config.stats.all - config.stats.bad,
1269
		html = [
1270
			"Tests completed in ",
1271
			runtime,
1272
			" milliseconds.<br/>",
1273
			"<span class='passed'>",
1274
			passed,
1275
			"</span> assertions of <span class='total'>",
1276
			config.stats.all,
1277
			"</span> passed, <span class='failed'>",
1278
			config.stats.bad,
1279
			"</span> failed."
1280
		].join( "" );
1281
1282
	if ( banner ) {
1283
		banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" );
1284
	}
1285
1286
	if ( tests ) {
1287
		id( "qunit-testresult" ).innerHTML = html;
1288
	}
1289
1290
	if ( config.altertitle && typeof document !== "undefined" && document.title ) {
1291
		// show ✖ for good, ✔ for bad suite result in title
1292
		// use escape sequences in case file gets loaded with non-utf-8-charset
1293
		document.title = [
1294
			( config.stats.bad ? "\u2716" : "\u2714" ),
1295
			document.title.replace( /^[\u2714\u2716] /i, "" )
1296
		].join( " " );
1297
	}
1298
1299
	// clear own sessionStorage items if all tests passed
1300
	if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {
1301
		// `key` & `i` initialized at top of scope
1302
		for ( i = 0; i < sessionStorage.length; i++ ) {
1303
			key = sessionStorage.key( i++ );
1304
			if ( key.indexOf( "qunit-test-" ) === 0 ) {
1305
				sessionStorage.removeItem( key );
1306
			}
1307
		}
1308
	}
1309
1310
	// scroll back to top to show results
1311
	if ( window.scrollTo ) {
1312
		window.scrollTo(0, 0);
1313
	}
1314
1315
	runLoggingCallbacks( "done", QUnit, {
1316
		failed: config.stats.bad,
1317
		passed: passed,
1318
		total: config.stats.all,
1319
		runtime: runtime
1320
	});
1321
}
1322
1323
/** @return Boolean: true if this test should be ran */
1324
function validTest( test ) {
1325
	var include,
1326
		filter = config.filter && config.filter.toLowerCase(),
1327
		module = config.module && config.module.toLowerCase(),
1328
		fullName = (test.module + ": " + test.testName).toLowerCase();
1329
1330
	// Internally-generated tests are always valid
1331
	if ( test.callback && test.callback.validTest === validTest ) {
1332
		delete test.callback.validTest;
1333
		return true;
1334
	}
1335
1336
	if ( config.testNumber ) {
1337
		return test.testNumber === config.testNumber;
1338
	}
1339
1340
	if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) {
1341
		return false;
1342
	}
1343
1344
	if ( !filter ) {
1345
		return true;
1346
	}
1347
1348
	include = filter.charAt( 0 ) !== "!";
1349
	if ( !include ) {
1350
		filter = filter.slice( 1 );
1351
	}
1352
1353
	// If the filter matches, we need to honour include
1354
	if ( fullName.indexOf( filter ) !== -1 ) {
1355
		return include;
1356
	}
1357
1358
	// Otherwise, do the opposite
1359
	return !include;
1360
}
1361
1362
// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)
1363
// Later Safari and IE10 are supposed to support error.stack as well
1364
// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
1365
function extractStacktrace( e, offset ) {
1366
	offset = offset === undefined ? 3 : offset;
1367
1368
	var stack, include, i;
1369
1370
	if ( e.stacktrace ) {
1371
		// Opera
1372
		return e.stacktrace.split( "\n" )[ offset + 3 ];
1373
	} else if ( e.stack ) {
1374
		// Firefox, Chrome
1375
		stack = e.stack.split( "\n" );
1376
		if (/^error$/i.test( stack[0] ) ) {
1377
			stack.shift();
1378
		}
1379
		if ( fileName ) {
1380
			include = [];
1381
			for ( i = offset; i < stack.length; i++ ) {
1382
				if ( stack[ i ].indexOf( fileName ) !== -1 ) {
1383
					break;
1384
				}
1385
				include.push( stack[ i ] );
1386
			}
1387
			if ( include.length ) {
1388
				return include.join( "\n" );
1389
			}
1390
		}
1391
		return stack[ offset ];
1392
	} else if ( e.sourceURL ) {
1393
		// Safari, PhantomJS
1394
		// hopefully one day Safari provides actual stacktraces
1395
		// exclude useless self-reference for generated Error objects
1396
		if ( /qunit.js$/.test( e.sourceURL ) ) {
1397
			return;
1398
		}
1399
		// for actual exceptions, this is useful
1400
		return e.sourceURL + ":" + e.line;
1401
	}
1402
}
1403
function sourceFromStacktrace( offset ) {
1404
	try {
1405
		throw new Error();
1406
	} catch ( e ) {
1407
		return extractStacktrace( e, offset );
1408
	}
1409
}
1410
1411
/**
1412
 * Escape text for attribute or text content.
1413
 */
1414
function escapeText( s ) {
1415
	if ( !s ) {
1416
		return "";
1417
	}
1418
	s = s + "";
1419
	// Both single quotes and double quotes (for attributes)
1420
	return s.replace( /['"<>&]/g, function( s ) {
1421
		switch( s ) {
1422
			case "'":
1423
				return "&#039;";
1424
			case "\"":
1425
				return "&quot;";
1426
			case "<":
1427
				return "&lt;";
1428
			case ">":
1429
				return "&gt;";
1430
			case "&":
1431
				return "&amp;";
1432
		}
1433
	});
1434
}
1435
1436
function synchronize( callback, last ) {
1437
	config.queue.push( callback );
1438
1439
	if ( config.autorun && !config.blocking ) {
1440
		process( last );
1441
	}
1442
}
1443
1444
function process( last ) {
1445
	function next() {
1446
		process( last );
1447
	}
1448
	var start = new Date().getTime();
1449
	config.depth = config.depth ? config.depth + 1 : 1;
1450
1451
	while ( config.queue.length && !config.blocking ) {
1452
		if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {
1453
			config.queue.shift()();
1454
		} else {
1455
			setTimeout( next, 13 );
1456
			break;
1457
		}
1458
	}
1459
	config.depth--;
1460
	if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
1461
		done();
1462
	}
1463
}
1464
1465
function saveGlobal() {
1466
	config.pollution = [];
1467
1468
	if ( config.noglobals ) {
1469
		for ( var key in window ) {
1470
			if ( hasOwn.call( window, key ) ) {
1471
				// in Opera sometimes DOM element ids show up here, ignore them
1472
				if ( /^qunit-test-output/.test( key ) ) {
1473
					continue;
1474
				}
1475
				config.pollution.push( key );
1476
			}
1477
		}
1478
	}
1479
}
1480
1481
function checkPollution() {
1482
	var newGlobals,
1483
		deletedGlobals,
1484
		old = config.pollution;
1485
1486
	saveGlobal();
1487
1488
	newGlobals = diff( config.pollution, old );
1489
	if ( newGlobals.length > 0 ) {
1490
		QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") );
1491
	}
1492
1493
	deletedGlobals = diff( old, config.pollution );
1494
	if ( deletedGlobals.length > 0 ) {
1495
		QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") );
1496
	}
1497
}
1498
1499
// returns a new Array with the elements that are in a but not in b
1500
function diff( a, b ) {
1501
	var i, j,
1502
		result = a.slice();
1503
1504
	for ( i = 0; i < result.length; i++ ) {
1505
		for ( j = 0; j < b.length; j++ ) {
1506
			if ( result[i] === b[j] ) {
1507
				result.splice( i, 1 );
1508
				i--;
1509
				break;
1510
			}
1511
		}
1512
	}
1513
	return result;
1514
}
1515
1516
function extend( a, b ) {
1517
	for ( var prop in b ) {
1518
		if ( hasOwn.call( b, prop ) ) {
1519
			// Avoid "Member not found" error in IE8 caused by messing with window.constructor
1520
			if ( !( prop === "constructor" && a === window ) ) {
1521
				if ( b[ prop ] === undefined ) {
1522
					delete a[ prop ];
1523
				} else {
1524
					a[ prop ] = b[ prop ];
1525
				}
1526
			}
1527
		}
1528
	}
1529
1530
	return a;
1531
}
1532
1533
/**
1534
 * @param {HTMLElement} elem
1535
 * @param {string} type
1536
 * @param {Function} fn
1537
 */
1538
function addEvent( elem, type, fn ) {
1539
	// Standards-based browsers
1540
	if ( elem.addEventListener ) {
1541
		elem.addEventListener( type, fn, false );
1542
	// IE
1543
	} else {
1544
		elem.attachEvent( "on" + type, fn );
1545
	}
1546
}
1547
1548
/**
1549
 * @param {Array|NodeList} elems
1550
 * @param {string} type
1551
 * @param {Function} fn
1552
 */
1553
function addEvents( elems, type, fn ) {
1554
	var i = elems.length;
1555
	while ( i-- ) {
1556
		addEvent( elems[i], type, fn );
1557
	}
1558
}
1559
1560
function hasClass( elem, name ) {
1561
	return (" " + elem.className + " ").indexOf(" " + name + " ") > -1;
1562
}
1563
1564
function addClass( elem, name ) {
1565
	if ( !hasClass( elem, name ) ) {
1566
		elem.className += (elem.className ? " " : "") + name;
1567
	}
1568
}
1569
1570
function removeClass( elem, name ) {
1571
	var set = " " + elem.className + " ";
1572
	// Class name may appear multiple times
1573
	while ( set.indexOf(" " + name + " ") > -1 ) {
1574
		set = set.replace(" " + name + " " , " ");
1575
	}
1576
	// If possible, trim it for prettiness, but not necessarily
1577
	elem.className = typeof set.trim === "function" ? set.trim() : set.replace(/^\s+|\s+$/g, "");
1578
}
1579
1580
function id( name ) {
1581
	return !!( typeof document !== "undefined" && document && document.getElementById ) &&
1582
		document.getElementById( name );
1583
}
1584
1585
function registerLoggingCallback( key ) {
1586
	return function( callback ) {
1587
		config[key].push( callback );
1588
	};
1589
}
1590
1591
// Supports deprecated method of completely overwriting logging callbacks
1592
function runLoggingCallbacks( key, scope, args ) {
1593
	var i, callbacks;
1594
	if ( QUnit.hasOwnProperty( key ) ) {
1595
		QUnit[ key ].call(scope, args );
1596
	} else {
1597
		callbacks = config[ key ];
1598
		for ( i = 0; i < callbacks.length; i++ ) {
1599
			callbacks[ i ].call( scope, args );
1600
		}
1601
	}
1602
}
1603
1604
// Test for equality any JavaScript type.
1605
// Author: Philippe Rathé <prathe@gmail.com>
1606
QUnit.equiv = (function() {
1607
1608
	// Call the o related callback with the given arguments.
1609
	function bindCallbacks( o, callbacks, args ) {
1610
		var prop = QUnit.objectType( o );
1611
		if ( prop ) {
1612
			if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
1613
				return callbacks[ prop ].apply( callbacks, args );
1614
			} else {
1615
				return callbacks[ prop ]; // or undefined
1616
			}
1617
		}
1618
	}
1619
1620
	// the real equiv function
1621
	var innerEquiv,
1622
		// stack to decide between skip/abort functions
1623
		callers = [],
1624
		// stack to avoiding loops from circular referencing
1625
		parents = [],
1626
		parentsB = [],
1627
1628
		getProto = Object.getPrototypeOf || function ( obj ) {
1629
			/*jshint camelcase:false */
1630
			return obj.__proto__;
1631
		},
1632
		callbacks = (function () {
1633
1634
			// for string, boolean, number and null
1635
			function useStrictEquality( b, a ) {
1636
				/*jshint eqeqeq:false */
1637
				if ( b instanceof a.constructor || a instanceof b.constructor ) {
1638
					// to catch short annotation VS 'new' annotation of a
1639
					// declaration
1640
					// e.g. var i = 1;
1641
					// var j = new Number(1);
1642
					return a == b;
1643
				} else {
1644
					return a === b;
1645
				}
1646
			}
1647
1648
			return {
1649
				"string": useStrictEquality,
1650
				"boolean": useStrictEquality,
1651
				"number": useStrictEquality,
1652
				"null": useStrictEquality,
1653
				"undefined": useStrictEquality,
1654
1655
				"nan": function( b ) {
1656
					return isNaN( b );
1657
				},
1658
1659
				"date": function( b, a ) {
1660
					return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
1661
				},
1662
1663
				"regexp": function( b, a ) {
1664
					return QUnit.objectType( b ) === "regexp" &&
1665
						// the regex itself
1666
						a.source === b.source &&
1667
						// and its modifiers
1668
						a.global === b.global &&
1669
						// (gmi) ...
1670
						a.ignoreCase === b.ignoreCase &&
1671
						a.multiline === b.multiline &&
1672
						a.sticky === b.sticky;
1673
				},
1674
1675
				// - skip when the property is a method of an instance (OOP)
1676
				// - abort otherwise,
1677
				// initial === would have catch identical references anyway
1678
				"function": function() {
1679
					var caller = callers[callers.length - 1];
1680
					return caller !== Object && typeof caller !== "undefined";
1681
				},
1682
1683
				"array": function( b, a ) {
1684
					var i, j, len, loop, aCircular, bCircular;
1685
1686
					// b could be an object literal here
1687
					if ( QUnit.objectType( b ) !== "array" ) {
1688
						return false;
1689
					}
1690
1691
					len = a.length;
1692
					if ( len !== b.length ) {
1693
						// safe and faster
1694
						return false;
1695
					}
1696
1697
					// track reference to avoid circular references
1698
					parents.push( a );
1699
					parentsB.push( b );
1700
					for ( i = 0; i < len; i++ ) {
1701
						loop = false;
1702
						for ( j = 0; j < parents.length; j++ ) {
1703
							aCircular = parents[j] === a[i];
1704
							bCircular = parentsB[j] === b[i];
1705
							if ( aCircular || bCircular ) {
1706
								if ( a[i] === b[i] || aCircular && bCircular ) {
1707
									loop = true;
1708
								} else {
1709
									parents.pop();
1710
									parentsB.pop();
1711
									return false;
1712
								}
1713
							}
1714
						}
1715
						if ( !loop && !innerEquiv(a[i], b[i]) ) {
1716
							parents.pop();
1717
							parentsB.pop();
1718
							return false;
1719
						}
1720
					}
1721
					parents.pop();
1722
					parentsB.pop();
1723
					return true;
1724
				},
1725
1726
				"object": function( b, a ) {
1727
					/*jshint forin:false */
1728
					var i, j, loop, aCircular, bCircular,
1729
						// Default to true
1730
						eq = true,
1731
						aProperties = [],
1732
						bProperties = [];
1733
1734
					// comparing constructors is more strict than using
1735
					// instanceof
1736
					if ( a.constructor !== b.constructor ) {
1737
						// Allow objects with no prototype to be equivalent to
1738
						// objects with Object as their constructor.
1739
						if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||
1740
							( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {
1741
								return false;
1742
						}
1743
					}
1744
1745
					// stack constructor before traversing properties
1746
					callers.push( a.constructor );
1747
1748
					// track reference to avoid circular references
1749
					parents.push( a );
1750
					parentsB.push( b );
1751
1752
					// be strict: don't ensure hasOwnProperty and go deep
1753
					for ( i in a ) {
1754
						loop = false;
1755
						for ( j = 0; j < parents.length; j++ ) {
1756
							aCircular = parents[j] === a[i];
1757
							bCircular = parentsB[j] === b[i];
1758
							if ( aCircular || bCircular ) {
1759
								if ( a[i] === b[i] || aCircular && bCircular ) {
1760
									loop = true;
1761
								} else {
1762
									eq = false;
1763
									break;
1764
								}
1765
							}
1766
						}
1767
						aProperties.push(i);
1768
						if ( !loop && !innerEquiv(a[i], b[i]) ) {
1769
							eq = false;
1770
							break;
1771
						}
1772
					}
1773
1774
					parents.pop();
1775
					parentsB.pop();
1776
					callers.pop(); // unstack, we are done
1777
1778
					for ( i in b ) {
1779
						bProperties.push( i ); // collect b's properties
1780
					}
1781
1782
					// Ensures identical properties name
1783
					return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
1784
				}
1785
			};
1786
		}());
1787
1788
	innerEquiv = function() { // can take multiple arguments
1789
		var args = [].slice.apply( arguments );
1790
		if ( args.length < 2 ) {
1791
			return true; // end transition
1792
		}
1793
1794
		return (function( a, b ) {
1795
			if ( a === b ) {
1796
				return true; // catch the most you can
1797
			} else if ( a === null || b === null || typeof a === "undefined" ||
1798
					typeof b === "undefined" ||
1799
					QUnit.objectType(a) !== QUnit.objectType(b) ) {
1800
				return false; // don't lose time with error prone cases
1801
			} else {
1802
				return bindCallbacks(a, callbacks, [ b, a ]);
1803
			}
1804
1805
			// apply transition with (1..n) arguments
1806
		}( args[0], args[1] ) && innerEquiv.apply( this, args.splice(1, args.length - 1 )) );
1807
	};
1808
1809
	return innerEquiv;
1810
}());
1811
1812
/**
1813
 * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
1814
 * http://flesler.blogspot.com Licensed under BSD
1815
 * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008
1816
 *
1817
 * @projectDescription Advanced and extensible data dumping for Javascript.
1818
 * @version 1.0.0
1819
 * @author Ariel Flesler
1820
 * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
1821
 */
1822
QUnit.jsDump = (function() {
1823
	function quote( str ) {
1824
		return "\"" + str.toString().replace( /"/g, "\\\"" ) + "\"";
1825
	}
1826
	function literal( o ) {
1827
		return o + "";
1828
	}
1829
	function join( pre, arr, post ) {
1830
		var s = jsDump.separator(),
1831
			base = jsDump.indent(),
1832
			inner = jsDump.indent(1);
1833
		if ( arr.join ) {
1834
			arr = arr.join( "," + s + inner );
1835
		}
1836
		if ( !arr ) {
1837
			return pre + post;
1838
		}
1839
		return [ pre, inner + arr, base + post ].join(s);
1840
	}
1841
	function array( arr, stack ) {
1842
		var i = arr.length, ret = new Array(i);
1843
		this.up();
1844
		while ( i-- ) {
1845
			ret[i] = this.parse( arr[i] , undefined , stack);
1846
		}
1847
		this.down();
1848
		return join( "[", ret, "]" );
1849
	}
1850
1851
	var reName = /^function (\w+)/,
1852
		jsDump = {
1853
			// type is used mostly internally, you can fix a (custom)type in advance
1854
			parse: function( obj, type, stack ) {
1855
				stack = stack || [ ];
1856
				var inStack, res,
1857
					parser = this.parsers[ type || this.typeOf(obj) ];
1858
1859
				type = typeof parser;
1860
				inStack = inArray( obj, stack );
1861
1862
				if ( inStack !== -1 ) {
1863
					return "recursion(" + (inStack - stack.length) + ")";
1864
				}
1865
				if ( type === "function" )  {
1866
					stack.push( obj );
1867
					res = parser.call( this, obj, stack );
1868
					stack.pop();
1869
					return res;
1870
				}
1871
				return ( type === "string" ) ? parser : this.parsers.error;
1872
			},
1873
			typeOf: function( obj ) {
1874
				var type;
1875
				if ( obj === null ) {
1876
					type = "null";
1877
				} else if ( typeof obj === "undefined" ) {
1878
					type = "undefined";
1879
				} else if ( QUnit.is( "regexp", obj) ) {
1880
					type = "regexp";
1881
				} else if ( QUnit.is( "date", obj) ) {
1882
					type = "date";
1883
				} else if ( QUnit.is( "function", obj) ) {
1884
					type = "function";
1885
				} else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) {
1886
					type = "window";
1887
				} else if ( obj.nodeType === 9 ) {
1888
					type = "document";
1889
				} else if ( obj.nodeType ) {
1890
					type = "node";
1891
				} else if (
1892
					// native arrays
1893
					toString.call( obj ) === "[object Array]" ||
1894
					// NodeList objects
1895
					( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
1896
				) {
1897
					type = "array";
1898
				} else if ( obj.constructor === Error.prototype.constructor ) {
1899
					type = "error";
1900
				} else {
1901
					type = typeof obj;
1902
				}
1903
				return type;
1904
			},
1905
			separator: function() {
1906
				return this.multiline ?	this.HTML ? "<br />" : "\n" : this.HTML ? "&nbsp;" : " ";
1907
			},
1908
			// extra can be a number, shortcut for increasing-calling-decreasing
1909
			indent: function( extra ) {
1910
				if ( !this.multiline ) {
1911
					return "";
1912
				}
1913
				var chr = this.indentChar;
1914
				if ( this.HTML ) {
1915
					chr = chr.replace( /\t/g, "   " ).replace( / /g, "&nbsp;" );
1916
				}
1917
				return new Array( this.depth + ( extra || 0 ) ).join(chr);
1918
			},
1919
			up: function( a ) {
1920
				this.depth += a || 1;
1921
			},
1922
			down: function( a ) {
1923
				this.depth -= a || 1;
1924
			},
1925
			setParser: function( name, parser ) {
1926
				this.parsers[name] = parser;
1927
			},
1928
			// The next 3 are exposed so you can use them
1929
			quote: quote,
1930
			literal: literal,
1931
			join: join,
1932
			//
1933
			depth: 1,
1934
			// This is the list of parsers, to modify them, use jsDump.setParser
1935
			parsers: {
1936
				window: "[Window]",
1937
				document: "[Document]",
1938
				error: function(error) {
1939
					return "Error(\"" + error.message + "\")";
1940
				},
1941
				unknown: "[Unknown]",
1942
				"null": "null",
1943
				"undefined": "undefined",
1944
				"function": function( fn ) {
1945
					var ret = "function",
1946
						// functions never have name in IE
1947
						name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];
1948
1949
					if ( name ) {
1950
						ret += " " + name;
1951
					}
1952
					ret += "( ";
1953
1954
					ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" );
1955
					return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" );
1956
				},
1957
				array: array,
1958
				nodelist: array,
1959
				"arguments": array,
1960
				object: function( map, stack ) {
1961
					/*jshint forin:false */
1962
					var ret = [ ], keys, key, val, i;
1963
					QUnit.jsDump.up();
1964
					keys = [];
1965
					for ( key in map ) {
1966
						keys.push( key );
1967
					}
1968
					keys.sort();
1969
					for ( i = 0; i < keys.length; i++ ) {
1970
						key = keys[ i ];
1971
						val = map[ key ];
1972
						ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) );
1973
					}
1974
					QUnit.jsDump.down();
1975
					return join( "{", ret, "}" );
1976
				},
1977
				node: function( node ) {
1978
					var len, i, val,
1979
						open = QUnit.jsDump.HTML ? "&lt;" : "<",
1980
						close = QUnit.jsDump.HTML ? "&gt;" : ">",
1981
						tag = node.nodeName.toLowerCase(),
1982
						ret = open + tag,
1983
						attrs = node.attributes;
1984
1985
					if ( attrs ) {
1986
						for ( i = 0, len = attrs.length; i < len; i++ ) {
1987
							val = attrs[i].nodeValue;
1988
							// IE6 includes all attributes in .attributes, even ones not explicitly set.
1989
							// Those have values like undefined, null, 0, false, "" or "inherit".
1990
							if ( val && val !== "inherit" ) {
1991
								ret += " " + attrs[i].nodeName + "=" + QUnit.jsDump.parse( val, "attribute" );
1992
							}
1993
						}
1994
					}
1995
					ret += close;
1996
1997
					// Show content of TextNode or CDATASection
1998
					if ( node.nodeType === 3 || node.nodeType === 4 ) {
1999
						ret += node.nodeValue;
2000
					}
2001
2002
					return ret + open + "/" + tag + close;
2003
				},
2004
				// function calls it internally, it's the arguments part of the function
2005
				functionArgs: function( fn ) {
2006
					var args,
2007
						l = fn.length;
2008
2009
					if ( !l ) {
2010
						return "";
2011
					}
2012
2013
					args = new Array(l);
2014
					while ( l-- ) {
2015
						// 97 is 'a'
2016
						args[l] = String.fromCharCode(97+l);
2017
					}
2018
					return " " + args.join( ", " ) + " ";
2019
				},
2020
				// object calls it internally, the key part of an item in a map
2021
				key: quote,
2022
				// function calls it internally, it's the content of the function
2023
				functionCode: "[code]",
2024
				// node calls it internally, it's an html attribute value
2025
				attribute: quote,
2026
				string: quote,
2027
				date: quote,
2028
				regexp: literal,
2029
				number: literal,
2030
				"boolean": literal
2031
			},
2032
			// if true, entities are escaped ( <, >, \t, space and \n )
2033
			HTML: false,
2034
			// indentation unit
2035
			indentChar: "  ",
2036
			// if true, items in a collection, are separated by a \n, else just a space.
2037
			multiline: true
2038
		};
2039
2040
	return jsDump;
2041
}());
2042
2043
// from jquery.js
2044
function inArray( elem, array ) {
2045
	if ( array.indexOf ) {
2046
		return array.indexOf( elem );
2047
	}
2048
2049
	for ( var i = 0, length = array.length; i < length; i++ ) {
2050
		if ( array[ i ] === elem ) {
2051
			return i;
2052
		}
2053
	}
2054
2055
	return -1;
2056
}
2057
2058
/*
2059
 * Javascript Diff Algorithm
2060
 *  By John Resig (http://ejohn.org/)
2061
 *  Modified by Chu Alan "sprite"
2062
 *
2063
 * Released under the MIT license.
2064
 *
2065
 * More Info:
2066
 *  http://ejohn.org/projects/javascript-diff-algorithm/
2067
 *
2068
 * Usage: QUnit.diff(expected, actual)
2069
 *
2070
 * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
2071
 */
2072
QUnit.diff = (function() {
2073
	/*jshint eqeqeq:false, eqnull:true */
2074
	function diff( o, n ) {
2075
		var i,
2076
			ns = {},
2077
			os = {};
2078
2079
		for ( i = 0; i < n.length; i++ ) {
2080
			if ( !hasOwn.call( ns, n[i] ) ) {
2081
				ns[ n[i] ] = {
2082
					rows: [],
2083
					o: null
2084
				};
2085
			}
2086
			ns[ n[i] ].rows.push( i );
2087
		}
2088
2089
		for ( i = 0; i < o.length; i++ ) {
2090
			if ( !hasOwn.call( os, o[i] ) ) {
2091
				os[ o[i] ] = {
2092
					rows: [],
2093
					n: null
2094
				};
2095
			}
2096
			os[ o[i] ].rows.push( i );
2097
		}
2098
2099
		for ( i in ns ) {
2100
			if ( hasOwn.call( ns, i ) ) {
2101
				if ( ns[i].rows.length === 1 && hasOwn.call( os, i ) && os[i].rows.length === 1 ) {
2102
					n[ ns[i].rows[0] ] = {
2103
						text: n[ ns[i].rows[0] ],
2104
						row: os[i].rows[0]
2105
					};
2106
					o[ os[i].rows[0] ] = {
2107
						text: o[ os[i].rows[0] ],
2108
						row: ns[i].rows[0]
2109
					};
2110
				}
2111
			}
2112
		}
2113
2114
		for ( i = 0; i < n.length - 1; i++ ) {
2115
			if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&
2116
						n[ i + 1 ] == o[ n[i].row + 1 ] ) {
2117
2118
				n[ i + 1 ] = {
2119
					text: n[ i + 1 ],
2120
					row: n[i].row + 1
2121
				};
2122
				o[ n[i].row + 1 ] = {
2123
					text: o[ n[i].row + 1 ],
2124
					row: i + 1
2125
				};
2126
			}
2127
		}
2128
2129
		for ( i = n.length - 1; i > 0; i-- ) {
2130
			if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&
2131
						n[ i - 1 ] == o[ n[i].row - 1 ]) {
2132
2133
				n[ i - 1 ] = {
2134
					text: n[ i - 1 ],
2135
					row: n[i].row - 1
2136
				};
2137
				o[ n[i].row - 1 ] = {
2138
					text: o[ n[i].row - 1 ],
2139
					row: i - 1
2140
				};
2141
			}
2142
		}
2143
2144
		return {
2145
			o: o,
2146
			n: n
2147
		};
2148
	}
2149
2150
	return function( o, n ) {
2151
		o = o.replace( /\s+$/, "" );
2152
		n = n.replace( /\s+$/, "" );
2153
2154
		var i, pre,
2155
			str = "",
2156
			out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ),
2157
			oSpace = o.match(/\s+/g),
2158
			nSpace = n.match(/\s+/g);
2159
2160
		if ( oSpace == null ) {
2161
			oSpace = [ " " ];
2162
		}
2163
		else {
2164
			oSpace.push( " " );
2165
		}
2166
2167
		if ( nSpace == null ) {
2168
			nSpace = [ " " ];
2169
		}
2170
		else {
2171
			nSpace.push( " " );
2172
		}
2173
2174
		if ( out.n.length === 0 ) {
2175
			for ( i = 0; i < out.o.length; i++ ) {
2176
				str += "<del>" + out.o[i] + oSpace[i] + "</del>";
2177
			}
2178
		}
2179
		else {
2180
			if ( out.n[0].text == null ) {
2181
				for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {
2182
					str += "<del>" + out.o[n] + oSpace[n] + "</del>";
2183
				}
2184
			}
2185
2186
			for ( i = 0; i < out.n.length; i++ ) {
2187
				if (out.n[i].text == null) {
2188
					str += "<ins>" + out.n[i] + nSpace[i] + "</ins>";
2189
				}
2190
				else {
2191
					// `pre` initialized at top of scope
2192
					pre = "";
2193
2194
					for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {
2195
						pre += "<del>" + out.o[n] + oSpace[n] + "</del>";
2196
					}
2197
					str += " " + out.n[i].text + nSpace[i] + pre;
2198
				}
2199
			}
2200
		}
2201
2202
		return str;
2203
	};
2204
}());
2205
2206
// for CommonJS environments, export everything
2207
if ( typeof exports !== "undefined" ) {
2208
	extend( exports, QUnit.constructor.prototype );
2209
}
2210
2211
// get at whatever the global object is, like window in browsers
2212
}( (function() {return this;}.call()) ));
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/tests/tests.js (+188 lines)
Line 0 Link Here
1
test("getRootNodes()", function() {
2
    var rootNodes = $('#tree-1').treegrid('getRootNodes');
3
    ok(rootNodes.length === 2, "Length need to be 2");
4
    equal($(rootNodes.get(0)).attr('id'), 'node-1', 'Test node 1');
5
    equal($(rootNodes.get(1)).attr('id'), 'node-2', 'Test node 2');
6
    var rootNodes2 = $('#node-1-1-2-1').treegrid('getRootNodes');
7
    equal(rootNodes.length, rootNodes2.length, "Length need to be equal");
8
});
9
10
test("isolated options", function() {
11
    ok($('#node-1-1-2-1').treegrid('getSetting', 'initialState') !== $('#tnode-1-1-2-1').treegrid('getSetting', 'initialState'), "need to be not equal");
12
});
13
14
test("treeColumn test", function() {
15
    ok($($('#node-1-1-2').find('td').get(1)).find('.treegrid-expander').length === 0, "0");
16
    ok($($('#node-1-1-2').find('td').get(0)).find('.treegrid-expander').length === 1, "1");
17
    ok($($('#tnode-1-1-2').find('td').get(0)).find('.treegrid-expander').length === 0, "0");
18
    ok($($('#tnode-1-1-2').find('td').get(1)).find('.treegrid-expander').length === 1, "1");
19
});
20
21
test("getNodeId()", function() {
22
    equal($('#node-1-1-2-1').treegrid('getNodeId'), 10, "Return 10");
23
    equal($('#node-1-1-2').treegrid('getNodeId'), 9, "Return 9");
24
});
25
26
test("getParentNodeId()", function() {
27
    equal($('#node-1-1-2-1').treegrid('getParentNodeId'), 9, "Return 9");
28
    equal($('#node-1-1-2').treegrid('getParentNodeId'), 2, "Return 2");
29
    equal($('#node-1-1-2').treegrid('getParentNodeId'), $('#node-1-1').treegrid('getNodeId'), "Equal id");
30
});
31
32
test("getParentNode()", function() {
33
    equal($('#node-1-1-2-1').treegrid('getParentNode').treegrid('getNodeId'), 9, "Return 9");
34
    equal($('#node-1').treegrid('getParentNode'), null, "Return null");
35
});
36
37
test("getChildNodes()", function() {
38
    equal($('#node-1').treegrid('getChildNodes').length, 5, "Return 5");
39
    equal($('#node-1-1-2-1').treegrid('getChildNodes').length, [], "Return []");
40
});
41
42
test("getDepth()", function() {
43
    equal($('#node-1').treegrid('getDepth'), 0, "Return 0");
44
    equal($('#node-1-1-2-1').treegrid('getDepth'), 3, "Return 3");
45
});
46
47
test("isLeaf()", function() {
48
    ok($('#node-1-1-2-1').treegrid('isLeaf') === true, "true");
49
    ok($('#node-1').treegrid('isLeaf') === false, "false");
50
});
51
52
test("isLast()", function() {
53
    //Test root nodes
54
    ok($('#node-1').treegrid('isLast') === false, "Not Last!");
55
    ok($('#node-2').treegrid('isLast') === true, "Last!");
56
    //Test nodes with branch
57
    ok($('#node-1-4').treegrid('isLast') === false, "Not Last test!");
58
    ok($('#node-1-5').treegrid('isLast') === true, "Last test!");
59
    ok($('#node-1-1-2-1').treegrid('isLast') === true, "Last test!");
60
    ok($('#node-1-2').treegrid('isLast') === false, "Not Last test!");
61
});
62
63
test("isFirst()", function() {
64
    //Test root nodes
65
    ok($('#node-1').treegrid('isFirst') === true, "First!");
66
    ok($('#node-2').treegrid('isFirst') === false, "Not first!");
67
    //Test nodes with branch
68
    ok($('#node-1-1').treegrid('isFirst') === true, "First!");
69
    ok($('#node-1-4').treegrid('isFirst') === false, "Not first!");
70
    ok($('#node-1-1-2-1').treegrid('isFirst') === true, "First!");
71
    ok($('#node-1-2').treegrid('isFirst') === false, "Not First!");
72
});
73
74
test("isRoot()", function() {
75
    ok($('#node-1').treegrid('isRoot') === true, "Root test!");
76
    ok($('#node-1-2').treegrid('isRoot') === false, "Not Root test!");
77
    ok($('#node-2').treegrid('isRoot') === true, "Other root test!");
78
});
79
80
test("expand(), collapse(), isExpanded(), isCollapsed()", function() {
81
    $('#node-1').treegrid('expand');
82
    ok($('#node-1').treegrid('isExpanded') === true, "Expanded");
83
    ok($('#node-1').hasClass('treegrid-expanded'), "Expanded class");
84
    $('#node-1').treegrid('collapse');
85
    ok($('#node-1').treegrid('isCollapsed') === true, "Collapsed");
86
    ok($('#node-1').hasClass('treegrid-collapsed'), "Collapsed class");
87
    $('#node-1').find('.treegrid-expander').click();
88
    ok($('#node-1').treegrid('isExpanded') === true, "Expanded after click simulate");
89
    $('#node-1').treegrid('collapse');
90
    ok($('#node-1-1').is(':visible') === false, "hidden child node 1-1");
91
    ok($('#node-1-1-2').is(':visible') === false, "hidden child node 1-1-2");
92
    ok($('#node-1-1-2-1').is(':visible') === false, "hidden child node 1-1-2-1");
93
});
94
95
test("expandAll()", function() {
96
    $('#tree-1').treegrid('expandAll');
97
    ok($('#node-1').treegrid('isExpanded') === true, "Expanded");
98
    ok($('#node-1-1').treegrid('isExpanded') === true, "Expanded 1-1");
99
    ok($('#node-1-1-2').treegrid('isExpanded') === true, "Expanded 1-1-2");
100
});
101
102
test("collapseAll()", function() {
103
    $('#tree-1').treegrid('collapseAll');
104
    ok($('#node-1').treegrid('isExpanded') === false, "Collapsed");
105
    ok($('#node-1-1').treegrid('isExpanded') === false, "Collapsed 1-1");
106
    ok($('#node-1-1-2').treegrid('isExpanded') === false, "Collapsed 1-1-2");
107
    $('#node-1-1-2').treegrid('expandAll');
108
    ok($('#node-1-1').treegrid('isExpanded') === true, "Expanded 1-1");
109
});
110
111
test("Save state (cookie method)", function() {
112
    ok($.cookie(saveStateName) !== undefined, "Cookie set");
113
    $.cookie(saveStateName, '1,5');
114
    $('#tnode-1').treegrid('restoreState');
115
    $('#tnode-1-3').treegrid('restoreState');
116
    ok($('#tnode-1').treegrid('isExpanded'), "tnode-1 expanded");
117
    ok($('#tnode-1-3').treegrid('isExpanded'), "tnode-1-3 expanded");
118
    $.cookie(saveStateName, '2');
119
    $('#tnode-1').treegrid('restoreState');
120
    $('#tnode-1-3').treegrid('restoreState');
121
    $('#tnode-1-1').treegrid('restoreState');
122
    ok($('#tnode-1').treegrid('isCollapsed'), "tnode-1 collapsed");
123
    ok($('#tnode-1-3').treegrid('isCollapsed'), "tnode-1-3 collpased");
124
    ok($('#tnode-1-1').treegrid('isExpanded'), "tnode-1-1 expanded");
125
});
126
127
test("Alphanumeric id", function() {
128
    equal($('#anode-1').treegrid('getDepth'), 0, "Return 0");
129
    equal($('#anode-1-1-2-1').treegrid('getDepth'), 3, "Return 3");
130
    equal($('#anode-1').treegrid('getChildNodes').length, 4, "Return 4");
131
    equal($('#anode-1-1-2-1').treegrid('getChildNodes').length, [], "Return []");
132
});
133
134
test("getAllNodes", function() {
135
    equal($('#tree-1').treegrid('getAllNodes').length, 12, "12");
136
});
137
138
test("isNode", function() {
139
    ok($('#tree-head-1').treegrid("isNode") === false, 'Head is not node');
140
    ok($('#tree-summary-1').treegrid("isNode") === false, 'Summary is not node');
141
    ok($('#node-1-1').treegrid("isNode") === true, 'Node is node');
142
});
143
144
test("getLast from getAllNodes", function() {
145
    $('#tree-1').treegrid('getAllNodes').each(function() {
146
        if ($(this).treegrid("isLast")) {
147
            ok($.inArray($(this).treegrid('getNodeId'), [11, 7, 9, 10, 6, 8]));
148
        }
149
    });
150
});
151
152
test("getLast from tr.each", function() {
153
    $('#tree-1').find('tr').each(function() {
154
        if ($(this).treegrid("isNode") && $(this).treegrid("isLast")) {
155
            ok($.inArray($(this).treegrid('getNodeId'), [11, 7, 9, 10, 6, 8]));
156
        }
157
    });
158
});
159
160
test("Event collapse/expand", function() {
161
    var count = 0;
162
    $('#tree-4').find('#anode-1').treegrid("collapse");
163
    $('#tree-4').treegrid("getAllNodes").one("collapse", function(event) {
164
        count++;
165
    });
166
    $('#tree-4').treegrid("getAllNodes").one("expand", function(event) {
167
        count++;
168
    });
169
    $('#tree-4').find('#anode-1').treegrid("expand");
170
    $('#tree-4').find('#anode-1').treegrid("collapse");
171
    equal(count, 2);
172
});
173
174
test("Event change", function() {
175
    var count = 0;
176
    $('#tree-4').find('#anode-1').treegrid("collapse");
177
    var func=function(event) {
178
        count++;
179
    };
180
    $('#tree-4').treegrid("getAllNodes").on("change", func);
181
    $('#tree-4').find('#anode-1').treegrid("expand");
182
    $('#tree-4').find('#anode-1').treegrid("collapse");
183
    $('#tree-4').find('#anode-1').treegrid("expand");
184
    $('#tree-4').find('#anode-1').treegrid("collapse");
185
    $('#tree-4').treegrid("getAllNodes").off("change", func);
186
187
    equal(count, 4);
188
});
(-)a/koha-tmpl/intranet-tmpl/lib/jquery-treegrid/treegrid.jquery.json (-1 / +37 lines)
Line 0 Link Here
0
- 
1
{
2
    "name": "treegrid",
3
    "description": "jquery plugin for showing a HTML table as tree",
4
    "keywords": [
5
        "treegrid",
6
        "tree",
7
        "grid",
8
        "explorer",
9
        "file",
10
        "table",
11
        "tree",
12
        "ui"
13
    ],
14
    "version": "0.3.0",
15
    "title": "TreeGrid plugin for jQuery",
16
    "author": {
17
        "name": "Pomazan Max"
18
    },
19
    "maintainers": [
20
        {
21
            "name": "Pomazan Max"
22
        }
23
    ],
24
    "licenses": [
25
        {
26
            "type": "MIT",
27
            "url": "http://opensource.org/licenses/MIT"
28
        }
29
    ],
30
    "bugs": "https://github.com/maxazan/jquery-treegrid/issues",
31
    "homepage": "http://maxazan.github.io/jquery-treegrid/",
32
    "docs": "http://maxazan.github.io/jquery-treegrid/",
33
    "demo": "http://maxazan.github.io/jquery-treegrid/",
34
    "dependencies": {
35
        "jquery": ">=1.10.0"
36
    }
37
}

Return to bug 15707