From 78f6b4a057b651afdbbe285c5384a818ef2fee8a Mon Sep 17 00:00:00 2001 From: Scarygami Date: Tue, 4 Feb 2014 23:28:07 +0100 Subject: [PATCH] Updated photocast sample --- .../receiver/index.html | 0 .../receiver/receiver.css | 0 .../receiver/receiver.js | 0 .../sender/index.html | 0 .../sender/sender.css | 0 .../sender/sender.js | 0 photocast/bootstrap.css | 5150 +++++++++++++++++ photocast/card.css | 241 + {slideshow/sender => photocast}/cast.png | Bin {slideshow/sender => photocast}/casting.png | Bin photocast/gplus.png | Bin 0 -> 481 bytes photocast/index.html | 71 + photocast/receiver/receiver.css | 21 + photocast/receiver/receiver.html | 12 + {slideshow => photocast}/receiver/receiver.js | 86 +- photocast/sender.css | 108 + photocast/sender.js | 281 + .../android/SlideshowCast/AndroidManifest.xml | 30 - .../libs/urlimageviewhelper-1.0.4.jar | Bin 36348 -> 0 bytes .../res/drawable-hdpi/ic_launcher.png | Bin 392 -> 0 bytes .../res/drawable-hdpi/ic_user.png | Bin 2449 -> 0 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 602 -> 0 bytes .../res/drawable-mdpi/ic_user.png | Bin 1586 -> 0 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 1021 -> 0 bytes .../res/drawable-xhdpi/ic_user.png | Bin 3294 -> 0 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 1341 -> 0 bytes .../res/drawable-xxhdpi/ic_user.png | Bin 5229 -> 0 bytes .../SlideshowCast/res/layout/album_item.xml | 31 - .../android/SlideshowCast/res/layout/main.xml | 58 - .../android/SlideshowCast/res/menu/menu.xml | 8 - .../res/values-sw600dp/dimens.xml | 4 - .../res/values-sw720dp-land/dimens.xml | 5 - .../SlideshowCast/res/values-v11/styles.xml | 11 - .../SlideshowCast/res/values-v14/styles.xml | 12 - .../SlideshowCast/res/values/dimens.xml | 5 - .../SlideshowCast/res/values/strings.xml | 12 - .../SlideshowCast/res/values/styles.xml | 20 - .../slideshowcast/AsyncReceiver.java | 5 - .../slideshowcast/MainActivity.java | 419 -- .../foldedsoft/slideshowcast/PicasaAlbum.java | 33 - .../slideshowcast/PicasaAlbumAdapter.java | 43 - .../slideshowcast/PicasaAlbumsTask.java | 112 - slideshow/receiver/index.html | 13 - slideshow/receiver/receiver.css | 18 - slideshow/sender/index.html | 27 - slideshow/sender/sender.css | 28 - slideshow/sender/sender.js | 215 - 47 files changed, 5935 insertions(+), 1144 deletions(-) rename {auth_sample => auth_sample (old sdk!)}/receiver/index.html (100%) rename {auth_sample => auth_sample (old sdk!)}/receiver/receiver.css (100%) rename {auth_sample => auth_sample (old sdk!)}/receiver/receiver.js (100%) rename {auth_sample => auth_sample (old sdk!)}/sender/index.html (100%) rename {auth_sample => auth_sample (old sdk!)}/sender/sender.css (100%) rename {auth_sample => auth_sample (old sdk!)}/sender/sender.js (100%) create mode 100644 photocast/bootstrap.css create mode 100644 photocast/card.css rename {slideshow/sender => photocast}/cast.png (100%) rename {slideshow/sender => photocast}/casting.png (100%) create mode 100644 photocast/gplus.png create mode 100644 photocast/index.html create mode 100644 photocast/receiver/receiver.css create mode 100644 photocast/receiver/receiver.html rename {slideshow => photocast}/receiver/receiver.js (58%) create mode 100644 photocast/sender.css create mode 100644 photocast/sender.js delete mode 100644 slideshow/android/SlideshowCast/AndroidManifest.xml delete mode 100644 slideshow/android/SlideshowCast/libs/urlimageviewhelper-1.0.4.jar delete mode 100644 slideshow/android/SlideshowCast/res/drawable-hdpi/ic_launcher.png delete mode 100644 slideshow/android/SlideshowCast/res/drawable-hdpi/ic_user.png delete mode 100644 slideshow/android/SlideshowCast/res/drawable-mdpi/ic_launcher.png delete mode 100644 slideshow/android/SlideshowCast/res/drawable-mdpi/ic_user.png delete mode 100644 slideshow/android/SlideshowCast/res/drawable-xhdpi/ic_launcher.png delete mode 100644 slideshow/android/SlideshowCast/res/drawable-xhdpi/ic_user.png delete mode 100644 slideshow/android/SlideshowCast/res/drawable-xxhdpi/ic_launcher.png delete mode 100644 slideshow/android/SlideshowCast/res/drawable-xxhdpi/ic_user.png delete mode 100644 slideshow/android/SlideshowCast/res/layout/album_item.xml delete mode 100644 slideshow/android/SlideshowCast/res/layout/main.xml delete mode 100644 slideshow/android/SlideshowCast/res/menu/menu.xml delete mode 100644 slideshow/android/SlideshowCast/res/values-sw600dp/dimens.xml delete mode 100644 slideshow/android/SlideshowCast/res/values-sw720dp-land/dimens.xml delete mode 100644 slideshow/android/SlideshowCast/res/values-v11/styles.xml delete mode 100644 slideshow/android/SlideshowCast/res/values-v14/styles.xml delete mode 100644 slideshow/android/SlideshowCast/res/values/dimens.xml delete mode 100644 slideshow/android/SlideshowCast/res/values/strings.xml delete mode 100644 slideshow/android/SlideshowCast/res/values/styles.xml delete mode 100644 slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/AsyncReceiver.java delete mode 100644 slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/MainActivity.java delete mode 100644 slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/PicasaAlbum.java delete mode 100644 slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/PicasaAlbumAdapter.java delete mode 100644 slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/PicasaAlbumsTask.java delete mode 100644 slideshow/receiver/index.html delete mode 100644 slideshow/receiver/receiver.css delete mode 100644 slideshow/sender/index.html delete mode 100644 slideshow/sender/sender.css delete mode 100644 slideshow/sender/sender.js diff --git a/auth_sample/receiver/index.html b/auth_sample (old sdk!)/receiver/index.html similarity index 100% rename from auth_sample/receiver/index.html rename to auth_sample (old sdk!)/receiver/index.html diff --git a/auth_sample/receiver/receiver.css b/auth_sample (old sdk!)/receiver/receiver.css similarity index 100% rename from auth_sample/receiver/receiver.css rename to auth_sample (old sdk!)/receiver/receiver.css diff --git a/auth_sample/receiver/receiver.js b/auth_sample (old sdk!)/receiver/receiver.js similarity index 100% rename from auth_sample/receiver/receiver.js rename to auth_sample (old sdk!)/receiver/receiver.js diff --git a/auth_sample/sender/index.html b/auth_sample (old sdk!)/sender/index.html similarity index 100% rename from auth_sample/sender/index.html rename to auth_sample (old sdk!)/sender/index.html diff --git a/auth_sample/sender/sender.css b/auth_sample (old sdk!)/sender/sender.css similarity index 100% rename from auth_sample/sender/sender.css rename to auth_sample (old sdk!)/sender/sender.css diff --git a/auth_sample/sender/sender.js b/auth_sample (old sdk!)/sender/sender.js similarity index 100% rename from auth_sample/sender/sender.js rename to auth_sample (old sdk!)/sender/sender.js diff --git a/photocast/bootstrap.css b/photocast/bootstrap.css new file mode 100644 index 0000000..539f2f2 --- /dev/null +++ b/photocast/bootstrap.css @@ -0,0 +1,5150 @@ +/*! + * Bootstrap v3.0.3 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} +audio, +canvas, +video { + display: inline-block; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +html { + font-family: sans-serif; + + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +a { + background: transparent; +} +a:focus { + outline: thin dotted; +} +a:active, +a:hover { + outline: 0; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +hr { + height: 0; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +mark { + color: #000; + background: #ff0; +} +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} +pre { + white-space: pre-wrap; +} +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 0; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +button, +input, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: 100%; +} +button, +input { + line-height: normal; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +textarea { + overflow: auto; + vertical-align: top; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 2cm .5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .table td, + .table th { + background-color: #fff !important; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 62.5%; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.428571429; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #428bca; + text-decoration: none; +} +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +img { + vertical-align: middle; +} +.img-responsive { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.428571429; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #999; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 200; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +cite { + font-style: normal; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-muted { + color: #999; +} +.text-primary { + color: #428bca; +} +.text-primary:hover { + color: #3071a9; +} +.text-success { + color: #3c763d; +} +.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #428bca; +} +a.bg-primary:hover { + background-color: #3071a9; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +.list-inline > li:first-child { + padding-left: 0; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.428571429; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.428571429; + color: #999; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +blockquote:before, +blockquote:after { + content: ""; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.428571429; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + white-space: nowrap; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.428571429; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666666666666%; +} +.col-xs-10 { + width: 83.33333333333334%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666666666666%; +} +.col-xs-7 { + width: 58.333333333333336%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666666666667%; +} +.col-xs-4 { + width: 33.33333333333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.666666666666664%; +} +.col-xs-1 { + width: 8.333333333333332%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666666666666%; +} +.col-xs-pull-10 { + right: 83.33333333333334%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666666666666%; +} +.col-xs-pull-7 { + right: 58.333333333333336%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666666666667%; +} +.col-xs-pull-4 { + right: 33.33333333333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.666666666666664%; +} +.col-xs-pull-1 { + right: 8.333333333333332%; +} +.col-xs-pull-0 { + right: 0; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666666666666%; +} +.col-xs-push-10 { + left: 83.33333333333334%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666666666666%; +} +.col-xs-push-7 { + left: 58.333333333333336%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666666666667%; +} +.col-xs-push-4 { + left: 33.33333333333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.666666666666664%; +} +.col-xs-push-1 { + left: 8.333333333333332%; +} +.col-xs-push-0 { + left: 0; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666666666666%; +} +.col-xs-offset-10 { + margin-left: 83.33333333333334%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666666666666%; +} +.col-xs-offset-7 { + margin-left: 58.333333333333336%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666666666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.666666666666664%; +} +.col-xs-offset-1 { + margin-left: 8.333333333333332%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666666666666%; + } + .col-sm-10 { + width: 83.33333333333334%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666666666666%; + } + .col-sm-7 { + width: 58.333333333333336%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666666666667%; + } + .col-sm-4 { + width: 33.33333333333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.666666666666664%; + } + .col-sm-1 { + width: 8.333333333333332%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666666666666%; + } + .col-sm-pull-10 { + right: 83.33333333333334%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666666666666%; + } + .col-sm-pull-7 { + right: 58.333333333333336%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666666666667%; + } + .col-sm-pull-4 { + right: 33.33333333333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.666666666666664%; + } + .col-sm-pull-1 { + right: 8.333333333333332%; + } + .col-sm-pull-0 { + right: 0; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666666666666%; + } + .col-sm-push-10 { + left: 83.33333333333334%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666666666666%; + } + .col-sm-push-7 { + left: 58.333333333333336%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666666666667%; + } + .col-sm-push-4 { + left: 33.33333333333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.666666666666664%; + } + .col-sm-push-1 { + left: 8.333333333333332%; + } + .col-sm-push-0 { + left: 0; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666666666666%; + } + .col-sm-offset-10 { + margin-left: 83.33333333333334%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666666666666%; + } + .col-sm-offset-7 { + margin-left: 58.333333333333336%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666666666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.666666666666664%; + } + .col-sm-offset-1 { + margin-left: 8.333333333333332%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666666666666%; + } + .col-md-10 { + width: 83.33333333333334%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666666666666%; + } + .col-md-7 { + width: 58.333333333333336%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666666666667%; + } + .col-md-4 { + width: 33.33333333333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.666666666666664%; + } + .col-md-1 { + width: 8.333333333333332%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666666666666%; + } + .col-md-pull-10 { + right: 83.33333333333334%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666666666666%; + } + .col-md-pull-7 { + right: 58.333333333333336%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666666666667%; + } + .col-md-pull-4 { + right: 33.33333333333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.666666666666664%; + } + .col-md-pull-1 { + right: 8.333333333333332%; + } + .col-md-pull-0 { + right: 0; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666666666666%; + } + .col-md-push-10 { + left: 83.33333333333334%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666666666666%; + } + .col-md-push-7 { + left: 58.333333333333336%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666666666667%; + } + .col-md-push-4 { + left: 33.33333333333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.666666666666664%; + } + .col-md-push-1 { + left: 8.333333333333332%; + } + .col-md-push-0 { + left: 0; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666666666666%; + } + .col-md-offset-10 { + margin-left: 83.33333333333334%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666666666666%; + } + .col-md-offset-7 { + margin-left: 58.333333333333336%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666666666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.666666666666664%; + } + .col-md-offset-1 { + margin-left: 8.333333333333332%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666666666666%; + } + .col-lg-10 { + width: 83.33333333333334%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666666666666%; + } + .col-lg-7 { + width: 58.333333333333336%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666666666667%; + } + .col-lg-4 { + width: 33.33333333333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.666666666666664%; + } + .col-lg-1 { + width: 8.333333333333332%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666666666666%; + } + .col-lg-pull-10 { + right: 83.33333333333334%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666666666666%; + } + .col-lg-pull-7 { + right: 58.333333333333336%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666666666667%; + } + .col-lg-pull-4 { + right: 33.33333333333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.666666666666664%; + } + .col-lg-pull-1 { + right: 8.333333333333332%; + } + .col-lg-pull-0 { + right: 0; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666666666666%; + } + .col-lg-push-10 { + left: 83.33333333333334%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666666666666%; + } + .col-lg-push-7 { + left: 58.333333333333336%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666666666667%; + } + .col-lg-push-4 { + left: 33.33333333333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.666666666666664%; + } + .col-lg-push-1 { + left: 8.333333333333332%; + } + .col-lg-push-0 { + left: 0; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666666666666%; + } + .col-lg-offset-10 { + margin-left: 83.33333333333334%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666666666666%; + } + .col-lg-offset-7 { + margin-left: 58.333333333333336%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666666666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.666666666666664%; + } + .col-lg-offset-1 { + margin-left: 8.333333333333332%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + max-width: 100%; + background-color: transparent; +} +th { + text-align: left; +} +.table { + width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.428571429; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +@media (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-x: scroll; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + /* IE8-9 */ + line-height: normal; +} +input[type="file"] { + display: block; +} +select[multiple], +select[size] { + height: auto; +} +select optgroup { + font-family: inherit; + font-size: inherit; + font-style: inherit; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.428571429; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.428571429; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control:-moz-placeholder { + color: #999; +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eee; +} +textarea.form-control { + height: auto; +} +input[type="date"] { + line-height: 34px; +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + display: block; + min-height: 20px; + padding-left: 20px; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + display: inline; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +.radio[disabled], +.radio-inline[disabled], +.checkbox[disabled], +.checkbox-inline[disabled], +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"], +fieldset[disabled] .radio, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm { + height: auto; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg { + height: auto; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.has-feedback .form-control-feedback { + position: absolute; + top: 25px; + right: 0; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.form-control-static { + margin-bottom: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .control-label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +.form-horizontal .form-control-static { + padding-top: 7px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + top: 0; + right: 15px; +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.428571429; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + color: #333; + background-color: #ebebeb; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #428bca; + border-color: #357ebd; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #3276b1; + border-color: #285e8e; +} +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #428bca; + border-color: #357ebd; +} +.btn-primary .badge { + color: #428bca; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #47a447; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #39b3d7; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ed9c28; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #d2322d; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #428bca; + cursor: pointer; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #2a6496; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #999; + text-decoration: none; +} +.btn-lg { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +.btn-sm { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height .35s ease; + transition: height .35s ease; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.428571429; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #428bca; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.428571429; + color: #999; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px solid; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus { + outline: none; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #999; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #999; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #428bca; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.428571429; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #428bca; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + max-height: 340px; + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > .glyphicon { + float: left; + margin-top: -2px; + margin-right: 5px; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: none; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } + .navbar-nav.navbar-right:last-child { + margin-right: -15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-form.navbar-right:last-child { + margin-right: -15px; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } + .navbar-text.navbar-right:last-child { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #999; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #999; +} +.navbar-inverse .navbar-nav > li > a { + color: #999; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #999; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #999; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #999; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.428571429; + color: #428bca; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #2a6496; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #fff; + cursor: default; + background-color: #428bca; + border-color: #428bca; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #999; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +.label[href]:hover, +.label[href]:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #999; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #808080; +} +.label-primary { + background-color: #428bca; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #3071a9; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #999; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #428bca; + background-color: #fff; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.container .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.428571429; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + display: block; + max-width: 100%; + height: auto; + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #428bca; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable { + padding-right: 35px; +} +.alert-dismissable .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media, +.media .media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-object { + display: block; +} +.media-heading { + margin: 0 0 5px; +} +.media > .pull-left { + margin-right: 10px; +} +.media > .pull-right { + margin-left: 10px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +a.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #f5f5f5; +} +a.list-group-item.active, +a.list-group-item.active:hover, +a.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #428bca; + border-color: #428bca; +} +a.list-group-item.active .list-group-item-heading, +a.list-group-item.active:hover .list-group-item-heading, +a.list-group-item.active:focus .list-group-item-heading { + color: inherit; +} +a.list-group-item.active .list-group-item-text, +a.list-group-item.active:hover .list-group-item-text, +a.list-group-item.active:focus .list-group-item-text { + color: #e1edf7; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item { + border-width: 1px 0; +} +.panel > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel > .list-group .list-group-item:last-child { + border-bottom: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table { + margin-bottom: 0; +} +.panel > .table > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive > .table > tbody:last-child > tr:last-child td:first-child, +.panel > .table > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive > .table > tfoot:last-child > tr:last-child td:first-child, +.panel > .table > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive > .table > tbody:last-child > tr:last-child th:first-child, +.panel > .table > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive > .table > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive > .table > tbody:last-child > tr:last-child td:last-child, +.panel > .table > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive > .table > tfoot:last-child > tr:last-child td:last-child, +.panel > .table > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive > .table > tbody:last-child > tr:last-child th:last-child, +.panel > .table > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive > .table > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child th, +.panel > .table > tbody:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:last-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:last-child > th, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-bordered > thead > tr:last-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel-group .panel { + margin-bottom: 0; + overflow: hidden; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse .panel-body { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #428bca; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #428bca; + border-color: #428bca; +} +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #428bca; +} +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #428bca; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ebccd1; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: auto; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -moz-transition: -moz-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + min-height: 16.428571429px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.428571429; +} +.modal-body { + position: relative; + padding: 20px; +} +.modal-footer { + padding: 19px 20px 20px; + margin-top: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 12px; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover .arrow { + border-width: 11px; +} +.popover .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; + line-height: 1; +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .5) 0%), color-stop(rgba(0, 0, 0, .0001) 100%)); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .0001) 0%), color-stop(rgba(0, 0, 0, .5) 100%)); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: none; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicons-chevron-left, + .carousel-control .glyphicons-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +tr.visible-xs, +th.visible-xs, +td.visible-xs { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +.visible-sm, +tr.visible-sm, +th.visible-sm, +td.visible-sm { + display: none !important; +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +.visible-md, +tr.visible-md, +th.visible-md, +td.visible-md { + display: none !important; +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +.visible-lg, +tr.visible-lg, +th.visible-lg, +td.visible-lg { + display: none !important; +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .hidden-xs, + tr.hidden-xs, + th.hidden-xs, + td.hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm, + tr.hidden-sm, + th.hidden-sm, + td.hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md, + tr.hidden-md, + th.hidden-md, + td.hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg, + tr.hidden-lg, + th.hidden-lg, + td.hidden-lg { + display: none !important; + } +} +.visible-print, +tr.visible-print, +th.visible-print, +td.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +@media print { + .hidden-print, + tr.hidden-print, + th.hidden-print, + td.hidden-print { + display: none !important; + } +} diff --git a/photocast/card.css b/photocast/card.css new file mode 100644 index 0000000..e857a47 --- /dev/null +++ b/photocast/card.css @@ -0,0 +1,241 @@ +.card { + padding-top: 5px; + margin: 10px 0 20px 0; + background-color: #ffffff; + border: 1px solid #d8d8d8; + border-top-width: 0; + border-bottom-width: 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.card .card-heading { + padding: 0 20px; + margin: 0; +} + +.card .card-heading.simple { + font-size: 20px; + font-weight: 300; + color: #777; + border-bottom: 1px solid #e5e5e5; + text-align: left; +} + +.card .card-heading.image img { + display: inline-block; + width: 46px; + height: 46px; + margin-right: 15px; + vertical-align: top; + border: 0; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} + +.card .card-heading.image .card-heading-header { + display: inline-block; + vertical-align: top; +} + +.card .card-heading.image .card-heading-header h3 { + margin: 0; + font-size: 14px; + line-height: 16px; + color: #262626; +} + +.card .card-heading.image .card-heading-header span { + font-size: 12px; + color: #999999; +} + +.card .card-body { + padding: 0 20px; + margin: 10px 0; +} + +.card .card-media { + padding: 0 20px; + margin: 0 -14px; +} + +.card .card-media img { + max-width: 100%; + max-height: 100%; +} + +.card .card-actions { + min-height: 30px; + padding: 0 20px 20px 20px; + margin: 20px 0 0 0; +} + +.card .card-comments { + padding: 20px; + margin: 0; + background-color: #f8f8f8; +} + +.card .card-comments .comments-collapse-toggle { + padding: 0; + margin: 0 20px 12px 20px; +} + +.card .card-comments .comments-collapse-toggle a, +.card .card-comments .comments-collapse-toggle span { + padding-right: 5px; + overflow: hidden; + font-size: 12px; + color: #999; + text-overflow: ellipsis; + white-space: nowrap; +} + +.card-comments .media-heading { + font-size: 13px; + font-weight: bold; +} + +.card.people { + position: relative; + display: inline-block; + width: 170px; + height: 300px; + padding-top: 0; + margin-left: 20px; + overflow: hidden; + vertical-align: top; +} + +.card.people:first-child { + margin-left: 0; +} + +.card.people .card-top { + position: absolute; + top: 0; + left: 0; + display: inline-block; + width: 170px; + height: 150px; + background-color: #ffffff; +} + +.card.people .card-top.green { + background-color: #53a93f; +} + +.card.people .card-top.blue { + background-color: #427fed; +} + +.card.people .card-info { + position: absolute; + top: 150px; + display: inline-block; + width: 100%; + height: 101px; + overflow: hidden; + background: #ffffff; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.card.people .card-info .title { + display: block; + margin: 8px 14px 0 14px; + overflow: hidden; + font-size: 16px; + font-weight: bold; + line-height: 18px; + color: #404040; +} + +.card.people .card-info .desc { + display: block; + margin: 8px 14px 0 14px; + overflow: hidden; + font-size: 12px; + line-height: 16px; + color: #737373; + text-overflow: ellipsis; +} + +.card.people .card-bottom { + position: absolute; + bottom: 0; + left: 0; + display: inline-block; + width: 100%; + padding: 10px 20px; + line-height: 29px; + text-align: center; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.card.hovercard { + position: relative; + width: 240px; + padding-top: 0; + overflow: hidden; + text-align: center; + background-color: #fff; +} + +.card.hovercard img { + width: 240px; + height: 135px; +} + +.card.hovercard .avatar { + position: relative; + top: -40px; + margin-bottom: -40px; +} + +.card.hovercard .avatar img { + width: 80px; + height: 80px; + max-width: 80px; + max-height: 80px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} + +.card.hovercard .info { + padding: 4px 8px 10px; +} + +.card.hovercard .info .title { + margin-bottom: 4px; + font-size: 24px; + line-height: 1; + color: #262626; + vertical-align: middle; +} + +.card.hovercard .info .desc { + overflow: hidden; + font-size: 12px; + line-height: 20px; + color: #737373; + text-overflow: ellipsis; +} + +.card.hovercard .bottom { + padding: 0 20px; + margin-bottom: 17px; +} \ No newline at end of file diff --git a/slideshow/sender/cast.png b/photocast/cast.png similarity index 100% rename from slideshow/sender/cast.png rename to photocast/cast.png diff --git a/slideshow/sender/casting.png b/photocast/casting.png similarity index 100% rename from slideshow/sender/casting.png rename to photocast/casting.png diff --git a/photocast/gplus.png b/photocast/gplus.png new file mode 100644 index 0000000000000000000000000000000000000000..a347a8e3a95804c09f7b060eadb5c79d8c97b5cb GIT binary patch literal 481 zcmV<70UrK|P) z&ntvM7{}izQ6frGT$J)ZaBvhUadUBS*u6Mw4;&Q2K`EsqY)KAM(zfkk<+3FX4#Hvm z$Q~r`0g)y4^_}{@H8f-8eTTN*w?2pMdEa?HJ2THSV>ymv{U=r+5C{~CKq(jphu{Xh zIiDXJgiQ%FgDbEO%1M-oUqQdg87Ky6{_CPIv3*KBfGSf0gG{oki1kWKFl@dNtCVs~Fv?+mEX_~t=0y)sC`F;*$ya?2BlZoe?72w8dKo)F%^Zgol z_F9JR;GPnqA_hQ+LJ3xiQ2{|Uh_L>TDRT$P6z@jam~1A`NxyABT5&?E|5`Sztoin5UrrFP5ML^nfw23f?7&YtU#)pb{)|y7#~&J76a`k|ffa%_x>5`CEYo zuHg$4s%B+NlIZih5p8qe`8uBxM<=q66e4LCER8ru3c@Q1B`N$E}6U$iB>xWPI&f + + +PhotoCast + + + + + + +
+

Photocast

+
+
+ + + +
+ + + + diff --git a/photocast/receiver/receiver.css b/photocast/receiver/receiver.css new file mode 100644 index 0000000..388a05b --- /dev/null +++ b/photocast/receiver/receiver.css @@ -0,0 +1,21 @@ +body { + overflow:hidden; +} +div { + height: 720px; + width: 1280px; + text-align:center; + border:0px solid silver; + display: table-cell; + vertical-align:middle; + color:#FFFFFF; + background-color:#000000; + font-weight:bold; + font-family:Verdana, Geneva, sans-serif; + font-size:40px; +} + +img { + max-width: 100%; + max-height: 100%; +} \ No newline at end of file diff --git a/photocast/receiver/receiver.html b/photocast/receiver/receiver.html new file mode 100644 index 0000000..a4bb1f6 --- /dev/null +++ b/photocast/receiver/receiver.html @@ -0,0 +1,12 @@ + + + + + Photocast + + + +
Photocast waiting for input...
+ + + \ No newline at end of file diff --git a/slideshow/receiver/receiver.js b/photocast/receiver/receiver.js similarity index 58% rename from slideshow/receiver/receiver.js rename to photocast/receiver/receiver.js index 48d5e3e..b6c73c8 100644 --- a/slideshow/receiver/receiver.js +++ b/photocast/receiver/receiver.js @@ -1,15 +1,14 @@ -(function(global) { +(function (global) { "use strict"; - var - my_app_id = "", - my_namespace = "", doc = global.document, - receiver, - channelHandler, - messages = doc.getElementById("messages"), - max_width = messages.offsetWidth, - max_height = messages.offsetHeight, + namespace = "urn:x-cast:com.appspot.allmyplus.photocast", + dom = { + "message": doc.getElementById("message") + }, + castReceiverManager, messageBus, + max_width = dom.message.offsetWidth, + max_height = dom.message.offsetHeight, callback_count = 0, photos = [], currentPhoto = -1, timer, stopped = false, displayTime = 4000; @@ -74,14 +73,11 @@ } img.style.width = w + "px"; img.style.height = h + "px"; - if (h < max_height) { - img.style.marginTop = ((max_height - h) / 2) + "px"; - } img.src = image.src; - messages.innerHTML = ""; - messages.appendChild(img); + dom.message.innerHTML = ""; + dom.message.appendChild(img); // immediately start loading the next image timer = global.setTimeout(slideShow, 1); @@ -90,7 +86,7 @@ start = (new Date()).getTime(); image.src = photos[currentPhoto]; } else { - messages.innerHTML = "No photos found."; + dom.message.innerHTML = "No photos found."; } } @@ -105,34 +101,54 @@ } } stopped = false; + castReceiverManager.setApplicationState("Displaying slideshow..."); global.setTimeout(slideShow, 1); } - function onMessage(event) { - if (!!event.message.url) { - // Stop previous slideshow if still running - stopped = true; - global.clearTimeout(timer); + function init() { + castReceiverManager = global.cast.receiver.CastReceiverManager.getInstance(); - messages.innerHTML = "Fetching photos..."; - fetchData(event.message.url, loadAlbum); - return; - } - if (!!event.message.action) { - if (event.message.action === "STOP_CAST") { + castReceiverManager.onReady = function() { + castReceiverManager.setApplicationState("Application status is ready."); + }; + + castReceiverManager.onSenderDisconnected = function() { + if (castReceiverManager.getSenders().length === 0) { + global.close(); + } + }; + + messageBus = castReceiverManager.getCastMessageBus(namespace, global.cast.receiver.CastMessageBus.MessageType.JSON); + + messageBus.onMessage = function(event) { + + // Handle message + if (!!event.data.url) { + // Stop previous slideshow if still running stopped = true; global.clearTimeout(timer); - messages.innerHTML = "Waiting for input..."; - return; + + dom.message.innerHTML = "Photocast fetching photos..."; + castReceiverManager.setApplicationState("Fetching photos..."); + fetchData(event.data.url, loadAlbum); + } else { + if (!!event.data.action) { + if (event.data.action === "STOP_CAST") { + stopped = true; + global.clearTimeout(timer); + dom.message.innerHTML = "Photocast waiting for input..."; + castReceiverManager.setApplicationState("Waiting for input..."); + } + } } - } + + messageBus.send(event.senderId, event.data); + }; + + // initialize the CastReceiverManager with an application status message + castReceiverManager.start({statusText: "Application is starting"}); } - // initialize receiver - receiver = new global.cast.receiver.Receiver(my_app_id, [my_namespace]); - channelHandler = new global.cast.receiver.ChannelHandler(my_namespace); - channelHandler.addChannelFactory(receiver.createChannelFactory(my_namespace)); - receiver.start(); - channelHandler.addEventListener(global.cast.receiver.Channel.EventType.MESSAGE, onMessage); + global.onload = init; }(this)); \ No newline at end of file diff --git a/photocast/sender.css b/photocast/sender.css new file mode 100644 index 0000000..08df4d9 --- /dev/null +++ b/photocast/sender.css @@ -0,0 +1,108 @@ +* { box-sizing: border-box; } + +body { + font-family: OpenSans, Helvetica, Arial, sans; + margin: 0; + text-align: center; + overflow: auto; + background-color: #f4f4f4; + padding-top: 20px; + padding-bottom: 20px; +} + +.album { + position: relative; + display: inline-block; + vertical-align: top; + width: 130px; + text-align: center; + margin: 5px 0; +} + +.cast { + cursor: pointer; + position: absolute; + right: 10px; + bottom: 5px; + background-color: rgba(255,255,255,0.5); + border-radius: 6px; +} + +.plus { + cursor: pointer; + position: absolute; + left: 10px; + bottom: 5px; + background-color: rgba(255,255,255,0.5); + border-radius: 6px; +} + +.cast:hover { + background-color: #0F0; +} + +.plus:hover { + background-color: #F00; +} + +.no_receiver .cast { + display: none; +} + +/* Custom page header */ +.header { + border-bottom: 1px solid #e5e5e5; +} +/* Make the masthead heading the same height as the navigation */ +.header h3 { + margin-top: 0; + margin-bottom: 0; + line-height: 40px; + padding-bottom: 19px; +} + +/* Custom page footer */ +.footer { + padding-top: 19px; + color: #777; + border-top: 1px solid #e5e5e5; +} + +@media (min-width: 768px) { + .container { + max-width: 90%; + } +} + +.disclaimer { + color: #777; + font-size: 0.9em; +} + +.signout { + display: inline-block; + background: #999; + color: white; + border-radius: 5px; + white-space: nowrap; + cursor: pointer; +} + +.signout:hover { + background: #555; +} + +.signout .icon { + display: inline-block; + vertical-align: middle; + height: 35px; +} + +.label { + display: inline-block; + vertical-align: middle; + padding-left: 35px; + padding-right: 35px; + font-size: 14px; + font-weight: bold; +} \ No newline at end of file diff --git a/photocast/sender.js b/photocast/sender.js new file mode 100644 index 0000000..a4994f9 --- /dev/null +++ b/photocast/sender.js @@ -0,0 +1,281 @@ +(function (global) { + "use strict"; + + var + doc = global.document, + con = global.console, + chr = global.chrome, + applicationID = "YOUR_APP_ID", + namespace = "urn:x-cast:com.appspot.allmyplus.photocast", + session = null, gapi, my_id, currentCast, + dom = { + "messageCard": doc.getElementById("messageCard"), + "message": doc.getElementById("message"), + "signinButton": doc.getElementById("signinButton"), + "signoutButton": doc.getElementById("signoutButton"), + "app": doc.getElementById("app"), + "albums": doc.getElementById("albums"), + "albumheader": doc.getElementById("albumheader") + }; + + function showMessage(message) { + if (message) { + dom.message.innerHTML = message; + dom.messageCard.style.display = "block"; + } else { + dom.message.innerHTML = ""; + dom.messageCard.style.display = "none"; + } + } + + function onInitSuccess() { + con.log("onInitSuccess"); + } + + function onError(message) { + con.log("onError: " + JSON.stringify(message)); + } + + function onSuccess(message) { + con.log("onSuccess: " + message); + } + + function sessionUpdateListener(isAlive) { + var message = isAlive ? "Session Updated" : "Session Removed"; + message += ": " + session.sessionId; + con.log(message); + if (!isAlive) { + session = null; + if (!!currentCast) { + currentCast.src = "cast.png"; + currentCast = null; + } + } + } + + function receiverMessage(namespace, message) { + con.log("receiverMessage: " + namespace, message); + } + + function sessionListener(e) { + con.log("New session ID:" + e.sessionId); + session = e; + session.addUpdateListener(sessionUpdateListener); + session.addMessageListener(namespace, receiverMessage); + } + + function receiverListener(e) { + if (e === "available") { + con.log("receiver found"); + dom.albums.classList.remove("no_receiver"); + showMessage(); + } else { + con.log("receiver list empty"); + dom.albums.classList.add("no_receiver"); + showMessage("No receivers found..."); + } + } + + function loadPlus() { + var po, s; + po = doc.createElement("script"); + po.type = "text/javascript"; + po.async = true; + po.src = "https://apis.google.com/js/client:plusone.js"; + s = doc.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(po, s); + } + + function initializeCastApi() { + var + sessionRequest = new chr.cast.SessionRequest(applicationID), + apiConfig = new chr.cast.ApiConfig(sessionRequest, + sessionListener, + receiverListener); + + chr.cast.initialize(apiConfig, onInitSuccess, onError); + loadPlus(); + } + + function waitForApi() { + if (!chr.cast || !chr.cast.isAvailable) { + global.setTimeout(waitForApi, 100); + } else { + initializeCastApi(); + } + } + + if (!chr) { + showMessage("Sorry! This page only works in Google Chrome."); + return; + } + + if (!chr.cast) { + showMessage("Cast API not found, this shouldn't happen..."); + return; + } + + if (chr.cast.extensionId) { + waitForApi(); + } else { + chr.cast.ApiBootstrap_.findInstalledExtension_(function (extensionId) { + if (!extensionId) { + showMessage("Please install the Google Cast extension."); + } else { + waitForApi(); + } + }); + } + + function sendMessage(message, cb) { + if (session !== null) { + session.sendMessage(namespace, message, cb.bind(global, true), cb.bind(global, false)); + } else { + chr.cast.requestSession(function(e) { + session = e; + session.addUpdateListener(sessionUpdateListener); + session.addMessageListener(namespace, receiverMessage); + session.sendMessage(namespace, message, cb.bind(global, true), cb.bind(global, false)); + }, onError); + } + } + + function fetchData(url, cb) { + var script; + + global.jsonp_callback = function (data) { + cb(data); + }; + + if (url.indexOf("?") >= 0) { + url += "&"; + } else { + url += "?"; + } + url += "callback=jsonp_callback"; + + script = doc.createElement("script"); + script.src = url; + doc.head.appendChild(script); + } + + function castAlbum(e) { + var url = e.target.getAttribute("data-url"); + if (!!url) { + if (currentCast === e.target) { + // album is already being cast, stop casting + sendMessage({"action": "STOP_CAST"}, function (success, error) { + if (success) { + currentCast.src = "cast.png"; + currentCast = null; + } else { + con.log(error); + } + }); + } else { + sendMessage({"url": url}, function (success, error) { + if (success) { + if (!!currentCast) { + currentCast.src = "cast.png"; + } + currentCast = e.target; + currentCast.src = "casting.png"; + } else { + con.log(error); + } + }); + } + } + } + + function showAlbums(data) { + var i, album, div, img, a; + if (!!data && !!data.feed && !!data.feed.entry && data.feed.entry.length > 0) { + dom.albums.innerHTML = ""; + dom.albumheader.style.display = "block"; + for (i = 0; i < data.feed.entry.length; i++) { + album = data.feed.entry[i]; + if (album.gphoto$numphotos.$t > 3) { // skipping small albums (mostly photos from posts) + div = doc.createElement("div"); + div.className = "album"; + img = doc.createElement("img"); + img.src = album.media$group.media$thumbnail[0].url.replace("/s160-c/", "/s120-c/"); + img.title = album.title.$t + " / " + album.gphoto$numphotos.$t + " photos"; + div.appendChild(img); + a = doc.createElement("a"); + a.href = "https://plus.google.com/photos/" + my_id + "/albums/" + album.gphoto$id.$t; + a.target="_blank"; + a.className = "plus"; + img = doc.createElement("img"); + img.src = "gplus.png"; + a.appendChild(img); + div.appendChild(a); + img = doc.createElement("img"); + img.src = "cast.png"; + img.className = "cast"; + img.setAttribute("data-url", album.link[0].href); + img.title = album.title.$t + " / " + album.gphoto$numphotos.$t + " photos"; + div.appendChild(img); + dom.albums.appendChild(div); + img.onclick = castAlbum; + } + } + } + } + + function initializeApp() { + gapi = global.gapi; + gapi.client.load("plus", "v1", function () { + gapi.client.plus.people.get({"userId": "me"}).execute(function (data) { + my_id = data.id; + fetchData("https://picasaweb.google.com/data/feed/api/user/" + my_id + "?kind=album&alt=json", showAlbums); + }); + }); + } + + global.signinCallback = function (authResult) { + if (authResult && !authResult.error) { + dom.signinButton.style.display = "none"; + dom.albumheader.style.display = "none"; + dom.app.style.display = "block"; + initializeApp(); + } else { + dom.signinButton.style.display = "block"; + dom.app.style.display = "none"; + } + }; + + function onStopAppSuccess() { + con.log("onStopAppSuccess"); + } + + global.disconnectCallback = function (data) { + con.log(data); + }; + + dom.signoutButton.onclick = function () { + var script, token; + dom.app.style.display = "none"; + dom.signinButton.style.display = "block"; + if (!!session) { + session.stop(onStopAppSuccess, onError); + session = null; + if (!!currentCast) { + currentCast.src = "cast.png"; + currentCast = null; + } + } + + token = global.gapi.auth.getToken(); + + if (token && token.access_token) { + // Revoke permissions + script = doc.createElement("script"); + script.src = "https://accounts.google.com/o/oauth2/revoke?token=" + token.access_token + "&callback=disconnectCallback"; + doc.head.appendChild(script); + } + }; + +}(this)); + + diff --git a/slideshow/android/SlideshowCast/AndroidManifest.xml b/slideshow/android/SlideshowCast/AndroidManifest.xml deleted file mode 100644 index 147331c..0000000 --- a/slideshow/android/SlideshowCast/AndroidManifest.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/slideshow/android/SlideshowCast/libs/urlimageviewhelper-1.0.4.jar b/slideshow/android/SlideshowCast/libs/urlimageviewhelper-1.0.4.jar deleted file mode 100644 index 4270b56f00719b22d3e65fe511832c352a016c88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36348 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 diff --git a/slideshow/android/SlideshowCast/res/drawable-hdpi/ic_user.png b/slideshow/android/SlideshowCast/res/drawable-hdpi/ic_user.png deleted file mode 100644 index bc33709ba9494aa00927a73a7002440e1e5ebbe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2449 zcmV;C32yd@P)-=PA;5tDX9x`qOxwl29QH9MTgx$#~ts;y} z1J=nyc>D2h4<+nVLg+u0I13+I;XFSc-kw*2=DvGss?}z104XaOA>TrWzpS&<7XWmh z%4oAX7;ihWyz0L?P1XU)R82I-8eE`^J=b4id%k1g^vlLX^|#I$L7qTl9%JMMK>3D#IL2F2 zN)CXi$J>3*BgUn*C2~TLD-dab;@2>pZqSAxp#>%98DrlI`}Y)=7KI6N z`J;8n*K8Ltnr|6QvpP((og#LH339hZHXV<}Vpo_TkH703SAafWCwM)dV5J3xepPJMgvz>y$nIcBVL8kj6 zja7Z(y)ACkwh%${0^K(%OyvZX7&SOf?Rzb8Rwa`77a|B-{B&&boS=!m#Sf21A5rNo zp$5k}qXQ&FP%774G;k_!8AGGJ8r!}Hu~3yrEF?q_PVUqlh#muuS?00lMZ+;H(z8V@ zi4g=#*u{9@b-#$we9NGdJA%H7dJ(&32znj{*NPa;w+!ylHU+)TCq?WE6NKdagGkOx z%l(Rg*DHfgu7U@>ski;ecESYBYx%cBv06HzEKQ<}{)180Ap*#(4D!(qB=GJXp+_Z_ zL1(D$mTnQ~)j>%Z=PCx;F9Nu1<2iRj}prUFV}>ncAH1!qLgz2nnzk}TQ-ncGLmowiw2*MYjq{}|CFWepluf;;%9a3A)| z3;=c^KwB;npc(4W=W!YL)~1ninBPx@eHG6d()ESLraXx28alYXhp+c!0Mddme-*;~ zm>HlMWkHT75Pb$@jLP>Q#qq%<+P_5PfGX94xH8YS&KjmD{3f$3eMjg^WyR%d_AI0c zsU&gF@kiHTq4)*#T1V*aRTSmE_WJU6v-V7T&@ce(9_s=0SNJ=fP7Ek{!GyI&6vLD;UBDvJeo5k8MgM)y*F@R7Q*t zmC8ermS(3!WHN*|WF-bp1W<@(#A#l*sXiVpCyyUhAg^n_Tc6@{5?i6UiR zrb2`HJ37A-Pg-iAXfdYFD(Fm?#l%KRp0)R>8xAy8@(NjLk92~ru1WqVY7^N;{QV_O zw2WLv)crB&JPl&cBb|c#05Sz~H-qClp@)CZ^jyLZPa~bdi?*acIU^|LP5#ci2~&QJ z&hnDqTs(WJs;&<!>`@cPnFWh-gmwXZ1xOk9^khaT8EhBa*m*0XoR!SelPi#LY}GffabgI(^6dR0o+K-nTFPFKu%9Khd12mH6j z%8zVmqDhe{va*?3P8N61#lpT6w)k#%M;bjU2zwv7>CL4jj)2)SnK(hIJWTfr9Mk!A z$~W=Rql=g19>?cHh<6Z$og`E}ZBgxKt$p!}2R?SDiVNn??y@IJ>{F6Td^!Tnn~_ht z6`oj)pLnq-zpT_#QOg(j4=JI)4SLH_;4Ze{>*>^(K}sDORrP0}nF`pTnP#xw~Ux?<)oIY&!bf&G3| zO(g3NFS{w44YwviD06um3P#;G6&MlO;5H-CmMuM;J$4ydcX)zbPux+6ydmSu7H3pLTrYJ%|cIipGSiQRo|biG!}W*_uAyGAx0Ly)_zYc)~>uWReO_F7EM(e{Kx#$7)oWP^D&!940=wo>BNs*sN#}KfG)C)x;0g$K9ENq| P00000NkvXXu0mjfE1I9( diff --git a/slideshow/android/SlideshowCast/res/drawable-mdpi/ic_launcher.png b/slideshow/android/SlideshowCast/res/drawable-mdpi/ic_launcher.png deleted file mode 100644 index 9bd87fce7b425dd53db31a4784fcc7781f946606..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 602 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 diff --git a/slideshow/android/SlideshowCast/res/drawable-xxhdpi/ic_launcher.png b/slideshow/android/SlideshowCast/res/drawable-xxhdpi/ic_launcher.png deleted file mode 100644 index 02bf3729ee971cffb0f9f00fd3f1b6eb9447092e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1341 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$farftAJ6#WAGf*4w#1vsGLr9HL#1 ze(l))sPpyPszoavG;+P#C8yKX(V?WI^{aV%#lqLDk6MrUE?aGVbHnRaL7NXuA02uP zJ!?&0bN!xN@3Usr$(mTx-G`L&lG5%qA3u;HWHkBshtks0Wg0*Wi2`gBtDdb`v}OAv zr5m@3GXAq(*)(0$jYa(6t-0O~9u6!nFw_EKZZT%oTAIY0&b~H9nKAeE;x*geDI8m; ztiYs%6Dc6cFd?f$mcY=iu;6X*ZsWhg@%LZYX?gvOHGQXe3aVkj(xkh8*1h`kNAKqK zRXaoNrd$tweC#jx$GuS}|4uPH!67T^v0LQRTD+0I6}SR zeK7iR^-s&^Ia_n)hxMG1U6+?3|7iZ5304~`|0n%@q6W+*stH%teMziYEA{i#{knBh+fUx#w`5w;{Q5ITv)=mY zy8X9t;58QIxe|CIAaIwo^jq0~`^1Ia_wHXc)#s;p(yohB|HZy613JQ06B^80Bzki0 z9{>Mo`s%5Bk5x~PI;CtkYg*Qu>U;UpOTT@$Un;fJOnTGd^X+zg8gm?E=idr{8yh+A z&MxcbbU&7C4&-S$lV&+Zd1vpO_v zgXQlfYE=gCGN$VH)E?!3Y`#Ld*j-qFQ4oy&iuY{o|GNJV`_96(%ab+pf8VaYdTE_z zRK3i~W4_;urbeACZY{j8vhVf#`XJuwzC&u;jxEgb(7!$XSLB;t`?gHl_>Ws7hs*fg zyd%p$GaPzWIWzF_?jWI_iNTx7mk30t9`2l9Q6JR1rnkBJ`iH-T2Jsuduju2ys|rb3 z3+ff#Wai!MzH%z|?cquX-q$uuYi3#qK9{-5e=IRL^7^gV7xl;HX4%}-3eK9dcv7jF z^6~0^&o$L@`J6BQ`&3+?G3So&Tb^y&SEkw8TWe`QeLPP)cz%4xf@It37@0G>k16+m z(Kx?%PVKZR3oUQ`9FtFO+mts=ii9QQ1#bnv8HT?zGkx>iQ{RNAyFF34_Il8~um2Xc zmCn0#cTt;ryxcg@ReOwoCxc;@lH`A?K!qe>S+f=9ClALrr%+W%UUC1pL+aVQ5B#FLj=es3=%;S!o%`l9D~k7RcoC-0b4m7boAGzo#W4ru6D>EN zox1Yf_MGO38yfTFR9hEXbVrtqqXV}`+$U>6NgZK+Kh3CGB z-kAMp--~r_=T4-}+L33n-K+QczDHYAWKW+}PwQWw&eyH(v%4+f(((57%tVwqJO=g5 X`?CWw?(MB{11a}(^>bP0l+XkK(dI|M diff --git a/slideshow/android/SlideshowCast/res/drawable-xxhdpi/ic_user.png b/slideshow/android/SlideshowCast/res/drawable-xxhdpi/ic_user.png deleted file mode 100644 index 29260f24ab74d3267a19c49709c129049c4288ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5229 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 diff --git a/slideshow/android/SlideshowCast/res/layout/album_item.xml b/slideshow/android/SlideshowCast/res/layout/album_item.xml deleted file mode 100644 index 1ec739d..0000000 --- a/slideshow/android/SlideshowCast/res/layout/album_item.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - diff --git a/slideshow/android/SlideshowCast/res/layout/main.xml b/slideshow/android/SlideshowCast/res/layout/main.xml deleted file mode 100644 index 5548121..0000000 --- a/slideshow/android/SlideshowCast/res/layout/main.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/slideshow/android/SlideshowCast/res/menu/menu.xml b/slideshow/android/SlideshowCast/res/menu/menu.xml deleted file mode 100644 index baee3fe..0000000 --- a/slideshow/android/SlideshowCast/res/menu/menu.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/slideshow/android/SlideshowCast/res/values-sw600dp/dimens.xml b/slideshow/android/SlideshowCast/res/values-sw600dp/dimens.xml deleted file mode 100644 index 886b05f..0000000 --- a/slideshow/android/SlideshowCast/res/values-sw600dp/dimens.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/slideshow/android/SlideshowCast/res/values-sw720dp-land/dimens.xml b/slideshow/android/SlideshowCast/res/values-sw720dp-land/dimens.xml deleted file mode 100644 index 00059fc..0000000 --- a/slideshow/android/SlideshowCast/res/values-sw720dp-land/dimens.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 128dp - diff --git a/slideshow/android/SlideshowCast/res/values-v11/styles.xml b/slideshow/android/SlideshowCast/res/values-v11/styles.xml deleted file mode 100644 index 189791f..0000000 --- a/slideshow/android/SlideshowCast/res/values-v11/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/slideshow/android/SlideshowCast/res/values-v14/styles.xml b/slideshow/android/SlideshowCast/res/values-v14/styles.xml deleted file mode 100644 index 18783c7..0000000 --- a/slideshow/android/SlideshowCast/res/values-v14/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/slideshow/android/SlideshowCast/res/values/dimens.xml b/slideshow/android/SlideshowCast/res/values/dimens.xml deleted file mode 100644 index 47c8224..0000000 --- a/slideshow/android/SlideshowCast/res/values/dimens.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 16dp - 16dp - diff --git a/slideshow/android/SlideshowCast/res/values/strings.xml b/slideshow/android/SlideshowCast/res/values/strings.xml deleted file mode 100644 index 471bad2..0000000 --- a/slideshow/android/SlideshowCast/res/values/strings.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - Slideshow for Chomecast - Settings - Add - Enter a URL - Controls - Albums - Sign out - Revoke access - Thumbnail - diff --git a/slideshow/android/SlideshowCast/res/values/styles.xml b/slideshow/android/SlideshowCast/res/values/styles.xml deleted file mode 100644 index 9e3012d..0000000 --- a/slideshow/android/SlideshowCast/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/AsyncReceiver.java b/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/AsyncReceiver.java deleted file mode 100644 index a9ac081..0000000 --- a/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/AsyncReceiver.java +++ /dev/null @@ -1,5 +0,0 @@ -package at.foldedsoft.slideshowcast; - -public abstract class AsyncReceiver { - public abstract void finished(T result); -} diff --git a/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/MainActivity.java b/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/MainActivity.java deleted file mode 100644 index c88e08f..0000000 --- a/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/MainActivity.java +++ /dev/null @@ -1,419 +0,0 @@ -package at.foldedsoft.slideshowcast; - -import java.io.IOException; -import java.util.List; - -import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.GooglePlayServicesUtil; -import com.google.android.gms.common.SignInButton; -import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks; -import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener; -import com.google.android.gms.plus.PlusClient; -import com.google.android.gms.plus.PlusClient.OnAccessRevokedListener; -import com.google.android.gms.plus.model.people.Person; -import com.google.cast.ApplicationChannel; -import com.google.cast.ApplicationMetadata; -import com.google.cast.ApplicationSession; -import com.google.cast.SessionError; -import com.google.cast.CastContext; -import com.google.cast.CastDevice; -import com.google.cast.MediaRouteAdapter; -import com.google.cast.MediaRouteHelper; -import com.google.cast.MediaRouteStateChangeListener; -import com.google.cast.MessageStream; - -import org.json.JSONException; -import org.json.JSONObject; - -import android.os.Bundle; -import android.support.v4.app.FragmentActivity; -import android.support.v7.app.MediaRouteButton; -import android.support.v7.media.MediaRouteSelector; -import android.support.v7.media.MediaRouter; -import android.support.v7.media.MediaRouter.RouteInfo; - -import android.util.Log; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.GridView; -import android.widget.TextView; -import android.content.Intent; -import android.content.IntentSender; - -public class MainActivity extends FragmentActivity - implements ConnectionCallbacks, - OnConnectionFailedListener, - View.OnClickListener, - OnAccessRevokedListener, - MediaRouteAdapter, - ApplicationSession.Listener { - - private static final int REQUEST_CODE_SIGN_IN = 1; - - private static final String APP_ID = "de994775-5702-4800-b58d-74fb08dcc6c3"; - private static final String NAMESPACE = "allmyplus"; - - private PlusClient mPlusClient; - private ConnectionResult mConnectionResult; - private Menu mMenu; - private SignInButton mSignInButton; - private View mContent; - private TextView mUserInfo; - private GridView mGridView; - private boolean mConnected = false; - private CharSequence mUserId; - private CharSequence mUserName; - private CharSequence mUserAccount; - private SearchReceiver mReceiver = new SearchReceiver(); - - private CastContext mCastContext; - private MediaRouteButton mMediaRouteButton; - private MediaRouter mMediaRouter; - private MediaRouteSelector mMediaRouteSelector; - private MediaRouter.Callback mMediaRouterCallback; - //private MediaRouteStateChangeListener mRouteStateListener; - - private CastDevice mSelectedDevice; - private ApplicationSession mSession; - private AlbumMessageStream mMessageStream; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.main); - - mSignInButton = (SignInButton) findViewById(R.id.sign_in_button); - mSignInButton.setOnClickListener(this); - - mContent = findViewById(R.id.content); - mUserInfo = (TextView) findViewById(R.id.user_info); - mGridView = (GridView) findViewById(R.id.album_grid); - - mGridView.setOnItemClickListener(new OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, - int position, long id) { - if (mMessageStream != null && mSession != null && mSession.hasStarted()) { - PicasaAlbum album = ((PicasaAlbumAdapter) mGridView.getAdapter()).getItem(position); - if (album != null) { - mMessageStream.sendUrl(album.getUrl()); - } - } - } - }); - - mPlusClient = - new PlusClient.Builder(this, this, this) - .setScopes("https://www.googleapis.com/auth/plus.login", - "https://picasaweb.google.com/data/") - .build(); - - mCastContext = new CastContext(this); - MediaRouteHelper.registerMinimalMediaRouteProvider(mCastContext, this); - mMediaRouter = MediaRouter.getInstance(this); - mMediaRouteSelector = MediaRouteHelper.buildMediaRouteSelector( - MediaRouteHelper.CATEGORY_CAST); - mMediaRouteButton = (MediaRouteButton) findViewById(R.id.media_route_button); - mMediaRouteButton.setRouteSelector(mMediaRouteSelector); - mMediaRouterCallback = new MyMediaRouterCallback(); - mMessageStream = new AlbumMessageStream(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.menu, menu); - mMenu = menu; - mMenu.findItem(R.id.action_signout).setVisible(mConnected); - mMenu.findItem(R.id.action_revoke).setVisible(mConnected); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // handle item selection - switch (item.getItemId()) { - case R.id.action_signout: - if (mPlusClient.isConnected()) { - mPlusClient.clearDefaultAccount(); - mPlusClient.disconnect(); - mConnected = false; - mUserId = null; - mUserName = null; - mUserAccount = null; - updateUI(); - mPlusClient.connect(); - } - return true; - case R.id.action_revoke: - if (mPlusClient.isConnected()) { - mPlusClient.revokeAccessAndDisconnect(this); - mConnected = false; - mUserId = null; - mUserName = null; - mUserAccount = null; - updateUI(); - } - return true; - } - return true; - } - - @Override - public void onStart() { - super.onStart(); - mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback, - MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY); - mPlusClient.connect(); - updateUI(); - } - - @Override - public void onStop() { - mPlusClient.disconnect(); - mMediaRouter.removeCallback(mMediaRouterCallback); - super.onStop(); - } - - @Override - public void onDestroy() { - MediaRouteHelper.unregisterMediaRouteProvider(mCastContext); - mCastContext.dispose(); - super.onDestroy(); - } - - @Override - public void onClick(View view) { - if (view.getId() == R.id.sign_in_button) { - int available = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); - if (available != ConnectionResult.SUCCESS) { - return; - } - - try { - mConnectionResult.startResolutionForResult(this, REQUEST_CODE_SIGN_IN); - } catch (IntentSender.SendIntentException e) { - // Fetch a new result to start. - mPlusClient.connect(); - } - } - } - - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == REQUEST_CODE_SIGN_IN) { - if (resultCode == android.app.Activity.RESULT_OK && !mPlusClient.isConnected() - && !mPlusClient.isConnecting()) { - mPlusClient.connect(); - } - } - } - - @Override - public void onAccessRevoked(ConnectionResult status) { - if (status.isSuccess()) { - mConnected = false; - updateUI(); - } else { - mPlusClient.disconnect(); - } - mPlusClient.connect(); - } - - @Override - public void onConnected(Bundle bundle) { - mConnected = true; - Person me = mPlusClient.getCurrentPerson(); - mUserId = me.getId(); - mUserName = me.getDisplayName(); - mUserAccount = mPlusClient.getAccountName(); - updateAlbums(); - updateUI(); - } - - @Override - public void onConnectionFailed(ConnectionResult result) { - mConnectionResult = result; - updateUI(); - } - - @Override - public void onDisconnected() { - mConnected = false; - updateUI(); - mPlusClient.connect(); - } - - private void updateUI() { - MenuItem item; - if (mMenu != null) { - item = mMenu.findItem(R.id.action_signout); - if (item != null) item.setVisible(mConnected); - item = mMenu.findItem(R.id.action_revoke); - if (item != null) item.setVisible(mConnected); - } - if (mConnected && mUserName != null) { - mUserInfo.setText(" " + mUserName); - mUserInfo.setVisibility(View.VISIBLE); - } else { - mUserInfo.setVisibility(View.GONE); - } - mSignInButton.setVisibility(mConnected ? View.GONE : View.VISIBLE); - mContent.setVisibility(mConnected ? View.VISIBLE : View.GONE); - if (mSession != null && mSession.hasStarted()) { - mGridView.setVisibility(View.VISIBLE); - } else { - mGridView.setVisibility(View.GONE); - } - } - - private void updateAlbums() { - if (!mConnected || mUserAccount == null) return; - - PicasaAlbumsTask search = - new PicasaAlbumsTask(mReceiver, - this, - (String) mUserAccount, - (String) mUserId, - "oauth2:https://www.googleapis.com/auth/plus.login https://picasaweb.google.com/data/"); - search.execute(); - } - - private class MyMediaRouterCallback extends MediaRouter.Callback { - @Override - public void onRouteSelected(MediaRouter router, RouteInfo route) { - MediaRouteHelper.requestCastDeviceForRoute(route); - } - - @Override - public void onRouteUnselected(MediaRouter router, RouteInfo route) { - mSession = null; - mSelectedDevice = null; - //mRouteStateListener = null; - } - } - - @Override - public void onDeviceAvailable(CastDevice device, String routeId, - MediaRouteStateChangeListener listener) { - mSelectedDevice = device; - //mRouteStateListener = listener; - - mSession = new ApplicationSession(mCastContext, mSelectedDevice); - mSession.setListener(this); - try { - mSession.startSession(APP_ID, null); - } catch (IllegalStateException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void onSetVolume(double volume) { - // Handle volume change. - } - - @Override - public void onUpdateVolume(double delta) { - // Handle volume change. - } - - @Override - public void onSessionStarted(ApplicationMetadata appMetadata) { - if (!mSession.hasChannel()) { - // Application does not support a channel! - Log.d("slideshowcast", "No Channel supported"); - return; - } - ApplicationChannel channel = mSession.getChannel(); - channel.attachMessageStream(mMessageStream); - updateUI(); - } - - @Override - public void onSessionStartFailed(SessionError error) { - // The session could not be started. - Log.e("slideshowcast", "Couldn't start session " + error.toString()); - } - - @Override - public void onSessionEnded(SessionError error) { - if (error != null) { - Log.e("slideshowcast", "Session ended with error " + error.toString()); - } else { - // The session ended normally. - } - } - - void refresh(List results) { - PicasaAlbumAdapter adapter = new PicasaAlbumAdapter(this, 0, results); - mGridView.setAdapter(adapter); - } - - private class SearchReceiver extends AsyncReceiver> { - @Override - public void finished(List result) { - if (result != null) { - refresh(result); - } - } - } - - public class AlbumMessageStream extends MessageStream { - private static final String KEY_ACTION = "action"; - private static final String KEY_URL = "url"; - - private static final String ACTION_STOP = "STOP_CAST"; - - public AlbumMessageStream() { - super(NAMESPACE); - } - - public final void sendUrl(String url) { - JSONObject payload = new JSONObject(); - try { - payload.put(KEY_URL, url); - } catch (JSONException e) { - e.printStackTrace(); - return; - } - try { - sendMessage(payload); - } catch (IllegalStateException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public final void stopSlideshow() { - JSONObject payload = new JSONObject(); - try { - payload.put(KEY_ACTION, ACTION_STOP); - } catch (JSONException e) { - e.printStackTrace(); - return; - } - try { - sendMessage(payload); - } catch (IllegalStateException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public final void onMessageReceived(JSONObject message) { - // Nothing to do yet, no messages expected from receiver - } - } -} diff --git a/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/PicasaAlbum.java b/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/PicasaAlbum.java deleted file mode 100644 index 0cfb3f0..0000000 --- a/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/PicasaAlbum.java +++ /dev/null @@ -1,33 +0,0 @@ -package at.foldedsoft.slideshowcast; - -import org.json.JSONObject; - -public class PicasaAlbum { - private String id; - private String name; - private int photos; - private String url; - private String image; - - public PicasaAlbum(String id, String name, int photos, String url, String image) { - this.id = id; - this.url = url; - this.image = image; - this.name = name; - this.photos = photos; - } - - public PicasaAlbum(JSONObject entry) { - this.id = entry.optJSONObject("gphoto$id").optString("$t"); - this.name = entry.optJSONObject("title").optString("$t"); - this.photos = entry.optJSONObject("gphoto$numphotos").optInt("$t", 0); - this.url = entry.optJSONArray("link").optJSONObject(0).optString("href"); - this.image = entry.optJSONObject("media$group").optJSONArray("media$thumbnail").optJSONObject(0).optString("url"); - } - - public String getId() { return this.id; } - public String getUrl() { return this.url; } - public int getPhotos() { return this.photos; } - public String getName() { return this.name; } - public String getImage() { return this.image; } -} diff --git a/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/PicasaAlbumAdapter.java b/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/PicasaAlbumAdapter.java deleted file mode 100644 index 488cdf3..0000000 --- a/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/PicasaAlbumAdapter.java +++ /dev/null @@ -1,43 +0,0 @@ -package at.foldedsoft.slideshowcast; - -import java.util.List; - -import com.koushikdutta.urlimageviewhelper.UrlImageViewHelper; - -import android.app.Activity; -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ImageView; -import android.widget.TextView; - -public class PicasaAlbumAdapter extends ArrayAdapter { - - private List mAlbums; - private LayoutInflater inflater; - - public PicasaAlbumAdapter(Context context, int resource, - List objects) { - super(context, resource, objects); - mAlbums = objects; - inflater = ((Activity) context).getLayoutInflater(); - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - View v = convertView; - if (v == null) { - v = inflater.inflate(R.layout.album_item, null); - } - PicasaAlbum album = mAlbums.get(position); - if (album != null) { - TextView t = (TextView) v.findViewById(R.id.album_name); - ImageView i = (ImageView) v.findViewById(R.id.album_thumb); - t.setText(album.getName() + " (" + String.valueOf(album.getPhotos()) + " photos)"); - UrlImageViewHelper.setUrlDrawable(i, album.getImage()); - } - return v; - } -} diff --git a/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/PicasaAlbumsTask.java b/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/PicasaAlbumsTask.java deleted file mode 100644 index ef1de24..0000000 --- a/slideshow/android/SlideshowCast/src/at/foldedsoft/slideshowcast/PicasaAlbumsTask.java +++ /dev/null @@ -1,112 +0,0 @@ -package at.foldedsoft.slideshowcast; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -import javax.net.ssl.HttpsURLConnection; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import android.content.Context; -import android.os.AsyncTask; -import android.util.Log; - -import com.google.android.gms.auth.GoogleAuthException; -import com.google.android.gms.auth.GoogleAuthUtil; - -public class PicasaAlbumsTask extends AsyncTask> { - - AsyncReceiver> receiver; - Context context; - String account; - String scopes; - String id; - - PicasaAlbumsTask(AsyncReceiver> receiver, Context context, String account, String id, String scopes) { - this.receiver = receiver; - this.context = context; - this.account = account; - this.scopes = scopes; - this.id = id; - } - - @Override - protected List doInBackground(Void... params) { - URL url; - HttpsURLConnection urlConnection; - InputStream in; - String result = ""; - String line; - String accessToken = null; - try { - accessToken = GoogleAuthUtil.getToken(this.context, this.account, this.scopes); - } catch (GoogleAuthException e) { - e.printStackTrace(); - return null; - } catch (IOException e) { - e.printStackTrace(); - return null; - } - if (accessToken == null) return null; - try { - url = new URL("https://picasaweb.google.com/data/feed/api/user/default?alt=json&access=public&type=album"); - } catch (MalformedURLException e) { - e.printStackTrace(); - return null; - } - try { - urlConnection = (HttpsURLConnection) url.openConnection(); - urlConnection.setRequestProperty("Authorization", "Bearer " + accessToken); - in = new BufferedInputStream(urlConnection.getInputStream()); - BufferedReader reader = new BufferedReader(new InputStreamReader(in)); - while((line = reader.readLine()) != null) { - result += " " + line; - } - } catch (IOException e) { - e.printStackTrace(); - return null; - } - JSONObject json; - try { - json = new JSONObject(result); - if (json.has("feed")) { - json = json.optJSONObject("feed"); - List albums = new ArrayList(); - if (json.has("entry")) { - JSONArray entries = json.optJSONArray("entry"); - for (int i = 0; i < entries.length(); i++) { - JSONObject entry = entries.optJSONObject(i); - if (entry != null) { - PicasaAlbum album = new PicasaAlbum(entry); - if (album.getName() != "" && album.getPhotos() > 3) { - albums.add(album); - } - } - } - } - Log.d("picasa", json.toString()); - return albums; - } else { - return null; - } - } catch (JSONException e) { - e.printStackTrace(); - return null; - } - } - - protected void onPostExecute(List result) { - if (result != null) { - receiver.finished(result); - } - } -} diff --git a/slideshow/receiver/index.html b/slideshow/receiver/index.html deleted file mode 100644 index 4b827b2..0000000 --- a/slideshow/receiver/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - -
- Waiting for input... -
- - - \ No newline at end of file diff --git a/slideshow/receiver/receiver.css b/slideshow/receiver/receiver.css deleted file mode 100644 index 54c3510..0000000 --- a/slideshow/receiver/receiver.css +++ /dev/null @@ -1,18 +0,0 @@ -* { -webkit-box-sizing: border-box; box-sizing: border-box; margin: 0; padding: 0; } - -html, body { width: 100%; height: 100%; overflow: hidden;} - -body { background-color: #000; padding: 0px; } - -#messages { - color: #CCF; - font-size: 2em; - width: 100%; - height: 100%; - text-align: center; -} - -#messages img { - max-width: 100%; - max-height: 100%; -} \ No newline at end of file diff --git a/slideshow/sender/index.html b/slideshow/sender/index.html deleted file mode 100644 index b04fcf8..0000000 --- a/slideshow/sender/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - Slideshow for Chromecast - - - -
- -
- - - - \ No newline at end of file diff --git a/slideshow/sender/sender.css b/slideshow/sender/sender.css deleted file mode 100644 index 2e69300..0000000 --- a/slideshow/sender/sender.css +++ /dev/null @@ -1,28 +0,0 @@ -#receiver_list { - list-style: none; - padding-left: 0px; -} - -.receiver { - cursor: pointer; - font-weight: bold; - text-decoration: underline; - color: blue; -} - -.album { - position: relative; - display: inline-block; - vertical-align: top; - width: 110px; - text-align: center; -} - -.cast { - cursor: pointer; - position: absolute; - right: 10px; - bottom: 10px; - background-color: rgba(255,255,255,0.5); - border-radius: 6px; -} \ No newline at end of file diff --git a/slideshow/sender/sender.js b/slideshow/sender/sender.js deleted file mode 100644 index e4adb3d..0000000 --- a/slideshow/sender/sender.js +++ /dev/null @@ -1,215 +0,0 @@ -(function (global) { - "use strict"; - - var - my_app_id = "", - my_namespace = "", - doc = global.document, - con = global.console, - gapi, my_id, - cast_api, - cast_activity, - receivers, - currentCast, - receiverList = doc.getElementById("receiver_list"), - killSwitch = doc.getElementById("kill"), - appDiv = doc.getElementById("app"), - signinButton = doc.getElementById("signinButton"), - signoutButton = doc.getElementById("signoutButton"), - albumsDiv = doc.getElementById("albums"); - - // Fetch data via jsonp - function fetchData(url, cb) { - var script; - - global.jsonp_callback = function (data) { - cb(data); - }; - - if (url.indexOf("?") >= 0) { - url += "&"; - } else { - url += "?"; - } - url += "callback=jsonp_callback"; - - script = doc.createElement("script"); - script.src = url; - doc.head.appendChild(script); - } - - function onLaunch(activity) { - if (activity.status === 'running') { - cast_activity = activity; - killSwitch.style.display = "inline-block"; - albumsDiv.style.display = "block"; - } - } - - function doLaunch(receiver) { - var request; - if (!cast_activity) { - // Only launch when no other receiver has been launched yet - request = new global.cast.LaunchRequest(my_app_id, receiver); - cast_api.launch(request, onLaunch); - } - } - - function receiverClicked(e) { - var id = e.target.getAttribute("data-id"), receiver, i; - e.preventDefault(); - - if (!!id) { - for (i = 0; i < receivers.length; i++) { - if (receivers[i].id === id) { - receiver = receivers[i]; - break; - } - } - if (!!receiver) { - doLaunch(receiver); - } - } - } - - function onReceiverList(list) { - var i, item; - if (list.length > 0) { - receivers = list; - receiverList.innerHTML = ""; - for (i = 0; i < receivers.length; i++) { - item = doc.createElement("span"); - item.setAttribute("data-id", receivers[i].id); - item.className = "receiver"; - item.innerHTML = receivers[i].name; - receiverList.appendChild(item); - item.onclick = receiverClicked; - } - } else { - receiverList.innerHTML = "Looking for receivers..."; - } - } - - function castAlbum(e) { - var url = e.target.getAttribute("data-url"); - if (!!cast_activity && !!url) { - if (currentCast === e.target) { - // album is already being cast, stop casting - currentCast.src = "cast.png"; - currentCast = null; - cast_api.sendMessage(cast_activity.activityId, my_namespace, {"action": "STOP_CAST"}); - } else { - if (!!currentCast) { - currentCast.src = "cast.png"; - } - currentCast = e.target; - currentCast.src = "casting.png"; - cast_api.sendMessage(cast_activity.activityId, my_namespace, {"url": url}); - } - } - } - - function showAlbums(data) { - var i, album, div, img; - if (!!data && !!data.feed && !!data.feed.entry && data.feed.entry.length > 0) { - albumsDiv.innerHTML = ""; - for (i = 0; i < data.feed.entry.length; i++) { - album = data.feed.entry[i]; - if (album.gphoto$numphotos.$t > 3) { // skipping small albums (mostly photos from posts) - div = doc.createElement("div"); - div.className = "album"; - img = doc.createElement("img"); - img.src = album.media$group.media$thumbnail[0].url.replace("/s160-c/", "/s100-c/"); - div.appendChild(img); - img = doc.createElement("img"); - img.src = "cast.png"; - img.className = "cast"; - img.setAttribute("data-url", album.link[0].href); - img.title = album.title.$t + " / " + album.gphoto$numphotos.$t + " photos"; - div.appendChild(img); - albumsDiv.appendChild(div); - img.onclick = castAlbum; - } - } - } - } - - function initializeApp() { - gapi = global.gapi; - if (!cast_api) { - cast_api = new global.cast.Api(); - cast_api.addReceiverListener(my_app_id, onReceiverList); - } - - gapi.client.load("plus", "v1", function () { - gapi.client.plus.people.get({"userId": "me"}).execute(function (data) { - my_id = data.id; - fetchData("https://picasaweb.google.com/data/feed/api/user/" + my_id + "?kind=album&alt=json", showAlbums); - }); - }); - } - - global.signinCallback = function (authResult) { - if (!authResult.error) { - signinButton.style.display = "none"; - appDiv.style.display = "block"; - initializeApp(); - } - }; - - function loadPlus() { - var po, s; - po = doc.createElement('script'); - po.type = 'text/javascript'; - po.async = true; - po.src = 'https://apis.google.com/js/client:plusone.js'; - s = doc.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(po, s); - } - - global.addEventListener('message', function(event) { - if (event.source === global && event.data && - event.data.source === 'CastApi' && - event.data.event === 'Hello') { - loadPlus(); - } - }); - - function disconnectChromecast() { - if (!!cast_activity) { - cast_api.stopActivity(cast_activity.activityId, function() { - cast_activity = null; - if (!!currentCast) { - currentCast.src = "cast.png"; - } - currentCast = null; - killSwitch.style.display = "none"; - albumsDiv.style.display = "none"; - }); - } - } - - global.disconnectCallback = function (data) { - con.log(data); - }; - - signoutButton.onclick = function () { - var script, token; - if (global.glassapp) { global.glassapp.stop(); } - signinButton.style.display = "block"; - appDiv.style.display = "none"; - disconnectChromecast(); - - token = global.gapi.auth.getToken(); - - if (token && token.access_token) { - // Revoke permissions - script = doc.createElement("script"); - script.src = "https://accounts.google.com/o/oauth2/revoke?token=" + token.access_token + "&callback=disconnectCallback"; - doc.head.appendChild(script); - } - }; - - killSwitch.onclick = disconnectChromecast; - -}(this)); \ No newline at end of file