diff --git a/docs/assets/css/bootstrap-responsive.css b/docs/assets/css/bootstrap-responsive.css index daafa918..63b6bfaa 100644 --- a/docs/assets/css/bootstrap-responsive.css +++ b/docs/assets/css/bootstrap-responsive.css @@ -1038,3 +1038,142 @@ overflow: visible !important; } } +/*! + * Jasny Bootstrap Responsive Extensions j1 + * + * Copyright 2012 Jasny BV + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Extended with pride by @ArnoldDaniels of jasny.net + */ + +.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; +} + +.container-semifluid { + max-width: 1170px; +} + +@media (min-width: 768px) and (max-width: 979px) { + .row-desktop.row-fluid { + width: 100%; + } + .row-desktop.row { + margin-left: 0; + } + .row-desktop > [class*="span"], + .row-desktop > [class*="span"] { + display: block; + float: none; + width: auto; + margin: 0; + } +} + +@media (max-width: 480px) { + .form-horizontal .controls, + .form-horizontal .well .controls, + .small-labels .controls { + margin-left: 0; + } +} + +@media (max-width: 768px) { + .form-horizontal .form-actions { + padding-left: 18px; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .form-horizontal .control-label { + width: 100px; + } + .form-horizontal .controls { + margin-left: 110px; + } + .form-horizontal .form-actions { + padding-left: 110px; + } + .form-horizontal .well .control-label { + width: 80px; + } + .form-horizontal .well .controls { + margin-left: 90px; + } + .small-labels .control-group > label { + width: 50px; + } + .small-labels .controls { + margin-left: 60px; + } + .small-labels .form-actions { + padding-left: 60px; + } +} + +@media (min-width: 1200px) { + .small-labels .control-group > label { + width: 80px; + } + .small-labels .controls { + margin-left: 100px; + } + .small-labels .form-actions { + padding-left: 100px; + } +} + +@media (max-width: 480px) { + .page-alert { + position: static; + width: auto; + } + .page-alert .alert { + width: auto; + margin-left: 0; + border-top-width: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + body > .page-alert { + position: static; + } +} + +@media (min-width: 1200px) { + .page-alert .alert { + width: 700px; + margin-left: -375px; + } +} diff --git a/docs/assets/css/bootstrap.css b/docs/assets/css/bootstrap.css index 0664207a..1628396d 100644 --- a/docs/assets/css/bootstrap.css +++ b/docs/assets/css/bootstrap.css @@ -5622,3 +5622,1414 @@ a.badge:hover { .affix { position: fixed; } +/*! + * Jasny Bootstrap Extensions j1 + * + * Copyright 2012 Jasny BV + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Extended with pride by @ArnoldDaniels of jasny.net + */ + +.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; +} + +.container-semifluid { + max-width: 940px; + padding-right: 20px; + padding-left: 20px; + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container-semifluid:before, +.container-semifluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-semifluid:after { + clear: both; +} + +form > *:last-child { + margin-bottom: 0; +} + +label input[type="image"], +label input[type="checkbox"], +label input[type="radio"] { + vertical-align: middle; +} + +.small-labels .control-group > label { + width: 70px; +} + +.small-labels .controls { + margin-left: 80px; +} + +.small-labels .form-actions { + padding-left: 80px; +} + +.form-vertical .form-horizontal .control-group > label { + text-align: left; +} + +.form-horizontal .form-vertical .control-group > label { + float: none; + padding-top: 0; + text-align: left; +} + +.form-horizontal .form-vertical .controls { + margin-left: 0; +} + +.form-horizontal .form-vertical.form-actions, +.form-horizontal .form-vertical .form-actions { + padding-left: 20px; +} + +.control-group .control-group { + margin-bottom: 0; +} + +.form-horizontal .well .control-label { + width: 120px; +} + +.form-horizontal .well .controls { + margin-left: 140px; +} + +form .well > *:last-child { + margin-bottom: 0; +} + +.uneditable-input, +.uneditable-textarea { + display: inline-block; + padding: 4px 3px 4px 5px; + font-size: 14px; + line-height: 20px; + color: #555555; + cursor: not-allowed; + background-color: #ffffff; + border: 1px solid #eee; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -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); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + height: 20px; + overflow: hidden; + white-space: pre; +} + +.uneditable-textarea { + overflow-x: hidden; + overflow-y: auto; + white-space: pre-wrap; +} + +select[disabled], +textarea[disabled], +input[type="text"][disabled], +input[type="password"][disabled], +input[type="datetime"][disabled], +input[type="datetime-local"][disabled], +input[type="date"][disabled], +input[type="month"][disabled], +input[type="time"][disabled], +input[type="week"][disabled], +input[type="number"][disabled], +input[type="email"][disabled], +input[type="url"][disabled], +input[type="search"][disabled] { + color: #999; +} + +.uneditable-input.disabled, +.uneditable-textarea.disabled { + color: #999; + cursor: not-allowed; + background-color: #f5f5f5; + border-color: #ddd; +} + +textarea, +.uneditable-textarea { + height: 60px; +} + +textarea[rows="1"], +.uneditable-textarea[rows="1"] { + height: 40px; +} + +textarea[rows="2"], +.uneditable-textarea[rows="2"] { + height: 60px; +} + +textarea[rows="3"], +.uneditable-textarea[rows="3"] { + height: 80px; +} + +textarea[rows="4"], +.uneditable-textarea[rows="4"] { + height: 100px; +} + +textarea[rows="5"], +.uneditable-textarea[rows="5"] { + height: 120px; +} + +textarea[rows="6"], +.uneditable-textarea[rows="6"] { + height: 140px; +} + +textarea[rows="7"], +.uneditable-textarea[rows="7"] { + height: 160px; +} + +textarea[rows="8"], +.uneditable-textarea[rows="8"] { + height: 180px; +} + +textarea[rows="9"], +.uneditable-textarea[rows="9"] { + height: 200px; +} + +textarea[rows="10"], +.uneditable-textarea[rows="10"] { + height: 220px; +} + +textarea[rows="11"], +.uneditable-textarea[rows="11"] { + height: 240px; +} + +textarea[rows="12"], +.uneditable-textarea[rows="12"] { + height: 260px; +} + +textarea[rows="13"], +.uneditable-textarea[rows="13"] { + height: 280px; +} + +textarea[rows="14"], +.uneditable-textarea[rows="14"] { + height: 300px; +} + +textarea[rows="15"], +.uneditable-textarea[rows="15"] { + height: 320px; +} + +textarea[rows="16"], +.uneditable-textarea[rows="16"] { + height: 340px; +} + +textarea[rows="17"], +.uneditable-textarea[rows="17"] { + height: 360px; +} + +textarea[rows="18"], +.uneditable-textarea[rows="18"] { + height: 380px; +} + +textarea[rows="19"], +.uneditable-textarea[rows="19"] { + height: 400px; +} + +textarea[rows="20"], +.uneditable-textarea[rows="20"] { + height: 420px; +} + +textarea[rows="21"], +.uneditable-textarea[rows="21"] { + height: 440px; +} + +textarea[rows="22"], +.uneditable-textarea[rows="22"] { + height: 460px; +} + +textarea[rows="23"], +.uneditable-textarea[rows="23"] { + height: 480px; +} + +textarea[rows="24"], +.uneditable-textarea[rows="24"] { + height: 500px; +} + +textarea[rows="25"], +.uneditable-textarea[rows="25"] { + height: 520px; +} + +textarea[rows="26"], +.uneditable-textarea[rows="26"] { + height: 540px; +} + +textarea[rows="27"], +.uneditable-textarea[rows="27"] { + height: 560px; +} + +textarea[rows="28"], +.uneditable-textarea[rows="28"] { + height: 580px; +} + +textarea[rows="29"], +.uneditable-textarea[rows="29"] { + height: 600px; +} + +textarea[rows="30"], +.uneditable-textarea[rows="30"] { + height: 620px; +} + +textarea[rows="35"], +.uneditable-textarea[rows="35"] { + height: 720px; +} + +textarea[rows="40"], +.uneditable-textarea[rows="40"] { + height: 820px; +} + +textarea[rows="45"], +.uneditable-textarea[rows="45"] { + height: 920px; +} + +textarea[rows="50"], +.uneditable-textarea[rows="50"] { + height: 1020px; +} + +textarea[rows="55"], +.uneditable-textarea[rows="55"] { + height: 1120px; +} + +textarea[rows="60"], +.uneditable-textarea[rows="60"] { + height: 1220px; +} + +textarea[rows="65"], +.uneditable-textarea[rows="65"] { + height: 1320px; +} + +textarea[rows="70"], +.uneditable-textarea[rows="70"] { + height: 1420px; +} + +textarea[rows="75"], +.uneditable-textarea[rows="75"] { + height: 1520px; +} + +textarea[rows="80"], +.uneditable-textarea[rows="80"] { + height: 1620px; +} + +textarea[rows="85"], +.uneditable-textarea[rows="85"] { + height: 1720px; +} + +textarea[rows="90"], +.uneditable-textarea[rows="90"] { + height: 1820px; +} + +textarea[rows="95"], +.uneditable-textarea[rows="95"] { + height: 1920px; +} + +textarea[rows="100"], +.uneditable-textarea[rows="100"] { + height: 2020px; +} + +.uneditable-textarea { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.uneditable-input[class*="span"], +.uneditable-textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .uneditable-textarea[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append .uneditable-input, +.input-prepend .uneditable-input { + vertical-align: top; +} + +.input-append .uneditable-input[class*="span"], +.input-prepend .uneditable-input[class*="span"] { + display: inline-block; +} + +.uneditable-form input[disabled], +.uneditable-form textarea[disabled], +.uneditable-form select[disabled] { + cursor: auto; +} + +.uneditable-form .uneditable-input, +.uneditable-form .uneditable-textarea { + cursor: text; +} + +.uneditable-form .form-actions { + background-color: transparent; +} + +.editor { + width: 100%; + height: 100px; + padding: 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.uneditable-textarea.editor-html { + padding: 5px 3px 5px 5px; + white-space: normal; +} + +textarea.editor-html { + visibility: hidden; +} + +.header-actions { + padding: 0 20px; + line-height: 36px; +} + +.table-actions { + padding-bottom: 20px; + *zoom: 1; +} + +.table-actions:before, +.table-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.table-actions:after { + clear: both; +} + +tr.rowlink td { + cursor: pointer; +} + +tr.rowlink td.nolink { + cursor: auto; +} + +.table tbody tr.rowlink:hover td { + background-color: #cfcfcf; +} + +a.rowlink { + font: inherit; + color: inherit; + text-decoration: inherit; +} + +.act { + display: inline; + padding: 0; + font-weight: bold; + color: #555555; + background: inherit; + border: none; + -webkit-transition: text-shadow 0.1s linear; + -moz-transition: text-shadow 0.1s linear; + -o-transition: text-shadow 0.1s linear; + transition: text-shadow 0.1s linear; +} + +.act:hover { + color: #333333; + text-decoration: none; + text-shadow: 1px 1px 3px rgba(85, 85, 85, 0.5); +} + +.act-primary { + color: #006dcc; +} + +.act-primary:hover { + color: #0044cc; + text-shadow: 1px 1px 3px rgba(0, 109, 204, 0.5); +} + +.act-info { + color: #49afcd; +} + +.act-info:hover { + color: #2f96b4; + text-shadow: 1px 1px 3px rgba(75, 175, 206, 0.5); +} + +.act-success { + color: #51a351; +} + +.act-success:hover { + color: #468847; + text-shadow: 1px 1px 3px rgba(81, 164, 81, 0.5); +} + +.act-warning { + color: #c09853; +} + +.act-warning:hover { + color: #f89406; + text-shadow: 1px 1px 3px rgba(192, 152, 84, 0.5); +} + +.act-danger { + color: #b94a48; +} + +.act-danger:hover { + color: #bd362f; + text-shadow: 1px 1px 3px rgba(185, 72, 70, 0.5); +} + +.act.disabled, +.act[disabled] { + color: #AAAAAA; + cursor: not-allowed; +} + +.act.disabled:hover, +.act[disabled]:hover { + color: #AAAAAA; + text-shadow: none; +} + +.form-actions .act { + line-height: 30px; +} + +@font-face { + font-family: IconicStroke; + font-weight: normal; + src: url('../fonts/iconic_stroke.eot'); + src: local('IconicStroke'), url('iconic_stroke.eot?#iefix') format('../fonts/embedded-opentype'), url('../fonts/iconic_stroke.woff') format('woff'), url('../fonts/iconic_stroke.ttf') format('truetype'), url('iconic_stroke.svg#iconic') format('svg'), url('../fonts/iconic_stroke.otf') format('opentype'); +} + +@font-face { + font-family: IconicFill; + font-weight: normal; + src: url('../fonts/iconic_fill.eot'); + src: local('IconicFill'), url('../fonts/iconic_fill.eot?#iefix') format('embedded-opentype'), url('../fonts/iconic_fill.woff') format('woff'), url('../fonts/iconic_fill.ttf') format('truetype'), url('iconic_fill.svg#iconic') format('svg'), url('../fonts/iconic_fill.otf') format('opentype'); +} + +@media screen, print { + [class*="iconic-"] { + font-style: inherit; + font-weight: normal; + vertical-align: bottom; + } + [class*="iconic-"]:before { + display: inline-block; + width: 1em; + font-family: IconicFill; + font-size: 0.9em; + text-align: center; + vertical-align: middle; + content: ""; + } + .iconic-stroke:before { + font-family: IconicStroke; + } + .iconic-hash:before { + content: '\23'; + } + .iconic-question-mark:before { + content: '\3f'; + } + .iconic-at:before { + content: '\40'; + } + .iconic-pilcrow:before { + content: '\b6'; + } + .iconic-info:before { + content: '\2139'; + } + .iconic-arrow-left:before { + content: '\2190'; + } + .iconic-arrow-up:before { + content: '\2191'; + } + .iconic-arrow-right:before { + content: '\2192'; + } + .iconic-arrow-down:before { + content: '\2193'; + } + .iconic-home:before { + content: '\2302'; + } + .iconic-sun:before { + content: '\2600'; + } + .iconic-cloud:before { + content: '\2601'; + } + .iconic-umbrella:before { + content: '\2602'; + } + .iconic-star:before { + content: '\2605'; + } + .iconic-moon:before { + content: '\263e'; + } + .iconic-heart:before { + content: '\2764'; + } + .iconic-cog:before { + content: '\2699'; + } + .iconic-bolt:before { + content: '\26a1'; + } + .iconic-key:before { + content: '\26bf'; + } + .iconic-rain:before { + content: '\26c6'; + } + .iconic-denied:before { + content: '\26d4'; + } + .iconic-mail:before { + content: '\2709'; + } + .iconic-pen:before { + content: '\270e'; + } + .iconic-x:before { + content: '\2717'; + } + .iconic-o-x:before { + content: '\2718'; + } + .iconic-check:before { + content: '\2713'; + } + .iconic-o-check:before { + content: '\2714'; + } + .iconic-left-quote:before { + content: '\275d'; + } + .iconic-right-quote:before { + content: '\275e'; + } + .iconic-plus:before { + content: '\2795'; + } + .iconic-minus:before { + content: '\2796'; + } + .iconic-curved-arrow:before { + content: '\2935'; + } + .iconic-document-alt:before { + content: '\e000'; + } + .iconic-calendar:before { + content: '\e001'; + } + .iconic-map-pin-alt:before { + content: '\e002'; + } + .iconic-comment-alt1:before { + content: '\e003'; + } + .iconic-comment-alt2:before { + content: '\e004'; + } + .iconic-pen-alt:before { + content: '\e005'; + } + .iconic-pen-alt2:before { + content: '\e006'; + } + .iconic-chat-alt:before { + content: '\e007'; + } + .iconic-o-plus:before { + content: '\e008'; + } + .iconic-o-minus:before { + content: '\e009'; + } + .iconic-bars-alt:before { + content: '\e00a'; + } + .iconic-book-alt:before { + content: '\e00b'; + } + .iconic-aperture-alt:before { + content: '\e00c'; + } + .iconic-beaker-alt:before { + content: '\e010'; + } + .iconic-left-quote-alt:before { + content: '\e011'; + } + .iconic-right-quote-alt:before { + content: '\e012'; + } + .iconic-o-arrow-left:before { + content: '\e013'; + } + .iconic-o-arrow-up:before { + content: '\e014'; + } + .iconic-o-arrow-right:before { + content: '\e015'; + } + .iconic-o-arrow-down:before { + content: '\e016'; + } + .iconic-o-arrow-left-alt:before { + content: '\e017'; + } + .iconic-o-arrow-up-alt:before { + content: '\e018'; + } + .iconic-o-arrow-right-alt:before { + content: '\e019'; + } + .iconic-o-arrow-down-alt:before { + content: '\e01a'; + } + .iconic-brush:before { + content: '\e01b'; + } + .iconic-brush-alt:before { + content: '\e01c'; + } + .iconic-eyedropper:before { + content: '\e01e'; + } + .iconic-layers:before { + content: '\e01f'; + } + .iconic-layers-alt:before { + content: '\e020'; + } + .iconic-compass:before { + content: '\e021'; + } + .iconic-award:before { + content: '\e022'; + } + .iconic-beaker:before { + content: '\e023'; + } + .iconic-steering-wheel:before { + content: '\e024'; + } + .iconic-eye:before { + content: '\e025'; + } + .iconic-aperture:before { + content: '\e026'; + } + .iconic-image:before { + content: '\e027'; + } + .iconic-chart:before { + content: '\e028'; + } + .iconic-chart-alt:before { + content: '\e029'; + } + .iconic-target:before { + content: '\e02a'; + } + .iconic-tag:before { + content: '\e02b'; + } + .iconic-rss:before { + content: '\e02c'; + } + .iconic-rss-alt:before { + content: '\e02d'; + } + .iconic-share:before { + content: '\e02e'; + } + .iconic-undo:before { + content: '\e02f'; + } + .iconic-reload:before { + content: '\e030'; + } + .iconic-reload-alt:before { + content: '\e031'; + } + .iconic-loop:before { + content: '\e032'; + } + .iconic-loop-alt:before { + content: '\e033'; + } + .iconic-back-forth:before { + content: '\e034'; + } + .iconic-back-forth-alt:before { + content: '\e035'; + } + .iconic-spin:before { + content: '\e036'; + } + .iconic-spin-alt:before { + content: '\e037'; + } + .iconic-move-horizontal:before { + content: '\e038'; + } + .iconic-move-horizontal-alt:before { + content: '\e039'; + } + .iconic-o-move-horizontal:before { + content: '\e03a'; + } + .iconic-move-vertical:before { + content: '\e03b'; + } + .iconic-move-vertical-alt:before { + content: '\e03c'; + } + .iconic-o-move-vertical:before { + content: '\e03d'; + } + .iconic-move:before { + content: '\e03e'; + } + .iconic-move-alt:before { + content: '\e03f'; + } + .iconic-o-move:before { + content: '\e040'; + } + .iconic-transfer:before { + content: '\e041'; + } + .iconic-download:before { + content: '\e042'; + } + .iconic-upload:before { + content: '\e043'; + } + .iconic-cloud-download:before { + content: '\e044'; + } + .iconic-cloud-upload:before { + content: '\e045'; + } + .iconic-fork:before { + content: '\e046'; + } + .iconic-play:before { + content: '\e047'; + } + .iconic-o-play:before { + content: '\e048'; + } + .iconic-pause:before { + content: '\e049'; + } + .iconic-stop:before { + content: '\e04a'; + } + .iconic-eject:before { + content: '\e04b'; + } + .iconic-first:before { + content: '\e04c'; + } + .iconic-last:before { + content: '\e04d'; + } + .iconic-fullscreen:before { + content: '\e04e'; + } + .iconic-fullscreen-alt:before { + content: '\e04f'; + } + .iconic-fullscreen-exit:before { + content: '\e050'; + } + .iconic-fullscreen-exit-alt:before { + content: '\e051'; + } + .iconic-equalizer:before { + content: '\e052'; + } + .iconic-article:before { + content: '\e053'; + } + .iconic-read-more:before { + content: '\e054'; + } + .iconic-list:before { + content: '\e055'; + } + .iconic-list-nested:before { + content: '\e056'; + } + .iconic-cursor:before { + content: '\e057'; + } + .iconic-dial:before { + content: '\e058'; + } + .iconic-new-window:before { + content: '\e059'; + } + .iconic-trash:before { + content: '\e05a'; + } + .iconic-battery-half:before { + content: '\e05b'; + } + .iconic-battery-empty:before { + content: '\e05c'; + } + .iconic-battery-charging:before { + content: '\e05d'; + } + .iconic-chat:before { + content: '\e05e'; + } + .iconic-mic:before { + content: '\e05f'; + } + .iconic-movie:before { + content: '\e060'; + } + .iconic-headphones:before { + content: '\e061'; + } + .iconic-user:before { + content: '\e062'; + } + .iconic-lightbulb:before { + content: '\e063'; + } + .iconic-cd:before { + content: '\e064'; + } + .iconic-folder:before { + content: '\e065'; + } + .iconic-document:before { + content: '\e066'; + } + .iconic-pin:before { + content: '\e067'; + } + .iconic-map-pin:before { + content: '\e068'; + } + .iconic-book:before { + content: '\e069'; + } + .iconic-book-alt2:before { + content: '\e06a'; + } + .iconic-box:before { + content: '\e06b'; + } + .iconic-calendar-alt:before { + content: '\e06c'; + } + .iconic-comment:before { + content: '\e06d'; + } + .iconic-iphone:before { + content: '\e06e'; + } + .iconic-bars:before { + content: '\e06f'; + } + .iconic-camera:before { + content: '\e070'; + } + .iconic-volume-mute:before { + content: '\e071'; + } + .iconic-volume:before { + content: '\e072'; + } + .iconic-battery-full:before { + content: '\e073'; + } + .iconic-magnifying-glass:before { + content: '\e074'; + } + .iconic-lock:before { + content: '\e075'; + } + .iconic-unlock:before { + content: '\e076'; + } + .iconic-link:before { + content: '\e077'; + } + .iconic-wrench:before { + content: '\e078'; + } + .iconic-clock:before { + content: '\e079'; + } + .iconic-sun-stroke:before { + font-family: IconicStroke; + content: '\2600'; + } + .iconic-moon-stroke:before { + font-family: IconicStroke; + content: '\263e'; + } + .iconic-star-stroke:before { + font-family: IconicStroke; + content: '\2605'; + } + .iconic-heart-stroke:before { + font-family: IconicStroke; + content: '\2764'; + } + .iconic-key-stroke:before { + font-family: IconicStroke; + content: '\26bf'; + } + .iconic-document-alt-stroke:before { + font-family: IconicStroke; + content: '\e000'; + } + .iconic-comment-alt1-stroke:before { + font-family: IconicStroke; + content: '\e003'; + } + .iconic-comment-alt2-stroke:before { + font-family: IconicStroke; + content: '\e004'; + } + .iconic-pen-alt-stroke:before { + font-family: IconicStroke; + content: '\e005'; + } + .iconic-chat-alt-stroke:before { + font-family: IconicStroke; + content: '\e007'; + } + .iconic-award-stroke:before { + font-family: IconicStroke; + content: '\e022'; + } + .iconic-tag-stroke:before { + font-family: IconicStroke; + content: '\e02b'; + } + .iconic-trash-stroke:before { + font-family: IconicStroke; + content: '\e05a'; + } + .iconic-folder-stroke:before { + font-family: IconicStroke; + content: '\e065'; + } + .iconic-document-stroke:before { + font-family: IconicStroke; + content: '\e066'; + } + .iconic-map-pin-stroke:before { + font-family: IconicStroke; + content: '\e068'; + } + .iconic-calendar-alt-stroke:before { + font-family: IconicStroke; + content: '\e06c'; + } + .iconic-comment-stroke:before { + font-family: IconicStroke; + content: '\e06d'; + } + .iconic-lock-stroke:before { + font-family: IconicStroke; + content: '\e075'; + } + .iconic-unlock-stroke:before { + font-family: IconicStroke; + content: '\e076'; + } +} + +.page-alert { + position: absolute; + top: 0; + left: 50%; + z-index: 1020; + width: 0; +} + +.page-alert .alert { + width: 550px; + margin-left: -300px; + border-top-width: 0; + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.navbar-fixed-top + .page-alert { + top: 40px; +} + +body > .page-alert { + position: fixed; +} + +.btn-file { + position: relative; + overflow: hidden; + vertical-align: middle; +} + +.btn-file > input { + position: absolute; + top: 0; + right: 0; + margin: 0; + cursor: pointer; + border: solid transparent; + border-width: 0 0 100px 200px; + opacity: 0; + filter: alpha(opacity=0); + -moz-transform: translate(-300px, 0) scale(4); + direction: ltr; +} + +.fileupload { + margin-bottom: 9px; +} + +.fileupload .uneditable-input { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + cursor: text; +} + +.fileupload .thumbnail { + display: inline-block; + margin-bottom: 5px; + overflow: hidden; + text-align: center; + vertical-align: middle; +} + +.fileupload .thumbnail > img { + display: inline-block; + max-height: 100%; + vertical-align: middle; +} + +.fileupload .btn { + vertical-align: middle; +} + +.fileupload-exists .fileupload-new, +.fileupload-new .fileupload-exists { + display: none; +} + +.fileupload-inline .fileupload-controls { + display: inline; +} + +.fileupload-new .input-append .btn-file { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.thumbnail-borderless .thumbnail { + padding: 0; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.fileupload-new.thumbnail-borderless .thumbnail { + border: 1px solid #ddd; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + outline: none; +} + +.nav-tabs > li.disabled > a { + color: #CCCCCC; + cursor: not-allowed; +} + +.tabbable { + border-color: #ddd; + border-style: solid; + border-width: 0; + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tabbable > .nav-tabs { + margin: 0; +} + +.tab-content { + padding: 18px 0 0 0; + overflow: auto; + border-color: #ddd; + border-style: solid; + border-width: 0; +} + +.tabbable-bordered { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tabbable-bordered > .tab-content { + padding: 20px 20px 10px 20px; + border-width: 0 1px 1px 1px; + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +body > .container.tabbable > .nav-tabs { + padding-top: 15px; +} + +.tabs-below > .tab-content { + padding: 0 0 10px 0; +} + +.tabs-below.tabbable-bordered > .tab-content { + padding: 20px 20px 10px 20px; + border-width: 1px 1px 0 1px; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +body > .container.tabs-below.tabbable-bodered > .tab-content { + border-top-width: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.tabs-left, +.tabs-right { + margin-bottom: 20px; +} + +.tabs-left > .nav-tabs, +.tabs-right > .nav-tabs { + position: relative; + z-index: 1; + margin-bottom: 0; +} + +.tabs-left > .tab-content, +.tabs-right > .tab-content { + overflow: hidden; +} + +.tabs-left > .nav-tabs { + left: 1px; +} + +.tabs-left > .nav-tabs > .active > a, +.tabs-left > .nav-tabs > .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-left > .tab-content { + padding: 0 0 0 19px; + border-left-width: 1px; +} + +.tabs-left.tabbable-bordered { + border-width: 0 1px 0 0; +} + +.tabs-left.tabbable-bordered > .tab-content { + padding: 20px 20px 10px 20px; + border-width: 1px 0 1px 1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +body > .container.tabs-left.tabbable-bodered > .tab-content { + border-top-width: 0; + -webkit-border-radius: 0 0 4px 0; + -moz-border-radius: 0 0 4px 0; + border-radius: 0 0 4px 0; +} + +.tabs-right > .nav-tabs { + right: 1px; +} + +.tabs-right > .nav-tabs > .active > a, +.tabs-right > .nav-tabs > .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.tabs-right > .tab-content { + padding: 0 19px 0 0; + border-right-width: 1px; +} + +.tabs-right.tabbable-bordered { + border-width: 0 0 0 1px; +} + +.tabs-right.tabbable-bordered > .tab-content { + padding: 20px 20px 10px 20px; + border-width: 1px 1px 1px 0; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +body > .container.tabs-right.tabbable-bodered > .tab-content { + border-top-width: 0; + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; +} + +.modal form { + margin-bottom: 0; +} diff --git a/docs/assets/fonts/iconic_fill.eot b/docs/assets/fonts/iconic_fill.eot new file mode 100644 index 00000000..dc8aa7dc Binary files /dev/null and b/docs/assets/fonts/iconic_fill.eot differ diff --git a/docs/assets/fonts/iconic_fill.otf b/docs/assets/fonts/iconic_fill.otf new file mode 100644 index 00000000..52da7907 Binary files /dev/null and b/docs/assets/fonts/iconic_fill.otf differ diff --git a/docs/assets/fonts/iconic_fill.svg b/docs/assets/fonts/iconic_fill.svg new file mode 100644 index 00000000..f228fab1 --- /dev/null +++ b/docs/assets/fonts/iconic_fill.svg @@ -0,0 +1,475 @@ + + + + +Created by FontForge 20110222 at Thu Dec 29 18:55:15 2011 + By PJ Onori,,, +Icons by PJ Onori, font creation script by Yann + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/fonts/iconic_fill.ttf b/docs/assets/fonts/iconic_fill.ttf new file mode 100644 index 00000000..194a753c Binary files /dev/null and b/docs/assets/fonts/iconic_fill.ttf differ diff --git a/docs/assets/fonts/iconic_fill.woff b/docs/assets/fonts/iconic_fill.woff new file mode 100644 index 00000000..833f4632 Binary files /dev/null and b/docs/assets/fonts/iconic_fill.woff differ diff --git a/docs/assets/fonts/iconic_stroke.eot b/docs/assets/fonts/iconic_stroke.eot new file mode 100644 index 00000000..430ae76c Binary files /dev/null and b/docs/assets/fonts/iconic_stroke.eot differ diff --git a/docs/assets/fonts/iconic_stroke.otf b/docs/assets/fonts/iconic_stroke.otf new file mode 100644 index 00000000..9d611150 Binary files /dev/null and b/docs/assets/fonts/iconic_stroke.otf differ diff --git a/docs/assets/fonts/iconic_stroke.svg b/docs/assets/fonts/iconic_stroke.svg new file mode 100644 index 00000000..18e8c345 --- /dev/null +++ b/docs/assets/fonts/iconic_stroke.svg @@ -0,0 +1,492 @@ + + + + +Created by FontForge 20110222 at Thu Dec 29 18:54:06 2011 + By PJ Onori,,, +Icons by PJ Onori, font creation script by Yann + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/fonts/iconic_stroke.ttf b/docs/assets/fonts/iconic_stroke.ttf new file mode 100644 index 00000000..f0b1878c Binary files /dev/null and b/docs/assets/fonts/iconic_stroke.ttf differ diff --git a/docs/assets/fonts/iconic_stroke.woff b/docs/assets/fonts/iconic_stroke.woff new file mode 100644 index 00000000..b2649347 Binary files /dev/null and b/docs/assets/fonts/iconic_stroke.woff differ diff --git a/docs/assets/js/bootstrap-fileupload.js b/docs/assets/js/bootstrap-fileupload.js new file mode 100644 index 00000000..d25f9153 --- /dev/null +++ b/docs/assets/js/bootstrap-fileupload.js @@ -0,0 +1,137 @@ +/* =========================================================== + * bootstrap-fileupload.js j2 + * http://jasny.github.com/bootstrap/javascript.html#fileupload + * =========================================================== + * Copyright 2012 Jasny BV, Netherlands. + * + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + +!function ($) { + + "use strict"; // jshint ;_ + + /* INPUTMASK PUBLIC CLASS DEFINITION + * ================================= */ + + var Fileupload = function (element, options) { + this.$element = $(element) + this.type = this.$element.data('uploadtype') || (this.$element.find('.thumbnail').length > 0 ? "image" : "file") + + this.$input = this.$element.find(':file') + if (this.$input.length === 0) return + + this.name = this.$input.attr('name') || options.name + + this.$hidden = this.$element.find(':hidden[name="'+this.name+'"]') + if (this.$hidden.length === 0) { + this.$hidden = $('') + this.$element.prepend(this.$hidden) + } + + this.$preview = this.$element.find('.fileupload-preview') + var height = this.$preview.css('height') + if (this.$preview.css('display') != 'inline' && height != '0px' && height != 'none') this.$preview.css('line-height', height) + + this.$remove = this.$element.find('[data-dismiss="fileupload"]') + + this.$element.find('[data-trigger="fileupload"]').on('click.fileupload', $.proxy(this.trigger, this)) + + this.listen() + } + + Fileupload.prototype = { + + listen: function() { + this.$input.on('change.fileupload', $.proxy(this.change, this)) + if (this.$remove) this.$remove.on('click.fileupload', $.proxy(this.clear, this)) + }, + + change: function(e, invoked) { + var file = e.target.files !== undefined ? e.target.files[0] : (e.target.value ? { name: e.target.value.replace(/^.+\\/, '') } : null) + if (!file || invoked === 'clear') return + + this.$hidden.val('') + this.$hidden.attr('name', '') + this.$input.attr('name', this.name) + + if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match('\\.(gif|png|jpe?g)$')) && typeof FileReader !== "undefined") { + var reader = new FileReader() + var preview = this.$preview + var element = this.$element + + reader.onload = function(e) { + preview.html('') + element.addClass('fileupload-exists').removeClass('fileupload-new') + } + + reader.readAsDataURL(file) + } else { + this.$preview.text(file.name) + this.$element.addClass('fileupload-exists').removeClass('fileupload-new') + } + }, + + clear: function(e) { + this.$hidden.val('') + this.$hidden.attr('name', this.name) + this.$input.attr('name', '') + this.$input.val('') // Doesn't work in IE, which causes issues when selecting the same file twice + + this.$preview.html('') + this.$element.addClass('fileupload-new').removeClass('fileupload-exists') + + this.$input.trigger('change', [ 'clear' ]) + + e.preventDefault() + }, + + trigger: function(e) { + this.$input.trigger('click') + e.preventDefault() + } + } + + + /* INPUTMASK PLUGIN DEFINITION + * =========================== */ + + $.fn.fileupload = function (options) { + return this.each(function () { + var $this = $(this) + , data = $this.data('fileupload') + if (!data) $this.data('fileupload', (data = new Fileupload(this, options))) + }) + } + + $.fn.fileupload.Constructor = Fileupload + + + /* INPUTMASK DATA-API + * ================== */ + + $(function () { + $('body').on('click.fileupload.data-api', '[data-provides="fileupload"]', function (e) { + var $this = $(this) + if ($this.data('fileupload')) return + $this.fileupload($this.data()) + + var $target = $(e.target).parents('[data-dismiss=fileupload],[data-trigger=fileupload]').first() + if ($target.length > 0) { + $target.trigger('click.fileupload') + e.preventDefault() + } + }) + }) + +}(window.jQuery) diff --git a/docs/assets/js/bootstrap-inputmask.js b/docs/assets/js/bootstrap-inputmask.js new file mode 100644 index 00000000..438074b6 --- /dev/null +++ b/docs/assets/js/bootstrap-inputmask.js @@ -0,0 +1,361 @@ +/* =========================================================== + * bootstrap-inputmask.js j1 + * http://twitter.github.com/bootstrap/javascript.html#tooltips + * Based on Masked Input plugin by Josh Bush (digitalbush.com) + * =========================================================== + * Copyright 2012 Jasny BV, Netherlands. + * + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + +!function ($) { + + "use strict"; // jshint ;_; + + var isIphone = (window.orientation !== undefined), + isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1 + + $.mask = { + //Predefined character definitions + definitions: { + '9': "[0-9]", + 'a': "[A-Za-z]", + '?': "[A-Za-z0-9]", + '*': "." + }, + dataName:"rawMaskFn" + } + + + /* INPUTMASK PUBLIC CLASS DEFINITION + * ================================= */ + + var Inputmask = function (element, options) { + if (isAndroid) return // No support because caret positioning doesn't work on Android + + this.$element = $(element) + this.mask = options.mask + this.options = $.extend({}, $.fn.inputmask.defaults, options) + + this.init() + this.listen() + + this.checkVal() //Perform initial check for existing values + } + + Inputmask.prototype = { + + init: function() { + var defs = $.mask.definitions + var len = this.mask.length + + this.tests = [] + this.partialPosition = this.mask.length + this.firstNonMaskPos = null + + $.each(this.mask.split(""), $.proxy(function(i, c) { + if (c == '?') { + len-- + this.partialPosition = i + } else if (defs[c]) { + this.tests.push(new RegExp(defs[c])) + if(this.firstNonMaskPos === null) + this.firstNonMaskPos = this.tests.length - 1 + } else { + this.tests.push(null) + } + }, this)) + + this.buffer = $.map(this.mask.split(""), $.proxy(function(c, i) { + if (c != '?') return defs[c] ? this.options.placeholder : c + }, this)) + + this.focusText = this.$element.val() + + this.$element.data($.mask.dataName, $.proxy(function() { + return $.map(this.buffer, function(c, i) { + return this.tests[i] && c != this.options.placeholder ? c : null + }).join('') + }, this)) + }, + + listen: function() { + if (this.$element.attr("readonly")) return + + var pasteEventName = ($.browser.msie ? 'paste' : 'input') + ".mask" + + this.$element + .on("unmask", $.proxy(this.unmask, this)) + + .on("focus.mask", $.proxy(this.focusEvent, this)) + .on("blur.mask", $.proxy(this.blurEvent, this)) + + .on("keydown.mask", $.proxy(this.keydownEvent, this)) + .on("keypress.mask", $.proxy(this.keypressEvent, this)) + + .on(pasteEventName, $.proxy(this.pasteEvent, this)) + }, + + //Helper Function for Caret positioning + caret: function(begin, end) { + if (this.$element.length === 0) return + if (typeof begin == 'number') { + end = (typeof end == 'number') ? end : begin + return this.$element.each(function() { + if (this.setSelectionRange) { + this.setSelectionRange(begin, end) + } else if (this.createTextRange) { + var range = this.createTextRange() + range.collapse(true) + range.moveEnd('character', end) + range.moveStart('character', begin) + range.select() + } + }) + } else { + if (this.$element[0].setSelectionRange) { + begin = this.$element[0].selectionStart + end = this.$element[0].selectionEnd + } else if (document.selection && document.selection.createRange) { + var range = document.selection.createRange() + begin = 0 - range.duplicate().moveStart('character', -100000) + end = begin + range.text.length + } + return { + begin: begin, + end: end + } + } + }, + + seekNext: function(pos) { + var len = this.mask.length + while (++pos <= len && !this.tests[pos]); + + return pos + }, + + seekPrev: function(pos) { + while (--pos >= 0 && !this.tests[pos]); + + return pos + }, + + shiftL: function(begin,end) { + var len = this.mask.length + + if(begin<0) return + + for (var i = begin,j = this.seekNext(end); i < len; i++) { + if (this.tests[i]) { + if (j < len && this.tests[i].test(this.buffer[j])) { + this.buffer[i] = this.buffer[j] + this.buffer[j] = this.options.placeholder + } else + break + j = this.seekNext(j) + } + } + this.writeBuffer() + this.caret(Math.max(this.firstNonMaskPos, begin)) + }, + + shiftR: function(pos) { + var len = this.mask.length + + for (var i = pos, c = this.options.placeholder; i < len; i++) { + if (this.tests[i]) { + var j = this.seekNext(i) + var t = this.buffer[i] + this.buffer[i] = c + if (j < len && this.tests[j].test(t)) + c = t + else + break + } + } + }, + + unmask: function() { + this.$element + .unbind(".mask") + .removeData("inputmask") + }, + + focusEvent: function() { + this.focusText = this.$element.val() + var len = this.mask.length + var pos = this.checkVal() + this.writeBuffer() + + var that = this + var moveCaret = function() { + if (pos == len) + that.caret(0, pos) + else + that.caret(pos) + } + + if ($.browser.msie) + moveCaret() + else + setTimeout(moveCaret, 0) + }, + + blurEvent: function() { + this.checkVal() + if (this.$element.val() != this.focusText) + this.$element.trigger('change') + }, + + keydownEvent: function(e) { + var k=e.which + + //backspace, delete, and escape get special treatment + if (k == 8 || k == 46 || (isIphone && k == 127)) { + var pos = this.caret(), + begin = pos.begin, + end = pos.end + + if (end-begin === 0) { + begin = k!=46 ? this.seekPrev(begin) : (end=this.seekNext(begin-1)) + end = k==46 ? this.seekNext(end) : end + } + this.clearBuffer(begin, end) + this.shiftL(begin,end-1) + + return false + } else if (k == 27) {//escape + this.$element.val(this.focusText) + this.caret(0, this.checkVal()) + return false + } + }, + + keypressEvent: function(e) { + var len = this.mask.length + + var k = e.which, + pos = this.caret() + + if (e.ctrlKey || e.altKey || e.metaKey || k<32) {//Ignore + return true + } else if (k) { + if (pos.end - pos.begin !== 0) { + this.clearBuffer(pos.begin, pos.end) + this.shiftL(pos.begin, pos.end-1) + } + + var p = this.seekNext(pos.begin - 1) + if (p < len) { + var c = String.fromCharCode(k) + if (this.tests[p].test(c)) { + this.shiftR(p) + this.buffer[p] = c + this.writeBuffer() + var next = this.seekNext(p) + this.caret(next) + } + } + return false + } + }, + + pasteEvent: function() { + var that = this + + setTimeout(function() { + that.caret(that.checkVal(true)) + }, 0) + }, + + clearBuffer: function(start, end) { + var len = this.mask.length + + for (var i = start; i < end && i < len; i++) { + if (this.tests[i]) + this.buffer[i] = this.options.placeholder + } + }, + + writeBuffer: function() { + return this.$element.val(this.buffer.join('')).val() + }, + + checkVal: function(allow) { + var len = this.mask.length + //try to place characters where they belong + var test = this.$element.val() + var lastMatch = -1 + + for (var i = 0, pos = 0; i < len; i++) { + if (this.tests[i]) { + this.buffer[i] = this.options.placeholder + while (pos++ < test.length) { + var c = test.charAt(pos - 1) + if (this.tests[i].test(c)) { + this.buffer[i] = c + lastMatch = i + break + } + } + if (pos > test.length) + break + } else if (this.buffer[i] == test.charAt(pos) && i != this.partialPosition) { + pos++ + lastMatch = i + } + } + if (!allow && lastMatch + 1 < this.partialPosition) { + this.$element.val("") + this.clearBuffer(0, len) + } else if (allow || lastMatch + 1 >= this.partialPosition) { + this.writeBuffer() + if (!allow) this.$element.val(this.$element.val().substring(0, lastMatch + 1)) + } + return (this.partialPosition ? i : this.firstNonMaskPos) + } + } + + + /* INPUTMASK PLUGIN DEFINITION + * =========================== */ + + $.fn.inputmask = function (options) { + return this.each(function () { + var $this = $(this) + , data = $this.data('inputmask') + if (!data) $this.data('inputmask', (data = new Inputmask(this, options))) + }) + } + + $.fn.inputmask.defaults = { + placeholder: "_" + } + + $.fn.inputmask.Constructor = Inputmask + + + /* INPUTMASK DATA-API + * ================== */ + + $(function () { + $('body').on('focus.inputmask.data-api', '[data-mask]', function (e) { + var $this = $(this) + if ($this.data('inputmask')) return + e.preventDefault() + $this.inputmask($this.data()) + }) + }) + +}(window.jQuery) \ No newline at end of file diff --git a/docs/assets/js/bootstrap-rowlink.js b/docs/assets/js/bootstrap-rowlink.js new file mode 100644 index 00000000..3b964fd2 --- /dev/null +++ b/docs/assets/js/bootstrap-rowlink.js @@ -0,0 +1,71 @@ +/* ============================================================ + * bootstrap-rowlink.js j1 + * http://jasny.github.com/bootstrap/javascript.html#rowlink + * ============================================================ + * Copyright 2012 Jasny BV, Netherlands. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + +!function ($) { + + "use strict"; // jshint ;_; + + var Rowlink = function (element, options) { + options = $.extend({}, $.fn.rowlink.defaults, options) + var tr = element.nodeName == 'tr' ? $(element) : $(element).find('tr:has(td)') + + tr.each(function() { + var link = $(this).find(options.target).first() + if (!link.length) return + + var href = link.attr('href') + + $(this).find('td').not('.nolink').click(function() { + window.location = href; + }) + + $(this).addClass('rowlink') + link.replaceWith(link.html()) + }) + } + + + /* ROWLINK PLUGIN DEFINITION + * =========================== */ + + $.fn.rowlink = function (options) { + return this.each(function () { + var $this = $(this) + , data = $this.data('rowlink') + if (!data) $this.data('rowlink', (data = new Rowlink(this, options))) + }) + } + + $.fn.rowlink.defaults = { + target: "a" + } + + $.fn.rowlink.Constructor = Rowlink + + + /* ROWLINK DATA-API + * ================== */ + + $(function () { + $('[data-provides="rowlink"]').each(function () { + $(this).rowlink($(this).data()) + }) + }) + +}(window.jQuery) diff --git a/docs/assets/js/bootstrap.js b/docs/assets/js/bootstrap.js index 7f303eb8..1b5139fc 100644 --- a/docs/assets/js/bootstrap.js +++ b/docs/assets/js/bootstrap.js @@ -1921,6 +1921,574 @@ }) }(window.jQuery); +/* =========================================================== + * bootstrap-inputmask.js j1 + * http://twitter.github.com/bootstrap/javascript.html#tooltips + * Based on Masked Input plugin by Josh Bush (digitalbush.com) + * =========================================================== + * Copyright 2012 Jasny BV, Netherlands. + * + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + +!function ($) { + + "use strict"; // jshint ;_; + + var isIphone = (window.orientation !== undefined), + isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1 + + $.mask = { + //Predefined character definitions + definitions: { + '9': "[0-9]", + 'a': "[A-Za-z]", + '?': "[A-Za-z0-9]", + '*': "." + }, + dataName:"rawMaskFn" + } + + + /* INPUTMASK PUBLIC CLASS DEFINITION + * ================================= */ + + var Inputmask = function (element, options) { + if (isAndroid) return // No support because caret positioning doesn't work on Android + + this.$element = $(element) + this.mask = options.mask + this.options = $.extend({}, $.fn.inputmask.defaults, options) + + this.init() + this.listen() + + this.checkVal() //Perform initial check for existing values + } + + Inputmask.prototype = { + + init: function() { + var defs = $.mask.definitions + var len = this.mask.length + + this.tests = [] + this.partialPosition = this.mask.length + this.firstNonMaskPos = null + + $.each(this.mask.split(""), $.proxy(function(i, c) { + if (c == '?') { + len-- + this.partialPosition = i + } else if (defs[c]) { + this.tests.push(new RegExp(defs[c])) + if(this.firstNonMaskPos === null) + this.firstNonMaskPos = this.tests.length - 1 + } else { + this.tests.push(null) + } + }, this)) + + this.buffer = $.map(this.mask.split(""), $.proxy(function(c, i) { + if (c != '?') return defs[c] ? this.options.placeholder : c + }, this)) + + this.focusText = this.$element.val() + + this.$element.data($.mask.dataName, $.proxy(function() { + return $.map(this.buffer, function(c, i) { + return this.tests[i] && c != this.options.placeholder ? c : null + }).join('') + }, this)) + }, + + listen: function() { + if (this.$element.attr("readonly")) return + + var pasteEventName = ($.browser.msie ? 'paste' : 'input') + ".mask" + + this.$element + .on("unmask", $.proxy(this.unmask, this)) + + .on("focus.mask", $.proxy(this.focusEvent, this)) + .on("blur.mask", $.proxy(this.blurEvent, this)) + + .on("keydown.mask", $.proxy(this.keydownEvent, this)) + .on("keypress.mask", $.proxy(this.keypressEvent, this)) + + .on(pasteEventName, $.proxy(this.pasteEvent, this)) + }, + + //Helper Function for Caret positioning + caret: function(begin, end) { + if (this.$element.length === 0) return + if (typeof begin == 'number') { + end = (typeof end == 'number') ? end : begin + return this.$element.each(function() { + if (this.setSelectionRange) { + this.setSelectionRange(begin, end) + } else if (this.createTextRange) { + var range = this.createTextRange() + range.collapse(true) + range.moveEnd('character', end) + range.moveStart('character', begin) + range.select() + } + }) + } else { + if (this.$element[0].setSelectionRange) { + begin = this.$element[0].selectionStart + end = this.$element[0].selectionEnd + } else if (document.selection && document.selection.createRange) { + var range = document.selection.createRange() + begin = 0 - range.duplicate().moveStart('character', -100000) + end = begin + range.text.length + } + return { + begin: begin, + end: end + } + } + }, + + seekNext: function(pos) { + var len = this.mask.length + while (++pos <= len && !this.tests[pos]); + + return pos + }, + + seekPrev: function(pos) { + while (--pos >= 0 && !this.tests[pos]); + + return pos + }, + + shiftL: function(begin,end) { + var len = this.mask.length + + if(begin<0) return + + for (var i = begin,j = this.seekNext(end); i < len; i++) { + if (this.tests[i]) { + if (j < len && this.tests[i].test(this.buffer[j])) { + this.buffer[i] = this.buffer[j] + this.buffer[j] = this.options.placeholder + } else + break + j = this.seekNext(j) + } + } + this.writeBuffer() + this.caret(Math.max(this.firstNonMaskPos, begin)) + }, + + shiftR: function(pos) { + var len = this.mask.length + + for (var i = pos, c = this.options.placeholder; i < len; i++) { + if (this.tests[i]) { + var j = this.seekNext(i) + var t = this.buffer[i] + this.buffer[i] = c + if (j < len && this.tests[j].test(t)) + c = t + else + break + } + } + }, + + unmask: function() { + this.$element + .unbind(".mask") + .removeData("inputmask") + }, + + focusEvent: function() { + this.focusText = this.$element.val() + var len = this.mask.length + var pos = this.checkVal() + this.writeBuffer() + + var that = this + var moveCaret = function() { + if (pos == len) + that.caret(0, pos) + else + that.caret(pos) + } + + if ($.browser.msie) + moveCaret() + else + setTimeout(moveCaret, 0) + }, + + blurEvent: function() { + this.checkVal() + if (this.$element.val() != this.focusText) + this.$element.trigger('change') + }, + + keydownEvent: function(e) { + var k=e.which + + //backspace, delete, and escape get special treatment + if (k == 8 || k == 46 || (isIphone && k == 127)) { + var pos = this.caret(), + begin = pos.begin, + end = pos.end + + if (end-begin === 0) { + begin = k!=46 ? this.seekPrev(begin) : (end=this.seekNext(begin-1)) + end = k==46 ? this.seekNext(end) : end + } + this.clearBuffer(begin, end) + this.shiftL(begin,end-1) + + return false + } else if (k == 27) {//escape + this.$element.val(this.focusText) + this.caret(0, this.checkVal()) + return false + } + }, + + keypressEvent: function(e) { + var len = this.mask.length + + var k = e.which, + pos = this.caret() + + if (e.ctrlKey || e.altKey || e.metaKey || k<32) {//Ignore + return true + } else if (k) { + if (pos.end - pos.begin !== 0) { + this.clearBuffer(pos.begin, pos.end) + this.shiftL(pos.begin, pos.end-1) + } + + var p = this.seekNext(pos.begin - 1) + if (p < len) { + var c = String.fromCharCode(k) + if (this.tests[p].test(c)) { + this.shiftR(p) + this.buffer[p] = c + this.writeBuffer() + var next = this.seekNext(p) + this.caret(next) + } + } + return false + } + }, + + pasteEvent: function() { + var that = this + + setTimeout(function() { + that.caret(that.checkVal(true)) + }, 0) + }, + + clearBuffer: function(start, end) { + var len = this.mask.length + + for (var i = start; i < end && i < len; i++) { + if (this.tests[i]) + this.buffer[i] = this.options.placeholder + } + }, + + writeBuffer: function() { + return this.$element.val(this.buffer.join('')).val() + }, + + checkVal: function(allow) { + var len = this.mask.length + //try to place characters where they belong + var test = this.$element.val() + var lastMatch = -1 + + for (var i = 0, pos = 0; i < len; i++) { + if (this.tests[i]) { + this.buffer[i] = this.options.placeholder + while (pos++ < test.length) { + var c = test.charAt(pos - 1) + if (this.tests[i].test(c)) { + this.buffer[i] = c + lastMatch = i + break + } + } + if (pos > test.length) + break + } else if (this.buffer[i] == test.charAt(pos) && i != this.partialPosition) { + pos++ + lastMatch = i + } + } + if (!allow && lastMatch + 1 < this.partialPosition) { + this.$element.val("") + this.clearBuffer(0, len) + } else if (allow || lastMatch + 1 >= this.partialPosition) { + this.writeBuffer() + if (!allow) this.$element.val(this.$element.val().substring(0, lastMatch + 1)) + } + return (this.partialPosition ? i : this.firstNonMaskPos) + } + } + + + /* INPUTMASK PLUGIN DEFINITION + * =========================== */ + + $.fn.inputmask = function (options) { + return this.each(function () { + var $this = $(this) + , data = $this.data('inputmask') + if (!data) $this.data('inputmask', (data = new Inputmask(this, options))) + }) + } + + $.fn.inputmask.defaults = { + placeholder: "_" + } + + $.fn.inputmask.Constructor = Inputmask + + + /* INPUTMASK DATA-API + * ================== */ + + $(function () { + $('body').on('focus.inputmask.data-api', '[data-mask]', function (e) { + var $this = $(this) + if ($this.data('inputmask')) return + e.preventDefault() + $this.inputmask($this.data()) + }) + }) + +}(window.jQuery)/* ============================================================ + * bootstrap-rowlink.js j1 + * http://jasny.github.com/bootstrap/javascript.html#rowlink + * ============================================================ + * Copyright 2012 Jasny BV, Netherlands. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + +!function ($) { + + "use strict"; // jshint ;_; + + var Rowlink = function (element, options) { + options = $.extend({}, $.fn.rowlink.defaults, options) + var tr = element.nodeName == 'tr' ? $(element) : $(element).find('tr:has(td)') + + tr.each(function() { + var link = $(this).find(options.target).first() + if (!link.length) return + + var href = link.attr('href') + + $(this).find('td').not('.nolink').click(function() { + window.location = href; + }) + + $(this).addClass('rowlink') + link.replaceWith(link.html()) + }) + } + + + /* ROWLINK PLUGIN DEFINITION + * =========================== */ + + $.fn.rowlink = function (options) { + return this.each(function () { + var $this = $(this) + , data = $this.data('rowlink') + if (!data) $this.data('rowlink', (data = new Rowlink(this, options))) + }) + } + + $.fn.rowlink.defaults = { + target: "a" + } + + $.fn.rowlink.Constructor = Rowlink + + + /* ROWLINK DATA-API + * ================== */ + + $(function () { + $('[data-provides="rowlink"]').each(function () { + $(this).rowlink($(this).data()) + }) + }) + +}(window.jQuery) +/* =========================================================== + * bootstrap-fileupload.js j2 + * http://jasny.github.com/bootstrap/javascript.html#fileupload + * =========================================================== + * Copyright 2012 Jasny BV, Netherlands. + * + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + +!function ($) { + + "use strict"; // jshint ;_ + + /* INPUTMASK PUBLIC CLASS DEFINITION + * ================================= */ + + var Fileupload = function (element, options) { + this.$element = $(element) + this.type = this.$element.data('uploadtype') || (this.$element.find('.thumbnail').length > 0 ? "image" : "file") + + this.$input = this.$element.find(':file') + if (this.$input.length === 0) return + + this.name = this.$input.attr('name') || options.name + + this.$hidden = this.$element.find(':hidden[name="'+this.name+'"]') + if (this.$hidden.length === 0) { + this.$hidden = $('') + this.$element.prepend(this.$hidden) + } + + this.$preview = this.$element.find('.fileupload-preview') + var height = this.$preview.css('height') + if (this.$preview.css('display') != 'inline' && height != '0px' && height != 'none') this.$preview.css('line-height', height) + + this.$remove = this.$element.find('[data-dismiss="fileupload"]') + + this.$element.find('[data-trigger="fileupload"]').on('click.fileupload', $.proxy(this.trigger, this)) + + this.listen() + } + + Fileupload.prototype = { + + listen: function() { + this.$input.on('change.fileupload', $.proxy(this.change, this)) + if (this.$remove) this.$remove.on('click.fileupload', $.proxy(this.clear, this)) + }, + + change: function(e, invoked) { + var file = e.target.files !== undefined ? e.target.files[0] : (e.target.value ? { name: e.target.value.replace(/^.+\\/, '') } : null) + if (!file || invoked === 'clear') return + + this.$hidden.val('') + this.$hidden.attr('name', '') + this.$input.attr('name', this.name) + + if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match('\\.(gif|png|jpe?g)$')) && typeof FileReader !== "undefined") { + var reader = new FileReader() + var preview = this.$preview + var element = this.$element + + reader.onload = function(e) { + preview.html('') + element.addClass('fileupload-exists').removeClass('fileupload-new') + } + + reader.readAsDataURL(file) + } else { + this.$preview.text(file.name) + this.$element.addClass('fileupload-exists').removeClass('fileupload-new') + } + }, + + clear: function(e) { + this.$hidden.val('') + this.$hidden.attr('name', this.name) + this.$input.attr('name', '') + this.$input.val('') // Doesn't work in IE, which causes issues when selecting the same file twice + + this.$preview.html('') + this.$element.addClass('fileupload-new').removeClass('fileupload-exists') + + this.$input.trigger('change', [ 'clear' ]) + + e.preventDefault() + }, + + trigger: function(e) { + this.$input.trigger('click') + e.preventDefault() + } + } + + + /* INPUTMASK PLUGIN DEFINITION + * =========================== */ + + $.fn.fileupload = function (options) { + return this.each(function () { + var $this = $(this) + , data = $this.data('fileupload') + if (!data) $this.data('fileupload', (data = new Fileupload(this, options))) + }) + } + + $.fn.fileupload.Constructor = Fileupload + + + /* INPUTMASK DATA-API + * ================== */ + + $(function () { + $('body').on('click.fileupload.data-api', '[data-provides="fileupload"]', function (e) { + var $this = $(this) + if ($this.data('fileupload')) return + $this.fileupload($this.data()) + + var $target = $(e.target).parents('[data-dismiss=fileupload],[data-trigger=fileupload]').first() + if ($target.length > 0) { + $target.trigger('click.fileupload') + e.preventDefault() + } + }) + }) + +}(window.jQuery) /* ========================================================== * bootstrap-affix.js v2.1.0 * http://twitter.github.com/bootstrap/javascript.html#affix diff --git a/docs/assets/js/bootstrap.min.js b/docs/assets/js/bootstrap.min.js index 9e4ac042..0b9fc3fc 100644 --- a/docs/assets/js/bootstrap.min.js +++ b/docs/assets/js/bootstrap.min.js @@ -3,4 +3,5 @@ * Copyright 2012 Twitter, Inc. * http://www.apache.org/licenses/LICENSE-2.0.txt */ -!function(a){a(function(){"use strict",a.support.transition=function(){var a=function(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},c;for(c in b)if(a.style[c]!==undefined)return b[c]}();return a&&{end:a}}()})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function f(){e.trigger("closed").remove()}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.trigger(b=a.Event("close"));if(b.isDefaultPrevented())return;e.removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=c,this.options.slide&&this.slide(this.options.slide),this.options.pause=="hover"&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.prototype={cycle:function(b){return b||(this.paused=!1),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},to:function(b){var c=this.$element.find(".item.active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle()),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(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this,j=a.Event("slide",{relatedTarget:e[0]});this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h]();if(e.hasClass("active"))return;if(a.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(j);if(j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})}else{this.$element.trigger(j);if(j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=a.extend({},a.fn.carousel.defaults,typeof c=="object"&&c),g=typeof c=="string"?c:f.slide;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):g?e[g]():f.interval&&e.cycle()})},a.fn.carousel.defaults={interval:5e3,pause:"hover"},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b,c,d,e;if(this.transitioning)return;b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find("> .accordion-group > .in");if(d&&d.length){e=d.data("collapse");if(e&&e.transitioning)return;d.collapse("hide"),e||d.data("collapse",null)}this.$element[b](0),this.transition("addClass",a.Event("show"),"shown"),a.support.transition&&this.$element[b](this.$element[0][c])},hide:function(){var b;if(this.transitioning)return;b=this.dimension(),this.reset(this.$element[b]()),this.transition("removeClass",a.Event("hide"),"hidden"),this.$element[b](0)},reset:function(a){var b=this.dimension();return this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element[a!==null?"addClass":"removeClass"]("collapse"),this},transition:function(b,c,d){var e=this,f=function(){c.type=="show"&&e.reset(),e.transitioning=0,e.$element.trigger(d)};this.$element.trigger(c);if(c.isDefaultPrevented())return;this.transitioning=1,this.$element[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();c[a(e).hasClass("in")?"addClass":"removeClass"]("collapsed"),a(e).collapse(f)})})}(window.jQuery),!function(a){function d(){e(a(b)).removeClass("open")}function e(b){var c=b.attr("data-target"),d;return c||(c=b.attr("href"),c=c&&c.replace(/.*(?=#[^\s]*$)/,"")),d=a(c),d.length||(d=b.parent()),d}"use strict";var b="[data-toggle=dropdown]",c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),f,g;if(c.is(".disabled, :disabled"))return;return f=e(c),g=f.hasClass("open"),d(),g||(f.toggleClass("open"),c.focus()),!1},keydown:function(b){var c,d,f,g,h,i;if(!/(38|40|27)/.test(b.keyCode))return;c=a(this),b.preventDefault(),b.stopPropagation();if(c.is(".disabled, :disabled"))return;g=e(c),h=g.hasClass("open");if(!h||h&&b.keyCode==27)return c.click();d=a("[role=menu] li:not(.divider) a",g);if(!d.length)return;i=d.index(d.filter(":focus")),b.keyCode==38&&i>0&&i--,b.keyCode==40&&i').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(this.removeBackdrop,this)):this.removeBackdrop()):b&&b()}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=a.extend({},a.fn.modal.defaults,d.data(),typeof c=="object"&&c);e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():f.show&&e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f).one("hide",function(){c.focus()})})})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger=="click"?this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this)):this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f+"."+this.type,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);if(!c.options.delay||!c.options.delay.show)return c.show();clearTimeout(this.timeout),c.hoverState="in",this.timeout=setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show)},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!c.options.delay||!c.options.delay.hide)return c.hide();c.hoverState="out",this.timeout=setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide)},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();return c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove(),this},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},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(){this[this.tip().hasClass("in")?"hide":"show"]()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'
',trigger:"hover",title:"",delay:0,html:!0}}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content > *")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'

'})}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll-spy.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body"),this.refresh(),this.process()}"use strict",b.prototype={constructor:b,refresh:function(){var b=this,c;this.offsets=a([]),this.targets=a([]),c=this.$body.find(this.selector).map(function(){var b=a(this),c=b.data("target")||b.attr("href"),d=/^#\w/.test(c)&&a(c);return d&&d.length&&[[d.position().top,c]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,c=b-this.$scrollElement.height(),d=this.offsets,e=this.targets,f=this.activeTarget,g;if(a>=c)return f!=(g=e.last()[0])&&this.activate(g);for(g=d.length;g--;)f!=e[g]&&a>=d[g]&&(!d[g+1]||a<=d[g+1])&&this.activate(e[g])},activate:function(b){var c,d;this.activeTarget=b,a(this.selector).parent(".active").removeClass("active"),d=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',c=a(d).parent("li").addClass("active"),c.parent(".dropdown-menu").length&&(c=c.closest("li.dropdown").addClass("active")),c.trigger("activate")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f,g;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],g=a.Event("show",{relatedTarget:e}),b.trigger(g);if(g.isDefaultPrevented())return;f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),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.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(a)).change(),this.hide()},updater:function(a){return a},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c;return this.query=this.$element.val(),!this.query||this.query.length"+b+""})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keydown,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},move:function(a){if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}a.stopPropagation()},keydown:function(b){this.suppressKeyPressRepeat=!~a.inArray(b.keyCode,[40,38,9,13,27]),this.move(b)},keypress:function(a){if(this.suppressKeyPressRepeat)return;this.move(a)},keyup:function(a){switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}a.stopPropagation(),a.preventDefault()},blur:function(a){var b=this;setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'',item:'
  • ',minLength:1},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.options=a.extend({},a.fn.affix.defaults,c),this.$window=a(window).on("scroll.affix.data-api",a.proxy(this.checkPosition,this)),this.$element=a(b),this.checkPosition()};b.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var b=a(document).height(),c=this.$window.scrollTop(),d=this.$element.offset(),e=this.options.offset,f=e.bottom,g=e.top,h="affix affix-top affix-bottom",i;typeof e!="object"&&(f=g=e),typeof g=="function"&&(g=e.top()),typeof f=="function"&&(f=e.bottom()),i=this.unpin!=null&&c+this.unpin<=d.top?!1:f!=null&&d.top+this.$element.height()>=b-f?"bottom":g!=null&&c<=g?"top":!1;if(this.affixed===i)return;this.affixed=i,this.unpin=i=="bottom"?d.top-c:null,this.$element.removeClass(h).addClass("affix"+(i?"-"+i:""))},a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("affix"),f=typeof c=="object"&&c;e||d.data("affix",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.defaults={offset:0},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery); \ No newline at end of file +!function(e){e(function(){"use strict";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()},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(function(){e("body").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.parent('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")},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(function(){e("body").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.options=n,this.options.slide&&this.slide(this.options.slide),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.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},to:function(t){var n=this.$element.find(".item.active"),r=n.parent().children(),i=r.index(n),s=this;if(t>r.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){s.to(t)}):i==t?this.pause().cycle():this.slide(t>i?"next":"prev",e(r[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()),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=e.Event("slide",{relatedTarget:i[0]});this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u]();if(i.hasClass("active"))return;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}},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.cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e(function(){e("body").on("click.carousel.data-api","[data-slide]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=!i.data("modal")&&e.extend({},i.data(),n.data());i.carousel(s),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)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)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"]()}},e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=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(function(){e("body").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(){i(e(t)).removeClass("open")}function i(t){var n=t.attr("data-target"),r;return n||(n=t.attr("href"),n=n&&n.replace(/.*(?=#[^\s]*$)/,"")),r=e(n),r.length||(r=t.parent()),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||(s.toggleClass("open"),n.focus()),!1},keydown:function(t){var n,r,s,o,u,a;if(!/(38|40|27)/.test(t.keyCode))return;n=e(this),t.preventDefault(),t.stopPropagation();if(n.is(".disabled, :disabled"))return;o=i(n),u=o.hasClass("open");if(!u||u&&t.keyCode==27)return n.click();r=e("[role=menu] li:not(.divider) a",o);if(!r.length)return;a=r.index(r.filter(":focus")),t.keyCode==38&&a>0&&a--,t.keyCode==40&&a').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),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,e.proxy(this.removeBackdrop,this)):this.removeBackdrop()):t&&t()}},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(function(){e("body").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;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,this.options.trigger=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):this.options.trigger!="manual"&&(i=this.options.trigger=="hover"?"mouseenter":"focus",s=this.options.trigger=="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,t,this.$element.data()),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);if(!n.options.delay||!n.options.delay.show)return n.show();clearTimeout(this.timeout),n.hoverState="in",this.timeout=setTimeout(function(){n.hoverState=="in"&&n.show()},n.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 e,t,n,r,i,s,o;if(this.hasContent()&&this.enabled){e=this.tip(),this.setContent(),this.options.animation&&e.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,t=/in/.test(s),e.remove().css({top:0,left:0,display:"block"}).appendTo(t?this.$element:document.body),n=this.getPosition(t),r=e[0].offsetWidth,i=e[0].offsetHeight;switch(t?s.split(" ")[1]: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}}e.css(o).addClass(s).addClass("in")}},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 r(){var t=setTimeout(function(){n.off(e.support.transition.end).remove()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.remove()})}var t=this,n=this.tip();return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?r():n.remove(),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")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(t){return e.extend({},t?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},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)},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(){this[this.tip().hasClass("in")?"hide":"show"]()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}},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:'
    ',trigger:"hover",title:"",delay:0,html:!0}}(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=t.attr("data-content")||(typeof n.content=="function"?n.content.call(t[0]):n.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)}}),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:'

    '})}(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 t=e(this),n=t.data("target")||t.attr("href"),r=/^#\w/.test(n)&&e(n);return r&&r.length&&[[r.position().top,n]]||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")}},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(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 a").last()[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")}},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(function(){e("body").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.$menu=e(this.options.menu).appendTo("body"),this.source=this.options.source,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.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:t.top+t.height,left:t.left}),this.$menu.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"+t+""})},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("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),(e.browser.webkit||e.browser.msie)&&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))},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: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()},blur:function(e){var t=this;setTimeout(function(){t.hide()},150)},click:function(e){e.stopPropagation(),e.preventDefault(),this.select()},mouseenter:function(t){this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")}},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:'',item:'
  • ',minLength:1},e.fn.typeahead.Constructor=t,e(function(){e("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;t.preventDefault(),n.typeahead(n.data())})})}(window.jQuery),!function(e){"use strict";var t=window.orientation!==undefined,n=navigator.userAgent.toLowerCase().indexOf("android")>-1;e.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","?":"[A-Za-z0-9]","*":"."},dataName:"rawMaskFn"};var r=function(t,r){if(n)return;this.$element=e(t),this.mask=r.mask,this.options=e.extend({},e.fn.inputmask.defaults,r),this.init(),this.listen(),this.checkVal()};r.prototype={init:function(){var t=e.mask.definitions,n=this.mask.length;this.tests=[],this.partialPosition=this.mask.length,this.firstNonMaskPos=null,e.each(this.mask.split(""),e.proxy(function(e,r){r=="?"?(n--,this.partialPosition=e):t[r]?(this.tests.push(new RegExp(t[r])),this.firstNonMaskPos===null&&(this.firstNonMaskPos=this.tests.length-1)):this.tests.push(null)},this)),this.buffer=e.map(this.mask.split(""),e.proxy(function(e,n){if(e!="?")return t[e]?this.options.placeholder:e},this)),this.focusText=this.$element.val(),this.$element.data(e.mask.dataName,e.proxy(function(){return e.map(this.buffer,function(e,t){return this.tests[t]&&e!=this.options.placeholder?e:null}).join("")},this))},listen:function(){if(this.$element.attr("readonly"))return;var t=(e.browser.msie?"paste":"input")+".mask";this.$element.on("unmask",e.proxy(this.unmask,this)).on("focus.mask",e.proxy(this.focusEvent,this)).on("blur.mask",e.proxy(this.blurEvent,this)).on("keydown.mask",e.proxy(this.keydownEvent,this)).on("keypress.mask",e.proxy(this.keypressEvent,this)).on(t,e.proxy(this.pasteEvent,this))},caret:function(e,t){if(this.$element.length===0)return;if(typeof e=="number")return t=typeof t=="number"?t:e,this.$element.each(function(){if(this.setSelectionRange)this.setSelectionRange(e,t);else if(this.createTextRange){var n=this.createTextRange();n.collapse(!0),n.moveEnd("character",t),n.moveStart("character",e),n.select()}});if(this.$element[0].setSelectionRange)e=this.$element[0].selectionStart,t=this.$element[0].selectionEnd;else if(document.selection&&document.selection.createRange){var n=document.selection.createRange();e=0-n.duplicate().moveStart("character",-1e5),t=e+n.text.length}return{begin:e,end:t}},seekNext:function(e){var t=this.mask.length;while(++e<=t&&!this.tests[e]);return e},seekPrev:function(e){while(--e>=0&&!this.tests[e]);return e},shiftL:function(e,t){var n=this.mask.length;if(e<0)return;for(var r=e,i=this.seekNext(t);rn.length)break}else this.buffer[i]==n.charAt(s)&&i!=this.partialPosition&&(s++,r=i);if(!e&&r+1=this.partialPosition)this.writeBuffer(),e||this.$element.val(this.$element.val().substring(0,r+1));return this.partialPosition?i:this.firstNonMaskPos}},e.fn.inputmask=function(t){return this.each(function(){var n=e(this),i=n.data("inputmask");i||n.data("inputmask",i=new r(this,t))})},e.fn.inputmask.defaults={placeholder:"_"},e.fn.inputmask.Constructor=r,e(function(){e("body").on("focus.inputmask.data-api","[data-mask]",function(t){var n=e(this);if(n.data("inputmask"))return;t.preventDefault(),n.inputmask(n.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t,n){n=e.extend({},e.fn.rowlink.defaults,n);var r=t.nodeName=="tr"?e(t):e(t).find("tr:has(td)");r.each(function(){var t=e(this).find(n.target).first();if(!t.length)return;var r=t.attr("href");e(this).find("td").not(".nolink").click(function(){window.location=r}),e(this).addClass("rowlink"),t.replaceWith(t.html())})};e.fn.rowlink=function(n){return this.each(function(){var r=e(this),i=r.data("rowlink");i||r.data("rowlink",i=new t(this,n))})},e.fn.rowlink.defaults={target:"a"},e.fn.rowlink.Constructor=t,e(function(){e('[data-provides="rowlink"]').each(function(){e(this).rowlink(e(this).data())})})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.type=this.$element.data("uploadtype")||(this.$element.find(".thumbnail").length>0?"image":"file"),this.$input=this.$element.find(":file");if(this.$input.length===0)return;this.name=this.$input.attr("name")||n.name,this.$hidden=this.$element.find(':hidden[name="'+this.name+'"]'),this.$hidden.length===0&&(this.$hidden=e(''),this.$element.prepend(this.$hidden)),this.$preview=this.$element.find(".fileupload-preview");var r=this.$preview.css("height");this.$preview.css("display")!="inline"&&r!="0px"&&r!="none"&&this.$preview.css("line-height",r),this.$remove=this.$element.find('[data-dismiss="fileupload"]'),this.$element.find('[data-trigger="fileupload"]').on("click.fileupload",e.proxy(this.trigger,this)),this.listen()};t.prototype={listen:function(){this.$input.on("change.fileupload",e.proxy(this.change,this)),this.$remove&&this.$remove.on("click.fileupload",e.proxy(this.clear,this))},change:function(e,t){var n=e.target.files!==undefined?e.target.files[0]:e.target.value?{name:e.target.value.replace(/^.+\\/,"")}:null;if(!n||t==="clear")return;this.$hidden.val(""),this.$hidden.attr("name",""),this.$input.attr("name",this.name);if(this.type==="image"&&this.$preview.length>0&&(typeof n.type!="undefined"?n.type.match("image.*"):n.name.match("\\.(gif|png|jpe?g)$"))&&typeof FileReader!="undefined"){var r=new FileReader,i=this.$preview,s=this.$element;r.onload=function(e){i.html('"),s.addClass("fileupload-exists").removeClass("fileupload-new")},r.readAsDataURL(n)}else this.$preview.text(n.name),this.$element.addClass("fileupload-exists").removeClass("fileupload-new")},clear:function(e){this.$hidden.val(""),this.$hidden.attr("name",this.name),this.$input.attr("name",""),this.$input.val(""),this.$preview.html(""),this.$element.addClass("fileupload-new").removeClass("fileupload-exists"),this.$input.trigger("change",["clear"]),e.preventDefault()},trigger:function(e){this.$input.trigger("click"),e.preventDefault()}},e.fn.fileupload=function(n){return this.each(function(){var r=e(this),i=r.data("fileupload");i||r.data("fileupload",i=new t(this,n))})},e.fn.fileupload.Constructor=t,e(function(){e("body").on("click.fileupload.data-api",'[data-provides="fileupload"]',function(t){var n=e(this);if(n.data("fileupload"))return;n.fileupload(n.data());var r=e(t.target).parents("[data-dismiss=fileupload],[data-trigger=fileupload]").first();r.length>0&&(r.trigger("click.fileupload"),t.preventDefault())})})}(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)),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:""))},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(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); \ No newline at end of file diff --git a/docs/assets/js/bootstrap.min.tmp.js b/docs/assets/js/bootstrap.min.tmp.js deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/base-css.html b/docs/base-css.html index f1401d68..0be3e71d 100644 --- a/docs/base-css.html +++ b/docs/base-css.html @@ -76,6 +76,7 @@

    Base CSS

    Fundamental HTML elements styled and enhanced with extensible classes.

    + @@ -91,8 +92,10 @@
  • Tables
  • Forms
  • Buttons
  • +
  • Action links
  • Images
  • Icons by Glyphicons
  • +
  • Iconic icons
  • @@ -1284,15 +1287,107 @@ For example, <code><section></code> should be wrapped as inlin <input class="span1" type="text" placeholder=".span1"> </div> ... + + +

    Small labels

    +

    If you have a lot of fields in a form, you might want to use three or four columns. However labels can start taking up to much space. Simple add .small-labels to a horizontal form (or section within a form) to solve this.

    +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +<form class="form-horizontal small-labels">
    +  …
    +</div>
     

    Uneditable inputs

    Present data in a form that's not editable without using actual form markup.

    Some value here +
    + Some text here + on multiple lines +
     <span class="input-xlarge uneditable-input">Some value here</span>
    +<div class="input-xlarge uneditable-textarea" rows="3">
    +  Some text here
    +  on multiple lines
    +</div>
    +
    + +

    Editor textarea

    +

    Add .editor to any textarea or .uneditable-textarea to create a larger field for content editing.

    +

    Also add .editor-html, if the textarea will be replaced by e.g. CKEditor or TinyMCE.

    +
    + +
    +
    +<textarea class="editor">
    +  Some text here
    +  on multiple lines
    +</textarea>
     

    Form actions

    @@ -1572,6 +1667,91 @@ For example, <code><section></code> should be wrapped as inlin + + + +
    +
    +<div class="tabbable tabs-right">
    +  <ul class="nav nav-tabs">
    +    ...
    +  </ul>
    +  <div class="tab-content">
    +    ...
    +  </div>
    +</div>
    +
    + +

    Bordered tabbable

    +

    You can place a border around the tab content by adding .tabbable-bordered to the .tabbable.

    +
    +
    + +
    +
    +

    I'm in Section A.

    +
    +
    +

    Howdy, I'm in Section B.

    +
    +
    +

    What up girl, this is Section C.

    +
    +
    +
    +
    +
    +<div class="tabbable tabbable-bordered">
    +  <ul class="nav nav-tabs">
    +    ...
    +  </ul>
    +  <div class="tab-content">
    +    ...
    +  </div>
    +</div>
     
    @@ -2015,6 +2082,26 @@ </div> +

    Page alerts

    +

    Know those nice little alerts after you save your profile? With .page-alert the alert will be shown on top op your page.

    +
    +
    +
    + × + Success! Your profile information has been saved. +
    +
    +

    Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

    +
    +
    +<body>
    +  <div class="navbar"> ... </div>
    +  <div class="page-alert">
    +    <div class="alert">
    +      ...
    +    </div>
    +  </div>
    +
    @@ -2289,8 +2376,10 @@ class="clearfix"

    Back to top

    Designed and built with all the love in the world @twitter by @mdo and @fat.

    +

    Extended with pride by @ArnoldDaniels of Jasny Software solutions.

    Code licensed under the Apache License v2.0. Documentation licensed under CC BY 3.0.

    Icons from Glyphicons Free, licensed under CC BY 3.0.

    +

    Iconic icon set font, licensed under the SIL Open Font License.

    + @@ -441,8 +442,10 @@

    Back to top

    Designed and built with all the love in the world @twitter by @mdo and @fat.

    +

    Extended with pride by @ArnoldDaniels of Jasny Software solutions.

    Code licensed under the Apache License v2.0. Documentation licensed under CC BY 3.0.

    Icons from Glyphicons Free, licensed under CC BY 3.0.

    +

    Iconic icon set font, licensed under the SIL Open Font License.

    @@ -1503,6 +1507,77 @@ $('.carousel').carousel({ + + + + +
    @@ -1589,6 +1664,238 @@ $('.carousel').carousel({ + +
    + + +

    Example

    +

    Input masks can be used to force the user to enter data conform a specific format.

    +

    Unlike validation, the user can't enter any other key than the ones specified by the mask.

    +
    + +
    +
    +<input type="text" data-mask="999-99-999-9999-9">
    +
    + + +
    + + +

    Usage

    + +

    Via data attributes

    +

    Add data attributes to register an element with inputmask functionality as shown in the example above.

    + +

    Via JavaScript

    +

    Call the input mask via javascript:

    +
    $('.inputmask').inputmask()
    + +

    Options

    + + + + + + + + + + + + + + + + + + + + + + + +
    Nametypedefaultdescription
    maskstring''A string of formatting and literal characters, defining the input mask (see below).
    placeholderstring'_'The character that is displayed where something needs to be typed.
    + +

    Format

    + + + + + + + + + + +
    CharacterDescription
    9Number
    aLetter
    ?Alphanumeric
    *Any character
    + +

    Methods

    +

    .inputmask(options)

    +

    Initializes an input with an input mask.

    +
    + + + + +
    + + +

    Examples

    +

    The file upload plugin allows you to create a visually appealing file or image upload widgets.

    + +

    File upload widgets

    +
    +
    +
    +
    Select fileChangeRemove +
    +
    +
    +
    +<div class="fileupload fileupload-new" data-provides="fileupload">
    +  <div class="input-append">
    +    <div class="uneditable-input span3"><i class="icon-file fileupload-exists"></i> <span class="fileupload-preview"></span></div><span class="btn btn-file"><span class="fileupload-new">Select file</span><span class="fileupload-exists">Change</span><input type="file" /></span><a href="#" class="btn fileupload-exists" data-dismiss="fileupload">Remove</a>
    +  </div>
    +</div>
    +
    +
    +
    + Select fileChange + + × +
    +
    +
    +<div class="fileupload fileupload-new" data-provides="fileupload">
    +  <span class="btn btn-file"><span class="fileupload-new">Select file</span><span class="fileupload-exists">Change</span><input type="file" /></span>
    +  <span class="fileupload-preview"></span>
    +  <a href="#" class="close fileupload-exists" data-dismiss="fileupload" style="float: none">×</a>
    +</div>
    +
    + +

    Image upload widgets

    +

    When uploading an image, it's possible to show a thumbnail instead of the filename.

    +
    +
    +
    +
    + Select imageChange + Remove +
    +
    +
    +
    +<div class="fileupload fileupload-new" data-provides="fileupload">
    +  <div class="fileupload-preview thumbnail" style="width: 200px; height: 150px;"></div>
    +  <div>
    +    <span class="btn btn-file"><span class="fileupload-new">Select image</span><span class="fileupload-exists">Change</span><input type="file" /></span>
    +    <a href="#" class="btn fileupload-exists" data-dismiss="fileupload">Remove</a>
    +  </div>
    +</div>
    +
    + +
    +
    +
    +
    +
    + Select imageChange + Remove +
    +
    +
    +
    +<div class="fileupload fileupload-new" data-provides="fileupload">
    +  <div class="fileupload-new thumbnail" style="width: 200px; height: 150px;"><img src="http://www.placehold.it/200x150/EFEFEF/AAAAAA&text=no+image" /></div>
    +  <div class="fileupload-preview fileupload-exists thumbnail" style="max-width: 200px; max-height: 150px; line-height: 20px;"></div>
    +  <div>
    +    <span class="btn btn-file"><span class="fileupload-new">Select image</span><span class="fileupload-exists">Change</span><input type="file" /></span>
    +    <a href="#" class="btn fileupload-exists" data-dismiss="fileupload">Remove</a>
    +  </div>
    +</div>
    +
    + +
    +
    +
    +
    + Select imageChange + Remove +
    +
    + Select imageChange + Remove +
    +
    +
    +
    +
    +
    +<div class="fileupload fileupload-new" data-provides="fileupload">
    +  <div class="fileupload-new thumbnail" style="width: 50px; height: 50px;"><img src="http://www.placehold.it/50x50/EFEFEF/AAAAAA" /></div>
    +  <div class="fileupload-preview fileupload-exists thumbnail" style="width: 50px; height: 50px;"></div>
    +  <span class="btn btn-file"><span class="fileupload-new">Select image</span><span class="fileupload-exists">Change</span><input type="file" /></span>
    +  <a href="#" class="btn fileupload-exists" data-dismiss="fileupload">Remove</a>
    +</div>
    +
    + +
    Notice! Image preview only works in IE10+, FF3.6+, Chrome6.0+ and Opera11.1+. In older browsers and Safari, the filename is shown instead.
    + + +
    + + +

    Usage

    +

    Via data attributes

    +

    Add data attributes to register the file upload widget. The main container should either have the .fileupload-new class for a new record or if the record + does not have file or .fileupload-exists if an existing file is present. Elements inside the container with the .fileupload-new and .fileupload-exists + class will be shown or hidden based on the current state. The content of .fileupload-preview is replaced when a file is selected. Implement a button to clear + the file with data-dismiss="fileupload". The content of .fileupload-preview is replaced when a file is selected. Implement a button to clear the file with + data-dismiss="fileupload".

    + +

    Via JavaScript

    +
    $('.fileupload').fileupload()
    + +

    Layout

    +

    Using the given elements, you can layout the upload widget the way you want, either with a fixed width and height or with max-width and max-height.

    + +

    Options

    + + + + + + + + + + + + + + + + + + + + +
    Nametypedescription
    uploadtypestringChoose 'file' or 'image'. If omitted, the type is automatically determined based on the presence of a .thumbnail element.
    namestringUse this option instead of setting the name attribute on the <input> element to prevent it from being part of the post data when not changed.
    + +

    Methods

    +

    .fileupload(options)

    +

    Initializes a file upload widget.

    +
    + + +
    @@ -1662,8 +1969,10 @@ $('[data-spy="affix"]').each(function () {

    Back to top

    Designed and built with all the love in the world @twitter by @mdo and @fat.

    +

    Extended with pride by @ArnoldDaniels of Jasny Software solutions.

    Code licensed under the Apache License v2.0. Documentation licensed under CC BY 3.0.

    Icons from Glyphicons Free, licensed under CC BY 3.0.

    +

    Iconic icon set font, licensed under the SIL Open Font License.

    +
    @@ -371,6 +372,24 @@ </div> </div> </div> + + +

    Semi-fluid layout

    +

    Get the best of both worlds with <div class="container-semifluid">. It acts as a fixed layout for big screens. For smaller screens, it behaves like a fluid layout.

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +<div class="container-fluid">
    +  <div class="row-fluid">
    +    ...
    +  </div>
    +</div>
     
    @@ -530,6 +549,22 @@
  • Desktop✔ Desktop
  • + +

    Desktop rows

    +

    By default columns of a .row are show next to each other, however for phones the columns are show underneath each other. By adding the class .row-desktop to a row, + it will display the columns underneath each other for tablets as well.

    +

    Test case

    +

    Resize your browser to see the rows behave differently. They look the same for desktops and phones, but different for tablets.

    +
    +
    Normal row 1
    +
    Normal row 2
    +
    Normal row 3
    +
    +
    +
    Desktop row 1
    +
    Desktop row 2
    +
    Desktop row 3
    +
    @@ -547,8 +582,10 @@

    Back to top

    Designed and built with all the love in the world @twitter by @mdo and @fat.

    +

    Extended with pride by @ArnoldDaniels of Jasny Software solutions.

    Code licensed under the Apache License v2.0. Documentation licensed under CC BY 3.0.

    Icons from Glyphicons Free, licensed under CC BY 3.0.

    +

    Iconic icon set font, licensed under the SIL Open Font License.