├── README.md
├── demo
├── basic.html
├── conditional.html
├── descriptions.html
├── extend.html
├── mask.html
└── vendor
│ ├── bootstrap
│ ├── css
│ │ ├── bootstrap-responsive.css
│ │ ├── bootstrap-responsive.min.css
│ │ ├── bootstrap.css
│ │ └── bootstrap.min.css
│ ├── img
│ │ ├── glyphicons-halflings-white.png
│ │ └── glyphicons-halflings.png
│ └── js
│ │ ├── bootstrap.js
│ │ └── bootstrap.min.js
│ └── jquery-1.9.0.min.js
├── jquery-validate.js
├── jquery-validate.min.js
└── validate.jquery.json
/README.md:
--------------------------------------------------------------------------------
1 | > Coming soon: [A minimalist validation library for client side and server side.](https://github.com/DiegoLopesLima/warble).
2 |
3 | # jQuery Validate
4 |
5 | > License: _MIT_.
6 |
7 | > Version: _1.1.2_.
8 |
9 | > Requires: _jQuery 1.7+_.
10 |
11 | To use _jQuery Validate_ you just need to include in your code a version of the jQuery library equal or more recent than `1.7` and a file with the plugin. Click here to download the plugin.
12 |
13 | After this, you just need select your form and calling the `jQuery.fn.validate` method.
14 |
15 | See a example:
16 | ```javascript
17 | jQuery('form').validate();
18 | ```
19 |
20 | After calling the `jQuery.fn.validate` method, you can validate your fields using data attributes, that are valid to the HTML5, according to the W3C.
21 |
22 | See a example to required field:
23 | ```html
24 |
34 |
35 | Attribute |
36 |
37 | Description |
38 |
39 | Default |
40 |
41 |
42 |
43 | data-conditional |
44 |
45 | Accepts one or more indexes separated by spaces from the `conditional` object that should contain a the boolean return function. |
46 |
47 | |
48 |
49 |
50 |
51 | data-ignore-case |
52 |
53 | Accepts a boolean value to specify if field is case-insensitive. |
54 |
55 | true |
56 |
57 |
58 |
59 | data-mask |
60 |
61 | Accepts a mask to change the field value to the specified format. The mask should use the character groups of the regular expression passed to the `data-pattern` attribute. |
62 |
63 | ${0} |
64 |
65 |
66 |
67 | data-pattern |
68 |
69 | Accepts a regular expression to test the field value. |
70 |
71 | /(?:)/ |
72 |
73 |
74 |
75 | data-prepare |
76 |
77 | Accepts a index from the `prepare` object that should contain a function to receive the field value and returns a new value treated. |
78 |
79 | |
80 |
81 |
82 |
83 | data-required |
84 |
85 | Accepts a boolean value to specify if field is required. |
86 |
87 | false |
88 |
89 |
90 |
91 | data-trim |
92 |
93 | Accepts a boolean value. If true, removes the spaces from the ends in the field value. (The field value is not changed) |
94 |
95 | false |
96 |
97 |
98 |
99 | data-validate |
100 |
101 | You can use the `data-validate` to calling extensions. |
102 |
103 | |
104 |
105 |
106 |
107 | ## Parameters
108 |
109 |
110 |
111 | Parameter |
112 |
113 | Description |
114 |
115 | Default |
116 |
117 |
118 |
119 | conditional |
120 |
121 | Accepts a object to store functions from validation. |
122 |
123 | |
124 |
125 |
126 |
127 | filter |
128 |
129 | Accepts a selector string or function to filter the validated fields. |
130 |
131 | * |
132 |
133 |
134 |
135 | nameSpace |
136 |
137 | A namespace used in all delegates events. |
138 |
139 | validate |
140 |
141 |
142 |
143 | onBlur |
144 |
145 | Accepts a boolean value. If true, triggers the validation when blur the field. |
146 |
147 | false |
148 |
149 |
150 |
151 | onChange |
152 |
153 | Accepts a boolean value. If true, triggers the validation when change the field value. |
154 |
155 | false |
156 |
157 |
158 |
159 | onKeyup |
160 |
161 | Accepts a boolean value. If true, triggers the validation when press any key. |
162 |
163 | false |
164 |
165 |
166 |
167 | onSubmit |
168 |
169 | Accepts a boolean value. If true, triggers the validation when submit the form. |
170 |
171 | true |
172 |
173 |
174 |
175 | prepare |
176 |
177 | Accepts a object to store functions to prepare the field values. |
178 |
179 | |
180 |
181 |
182 |
183 | sendForm |
184 |
185 | Accepts a boolean value. If false, prevents submit the form (Useful to submit forms via AJAX). |
186 |
187 | true |
188 |
189 |
190 |
191 | waiAria |
192 |
193 | Accepts a boolean value. If false, disables WAI-ARIA. |
194 |
195 | true |
196 |
197 |
198 |
199 | ## Callbacks
200 |
201 |
202 |
203 | Callback |
204 |
205 | Description |
206 |
207 |
208 |
209 | valid |
210 |
211 | Accepts a function to be calling when form is valid. The context (`this`) is the current verified form and the parameters are respectively `event` and `options`. |
212 |
213 |
214 |
215 | invalid |
216 |
217 | Accepts a function to be calling when form is invalid. The context (`this`) is the current verified form and the parameters are respectively `event` and `options`. |
218 |
219 |
220 |
221 | eachField |
222 |
223 | Accepts a function to be calling to each field. The context (`this`) is the current verified field and the parameters are respectively `event`, `status` and `options`. |
224 |
225 |
226 |
227 | eachInvalidField |
228 |
229 | Accepts a function to be calling when field is invalid. The context (`this`) is the current verified field and the parameters are respectively `event`, `status` and `options`. |
230 |
231 |
232 |
233 | eachValidField |
234 |
235 | Accepts a function to be calling when field is valid. The context (`this`) is the current verified field and the parameters are respectively `event`, `status` and `options`. |
236 |
237 |
238 |
239 | ## Removing validation
240 | You can remove validation of a form using the `jQuery.fn.validateDestroy` method.
241 |
242 | Example:
243 | ```javascript
244 | jQuery('form').validateDestroy();
245 | ```
246 |
247 | ## Changing the default values of `jQuery.fn.validate`
248 | You can changes the default values of `jQuery.fn.validate` using `jQuery.validateSetup` method.
249 |
250 | Example:
251 | ```javascript
252 | jQuery('form').validateSetup({
253 | sendForm : false,
254 | onKeyup : true
255 | });
256 | ```
257 |
258 | ## Creating descriptions
259 | You can create descriptions to the field states.
260 |
261 | Example:
262 | ```html
263 |
51 |
52 |
53 |
54 |
55 |
56 |
69 |
70 |
--------------------------------------------------------------------------------
/demo/vendor/bootstrap/css/bootstrap-responsive.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Responsive v2.2.2
3 | *
4 | * Copyright 2012 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 @twitter by @mdo and @fat.
9 | */
10 |
11 | @-ms-viewport {
12 | width: device-width;
13 | }
14 |
15 | .clearfix {
16 | *zoom: 1;
17 | }
18 |
19 | .clearfix:before,
20 | .clearfix:after {
21 | display: table;
22 | line-height: 0;
23 | content: "";
24 | }
25 |
26 | .clearfix:after {
27 | clear: both;
28 | }
29 |
30 | .hide-text {
31 | font: 0/0 a;
32 | color: transparent;
33 | text-shadow: none;
34 | background-color: transparent;
35 | border: 0;
36 | }
37 |
38 | .input-block-level {
39 | display: block;
40 | width: 100%;
41 | min-height: 30px;
42 | -webkit-box-sizing: border-box;
43 | -moz-box-sizing: border-box;
44 | box-sizing: border-box;
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 | @media (min-width: 1200px) {
99 | .row {
100 | margin-left: -30px;
101 | *zoom: 1;
102 | }
103 | .row:before,
104 | .row:after {
105 | display: table;
106 | line-height: 0;
107 | content: "";
108 | }
109 | .row:after {
110 | clear: both;
111 | }
112 | [class*="span"] {
113 | float: left;
114 | min-height: 1px;
115 | margin-left: 30px;
116 | }
117 | .container,
118 | .navbar-static-top .container,
119 | .navbar-fixed-top .container,
120 | .navbar-fixed-bottom .container {
121 | width: 1170px;
122 | }
123 | .span12 {
124 | width: 1170px;
125 | }
126 | .span11 {
127 | width: 1070px;
128 | }
129 | .span10 {
130 | width: 970px;
131 | }
132 | .span9 {
133 | width: 870px;
134 | }
135 | .span8 {
136 | width: 770px;
137 | }
138 | .span7 {
139 | width: 670px;
140 | }
141 | .span6 {
142 | width: 570px;
143 | }
144 | .span5 {
145 | width: 470px;
146 | }
147 | .span4 {
148 | width: 370px;
149 | }
150 | .span3 {
151 | width: 270px;
152 | }
153 | .span2 {
154 | width: 170px;
155 | }
156 | .span1 {
157 | width: 70px;
158 | }
159 | .offset12 {
160 | margin-left: 1230px;
161 | }
162 | .offset11 {
163 | margin-left: 1130px;
164 | }
165 | .offset10 {
166 | margin-left: 1030px;
167 | }
168 | .offset9 {
169 | margin-left: 930px;
170 | }
171 | .offset8 {
172 | margin-left: 830px;
173 | }
174 | .offset7 {
175 | margin-left: 730px;
176 | }
177 | .offset6 {
178 | margin-left: 630px;
179 | }
180 | .offset5 {
181 | margin-left: 530px;
182 | }
183 | .offset4 {
184 | margin-left: 430px;
185 | }
186 | .offset3 {
187 | margin-left: 330px;
188 | }
189 | .offset2 {
190 | margin-left: 230px;
191 | }
192 | .offset1 {
193 | margin-left: 130px;
194 | }
195 | .row-fluid {
196 | width: 100%;
197 | *zoom: 1;
198 | }
199 | .row-fluid:before,
200 | .row-fluid:after {
201 | display: table;
202 | line-height: 0;
203 | content: "";
204 | }
205 | .row-fluid:after {
206 | clear: both;
207 | }
208 | .row-fluid [class*="span"] {
209 | display: block;
210 | float: left;
211 | width: 100%;
212 | min-height: 30px;
213 | margin-left: 2.564102564102564%;
214 | *margin-left: 2.5109110747408616%;
215 | -webkit-box-sizing: border-box;
216 | -moz-box-sizing: border-box;
217 | box-sizing: border-box;
218 | }
219 | .row-fluid [class*="span"]:first-child {
220 | margin-left: 0;
221 | }
222 | .row-fluid .controls-row [class*="span"] + [class*="span"] {
223 | margin-left: 2.564102564102564%;
224 | }
225 | .row-fluid .span12 {
226 | width: 100%;
227 | *width: 99.94680851063829%;
228 | }
229 | .row-fluid .span11 {
230 | width: 91.45299145299145%;
231 | *width: 91.39979996362975%;
232 | }
233 | .row-fluid .span10 {
234 | width: 82.90598290598291%;
235 | *width: 82.8527914166212%;
236 | }
237 | .row-fluid .span9 {
238 | width: 74.35897435897436%;
239 | *width: 74.30578286961266%;
240 | }
241 | .row-fluid .span8 {
242 | width: 65.81196581196582%;
243 | *width: 65.75877432260411%;
244 | }
245 | .row-fluid .span7 {
246 | width: 57.26495726495726%;
247 | *width: 57.21176577559556%;
248 | }
249 | .row-fluid .span6 {
250 | width: 48.717948717948715%;
251 | *width: 48.664757228587014%;
252 | }
253 | .row-fluid .span5 {
254 | width: 40.17094017094017%;
255 | *width: 40.11774868157847%;
256 | }
257 | .row-fluid .span4 {
258 | width: 31.623931623931625%;
259 | *width: 31.570740134569924%;
260 | }
261 | .row-fluid .span3 {
262 | width: 23.076923076923077%;
263 | *width: 23.023731587561375%;
264 | }
265 | .row-fluid .span2 {
266 | width: 14.52991452991453%;
267 | *width: 14.476723040552828%;
268 | }
269 | .row-fluid .span1 {
270 | width: 5.982905982905983%;
271 | *width: 5.929714493544281%;
272 | }
273 | .row-fluid .offset12 {
274 | margin-left: 105.12820512820512%;
275 | *margin-left: 105.02182214948171%;
276 | }
277 | .row-fluid .offset12:first-child {
278 | margin-left: 102.56410256410257%;
279 | *margin-left: 102.45771958537915%;
280 | }
281 | .row-fluid .offset11 {
282 | margin-left: 96.58119658119658%;
283 | *margin-left: 96.47481360247316%;
284 | }
285 | .row-fluid .offset11:first-child {
286 | margin-left: 94.01709401709402%;
287 | *margin-left: 93.91071103837061%;
288 | }
289 | .row-fluid .offset10 {
290 | margin-left: 88.03418803418803%;
291 | *margin-left: 87.92780505546462%;
292 | }
293 | .row-fluid .offset10:first-child {
294 | margin-left: 85.47008547008548%;
295 | *margin-left: 85.36370249136206%;
296 | }
297 | .row-fluid .offset9 {
298 | margin-left: 79.48717948717949%;
299 | *margin-left: 79.38079650845607%;
300 | }
301 | .row-fluid .offset9:first-child {
302 | margin-left: 76.92307692307693%;
303 | *margin-left: 76.81669394435352%;
304 | }
305 | .row-fluid .offset8 {
306 | margin-left: 70.94017094017094%;
307 | *margin-left: 70.83378796144753%;
308 | }
309 | .row-fluid .offset8:first-child {
310 | margin-left: 68.37606837606839%;
311 | *margin-left: 68.26968539734497%;
312 | }
313 | .row-fluid .offset7 {
314 | margin-left: 62.393162393162385%;
315 | *margin-left: 62.28677941443899%;
316 | }
317 | .row-fluid .offset7:first-child {
318 | margin-left: 59.82905982905982%;
319 | *margin-left: 59.72267685033642%;
320 | }
321 | .row-fluid .offset6 {
322 | margin-left: 53.84615384615384%;
323 | *margin-left: 53.739770867430444%;
324 | }
325 | .row-fluid .offset6:first-child {
326 | margin-left: 51.28205128205128%;
327 | *margin-left: 51.175668303327875%;
328 | }
329 | .row-fluid .offset5 {
330 | margin-left: 45.299145299145295%;
331 | *margin-left: 45.1927623204219%;
332 | }
333 | .row-fluid .offset5:first-child {
334 | margin-left: 42.73504273504273%;
335 | *margin-left: 42.62865975631933%;
336 | }
337 | .row-fluid .offset4 {
338 | margin-left: 36.75213675213675%;
339 | *margin-left: 36.645753773413354%;
340 | }
341 | .row-fluid .offset4:first-child {
342 | margin-left: 34.18803418803419%;
343 | *margin-left: 34.081651209310785%;
344 | }
345 | .row-fluid .offset3 {
346 | margin-left: 28.205128205128204%;
347 | *margin-left: 28.0987452264048%;
348 | }
349 | .row-fluid .offset3:first-child {
350 | margin-left: 25.641025641025642%;
351 | *margin-left: 25.53464266230224%;
352 | }
353 | .row-fluid .offset2 {
354 | margin-left: 19.65811965811966%;
355 | *margin-left: 19.551736679396257%;
356 | }
357 | .row-fluid .offset2:first-child {
358 | margin-left: 17.094017094017094%;
359 | *margin-left: 16.98763411529369%;
360 | }
361 | .row-fluid .offset1 {
362 | margin-left: 11.11111111111111%;
363 | *margin-left: 11.004728132387708%;
364 | }
365 | .row-fluid .offset1:first-child {
366 | margin-left: 8.547008547008547%;
367 | *margin-left: 8.440625568285142%;
368 | }
369 | input,
370 | textarea,
371 | .uneditable-input {
372 | margin-left: 0;
373 | }
374 | .controls-row [class*="span"] + [class*="span"] {
375 | margin-left: 30px;
376 | }
377 | input.span12,
378 | textarea.span12,
379 | .uneditable-input.span12 {
380 | width: 1156px;
381 | }
382 | input.span11,
383 | textarea.span11,
384 | .uneditable-input.span11 {
385 | width: 1056px;
386 | }
387 | input.span10,
388 | textarea.span10,
389 | .uneditable-input.span10 {
390 | width: 956px;
391 | }
392 | input.span9,
393 | textarea.span9,
394 | .uneditable-input.span9 {
395 | width: 856px;
396 | }
397 | input.span8,
398 | textarea.span8,
399 | .uneditable-input.span8 {
400 | width: 756px;
401 | }
402 | input.span7,
403 | textarea.span7,
404 | .uneditable-input.span7 {
405 | width: 656px;
406 | }
407 | input.span6,
408 | textarea.span6,
409 | .uneditable-input.span6 {
410 | width: 556px;
411 | }
412 | input.span5,
413 | textarea.span5,
414 | .uneditable-input.span5 {
415 | width: 456px;
416 | }
417 | input.span4,
418 | textarea.span4,
419 | .uneditable-input.span4 {
420 | width: 356px;
421 | }
422 | input.span3,
423 | textarea.span3,
424 | .uneditable-input.span3 {
425 | width: 256px;
426 | }
427 | input.span2,
428 | textarea.span2,
429 | .uneditable-input.span2 {
430 | width: 156px;
431 | }
432 | input.span1,
433 | textarea.span1,
434 | .uneditable-input.span1 {
435 | width: 56px;
436 | }
437 | .thumbnails {
438 | margin-left: -30px;
439 | }
440 | .thumbnails > li {
441 | margin-left: 30px;
442 | }
443 | .row-fluid .thumbnails {
444 | margin-left: 0;
445 | }
446 | }
447 |
448 | @media (min-width: 768px) and (max-width: 979px) {
449 | .row {
450 | margin-left: -20px;
451 | *zoom: 1;
452 | }
453 | .row:before,
454 | .row:after {
455 | display: table;
456 | line-height: 0;
457 | content: "";
458 | }
459 | .row:after {
460 | clear: both;
461 | }
462 | [class*="span"] {
463 | float: left;
464 | min-height: 1px;
465 | margin-left: 20px;
466 | }
467 | .container,
468 | .navbar-static-top .container,
469 | .navbar-fixed-top .container,
470 | .navbar-fixed-bottom .container {
471 | width: 724px;
472 | }
473 | .span12 {
474 | width: 724px;
475 | }
476 | .span11 {
477 | width: 662px;
478 | }
479 | .span10 {
480 | width: 600px;
481 | }
482 | .span9 {
483 | width: 538px;
484 | }
485 | .span8 {
486 | width: 476px;
487 | }
488 | .span7 {
489 | width: 414px;
490 | }
491 | .span6 {
492 | width: 352px;
493 | }
494 | .span5 {
495 | width: 290px;
496 | }
497 | .span4 {
498 | width: 228px;
499 | }
500 | .span3 {
501 | width: 166px;
502 | }
503 | .span2 {
504 | width: 104px;
505 | }
506 | .span1 {
507 | width: 42px;
508 | }
509 | .offset12 {
510 | margin-left: 764px;
511 | }
512 | .offset11 {
513 | margin-left: 702px;
514 | }
515 | .offset10 {
516 | margin-left: 640px;
517 | }
518 | .offset9 {
519 | margin-left: 578px;
520 | }
521 | .offset8 {
522 | margin-left: 516px;
523 | }
524 | .offset7 {
525 | margin-left: 454px;
526 | }
527 | .offset6 {
528 | margin-left: 392px;
529 | }
530 | .offset5 {
531 | margin-left: 330px;
532 | }
533 | .offset4 {
534 | margin-left: 268px;
535 | }
536 | .offset3 {
537 | margin-left: 206px;
538 | }
539 | .offset2 {
540 | margin-left: 144px;
541 | }
542 | .offset1 {
543 | margin-left: 82px;
544 | }
545 | .row-fluid {
546 | width: 100%;
547 | *zoom: 1;
548 | }
549 | .row-fluid:before,
550 | .row-fluid:after {
551 | display: table;
552 | line-height: 0;
553 | content: "";
554 | }
555 | .row-fluid:after {
556 | clear: both;
557 | }
558 | .row-fluid [class*="span"] {
559 | display: block;
560 | float: left;
561 | width: 100%;
562 | min-height: 30px;
563 | margin-left: 2.7624309392265194%;
564 | *margin-left: 2.709239449864817%;
565 | -webkit-box-sizing: border-box;
566 | -moz-box-sizing: border-box;
567 | box-sizing: border-box;
568 | }
569 | .row-fluid [class*="span"]:first-child {
570 | margin-left: 0;
571 | }
572 | .row-fluid .controls-row [class*="span"] + [class*="span"] {
573 | margin-left: 2.7624309392265194%;
574 | }
575 | .row-fluid .span12 {
576 | width: 100%;
577 | *width: 99.94680851063829%;
578 | }
579 | .row-fluid .span11 {
580 | width: 91.43646408839778%;
581 | *width: 91.38327259903608%;
582 | }
583 | .row-fluid .span10 {
584 | width: 82.87292817679558%;
585 | *width: 82.81973668743387%;
586 | }
587 | .row-fluid .span9 {
588 | width: 74.30939226519337%;
589 | *width: 74.25620077583166%;
590 | }
591 | .row-fluid .span8 {
592 | width: 65.74585635359117%;
593 | *width: 65.69266486422946%;
594 | }
595 | .row-fluid .span7 {
596 | width: 57.18232044198895%;
597 | *width: 57.12912895262725%;
598 | }
599 | .row-fluid .span6 {
600 | width: 48.61878453038674%;
601 | *width: 48.56559304102504%;
602 | }
603 | .row-fluid .span5 {
604 | width: 40.05524861878453%;
605 | *width: 40.00205712942283%;
606 | }
607 | .row-fluid .span4 {
608 | width: 31.491712707182323%;
609 | *width: 31.43852121782062%;
610 | }
611 | .row-fluid .span3 {
612 | width: 22.92817679558011%;
613 | *width: 22.87498530621841%;
614 | }
615 | .row-fluid .span2 {
616 | width: 14.3646408839779%;
617 | *width: 14.311449394616199%;
618 | }
619 | .row-fluid .span1 {
620 | width: 5.801104972375691%;
621 | *width: 5.747913483013988%;
622 | }
623 | .row-fluid .offset12 {
624 | margin-left: 105.52486187845304%;
625 | *margin-left: 105.41847889972962%;
626 | }
627 | .row-fluid .offset12:first-child {
628 | margin-left: 102.76243093922652%;
629 | *margin-left: 102.6560479605031%;
630 | }
631 | .row-fluid .offset11 {
632 | margin-left: 96.96132596685082%;
633 | *margin-left: 96.8549429881274%;
634 | }
635 | .row-fluid .offset11:first-child {
636 | margin-left: 94.1988950276243%;
637 | *margin-left: 94.09251204890089%;
638 | }
639 | .row-fluid .offset10 {
640 | margin-left: 88.39779005524862%;
641 | *margin-left: 88.2914070765252%;
642 | }
643 | .row-fluid .offset10:first-child {
644 | margin-left: 85.6353591160221%;
645 | *margin-left: 85.52897613729868%;
646 | }
647 | .row-fluid .offset9 {
648 | margin-left: 79.8342541436464%;
649 | *margin-left: 79.72787116492299%;
650 | }
651 | .row-fluid .offset9:first-child {
652 | margin-left: 77.07182320441989%;
653 | *margin-left: 76.96544022569647%;
654 | }
655 | .row-fluid .offset8 {
656 | margin-left: 71.2707182320442%;
657 | *margin-left: 71.16433525332079%;
658 | }
659 | .row-fluid .offset8:first-child {
660 | margin-left: 68.50828729281768%;
661 | *margin-left: 68.40190431409427%;
662 | }
663 | .row-fluid .offset7 {
664 | margin-left: 62.70718232044199%;
665 | *margin-left: 62.600799341718584%;
666 | }
667 | .row-fluid .offset7:first-child {
668 | margin-left: 59.94475138121547%;
669 | *margin-left: 59.838368402492065%;
670 | }
671 | .row-fluid .offset6 {
672 | margin-left: 54.14364640883978%;
673 | *margin-left: 54.037263430116376%;
674 | }
675 | .row-fluid .offset6:first-child {
676 | margin-left: 51.38121546961326%;
677 | *margin-left: 51.27483249088986%;
678 | }
679 | .row-fluid .offset5 {
680 | margin-left: 45.58011049723757%;
681 | *margin-left: 45.47372751851417%;
682 | }
683 | .row-fluid .offset5:first-child {
684 | margin-left: 42.81767955801105%;
685 | *margin-left: 42.71129657928765%;
686 | }
687 | .row-fluid .offset4 {
688 | margin-left: 37.01657458563536%;
689 | *margin-left: 36.91019160691196%;
690 | }
691 | .row-fluid .offset4:first-child {
692 | margin-left: 34.25414364640884%;
693 | *margin-left: 34.14776066768544%;
694 | }
695 | .row-fluid .offset3 {
696 | margin-left: 28.45303867403315%;
697 | *margin-left: 28.346655695309746%;
698 | }
699 | .row-fluid .offset3:first-child {
700 | margin-left: 25.69060773480663%;
701 | *margin-left: 25.584224756083227%;
702 | }
703 | .row-fluid .offset2 {
704 | margin-left: 19.88950276243094%;
705 | *margin-left: 19.783119783707537%;
706 | }
707 | .row-fluid .offset2:first-child {
708 | margin-left: 17.12707182320442%;
709 | *margin-left: 17.02068884448102%;
710 | }
711 | .row-fluid .offset1 {
712 | margin-left: 11.32596685082873%;
713 | *margin-left: 11.219583872105325%;
714 | }
715 | .row-fluid .offset1:first-child {
716 | margin-left: 8.56353591160221%;
717 | *margin-left: 8.457152932878806%;
718 | }
719 | input,
720 | textarea,
721 | .uneditable-input {
722 | margin-left: 0;
723 | }
724 | .controls-row [class*="span"] + [class*="span"] {
725 | margin-left: 20px;
726 | }
727 | input.span12,
728 | textarea.span12,
729 | .uneditable-input.span12 {
730 | width: 710px;
731 | }
732 | input.span11,
733 | textarea.span11,
734 | .uneditable-input.span11 {
735 | width: 648px;
736 | }
737 | input.span10,
738 | textarea.span10,
739 | .uneditable-input.span10 {
740 | width: 586px;
741 | }
742 | input.span9,
743 | textarea.span9,
744 | .uneditable-input.span9 {
745 | width: 524px;
746 | }
747 | input.span8,
748 | textarea.span8,
749 | .uneditable-input.span8 {
750 | width: 462px;
751 | }
752 | input.span7,
753 | textarea.span7,
754 | .uneditable-input.span7 {
755 | width: 400px;
756 | }
757 | input.span6,
758 | textarea.span6,
759 | .uneditable-input.span6 {
760 | width: 338px;
761 | }
762 | input.span5,
763 | textarea.span5,
764 | .uneditable-input.span5 {
765 | width: 276px;
766 | }
767 | input.span4,
768 | textarea.span4,
769 | .uneditable-input.span4 {
770 | width: 214px;
771 | }
772 | input.span3,
773 | textarea.span3,
774 | .uneditable-input.span3 {
775 | width: 152px;
776 | }
777 | input.span2,
778 | textarea.span2,
779 | .uneditable-input.span2 {
780 | width: 90px;
781 | }
782 | input.span1,
783 | textarea.span1,
784 | .uneditable-input.span1 {
785 | width: 28px;
786 | }
787 | }
788 |
789 | @media (max-width: 767px) {
790 | body {
791 | padding-right: 20px;
792 | padding-left: 20px;
793 | }
794 | .navbar-fixed-top,
795 | .navbar-fixed-bottom,
796 | .navbar-static-top {
797 | margin-right: -20px;
798 | margin-left: -20px;
799 | }
800 | .container-fluid {
801 | padding: 0;
802 | }
803 | .dl-horizontal dt {
804 | float: none;
805 | width: auto;
806 | clear: none;
807 | text-align: left;
808 | }
809 | .dl-horizontal dd {
810 | margin-left: 0;
811 | }
812 | .container {
813 | width: auto;
814 | }
815 | .row-fluid {
816 | width: 100%;
817 | }
818 | .row,
819 | .thumbnails {
820 | margin-left: 0;
821 | }
822 | .thumbnails > li {
823 | float: none;
824 | margin-left: 0;
825 | }
826 | [class*="span"],
827 | .uneditable-input[class*="span"],
828 | .row-fluid [class*="span"] {
829 | display: block;
830 | float: none;
831 | width: 100%;
832 | margin-left: 0;
833 | -webkit-box-sizing: border-box;
834 | -moz-box-sizing: border-box;
835 | box-sizing: border-box;
836 | }
837 | .span12,
838 | .row-fluid .span12 {
839 | width: 100%;
840 | -webkit-box-sizing: border-box;
841 | -moz-box-sizing: border-box;
842 | box-sizing: border-box;
843 | }
844 | .row-fluid [class*="offset"]:first-child {
845 | margin-left: 0;
846 | }
847 | .input-large,
848 | .input-xlarge,
849 | .input-xxlarge,
850 | input[class*="span"],
851 | select[class*="span"],
852 | textarea[class*="span"],
853 | .uneditable-input {
854 | display: block;
855 | width: 100%;
856 | min-height: 30px;
857 | -webkit-box-sizing: border-box;
858 | -moz-box-sizing: border-box;
859 | box-sizing: border-box;
860 | }
861 | .input-prepend input,
862 | .input-append input,
863 | .input-prepend input[class*="span"],
864 | .input-append input[class*="span"] {
865 | display: inline-block;
866 | width: auto;
867 | }
868 | .controls-row [class*="span"] + [class*="span"] {
869 | margin-left: 0;
870 | }
871 | .modal {
872 | position: fixed;
873 | top: 20px;
874 | right: 20px;
875 | left: 20px;
876 | width: auto;
877 | margin: 0;
878 | }
879 | .modal.fade {
880 | top: -100px;
881 | }
882 | .modal.fade.in {
883 | top: 20px;
884 | }
885 | }
886 |
887 | @media (max-width: 480px) {
888 | .nav-collapse {
889 | -webkit-transform: translate3d(0, 0, 0);
890 | }
891 | .page-header h1 small {
892 | display: block;
893 | line-height: 20px;
894 | }
895 | input[type="checkbox"],
896 | input[type="radio"] {
897 | border: 1px solid #ccc;
898 | }
899 | .form-horizontal .control-label {
900 | float: none;
901 | width: auto;
902 | padding-top: 0;
903 | text-align: left;
904 | }
905 | .form-horizontal .controls {
906 | margin-left: 0;
907 | }
908 | .form-horizontal .control-list {
909 | padding-top: 0;
910 | }
911 | .form-horizontal .form-actions {
912 | padding-right: 10px;
913 | padding-left: 10px;
914 | }
915 | .media .pull-left,
916 | .media .pull-right {
917 | display: block;
918 | float: none;
919 | margin-bottom: 10px;
920 | }
921 | .media-object {
922 | margin-right: 0;
923 | margin-left: 0;
924 | }
925 | .modal {
926 | top: 10px;
927 | right: 10px;
928 | left: 10px;
929 | }
930 | .modal-header .close {
931 | padding: 10px;
932 | margin: -10px;
933 | }
934 | .carousel-caption {
935 | position: static;
936 | }
937 | }
938 |
939 | @media (max-width: 979px) {
940 | body {
941 | padding-top: 0;
942 | }
943 | .navbar-fixed-top,
944 | .navbar-fixed-bottom {
945 | position: static;
946 | }
947 | .navbar-fixed-top {
948 | margin-bottom: 20px;
949 | }
950 | .navbar-fixed-bottom {
951 | margin-top: 20px;
952 | }
953 | .navbar-fixed-top .navbar-inner,
954 | .navbar-fixed-bottom .navbar-inner {
955 | padding: 5px;
956 | }
957 | .navbar .container {
958 | width: auto;
959 | padding: 0;
960 | }
961 | .navbar .brand {
962 | padding-right: 10px;
963 | padding-left: 10px;
964 | margin: 0 0 0 -5px;
965 | }
966 | .nav-collapse {
967 | clear: both;
968 | }
969 | .nav-collapse .nav {
970 | float: none;
971 | margin: 0 0 10px;
972 | }
973 | .nav-collapse .nav > li {
974 | float: none;
975 | }
976 | .nav-collapse .nav > li > a {
977 | margin-bottom: 2px;
978 | }
979 | .nav-collapse .nav > .divider-vertical {
980 | display: none;
981 | }
982 | .nav-collapse .nav .nav-header {
983 | color: #777777;
984 | text-shadow: none;
985 | }
986 | .nav-collapse .nav > li > a,
987 | .nav-collapse .dropdown-menu a {
988 | padding: 9px 15px;
989 | font-weight: bold;
990 | color: #777777;
991 | -webkit-border-radius: 3px;
992 | -moz-border-radius: 3px;
993 | border-radius: 3px;
994 | }
995 | .nav-collapse .btn {
996 | padding: 4px 10px 4px;
997 | font-weight: normal;
998 | -webkit-border-radius: 4px;
999 | -moz-border-radius: 4px;
1000 | border-radius: 4px;
1001 | }
1002 | .nav-collapse .dropdown-menu li + li a {
1003 | margin-bottom: 2px;
1004 | }
1005 | .nav-collapse .nav > li > a:hover,
1006 | .nav-collapse .dropdown-menu a:hover {
1007 | background-color: #f2f2f2;
1008 | }
1009 | .navbar-inverse .nav-collapse .nav > li > a,
1010 | .navbar-inverse .nav-collapse .dropdown-menu a {
1011 | color: #999999;
1012 | }
1013 | .navbar-inverse .nav-collapse .nav > li > a:hover,
1014 | .navbar-inverse .nav-collapse .dropdown-menu a:hover {
1015 | background-color: #111111;
1016 | }
1017 | .nav-collapse.in .btn-group {
1018 | padding: 0;
1019 | margin-top: 5px;
1020 | }
1021 | .nav-collapse .dropdown-menu {
1022 | position: static;
1023 | top: auto;
1024 | left: auto;
1025 | display: none;
1026 | float: none;
1027 | max-width: none;
1028 | padding: 0;
1029 | margin: 0 15px;
1030 | background-color: transparent;
1031 | border: none;
1032 | -webkit-border-radius: 0;
1033 | -moz-border-radius: 0;
1034 | border-radius: 0;
1035 | -webkit-box-shadow: none;
1036 | -moz-box-shadow: none;
1037 | box-shadow: none;
1038 | }
1039 | .nav-collapse .open > .dropdown-menu {
1040 | display: block;
1041 | }
1042 | .nav-collapse .dropdown-menu:before,
1043 | .nav-collapse .dropdown-menu:after {
1044 | display: none;
1045 | }
1046 | .nav-collapse .dropdown-menu .divider {
1047 | display: none;
1048 | }
1049 | .nav-collapse .nav > li > .dropdown-menu:before,
1050 | .nav-collapse .nav > li > .dropdown-menu:after {
1051 | display: none;
1052 | }
1053 | .nav-collapse .navbar-form,
1054 | .nav-collapse .navbar-search {
1055 | float: none;
1056 | padding: 10px 15px;
1057 | margin: 10px 0;
1058 | border-top: 1px solid #f2f2f2;
1059 | border-bottom: 1px solid #f2f2f2;
1060 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
1061 | -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
1062 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
1063 | }
1064 | .navbar-inverse .nav-collapse .navbar-form,
1065 | .navbar-inverse .nav-collapse .navbar-search {
1066 | border-top-color: #111111;
1067 | border-bottom-color: #111111;
1068 | }
1069 | .navbar .nav-collapse .nav.pull-right {
1070 | float: none;
1071 | margin-left: 0;
1072 | }
1073 | .nav-collapse,
1074 | .nav-collapse.collapse {
1075 | height: 0;
1076 | overflow: hidden;
1077 | }
1078 | .navbar .btn-navbar {
1079 | display: block;
1080 | }
1081 | .navbar-static .navbar-inner {
1082 | padding-right: 10px;
1083 | padding-left: 10px;
1084 | }
1085 | }
1086 |
1087 | @media (min-width: 980px) {
1088 | .nav-collapse.collapse {
1089 | height: auto !important;
1090 | overflow: visible !important;
1091 | }
1092 | }
1093 |
--------------------------------------------------------------------------------
/demo/vendor/bootstrap/css/bootstrap-responsive.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Responsive v2.2.2
3 | *
4 | * Copyright 2012 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 @twitter by @mdo and @fat.
9 | */@-ms-viewport{width:device-width}.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}.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}}@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 .dropdown-menu a:hover{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 .dropdown-menu a:hover{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}}
10 |
--------------------------------------------------------------------------------
/demo/vendor/bootstrap/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DiegoLopesLima/validate/58fe613f33c91cf5294e99d9b05a7729bb3cf191/demo/vendor/bootstrap/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/demo/vendor/bootstrap/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DiegoLopesLima/validate/58fe613f33c91cf5294e99d9b05a7729bb3cf191/demo/vendor/bootstrap/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/demo/vendor/bootstrap/js/bootstrap.js:
--------------------------------------------------------------------------------
1 | /* ===================================================
2 | * bootstrap-transition.js v2.2.2
3 | * http://twitter.github.com/bootstrap/javascript.html#transitions
4 | * ===================================================
5 | * Copyright 2012 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.2.2
62 | * http://twitter.github.com/bootstrap/javascript.html#alerts
63 | * ==========================================================
64 | * Copyright 2012 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.2.2
160 | * http://twitter.github.com/bootstrap/javascript.html#buttons
161 | * ============================================================
162 | * Copyright 2012 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.2.2
264 | * http://twitter.github.com/bootstrap/javascript.html#carousel
265 | * ==========================================================
266 | * Copyright 2012 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.options = options
293 | this.options.pause == 'hover' && this.$element
294 | .on('mouseenter', $.proxy(this.pause, this))
295 | .on('mouseleave', $.proxy(this.cycle, this))
296 | }
297 |
298 | Carousel.prototype = {
299 |
300 | cycle: function (e) {
301 | if (!e) this.paused = false
302 | this.options.interval
303 | && !this.paused
304 | && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
305 | return this
306 | }
307 |
308 | , to: function (pos) {
309 | var $active = this.$element.find('.item.active')
310 | , children = $active.parent().children()
311 | , activePos = children.index($active)
312 | , that = this
313 |
314 | if (pos > (children.length - 1) || pos < 0) return
315 |
316 | if (this.sliding) {
317 | return this.$element.one('slid', function () {
318 | that.to(pos)
319 | })
320 | }
321 |
322 | if (activePos == pos) {
323 | return this.pause().cycle()
324 | }
325 |
326 | return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
327 | }
328 |
329 | , pause: function (e) {
330 | if (!e) this.paused = true
331 | if (this.$element.find('.next, .prev').length && $.support.transition.end) {
332 | this.$element.trigger($.support.transition.end)
333 | this.cycle()
334 | }
335 | clearInterval(this.interval)
336 | this.interval = null
337 | return this
338 | }
339 |
340 | , next: function () {
341 | if (this.sliding) return
342 | return this.slide('next')
343 | }
344 |
345 | , prev: function () {
346 | if (this.sliding) return
347 | return this.slide('prev')
348 | }
349 |
350 | , slide: function (type, next) {
351 | var $active = this.$element.find('.item.active')
352 | , $next = next || $active[type]()
353 | , isCycling = this.interval
354 | , direction = type == 'next' ? 'left' : 'right'
355 | , fallback = type == 'next' ? 'first' : 'last'
356 | , that = this
357 | , e
358 |
359 | this.sliding = true
360 |
361 | isCycling && this.pause()
362 |
363 | $next = $next.length ? $next : this.$element.find('.item')[fallback]()
364 |
365 | e = $.Event('slide', {
366 | relatedTarget: $next[0]
367 | })
368 |
369 | if ($next.hasClass('active')) return
370 |
371 | if ($.support.transition && this.$element.hasClass('slide')) {
372 | this.$element.trigger(e)
373 | if (e.isDefaultPrevented()) return
374 | $next.addClass(type)
375 | $next[0].offsetWidth // force reflow
376 | $active.addClass(direction)
377 | $next.addClass(direction)
378 | this.$element.one($.support.transition.end, function () {
379 | $next.removeClass([type, direction].join(' ')).addClass('active')
380 | $active.removeClass(['active', direction].join(' '))
381 | that.sliding = false
382 | setTimeout(function () { that.$element.trigger('slid') }, 0)
383 | })
384 | } else {
385 | this.$element.trigger(e)
386 | if (e.isDefaultPrevented()) return
387 | $active.removeClass('active')
388 | $next.addClass('active')
389 | this.sliding = false
390 | this.$element.trigger('slid')
391 | }
392 |
393 | isCycling && this.cycle()
394 |
395 | return this
396 | }
397 |
398 | }
399 |
400 |
401 | /* CAROUSEL PLUGIN DEFINITION
402 | * ========================== */
403 |
404 | var old = $.fn.carousel
405 |
406 | $.fn.carousel = function (option) {
407 | return this.each(function () {
408 | var $this = $(this)
409 | , data = $this.data('carousel')
410 | , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
411 | , action = typeof option == 'string' ? option : options.slide
412 | if (!data) $this.data('carousel', (data = new Carousel(this, options)))
413 | if (typeof option == 'number') data.to(option)
414 | else if (action) data[action]()
415 | else if (options.interval) data.cycle()
416 | })
417 | }
418 |
419 | $.fn.carousel.defaults = {
420 | interval: 5000
421 | , pause: 'hover'
422 | }
423 |
424 | $.fn.carousel.Constructor = Carousel
425 |
426 |
427 | /* CAROUSEL NO CONFLICT
428 | * ==================== */
429 |
430 | $.fn.carousel.noConflict = function () {
431 | $.fn.carousel = old
432 | return this
433 | }
434 |
435 | /* CAROUSEL DATA-API
436 | * ================= */
437 |
438 | $(document).on('click.carousel.data-api', '[data-slide]', function (e) {
439 | var $this = $(this), href
440 | , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
441 | , options = $.extend({}, $target.data(), $this.data())
442 | $target.carousel(options)
443 | e.preventDefault()
444 | })
445 |
446 | }(window.jQuery);/* =============================================================
447 | * bootstrap-collapse.js v2.2.2
448 | * http://twitter.github.com/bootstrap/javascript.html#collapse
449 | * =============================================================
450 | * Copyright 2012 Twitter, Inc.
451 | *
452 | * Licensed under the Apache License, Version 2.0 (the "License");
453 | * you may not use this file except in compliance with the License.
454 | * You may obtain a copy of the License at
455 | *
456 | * http://www.apache.org/licenses/LICENSE-2.0
457 | *
458 | * Unless required by applicable law or agreed to in writing, software
459 | * distributed under the License is distributed on an "AS IS" BASIS,
460 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
461 | * See the License for the specific language governing permissions and
462 | * limitations under the License.
463 | * ============================================================ */
464 |
465 |
466 | !function ($) {
467 |
468 | "use strict"; // jshint ;_;
469 |
470 |
471 | /* COLLAPSE PUBLIC CLASS DEFINITION
472 | * ================================ */
473 |
474 | var Collapse = function (element, options) {
475 | this.$element = $(element)
476 | this.options = $.extend({}, $.fn.collapse.defaults, options)
477 |
478 | if (this.options.parent) {
479 | this.$parent = $(this.options.parent)
480 | }
481 |
482 | this.options.toggle && this.toggle()
483 | }
484 |
485 | Collapse.prototype = {
486 |
487 | constructor: Collapse
488 |
489 | , dimension: function () {
490 | var hasWidth = this.$element.hasClass('width')
491 | return hasWidth ? 'width' : 'height'
492 | }
493 |
494 | , show: function () {
495 | var dimension
496 | , scroll
497 | , actives
498 | , hasData
499 |
500 | if (this.transitioning) return
501 |
502 | dimension = this.dimension()
503 | scroll = $.camelCase(['scroll', dimension].join('-'))
504 | actives = this.$parent && this.$parent.find('> .accordion-group > .in')
505 |
506 | if (actives && actives.length) {
507 | hasData = actives.data('collapse')
508 | if (hasData && hasData.transitioning) return
509 | actives.collapse('hide')
510 | hasData || actives.data('collapse', null)
511 | }
512 |
513 | this.$element[dimension](0)
514 | this.transition('addClass', $.Event('show'), 'shown')
515 | $.support.transition && this.$element[dimension](this.$element[0][scroll])
516 | }
517 |
518 | , hide: function () {
519 | var dimension
520 | if (this.transitioning) return
521 | dimension = this.dimension()
522 | this.reset(this.$element[dimension]())
523 | this.transition('removeClass', $.Event('hide'), 'hidden')
524 | this.$element[dimension](0)
525 | }
526 |
527 | , reset: function (size) {
528 | var dimension = this.dimension()
529 |
530 | this.$element
531 | .removeClass('collapse')
532 | [dimension](size || 'auto')
533 | [0].offsetWidth
534 |
535 | this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
536 |
537 | return this
538 | }
539 |
540 | , transition: function (method, startEvent, completeEvent) {
541 | var that = this
542 | , complete = function () {
543 | if (startEvent.type == 'show') that.reset()
544 | that.transitioning = 0
545 | that.$element.trigger(completeEvent)
546 | }
547 |
548 | this.$element.trigger(startEvent)
549 |
550 | if (startEvent.isDefaultPrevented()) return
551 |
552 | this.transitioning = 1
553 |
554 | this.$element[method]('in')
555 |
556 | $.support.transition && this.$element.hasClass('collapse') ?
557 | this.$element.one($.support.transition.end, complete) :
558 | complete()
559 | }
560 |
561 | , toggle: function () {
562 | this[this.$element.hasClass('in') ? 'hide' : 'show']()
563 | }
564 |
565 | }
566 |
567 |
568 | /* COLLAPSE PLUGIN DEFINITION
569 | * ========================== */
570 |
571 | var old = $.fn.collapse
572 |
573 | $.fn.collapse = function (option) {
574 | return this.each(function () {
575 | var $this = $(this)
576 | , data = $this.data('collapse')
577 | , options = typeof option == 'object' && option
578 | if (!data) $this.data('collapse', (data = new Collapse(this, options)))
579 | if (typeof option == 'string') data[option]()
580 | })
581 | }
582 |
583 | $.fn.collapse.defaults = {
584 | toggle: true
585 | }
586 |
587 | $.fn.collapse.Constructor = Collapse
588 |
589 |
590 | /* COLLAPSE NO CONFLICT
591 | * ==================== */
592 |
593 | $.fn.collapse.noConflict = function () {
594 | $.fn.collapse = old
595 | return this
596 | }
597 |
598 |
599 | /* COLLAPSE DATA-API
600 | * ================= */
601 |
602 | $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
603 | var $this = $(this), href
604 | , target = $this.attr('data-target')
605 | || e.preventDefault()
606 | || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
607 | , option = $(target).data('collapse') ? 'toggle' : $this.data()
608 | $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
609 | $(target).collapse(option)
610 | })
611 |
612 | }(window.jQuery);/* ============================================================
613 | * bootstrap-dropdown.js v2.2.2
614 | * http://twitter.github.com/bootstrap/javascript.html#dropdowns
615 | * ============================================================
616 | * Copyright 2012 Twitter, Inc.
617 | *
618 | * Licensed under the Apache License, Version 2.0 (the "License");
619 | * you may not use this file except in compliance with the License.
620 | * You may obtain a copy of the License at
621 | *
622 | * http://www.apache.org/licenses/LICENSE-2.0
623 | *
624 | * Unless required by applicable law or agreed to in writing, software
625 | * distributed under the License is distributed on an "AS IS" BASIS,
626 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
627 | * See the License for the specific language governing permissions and
628 | * limitations under the License.
629 | * ============================================================ */
630 |
631 |
632 | !function ($) {
633 |
634 | "use strict"; // jshint ;_;
635 |
636 |
637 | /* DROPDOWN CLASS DEFINITION
638 | * ========================= */
639 |
640 | var toggle = '[data-toggle=dropdown]'
641 | , Dropdown = function (element) {
642 | var $el = $(element).on('click.dropdown.data-api', this.toggle)
643 | $('html').on('click.dropdown.data-api', function () {
644 | $el.parent().removeClass('open')
645 | })
646 | }
647 |
648 | Dropdown.prototype = {
649 |
650 | constructor: Dropdown
651 |
652 | , toggle: function (e) {
653 | var $this = $(this)
654 | , $parent
655 | , isActive
656 |
657 | if ($this.is('.disabled, :disabled')) return
658 |
659 | $parent = getParent($this)
660 |
661 | isActive = $parent.hasClass('open')
662 |
663 | clearMenus()
664 |
665 | if (!isActive) {
666 | $parent.toggleClass('open')
667 | }
668 |
669 | $this.focus()
670 |
671 | return false
672 | }
673 |
674 | , keydown: function (e) {
675 | var $this
676 | , $items
677 | , $active
678 | , $parent
679 | , isActive
680 | , index
681 |
682 | if (!/(38|40|27)/.test(e.keyCode)) return
683 |
684 | $this = $(this)
685 |
686 | e.preventDefault()
687 | e.stopPropagation()
688 |
689 | if ($this.is('.disabled, :disabled')) return
690 |
691 | $parent = getParent($this)
692 |
693 | isActive = $parent.hasClass('open')
694 |
695 | if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
696 |
697 | $items = $('[role=menu] li:not(.divider):visible a', $parent)
698 |
699 | if (!$items.length) return
700 |
701 | index = $items.index($items.filter(':focus'))
702 |
703 | if (e.keyCode == 38 && index > 0) index-- // up
704 | if (e.keyCode == 40 && index < $items.length - 1) index++ // down
705 | if (!~index) index = 0
706 |
707 | $items
708 | .eq(index)
709 | .focus()
710 | }
711 |
712 | }
713 |
714 | function clearMenus() {
715 | $(toggle).each(function () {
716 | getParent($(this)).removeClass('open')
717 | })
718 | }
719 |
720 | function getParent($this) {
721 | var selector = $this.attr('data-target')
722 | , $parent
723 |
724 | if (!selector) {
725 | selector = $this.attr('href')
726 | selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
727 | }
728 |
729 | $parent = $(selector)
730 | $parent.length || ($parent = $this.parent())
731 |
732 | return $parent
733 | }
734 |
735 |
736 | /* DROPDOWN PLUGIN DEFINITION
737 | * ========================== */
738 |
739 | var old = $.fn.dropdown
740 |
741 | $.fn.dropdown = function (option) {
742 | return this.each(function () {
743 | var $this = $(this)
744 | , data = $this.data('dropdown')
745 | if (!data) $this.data('dropdown', (data = new Dropdown(this)))
746 | if (typeof option == 'string') data[option].call($this)
747 | })
748 | }
749 |
750 | $.fn.dropdown.Constructor = Dropdown
751 |
752 |
753 | /* DROPDOWN NO CONFLICT
754 | * ==================== */
755 |
756 | $.fn.dropdown.noConflict = function () {
757 | $.fn.dropdown = old
758 | return this
759 | }
760 |
761 |
762 | /* APPLY TO STANDARD DROPDOWN ELEMENTS
763 | * =================================== */
764 |
765 | $(document)
766 | .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
767 | .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
768 | .on('touchstart.dropdown.data-api', '.dropdown-menu', function (e) { e.stopPropagation() })
769 | .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
770 | .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
771 |
772 | }(window.jQuery);/* =========================================================
773 | * bootstrap-modal.js v2.2.2
774 | * http://twitter.github.com/bootstrap/javascript.html#modals
775 | * =========================================================
776 | * Copyright 2012 Twitter, Inc.
777 | *
778 | * Licensed under the Apache License, Version 2.0 (the "License");
779 | * you may not use this file except in compliance with the License.
780 | * You may obtain a copy of the License at
781 | *
782 | * http://www.apache.org/licenses/LICENSE-2.0
783 | *
784 | * Unless required by applicable law or agreed to in writing, software
785 | * distributed under the License is distributed on an "AS IS" BASIS,
786 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
787 | * See the License for the specific language governing permissions and
788 | * limitations under the License.
789 | * ========================================================= */
790 |
791 |
792 | !function ($) {
793 |
794 | "use strict"; // jshint ;_;
795 |
796 |
797 | /* MODAL CLASS DEFINITION
798 | * ====================== */
799 |
800 | var Modal = function (element, options) {
801 | this.options = options
802 | this.$element = $(element)
803 | .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
804 | this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
805 | }
806 |
807 | Modal.prototype = {
808 |
809 | constructor: Modal
810 |
811 | , toggle: function () {
812 | return this[!this.isShown ? 'show' : 'hide']()
813 | }
814 |
815 | , show: function () {
816 | var that = this
817 | , e = $.Event('show')
818 |
819 | this.$element.trigger(e)
820 |
821 | if (this.isShown || e.isDefaultPrevented()) return
822 |
823 | this.isShown = true
824 |
825 | this.escape()
826 |
827 | this.backdrop(function () {
828 | var transition = $.support.transition && that.$element.hasClass('fade')
829 |
830 | if (!that.$element.parent().length) {
831 | that.$element.appendTo(document.body) //don't move modals dom position
832 | }
833 |
834 | that.$element
835 | .show()
836 |
837 | if (transition) {
838 | that.$element[0].offsetWidth // force reflow
839 | }
840 |
841 | that.$element
842 | .addClass('in')
843 | .attr('aria-hidden', false)
844 |
845 | that.enforceFocus()
846 |
847 | transition ?
848 | that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) :
849 | that.$element.focus().trigger('shown')
850 |
851 | })
852 | }
853 |
854 | , hide: function (e) {
855 | e && e.preventDefault()
856 |
857 | var that = this
858 |
859 | e = $.Event('hide')
860 |
861 | this.$element.trigger(e)
862 |
863 | if (!this.isShown || e.isDefaultPrevented()) return
864 |
865 | this.isShown = false
866 |
867 | this.escape()
868 |
869 | $(document).off('focusin.modal')
870 |
871 | this.$element
872 | .removeClass('in')
873 | .attr('aria-hidden', true)
874 |
875 | $.support.transition && this.$element.hasClass('fade') ?
876 | this.hideWithTransition() :
877 | this.hideModal()
878 | }
879 |
880 | , enforceFocus: function () {
881 | var that = this
882 | $(document).on('focusin.modal', function (e) {
883 | if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
884 | that.$element.focus()
885 | }
886 | })
887 | }
888 |
889 | , escape: function () {
890 | var that = this
891 | if (this.isShown && this.options.keyboard) {
892 | this.$element.on('keyup.dismiss.modal', function ( e ) {
893 | e.which == 27 && that.hide()
894 | })
895 | } else if (!this.isShown) {
896 | this.$element.off('keyup.dismiss.modal')
897 | }
898 | }
899 |
900 | , hideWithTransition: function () {
901 | var that = this
902 | , timeout = setTimeout(function () {
903 | that.$element.off($.support.transition.end)
904 | that.hideModal()
905 | }, 500)
906 |
907 | this.$element.one($.support.transition.end, function () {
908 | clearTimeout(timeout)
909 | that.hideModal()
910 | })
911 | }
912 |
913 | , hideModal: function (that) {
914 | this.$element
915 | .hide()
916 | .trigger('hidden')
917 |
918 | this.backdrop()
919 | }
920 |
921 | , removeBackdrop: function () {
922 | this.$backdrop.remove()
923 | this.$backdrop = null
924 | }
925 |
926 | , backdrop: function (callback) {
927 | var that = this
928 | , animate = this.$element.hasClass('fade') ? 'fade' : ''
929 |
930 | if (this.isShown && this.options.backdrop) {
931 | var doAnimate = $.support.transition && animate
932 |
933 | this.$backdrop = $('