diff options
| -rw-r--r-- | module/web/pyload_app.py | 7 | ||||
| -rw-r--r-- | module/web/static/css/bootstrap.css | 5774 | ||||
| -rw-r--r-- | module/web/static/css/default/style.css | 41 | ||||
| -rw-r--r-- | module/web/static/css/jquery.qtip.min.css | 1 | ||||
| -rw-r--r-- | module/web/static/img/glyphicons-halflings-white.png | bin | 0 -> 8777 bytes | |||
| -rw-r--r-- | module/web/static/img/glyphicons-halflings.png | bin | 0 -> 12799 bytes | |||
| -rw-r--r-- | module/web/static/js/default.js | 7 | ||||
| -rw-r--r-- | module/web/static/js/libs/bootstrap-2.1.1.js | 2027 | ||||
| -rw-r--r-- | module/web/static/js/libs/jquery.qtip.min.js | 2 | ||||
| -rw-r--r-- | module/web/static/js/utils/lazyRequire.js | 89 | ||||
| -rw-r--r-- | module/web/static/js/views/headerView.js | 1 | ||||
| -rw-r--r-- | module/web/static/js/views/modal/modalView.js | 24 | ||||
| -rw-r--r-- | module/web/static/js/views/packageView.js | 23 | ||||
| -rw-r--r-- | module/web/templates/default/backbone/modal.html | 11 | ||||
| -rw-r--r-- | module/web/templates/default/base.html | 110 | 
15 files changed, 7953 insertions, 164 deletions
diff --git a/module/web/pyload_app.py b/module/web/pyload_app.py index 7be4975a7..04cd07cb2 100644 --- a/module/web/pyload_app.py +++ b/module/web/pyload_app.py @@ -84,6 +84,13 @@ def server_static(path):      response.headers['Cache-control'] = "public"      return static_file(path, root=join(PROJECT_DIR, "static")) +@route('/templates/<path:path>') +def serve_template(path): +    """ Serve backbone templates """ +    args = path.split("/") +    args.insert(1, "backbone") +    return static_file("/".join(args), root=join(PROJECT_DIR, "templates")) +  @route('/favicon.ico')  def favicon():      return static_file("favicon.ico", root=join(PROJECT_DIR, "static", "img")) diff --git a/module/web/static/css/bootstrap.css b/module/web/static/css/bootstrap.css new file mode 100644 index 000000000..9fa6f766f --- /dev/null +++ b/module/web/static/css/bootstrap.css @@ -0,0 +1,5774 @@ +/*! + * Bootstrap v2.1.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { +  display: block; +} + +audio, +canvas, +video { +  display: inline-block; +  *display: inline; +  *zoom: 1; +} + +audio:not([controls]) { +  display: none; +} + +html { +  font-size: 100%; +  -webkit-text-size-adjust: 100%; +      -ms-text-size-adjust: 100%; +} + +a:focus { +  outline: thin dotted #333; +  outline: 5px auto -webkit-focus-ring-color; +  outline-offset: -2px; +} + +a:hover, +a:active { +  outline: 0; +} + +sub, +sup { +  position: relative; +  font-size: 75%; +  line-height: 0; +  vertical-align: baseline; +} + +sup { +  top: -0.5em; +} + +sub { +  bottom: -0.25em; +} + +img { +  width: auto\9; +  height: auto; +  max-width: 100%; +  vertical-align: middle; +  border: 0; +  -ms-interpolation-mode: bicubic; +} + +#map_canvas img { +  max-width: none; +} + +button, +input, +select, +textarea { +  margin: 0; +  font-size: 100%; +  vertical-align: middle; +} + +button, +input { +  *overflow: visible; +  line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { +  padding: 0; +  border: 0; +} + +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { +  cursor: pointer; +  -webkit-appearance: button; +} + +input[type="search"] { +  -webkit-box-sizing: content-box; +     -moz-box-sizing: content-box; +          box-sizing: content-box; +  -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { +  -webkit-appearance: none; +} + +textarea { +  overflow: auto; +  vertical-align: top; +} + +.clearfix { +  *zoom: 1; +} + +.clearfix:before, +.clearfix:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.clearfix:after { +  clear: both; +} + +.hide-text { +  font: 0/0 a; +  color: transparent; +  text-shadow: none; +  background-color: transparent; +  border: 0; +} + +.input-block-level { +  display: block; +  width: 100%; +  min-height: 30px; +  -webkit-box-sizing: border-box; +     -moz-box-sizing: border-box; +          box-sizing: border-box; +} + +body { +  margin: 0; +  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +  font-size: 14px; +  line-height: 20px; +  color: #333333; +  background-color: #ffffff; +} + +a { +  color: #0088cc; +  text-decoration: none; +} + +a:hover { +  color: #005580; +  text-decoration: underline; +} + +.img-rounded { +  -webkit-border-radius: 6px; +     -moz-border-radius: 6px; +          border-radius: 6px; +} + +.img-polaroid { +  padding: 4px; +  background-color: #fff; +  border: 1px solid #ccc; +  border: 1px solid rgba(0, 0, 0, 0.2); +  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { +  -webkit-border-radius: 500px; +     -moz-border-radius: 500px; +          border-radius: 500px; +} + +.row { +  margin-left: -20px; +  *zoom: 1; +} + +.row:before, +.row:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.row:after { +  clear: both; +} + +[class*="span"] { +  float: left; +  min-height: 1px; +  margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { +  width: 940px; +} + +.span12 { +  width: 940px; +} + +.span11 { +  width: 860px; +} + +.span10 { +  width: 780px; +} + +.span9 { +  width: 700px; +} + +.span8 { +  width: 620px; +} + +.span7 { +  width: 540px; +} + +.span6 { +  width: 460px; +} + +.span5 { +  width: 380px; +} + +.span4 { +  width: 300px; +} + +.span3 { +  width: 220px; +} + +.span2 { +  width: 140px; +} + +.span1 { +  width: 60px; +} + +.offset12 { +  margin-left: 980px; +} + +.offset11 { +  margin-left: 900px; +} + +.offset10 { +  margin-left: 820px; +} + +.offset9 { +  margin-left: 740px; +} + +.offset8 { +  margin-left: 660px; +} + +.offset7 { +  margin-left: 580px; +} + +.offset6 { +  margin-left: 500px; +} + +.offset5 { +  margin-left: 420px; +} + +.offset4 { +  margin-left: 340px; +} + +.offset3 { +  margin-left: 260px; +} + +.offset2 { +  margin-left: 180px; +} + +.offset1 { +  margin-left: 100px; +} + +.row-fluid { +  width: 100%; +  *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.row-fluid:after { +  clear: both; +} + +.row-fluid [class*="span"] { +  display: block; +  float: left; +  width: 100%; +  min-height: 30px; +  margin-left: 2.127659574468085%; +  *margin-left: 2.074468085106383%; +  -webkit-box-sizing: border-box; +     -moz-box-sizing: border-box; +          box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { +  margin-left: 0; +} + +.row-fluid .span12 { +  width: 100%; +  *width: 99.94680851063829%; +} + +.row-fluid .span11 { +  width: 91.48936170212765%; +  *width: 91.43617021276594%; +} + +.row-fluid .span10 { +  width: 82.97872340425532%; +  *width: 82.92553191489361%; +} + +.row-fluid .span9 { +  width: 74.46808510638297%; +  *width: 74.41489361702126%; +} + +.row-fluid .span8 { +  width: 65.95744680851064%; +  *width: 65.90425531914893%; +} + +.row-fluid .span7 { +  width: 57.44680851063829%; +  *width: 57.39361702127659%; +} + +.row-fluid .span6 { +  width: 48.93617021276595%; +  *width: 48.88297872340425%; +} + +.row-fluid .span5 { +  width: 40.42553191489362%; +  *width: 40.37234042553192%; +} + +.row-fluid .span4 { +  width: 31.914893617021278%; +  *width: 31.861702127659576%; +} + +.row-fluid .span3 { +  width: 23.404255319148934%; +  *width: 23.351063829787233%; +} + +.row-fluid .span2 { +  width: 14.893617021276595%; +  *width: 14.840425531914894%; +} + +.row-fluid .span1 { +  width: 6.382978723404255%; +  *width: 6.329787234042553%; +} + +.row-fluid .offset12 { +  margin-left: 104.25531914893617%; +  *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { +  margin-left: 102.12765957446808%; +  *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { +  margin-left: 95.74468085106382%; +  *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { +  margin-left: 93.61702127659574%; +  *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { +  margin-left: 87.23404255319149%; +  *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { +  margin-left: 85.1063829787234%; +  *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { +  margin-left: 78.72340425531914%; +  *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { +  margin-left: 76.59574468085106%; +  *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { +  margin-left: 70.2127659574468%; +  *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { +  margin-left: 68.08510638297872%; +  *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { +  margin-left: 61.70212765957446%; +  *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { +  margin-left: 59.574468085106375%; +  *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { +  margin-left: 53.191489361702125%; +  *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { +  margin-left: 51.063829787234035%; +  *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { +  margin-left: 44.68085106382979%; +  *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { +  margin-left: 42.5531914893617%; +  *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { +  margin-left: 36.170212765957444%; +  *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { +  margin-left: 34.04255319148936%; +  *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { +  margin-left: 27.659574468085104%; +  *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { +  margin-left: 25.53191489361702%; +  *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { +  margin-left: 19.148936170212764%; +  *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { +  margin-left: 17.02127659574468%; +  *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { +  margin-left: 10.638297872340425%; +  *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { +  margin-left: 8.51063829787234%; +  *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { +  display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { +  float: right; +} + +.container { +  margin-right: auto; +  margin-left: auto; +  *zoom: 1; +} + +.container:before, +.container:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.container:after { +  clear: both; +} + +.container-fluid { +  padding-right: 20px; +  padding-left: 20px; +  *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.container-fluid:after { +  clear: both; +} + +p { +  margin: 0 0 10px; +} + +.lead { +  margin-bottom: 20px; +  font-size: 21px; +  font-weight: 200; +  line-height: 30px; +} + +small { +  font-size: 85%; +} + +strong { +  font-weight: bold; +} + +em { +  font-style: italic; +} + +cite { +  font-style: normal; +} + +.muted { +  color: #999999; +} + +.text-warning { +  color: #c09853; +} + +.text-error { +  color: #b94a48; +} + +.text-info { +  color: #3a87ad; +} + +.text-success { +  color: #468847; +} + +h1, +h2, +h3, +h4, +h5, +h6 { +  margin: 10px 0; +  font-family: inherit; +  font-weight: bold; +  line-height: 1; +  color: inherit; +  text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { +  font-weight: normal; +  line-height: 1; +  color: #999999; +} + +h1 { +  font-size: 36px; +  line-height: 40px; +} + +h2 { +  font-size: 30px; +  line-height: 40px; +} + +h3 { +  font-size: 24px; +  line-height: 40px; +} + +h4 { +  font-size: 18px; +  line-height: 20px; +} + +h5 { +  font-size: 14px; +  line-height: 20px; +} + +h6 { +  font-size: 12px; +  line-height: 20px; +} + +h1 small { +  font-size: 24px; +} + +h2 small { +  font-size: 18px; +} + +h3 small { +  font-size: 14px; +} + +h4 small { +  font-size: 14px; +} + +.page-header { +  padding-bottom: 9px; +  margin: 20px 0 30px; +  border-bottom: 1px solid #eeeeee; +} + +ul, +ol { +  padding: 0; +  margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { +  margin-bottom: 0; +} + +li { +  line-height: 20px; +} + +ul.unstyled, +ol.unstyled { +  margin-left: 0; +  list-style: none; +} + +dl { +  margin-bottom: 20px; +} + +dt, +dd { +  line-height: 20px; +} + +dt { +  font-weight: bold; +} + +dd { +  margin-left: 10px; +} + +.dl-horizontal { +  *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.dl-horizontal:after { +  clear: both; +} + +.dl-horizontal dt { +  float: left; +  width: 160px; +  overflow: hidden; +  clear: left; +  text-align: right; +  text-overflow: ellipsis; +  white-space: nowrap; +} + +.dl-horizontal dd { +  margin-left: 180px; +} + +hr { +  margin: 20px 0; +  border: 0; +  border-top: 1px solid #eeeeee; +  border-bottom: 1px solid #ffffff; +} + +abbr[title] { +  cursor: help; +  border-bottom: 1px dotted #999999; +} + +abbr.initialism { +  font-size: 90%; +  text-transform: uppercase; +} + +blockquote { +  padding: 0 0 0 15px; +  margin: 0 0 20px; +  border-left: 5px solid #eeeeee; +} + +blockquote p { +  margin-bottom: 0; +  font-size: 16px; +  font-weight: 300; +  line-height: 25px; +} + +blockquote small { +  display: block; +  line-height: 20px; +  color: #999999; +} + +blockquote small:before { +  content: '\2014 \00A0'; +} + +blockquote.pull-right { +  float: right; +  padding-right: 15px; +  padding-left: 0; +  border-right: 5px solid #eeeeee; +  border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { +  text-align: right; +} + +blockquote.pull-right small:before { +  content: ''; +} + +blockquote.pull-right small:after { +  content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { +  content: ""; +} + +address { +  display: block; +  margin-bottom: 20px; +  font-style: normal; +  line-height: 20px; +} + +code, +pre { +  padding: 0 3px 2px; +  font-family: Monaco, Menlo, Consolas, "Courier New", monospace; +  font-size: 12px; +  color: #333333; +  -webkit-border-radius: 3px; +     -moz-border-radius: 3px; +          border-radius: 3px; +} + +code { +  padding: 2px 4px; +  color: #d14; +  background-color: #f7f7f9; +  border: 1px solid #e1e1e8; +} + +pre { +  display: block; +  padding: 9.5px; +  margin: 0 0 10px; +  font-size: 13px; +  line-height: 20px; +  word-break: break-all; +  word-wrap: break-word; +  white-space: pre; +  white-space: pre-wrap; +  background-color: #f5f5f5; +  border: 1px solid #ccc; +  border: 1px solid rgba(0, 0, 0, 0.15); +  -webkit-border-radius: 4px; +     -moz-border-radius: 4px; +          border-radius: 4px; +} + +pre.prettyprint { +  margin-bottom: 20px; +} + +pre code { +  padding: 0; +  color: inherit; +  background-color: transparent; +  border: 0; +} + +.pre-scrollable { +  max-height: 340px; +  overflow-y: scroll; +} + +form { +  margin: 0 0 20px; +} + +fieldset { +  padding: 0; +  margin: 0; +  border: 0; +} + +legend { +  display: block; +  width: 100%; +  padding: 0; +  margin-bottom: 20px; +  font-size: 21px; +  line-height: 40px; +  color: #333333; +  border: 0; +  border-bottom: 1px solid #e5e5e5; +} + +legend small { +  font-size: 15px; +  color: #999999; +} + +label, +input, +button, +select, +textarea { +  font-size: 14px; +  font-weight: normal; +  line-height: 20px; +} + +input, +button, +select, +textarea { +  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { +  display: block; +  margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { +  display: inline-block; +  height: 20px; +  padding: 4px 6px; +  margin-bottom: 9px; +  font-size: 14px; +  line-height: 20px; +  color: #555555; +  -webkit-border-radius: 3px; +     -moz-border-radius: 3px; +          border-radius: 3px; +} + +input, +textarea, +.uneditable-input { +  width: 206px; +} + +textarea { +  height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { +  background-color: #ffffff; +  border: 1px solid #cccccc; +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; +     -moz-transition: border linear 0.2s, box-shadow linear 0.2s; +       -o-transition: border linear 0.2s, box-shadow linear 0.2s; +          transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { +  border-color: rgba(82, 168, 236, 0.8); +  outline: 0; +  outline: thin dotted \9; +  /* IE6-9 */ + +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { +  margin: 4px 0 0; +  margin-top: 1px \9; +  *margin-top: 0; +  line-height: normal; +  cursor: pointer; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { +  width: auto; +} + +select, +input[type="file"] { +  height: 30px; +  /* In IE7, the height of the select element cannot be changed by height, only font-size */ + +  *margin-top: 4px; +  /* For IE7, add top margin to align select with labels */ + +  line-height: 30px; +} + +select { +  width: 220px; +  background-color: #ffffff; +  border: 1px solid #cccccc; +} + +select[multiple], +select[size] { +  height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { +  outline: thin dotted #333; +  outline: 5px auto -webkit-focus-ring-color; +  outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { +  color: #999999; +  cursor: not-allowed; +  background-color: #fcfcfc; +  border-color: #cccccc; +  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { +  overflow: hidden; +  white-space: nowrap; +} + +.uneditable-textarea { +  width: auto; +  height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { +  color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { +  color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { +  color: #999999; +} + +.radio, +.checkbox { +  min-height: 18px; +  padding-left: 18px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { +  float: left; +  margin-left: -18px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { +  padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { +  display: inline-block; +  padding-top: 5px; +  margin-bottom: 0; +  vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { +  margin-left: 10px; +} + +.input-mini { +  width: 60px; +} + +.input-small { +  width: 90px; +} + +.input-medium { +  width: 150px; +} + +.input-large { +  width: 210px; +} + +.input-xlarge { +  width: 270px; +} + +.input-xxlarge { +  width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { +  float: none; +  margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { +  display: inline-block; +} + +input, +textarea, +.uneditable-input { +  margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { +  margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { +  width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { +  width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { +  width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { +  width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { +  width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { +  width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { +  width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { +  width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { +  width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { +  width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { +  width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { +  width: 46px; +} + +.controls-row { +  *zoom: 1; +} + +.controls-row:before, +.controls-row:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.controls-row:after { +  clear: both; +} + +.controls-row [class*="span"] { +  float: left; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { +  cursor: not-allowed; +  background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { +  background-color: transparent; +} + +.control-group.warning > label, +.control-group.warning .help-block, +.control-group.warning .help-inline { +  color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { +  color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { +  border-color: #c09853; +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { +  border-color: #a47e3c; +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { +  color: #c09853; +  background-color: #fcf8e3; +  border-color: #c09853; +} + +.control-group.error > label, +.control-group.error .help-block, +.control-group.error .help-inline { +  color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { +  color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { +  border-color: #b94a48; +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { +  border-color: #953b39; +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { +  color: #b94a48; +  background-color: #f2dede; +  border-color: #b94a48; +} + +.control-group.success > label, +.control-group.success .help-block, +.control-group.success .help-inline { +  color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { +  color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { +  border-color: #468847; +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { +  border-color: #356635; +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { +  color: #468847; +  background-color: #dff0d8; +  border-color: #468847; +} + +.control-group.info > label, +.control-group.info .help-block, +.control-group.info .help-inline { +  color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { +  color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { +  border-color: #3a87ad; +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { +  border-color: #2d6987; +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { +  color: #3a87ad; +  background-color: #d9edf7; +  border-color: #3a87ad; +} + +input:focus:required:invalid, +textarea:focus:required:invalid, +select:focus:required:invalid { +  color: #b94a48; +  border-color: #ee5f5b; +} + +input:focus:required:invalid:focus, +textarea:focus:required:invalid:focus, +select:focus:required:invalid:focus { +  border-color: #e9322d; +  -webkit-box-shadow: 0 0 6px #f8b9b7; +     -moz-box-shadow: 0 0 6px #f8b9b7; +          box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { +  padding: 19px 20px 20px; +  margin-top: 20px; +  margin-bottom: 20px; +  background-color: #f5f5f5; +  border-top: 1px solid #e5e5e5; +  *zoom: 1; +} + +.form-actions:before, +.form-actions:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.form-actions:after { +  clear: both; +} + +.help-block, +.help-inline { +  color: #595959; +} + +.help-block { +  display: block; +  margin-bottom: 10px; +} + +.help-inline { +  display: inline-block; +  *display: inline; +  padding-left: 5px; +  vertical-align: middle; +  *zoom: 1; +} + +.input-append, +.input-prepend { +  margin-bottom: 5px; +  font-size: 0; +  white-space: nowrap; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { +  position: relative; +  margin-bottom: 0; +  *margin-left: 0; +  font-size: 14px; +  vertical-align: top; +  -webkit-border-radius: 0 3px 3px 0; +     -moz-border-radius: 0 3px 3px 0; +          border-radius: 0 3px 3px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { +  z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { +  display: inline-block; +  width: auto; +  height: 20px; +  min-width: 16px; +  padding: 4px 5px; +  font-size: 14px; +  font-weight: normal; +  line-height: 20px; +  text-align: center; +  text-shadow: 0 1px 0 #ffffff; +  background-color: #eeeeee; +  border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn { +  vertical-align: top; +  -webkit-border-radius: 0; +     -moz-border-radius: 0; +          border-radius: 0; +} + +.input-append .active, +.input-prepend .active { +  background-color: #a9dba9; +  border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { +  margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { +  -webkit-border-radius: 3px 0 0 3px; +     -moz-border-radius: 3px 0 0 3px; +          border-radius: 3px 0 0 3px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { +  -webkit-border-radius: 3px 0 0 3px; +     -moz-border-radius: 3px 0 0 3px; +          border-radius: 3px 0 0 3px; +} + +.input-append .add-on, +.input-append .btn { +  margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child { +  -webkit-border-radius: 0 3px 3px 0; +     -moz-border-radius: 0 3px 3px 0; +          border-radius: 0 3px 3px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { +  -webkit-border-radius: 0; +     -moz-border-radius: 0; +          border-radius: 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { +  margin-right: -1px; +  -webkit-border-radius: 3px 0 0 3px; +     -moz-border-radius: 3px 0 0 3px; +          border-radius: 3px 0 0 3px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { +  margin-left: -1px; +  -webkit-border-radius: 0 3px 3px 0; +     -moz-border-radius: 0 3px 3px 0; +          border-radius: 0 3px 3px 0; +} + +input.search-query { +  padding-right: 14px; +  padding-right: 4px \9; +  padding-left: 14px; +  padding-left: 4px \9; +  /* IE7-8 doesn't have border-radius, so don't indent the padding */ + +  margin-bottom: 0; +  -webkit-border-radius: 15px; +     -moz-border-radius: 15px; +          border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { +  -webkit-border-radius: 0; +     -moz-border-radius: 0; +          border-radius: 0; +} + +.form-search .input-append .search-query { +  -webkit-border-radius: 14px 0 0 14px; +     -moz-border-radius: 14px 0 0 14px; +          border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { +  -webkit-border-radius: 0 14px 14px 0; +     -moz-border-radius: 0 14px 14px 0; +          border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { +  -webkit-border-radius: 0 14px 14px 0; +     -moz-border-radius: 0 14px 14px 0; +          border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { +  -webkit-border-radius: 14px 0 0 14px; +     -moz-border-radius: 14px 0 0 14px; +          border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { +  display: inline-block; +  *display: inline; +  margin-bottom: 0; +  vertical-align: middle; +  *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { +  display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { +  display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { +  margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { +  padding-left: 0; +  margin-bottom: 0; +  vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { +  float: left; +  margin-right: 3px; +  margin-left: 0; +} + +.control-group { +  margin-bottom: 10px; +} + +legend + .control-group { +  margin-top: 20px; +  -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { +  margin-bottom: 20px; +  *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.form-horizontal .control-group:after { +  clear: both; +} + +.form-horizontal .control-label { +  float: left; +  width: 160px; +  padding-top: 5px; +  text-align: right; +} + +.form-horizontal .controls { +  *display: inline-block; +  *padding-left: 20px; +  margin-left: 180px; +  *margin-left: 0; +} + +.form-horizontal .controls:first-child { +  *padding-left: 180px; +} + +.form-horizontal .help-block { +  margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block { +  margin-top: 10px; +} + +.form-horizontal .form-actions { +  padding-left: 180px; +} + +table { +  max-width: 100%; +  background-color: transparent; +  border-collapse: collapse; +  border-spacing: 0; +} + +.table { +  width: 100%; +  margin-bottom: 20px; +} + +.table th, +.table td { +  padding: 8px; +  line-height: 20px; +  text-align: left; +  vertical-align: top; +  border-top: 1px solid #dddddd; +} + +.table th { +  font-weight: bold; +} + +.table thead th { +  vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { +  border-top: 0; +} + +.table tbody + tbody { +  border-top: 2px solid #dddddd; +} + +.table-condensed th, +.table-condensed td { +  padding: 4px 5px; +} + +.table-bordered { +  border: 1px solid #dddddd; +  border-collapse: separate; +  *border-collapse: collapse; +  border-left: 0; +  -webkit-border-radius: 4px; +     -moz-border-radius: 4px; +          border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { +  border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { +  border-top: 0; +} + +.table-bordered thead:first-child tr:first-child th:first-child, +.table-bordered tbody:first-child tr:first-child td:first-child { +  -webkit-border-top-left-radius: 4px; +          border-top-left-radius: 4px; +  -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child th:last-child, +.table-bordered tbody:first-child tr:first-child td:last-child { +  -webkit-border-top-right-radius: 4px; +          border-top-right-radius: 4px; +  -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child th:first-child, +.table-bordered tbody:last-child tr:last-child td:first-child, +.table-bordered tfoot:last-child tr:last-child td:first-child { +  -webkit-border-radius: 0 0 0 4px; +     -moz-border-radius: 0 0 0 4px; +          border-radius: 0 0 0 4px; +  -webkit-border-bottom-left-radius: 4px; +          border-bottom-left-radius: 4px; +  -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child th:last-child, +.table-bordered tbody:last-child tr:last-child td:last-child, +.table-bordered tfoot:last-child tr:last-child td:last-child { +  -webkit-border-bottom-right-radius: 4px; +          border-bottom-right-radius: 4px; +  -moz-border-radius-bottomright: 4px; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { +  -webkit-border-top-left-radius: 4px; +          border-top-left-radius: 4px; +  -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { +  -webkit-border-top-right-radius: 4px; +          border-top-right-radius: 4px; +  -moz-border-radius-topleft: 4px; +} + +.table-striped tbody tr:nth-child(odd) td, +.table-striped tbody tr:nth-child(odd) th { +  background-color: #f9f9f9; +} + +.table-hover tbody tr:hover td, +.table-hover tbody tr:hover th { +  background-color: #f5f5f5; +} + +table [class*=span], +.row-fluid table [class*=span] { +  display: table-cell; +  float: none; +  margin-left: 0; +} + +.table .span1 { +  float: none; +  width: 44px; +  margin-left: 0; +} + +.table .span2 { +  float: none; +  width: 124px; +  margin-left: 0; +} + +.table .span3 { +  float: none; +  width: 204px; +  margin-left: 0; +} + +.table .span4 { +  float: none; +  width: 284px; +  margin-left: 0; +} + +.table .span5 { +  float: none; +  width: 364px; +  margin-left: 0; +} + +.table .span6 { +  float: none; +  width: 444px; +  margin-left: 0; +} + +.table .span7 { +  float: none; +  width: 524px; +  margin-left: 0; +} + +.table .span8 { +  float: none; +  width: 604px; +  margin-left: 0; +} + +.table .span9 { +  float: none; +  width: 684px; +  margin-left: 0; +} + +.table .span10 { +  float: none; +  width: 764px; +  margin-left: 0; +} + +.table .span11 { +  float: none; +  width: 844px; +  margin-left: 0; +} + +.table .span12 { +  float: none; +  width: 924px; +  margin-left: 0; +} + +.table .span13 { +  float: none; +  width: 1004px; +  margin-left: 0; +} + +.table .span14 { +  float: none; +  width: 1084px; +  margin-left: 0; +} + +.table .span15 { +  float: none; +  width: 1164px; +  margin-left: 0; +} + +.table .span16 { +  float: none; +  width: 1244px; +  margin-left: 0; +} + +.table .span17 { +  float: none; +  width: 1324px; +  margin-left: 0; +} + +.table .span18 { +  float: none; +  width: 1404px; +  margin-left: 0; +} + +.table .span19 { +  float: none; +  width: 1484px; +  margin-left: 0; +} + +.table .span20 { +  float: none; +  width: 1564px; +  margin-left: 0; +} + +.table .span21 { +  float: none; +  width: 1644px; +  margin-left: 0; +} + +.table .span22 { +  float: none; +  width: 1724px; +  margin-left: 0; +} + +.table .span23 { +  float: none; +  width: 1804px; +  margin-left: 0; +} + +.table .span24 { +  float: none; +  width: 1884px; +  margin-left: 0; +} + +.table tbody tr.success td { +  background-color: #dff0d8; +} + +.table tbody tr.error td { +  background-color: #f2dede; +} + +.table tbody tr.warning td { +  background-color: #fcf8e3; +} + +.table tbody tr.info td { +  background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover td { +  background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover td { +  background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover td { +  background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover td { +  background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { +  display: inline-block; +  width: 14px; +  height: 14px; +  margin-top: 1px; +  *margin-right: .3em; +  line-height: 14px; +  vertical-align: text-top; +  background-image: url("../img/glyphicons-halflings.png"); +  background-position: 14px 14px; +  background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/active states of certain elements */ + +.icon-white, +.nav-tabs > .active > a > [class^="icon-"], +.nav-tabs > .active > a > [class*=" icon-"], +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"] { +  background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { +  background-position: 0      0; +} + +.icon-music { +  background-position: -24px 0; +} + +.icon-search { +  background-position: -48px 0; +} + +.icon-envelope { +  background-position: -72px 0; +} + +.icon-heart { +  background-position: -96px 0; +} + +.icon-star { +  background-position: -120px 0; +} + +.icon-star-empty { +  background-position: -144px 0; +} + +.icon-user { +  background-position: -168px 0; +} + +.icon-film { +  background-position: -192px 0; +} + +.icon-th-large { +  background-position: -216px 0; +} + +.icon-th { +  background-position: -240px 0; +} + +.icon-th-list { +  background-position: -264px 0; +} + +.icon-ok { +  background-position: -288px 0; +} + +.icon-remove { +  background-position: -312px 0; +} + +.icon-zoom-in { +  background-position: -336px 0; +} + +.icon-zoom-out { +  background-position: -360px 0; +} + +.icon-off { +  background-position: -384px 0; +} + +.icon-signal { +  background-position: -408px 0; +} + +.icon-cog { +  background-position: -432px 0; +} + +.icon-trash { +  background-position: -456px 0; +} + +.icon-home { +  background-position: 0 -24px; +} + +.icon-file { +  background-position: -24px -24px; +} + +.icon-time { +  background-position: -48px -24px; +} + +.icon-road { +  background-position: -72px -24px; +} + +.icon-download-alt { +  background-position: -96px -24px; +} + +.icon-download { +  background-position: -120px -24px; +} + +.icon-upload { +  background-position: -144px -24px; +} + +.icon-inbox { +  background-position: -168px -24px; +} + +.icon-play-circle { +  background-position: -192px -24px; +} + +.icon-repeat { +  background-position: -216px -24px; +} + +.icon-refresh { +  background-position: -240px -24px; +} + +.icon-list-alt { +  background-position: -264px -24px; +} + +.icon-lock { +  background-position: -287px -24px; +} + +.icon-flag { +  background-position: -312px -24px; +} + +.icon-headphones { +  background-position: -336px -24px; +} + +.icon-volume-off { +  background-position: -360px -24px; +} + +.icon-volume-down { +  background-position: -384px -24px; +} + +.icon-volume-up { +  background-position: -408px -24px; +} + +.icon-qrcode { +  background-position: -432px -24px; +} + +.icon-barcode { +  background-position: -456px -24px; +} + +.icon-tag { +  background-position: 0 -48px; +} + +.icon-tags { +  background-position: -25px -48px; +} + +.icon-book { +  background-position: -48px -48px; +} + +.icon-bookmark { +  background-position: -72px -48px; +} + +.icon-print { +  background-position: -96px -48px; +} + +.icon-camera { +  background-position: -120px -48px; +} + +.icon-font { +  background-position: -144px -48px; +} + +.icon-bold { +  background-position: -167px -48px; +} + +.icon-italic { +  background-position: -192px -48px; +} + +.icon-text-height { +  background-position: -216px -48px; +} + +.icon-text-width { +  background-position: -240px -48px; +} + +.icon-align-left { +  background-position: -264px -48px; +} + +.icon-align-center { +  background-position: -288px -48px; +} + +.icon-align-right { +  background-position: -312px -48px; +} + +.icon-align-justify { +  background-position: -336px -48px; +} + +.icon-list { +  background-position: -360px -48px; +} + +.icon-indent-left { +  background-position: -384px -48px; +} + +.icon-indent-right { +  background-position: -408px -48px; +} + +.icon-facetime-video { +  background-position: -432px -48px; +} + +.icon-picture { +  background-position: -456px -48px; +} + +.icon-pencil { +  background-position: 0 -72px; +} + +.icon-map-marker { +  background-position: -24px -72px; +} + +.icon-adjust { +  background-position: -48px -72px; +} + +.icon-tint { +  background-position: -72px -72px; +} + +.icon-edit { +  background-position: -96px -72px; +} + +.icon-share { +  background-position: -120px -72px; +} + +.icon-check { +  background-position: -144px -72px; +} + +.icon-move { +  background-position: -168px -72px; +} + +.icon-step-backward { +  background-position: -192px -72px; +} + +.icon-fast-backward { +  background-position: -216px -72px; +} + +.icon-backward { +  background-position: -240px -72px; +} + +.icon-play { +  background-position: -264px -72px; +} + +.icon-pause { +  background-position: -288px -72px; +} + +.icon-stop { +  background-position: -312px -72px; +} + +.icon-forward { +  background-position: -336px -72px; +} + +.icon-fast-forward { +  background-position: -360px -72px; +} + +.icon-step-forward { +  background-position: -384px -72px; +} + +.icon-eject { +  background-position: -408px -72px; +} + +.icon-chevron-left { +  background-position: -432px -72px; +} + +.icon-chevron-right { +  background-position: -456px -72px; +} + +.icon-plus-sign { +  background-position: 0 -96px; +} + +.icon-minus-sign { +  background-position: -24px -96px; +} + +.icon-remove-sign { +  background-position: -48px -96px; +} + +.icon-ok-sign { +  background-position: -72px -96px; +} + +.icon-question-sign { +  background-position: -96px -96px; +} + +.icon-info-sign { +  background-position: -120px -96px; +} + +.icon-screenshot { +  background-position: -144px -96px; +} + +.icon-remove-circle { +  background-position: -168px -96px; +} + +.icon-ok-circle { +  background-position: -192px -96px; +} + +.icon-ban-circle { +  background-position: -216px -96px; +} + +.icon-arrow-left { +  background-position: -240px -96px; +} + +.icon-arrow-right { +  background-position: -264px -96px; +} + +.icon-arrow-up { +  background-position: -289px -96px; +} + +.icon-arrow-down { +  background-position: -312px -96px; +} + +.icon-share-alt { +  background-position: -336px -96px; +} + +.icon-resize-full { +  background-position: -360px -96px; +} + +.icon-resize-small { +  background-position: -384px -96px; +} + +.icon-plus { +  background-position: -408px -96px; +} + +.icon-minus { +  background-position: -433px -96px; +} + +.icon-asterisk { +  background-position: -456px -96px; +} + +.icon-exclamation-sign { +  background-position: 0 -120px; +} + +.icon-gift { +  background-position: -24px -120px; +} + +.icon-leaf { +  background-position: -48px -120px; +} + +.icon-fire { +  background-position: -72px -120px; +} + +.icon-eye-open { +  background-position: -96px -120px; +} + +.icon-eye-close { +  background-position: -120px -120px; +} + +.icon-warning-sign { +  background-position: -144px -120px; +} + +.icon-plane { +  background-position: -168px -120px; +} + +.icon-calendar { +  background-position: -192px -120px; +} + +.icon-random { +  width: 16px; +  background-position: -216px -120px; +} + +.icon-comment { +  background-position: -240px -120px; +} + +.icon-magnet { +  background-position: -264px -120px; +} + +.icon-chevron-up { +  background-position: -288px -120px; +} + +.icon-chevron-down { +  background-position: -313px -119px; +} + +.icon-retweet { +  background-position: -336px -120px; +} + +.icon-shopping-cart { +  background-position: -360px -120px; +} + +.icon-folder-close { +  background-position: -384px -120px; +} + +.icon-folder-open { +  width: 16px; +  background-position: -408px -120px; +} + +.icon-resize-vertical { +  background-position: -432px -119px; +} + +.icon-resize-horizontal { +  background-position: -456px -118px; +} + +.icon-hdd { +  background-position: 0 -144px; +} + +.icon-bullhorn { +  background-position: -24px -144px; +} + +.icon-bell { +  background-position: -48px -144px; +} + +.icon-certificate { +  background-position: -72px -144px; +} + +.icon-thumbs-up { +  background-position: -96px -144px; +} + +.icon-thumbs-down { +  background-position: -120px -144px; +} + +.icon-hand-right { +  background-position: -144px -144px; +} + +.icon-hand-left { +  background-position: -168px -144px; +} + +.icon-hand-up { +  background-position: -192px -144px; +} + +.icon-hand-down { +  background-position: -216px -144px; +} + +.icon-circle-arrow-right { +  background-position: -240px -144px; +} + +.icon-circle-arrow-left { +  background-position: -264px -144px; +} + +.icon-circle-arrow-up { +  background-position: -288px -144px; +} + +.icon-circle-arrow-down { +  background-position: -312px -144px; +} + +.icon-globe { +  background-position: -336px -144px; +} + +.icon-wrench { +  background-position: -360px -144px; +} + +.icon-tasks { +  background-position: -384px -144px; +} + +.icon-filter { +  background-position: -408px -144px; +} + +.icon-briefcase { +  background-position: -432px -144px; +} + +.icon-fullscreen { +  background-position: -456px -144px; +} + +.dropup, +.dropdown { +  position: relative; +} + +.dropdown-toggle { +  *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { +  outline: 0; +} + +.caret { +  display: inline-block; +  width: 0; +  height: 0; +  vertical-align: top; +  border-top: 4px solid #000000; +  border-right: 4px solid transparent; +  border-left: 4px solid transparent; +  content: ""; +} + +.dropdown .caret { +  margin-top: 8px; +  margin-left: 2px; +} + +.dropdown-menu { +  position: absolute; +  top: 100%; +  left: 0; +  z-index: 1000; +  display: none; +  float: left; +  min-width: 160px; +  padding: 5px 0; +  margin: 2px 0 0; +  list-style: none; +  background-color: #ffffff; +  border: 1px solid #ccc; +  border: 1px solid rgba(0, 0, 0, 0.2); +  *border-right-width: 2px; +  *border-bottom-width: 2px; +  -webkit-border-radius: 6px; +     -moz-border-radius: 6px; +          border-radius: 6px; +  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +  -webkit-background-clip: padding-box; +     -moz-background-clip: padding; +          background-clip: padding-box; +} + +.dropdown-menu.pull-right { +  right: 0; +  left: auto; +} + +.dropdown-menu .divider { +  *width: 100%; +  height: 1px; +  margin: 9px 1px; +  *margin: -5px 0 5px; +  overflow: hidden; +  background-color: #e5e5e5; +  border-bottom: 1px solid #ffffff; +} + +.dropdown-menu a { +  display: block; +  padding: 3px 20px; +  clear: both; +  font-weight: normal; +  line-height: 20px; +  color: #333333; +  white-space: nowrap; +} + +.dropdown-menu li > a:hover, +.dropdown-menu li > a:focus, +.dropdown-submenu:hover > a { +  color: #ffffff; +  text-decoration: none; +  background-color: #0088cc; +  background-color: #0081c2; +  background-image: -moz-linear-gradient(top, #0088cc, #0077b3); +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); +  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); +  background-image: -o-linear-gradient(top, #0088cc, #0077b3); +  background-image: linear-gradient(to bottom, #0088cc, #0077b3); +  background-repeat: repeat-x; +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu .active > a, +.dropdown-menu .active > a:hover { +  color: #ffffff; +  text-decoration: none; +  background-color: #0088cc; +  background-color: #0081c2; +  background-image: linear-gradient(to bottom, #0088cc, #0077b3); +  background-image: -moz-linear-gradient(top, #0088cc, #0077b3); +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); +  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); +  background-image: -o-linear-gradient(top, #0088cc, #0077b3); +  background-repeat: repeat-x; +  outline: 0; +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu .disabled > a, +.dropdown-menu .disabled > a:hover { +  color: #999999; +} + +.dropdown-menu .disabled > a:hover { +  text-decoration: none; +  cursor: default; +  background-color: transparent; +} + +.open { +  *z-index: 1000; +} + +.open > .dropdown-menu { +  display: block; +} + +.pull-right > .dropdown-menu { +  right: 0; +  left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { +  border-top: 0; +  border-bottom: 4px solid #000000; +  content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { +  top: auto; +  bottom: 100%; +  margin-bottom: 1px; +} + +.dropdown-submenu { +  position: relative; +} + +.dropdown-submenu > .dropdown-menu { +  top: 0; +  left: 100%; +  margin-top: -6px; +  margin-left: -1px; +  -webkit-border-radius: 0 6px 6px 6px; +     -moz-border-radius: 0 6px 6px 6px; +          border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { +  display: block; +} + +.dropdown-submenu > a:after { +  display: block; +  float: right; +  width: 0; +  height: 0; +  margin-top: 5px; +  margin-right: -10px; +  border-color: transparent; +  border-left-color: #cccccc; +  border-style: solid; +  border-width: 5px 0 5px 5px; +  content: " "; +} + +.dropdown-submenu:hover > a:after { +  border-left-color: #ffffff; +} + +.dropdown .dropdown-menu .nav-header { +  padding-right: 20px; +  padding-left: 20px; +} + +.typeahead { +  margin-top: 2px; +  -webkit-border-radius: 4px; +     -moz-border-radius: 4px; +          border-radius: 4px; +} + +.well { +  min-height: 20px; +  padding: 19px; +  margin-bottom: 20px; +  background-color: #f5f5f5; +  border: 1px solid #e3e3e3; +  -webkit-border-radius: 4px; +     -moz-border-radius: 4px; +          border-radius: 4px; +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { +  border-color: #ddd; +  border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { +  padding: 24px; +  -webkit-border-radius: 6px; +     -moz-border-radius: 6px; +          border-radius: 6px; +} + +.well-small { +  padding: 9px; +  -webkit-border-radius: 3px; +     -moz-border-radius: 3px; +          border-radius: 3px; +} + +.fade { +  opacity: 0; +  -webkit-transition: opacity 0.15s linear; +     -moz-transition: opacity 0.15s linear; +       -o-transition: opacity 0.15s linear; +          transition: opacity 0.15s linear; +} + +.fade.in { +  opacity: 1; +} + +.collapse { +  position: relative; +  height: 0; +  overflow: hidden; +  -webkit-transition: height 0.35s ease; +     -moz-transition: height 0.35s ease; +       -o-transition: height 0.35s ease; +          transition: height 0.35s ease; +} + +.collapse.in { +  height: auto; +} + +.close { +  float: right; +  font-size: 20px; +  font-weight: bold; +  line-height: 20px; +  color: #000000; +  text-shadow: 0 1px 0 #ffffff; +  opacity: 0.2; +  filter: alpha(opacity=20); +} + +.close:hover { +  color: #000000; +  text-decoration: none; +  cursor: pointer; +  opacity: 0.4; +  filter: alpha(opacity=40); +} + +button.close { +  padding: 0; +  cursor: pointer; +  background: transparent; +  border: 0; +  -webkit-appearance: none; +} + +.btn { +  display: inline-block; +  *display: inline; +  padding: 4px 14px; +  margin-bottom: 0; +  *margin-left: .3em; +  font-size: 14px; +  line-height: 20px; +  *line-height: 20px; +  color: #333333; +  text-align: center; +  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); +  vertical-align: middle; +  cursor: pointer; +  background-color: #f5f5f5; +  *background-color: #e6e6e6; +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); +  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); +  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); +  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); +  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); +  background-repeat: repeat-x; +  border: 1px solid #bbbbbb; +  *border: 0; +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +  border-color: #e6e6e6 #e6e6e6 #bfbfbf; +  border-bottom-color: #a2a2a2; +  -webkit-border-radius: 4px; +     -moz-border-radius: 4px; +          border-radius: 4px; +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); +  filter: progid:dximagetransform.microsoft.gradient(enabled=false); +  *zoom: 1; +  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { +  color: #333333; +  background-color: #e6e6e6; +  *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { +  background-color: #cccccc \9; +} + +.btn:first-child { +  *margin-left: 0; +} + +.btn:hover { +  color: #333333; +  text-decoration: none; +  background-color: #e6e6e6; +  *background-color: #d9d9d9; +  /* Buttons in IE7 don't get borders, so darken on hover */ + +  background-position: 0 -15px; +  -webkit-transition: background-position 0.1s linear; +     -moz-transition: background-position 0.1s linear; +       -o-transition: background-position 0.1s linear; +          transition: background-position 0.1s linear; +} + +.btn:focus { +  outline: thin dotted #333; +  outline: 5px auto -webkit-focus-ring-color; +  outline-offset: -2px; +} + +.btn.active, +.btn:active { +  background-color: #e6e6e6; +  background-color: #d9d9d9 \9; +  background-image: none; +  outline: 0; +  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { +  cursor: default; +  background-color: #e6e6e6; +  background-image: none; +  opacity: 0.65; +  filter: alpha(opacity=65); +  -webkit-box-shadow: none; +     -moz-box-shadow: none; +          box-shadow: none; +} + +.btn-large { +  padding: 9px 14px; +  font-size: 16px; +  line-height: normal; +  -webkit-border-radius: 5px; +     -moz-border-radius: 5px; +          border-radius: 5px; +} + +.btn-large [class^="icon-"] { +  margin-top: 2px; +} + +.btn-small { +  padding: 3px 9px; +  font-size: 12px; +  line-height: 18px; +} + +.btn-small [class^="icon-"] { +  margin-top: 0; +} + +.btn-mini { +  padding: 2px 6px; +  font-size: 11px; +  line-height: 17px; +} + +.btn-block { +  display: block; +  width: 100%; +  padding-right: 0; +  padding-left: 0; +  -webkit-box-sizing: border-box; +     -moz-box-sizing: border-box; +          box-sizing: border-box; +} + +.btn-block + .btn-block { +  margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { +  width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { +  color: rgba(255, 255, 255, 0.75); +} + +.btn { +  border-color: #c5c5c5; +  border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); +} + +.btn-primary { +  color: #ffffff; +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +  background-color: #006dcc; +  *background-color: #0044cc; +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); +  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); +  background-image: -o-linear-gradient(top, #0088cc, #0044cc); +  background-image: linear-gradient(to bottom, #0088cc, #0044cc); +  background-image: -moz-linear-gradient(top, #0088cc, #0044cc); +  background-repeat: repeat-x; +  border-color: #0044cc #0044cc #002a80; +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); +  filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { +  color: #ffffff; +  background-color: #0044cc; +  *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { +  background-color: #003399 \9; +} + +.btn-warning { +  color: #ffffff; +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +  background-color: #faa732; +  *background-color: #f89406; +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); +  background-image: -webkit-linear-gradient(top, #fbb450, #f89406); +  background-image: -o-linear-gradient(top, #fbb450, #f89406); +  background-image: linear-gradient(to bottom, #fbb450, #f89406); +  background-image: -moz-linear-gradient(top, #fbb450, #f89406); +  background-repeat: repeat-x; +  border-color: #f89406 #f89406 #ad6704; +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +  filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { +  color: #ffffff; +  background-color: #f89406; +  *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { +  background-color: #c67605 \9; +} + +.btn-danger { +  color: #ffffff; +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +  background-color: #da4f49; +  *background-color: #bd362f; +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); +  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); +  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); +  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); +  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); +  background-repeat: repeat-x; +  border-color: #bd362f #bd362f #802420; +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); +  filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { +  color: #ffffff; +  background-color: #bd362f; +  *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { +  background-color: #942a25 \9; +} + +.btn-success { +  color: #ffffff; +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +  background-color: #5bb75b; +  *background-color: #51a351; +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); +  background-image: -webkit-linear-gradient(top, #62c462, #51a351); +  background-image: -o-linear-gradient(top, #62c462, #51a351); +  background-image: linear-gradient(to bottom, #62c462, #51a351); +  background-image: -moz-linear-gradient(top, #62c462, #51a351); +  background-repeat: repeat-x; +  border-color: #51a351 #51a351 #387038; +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); +  filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { +  color: #ffffff; +  background-color: #51a351; +  *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { +  background-color: #408140 \9; +} + +.btn-info { +  color: #ffffff; +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +  background-color: #49afcd; +  *background-color: #2f96b4; +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); +  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); +  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); +  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); +  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); +  background-repeat: repeat-x; +  border-color: #2f96b4 #2f96b4 #1f6377; +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); +  filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { +  color: #ffffff; +  background-color: #2f96b4; +  *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { +  background-color: #24748c \9; +} + +.btn-inverse { +  color: #ffffff; +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +  background-color: #363636; +  *background-color: #222222; +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); +  background-image: -webkit-linear-gradient(top, #444444, #222222); +  background-image: -o-linear-gradient(top, #444444, #222222); +  background-image: linear-gradient(to bottom, #444444, #222222); +  background-image: -moz-linear-gradient(top, #444444, #222222); +  background-repeat: repeat-x; +  border-color: #222222 #222222 #000000; +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); +  filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { +  color: #ffffff; +  background-color: #222222; +  *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { +  background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { +  *padding-top: 3px; +  *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { +  padding: 0; +  border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { +  *padding-top: 7px; +  *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { +  *padding-top: 3px; +  *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { +  *padding-top: 1px; +  *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { +  background-color: transparent; +  background-image: none; +  -webkit-box-shadow: none; +     -moz-box-shadow: none; +          box-shadow: none; +} + +.btn-link { +  color: #0088cc; +  cursor: pointer; +  border-color: transparent; +  -webkit-border-radius: 0; +     -moz-border-radius: 0; +          border-radius: 0; +} + +.btn-link:hover { +  color: #005580; +  text-decoration: underline; +  background-color: transparent; +} + +.btn-link[disabled]:hover { +  color: #333333; +  text-decoration: none; +} + +.btn-group { +  position: relative; +  *margin-left: .3em; +  font-size: 0; +  white-space: nowrap; +  vertical-align: middle; +} + +.btn-group:first-child { +  *margin-left: 0; +} + +.btn-group + .btn-group { +  margin-left: 5px; +} + +.btn-toolbar { +  margin-top: 10px; +  margin-bottom: 10px; +  font-size: 0; +} + +.btn-toolbar .btn-group { +  display: inline-block; +  *display: inline; +  /* IE7 inline-block hack */ + +  *zoom: 1; +} + +.btn-toolbar .btn + .btn, +.btn-toolbar .btn-group + .btn, +.btn-toolbar .btn + .btn-group { +  margin-left: 5px; +} + +.btn-group > .btn { +  position: relative; +  -webkit-border-radius: 0; +     -moz-border-radius: 0; +          border-radius: 0; +} + +.btn-group > .btn + .btn { +  margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu { +  font-size: 14px; +} + +.btn-group > .btn-mini { +  font-size: 11px; +} + +.btn-group > .btn-small { +  font-size: 12px; +} + +.btn-group > .btn-large { +  font-size: 16px; +} + +.btn-group > .btn:first-child { +  margin-left: 0; +  -webkit-border-bottom-left-radius: 4px; +          border-bottom-left-radius: 4px; +  -webkit-border-top-left-radius: 4px; +          border-top-left-radius: 4px; +  -moz-border-radius-bottomleft: 4px; +  -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { +  -webkit-border-top-right-radius: 4px; +          border-top-right-radius: 4px; +  -webkit-border-bottom-right-radius: 4px; +          border-bottom-right-radius: 4px; +  -moz-border-radius-topright: 4px; +  -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { +  margin-left: 0; +  -webkit-border-bottom-left-radius: 6px; +          border-bottom-left-radius: 6px; +  -webkit-border-top-left-radius: 6px; +          border-top-left-radius: 6px; +  -moz-border-radius-bottomleft: 6px; +  -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { +  -webkit-border-top-right-radius: 6px; +          border-top-right-radius: 6px; +  -webkit-border-bottom-right-radius: 6px; +          border-bottom-right-radius: 6px; +  -moz-border-radius-topright: 6px; +  -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { +  z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { +  outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { +  *padding-top: 5px; +  padding-right: 8px; +  *padding-bottom: 5px; +  padding-left: 8px; +  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +     -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +          box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { +  *padding-top: 2px; +  padding-right: 5px; +  *padding-bottom: 2px; +  padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { +  *padding-top: 5px; +  *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { +  *padding-top: 7px; +  padding-right: 12px; +  *padding-bottom: 7px; +  padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { +  background-image: none; +  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { +  background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { +  background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { +  background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { +  background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { +  background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { +  background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { +  background-color: #222222; +} + +.btn .caret { +  margin-top: 8px; +  margin-left: 0; +} + +.btn-mini .caret, +.btn-small .caret, +.btn-large .caret { +  margin-top: 6px; +} + +.btn-large .caret { +  border-top-width: 5px; +  border-right-width: 5px; +  border-left-width: 5px; +} + +.dropup .btn-large .caret { +  border-top: 0; +  border-bottom: 5px solid #000000; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { +  border-top-color: #ffffff; +  border-bottom-color: #ffffff; +} + +.btn-group-vertical { +  display: inline-block; +  *display: inline; +  /* IE7 inline-block hack */ + +  *zoom: 1; +} + +.btn-group-vertical .btn { +  display: block; +  float: none; +  width: 100%; +  -webkit-border-radius: 0; +     -moz-border-radius: 0; +          border-radius: 0; +} + +.btn-group-vertical .btn + .btn { +  margin-top: -1px; +  margin-left: 0; +} + +.btn-group-vertical .btn:first-child { +  -webkit-border-radius: 4px 4px 0 0; +     -moz-border-radius: 4px 4px 0 0; +          border-radius: 4px 4px 0 0; +} + +.btn-group-vertical .btn:last-child { +  -webkit-border-radius: 0 0 4px 4px; +     -moz-border-radius: 0 0 4px 4px; +          border-radius: 0 0 4px 4px; +} + +.btn-group-vertical .btn-large:first-child { +  -webkit-border-radius: 6px 6px 0 0; +     -moz-border-radius: 6px 6px 0 0; +          border-radius: 6px 6px 0 0; +} + +.btn-group-vertical .btn-large:last-child { +  -webkit-border-radius: 0 0 6px 6px; +     -moz-border-radius: 0 0 6px 6px; +          border-radius: 0 0 6px 6px; +} + +.alert { +  padding: 8px 35px 8px 14px; +  margin-bottom: 20px; +  color: #c09853; +  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +  background-color: #fcf8e3; +  border: 1px solid #fbeed5; +  -webkit-border-radius: 4px; +     -moz-border-radius: 4px; +          border-radius: 4px; +} + +.alert h4 { +  margin: 0; +} + +.alert .close { +  position: relative; +  top: -2px; +  right: -21px; +  line-height: 20px; +} + +.alert-success { +  color: #468847; +  background-color: #dff0d8; +  border-color: #d6e9c6; +} + +.alert-danger, +.alert-error { +  color: #b94a48; +  background-color: #f2dede; +  border-color: #eed3d7; +} + +.alert-info { +  color: #3a87ad; +  background-color: #d9edf7; +  border-color: #bce8f1; +} + +.alert-block { +  padding-top: 14px; +  padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { +  margin-bottom: 0; +} + +.alert-block p + p { +  margin-top: 5px; +} + +.nav { +  margin-bottom: 20px; +  margin-left: 0; +  list-style: none; +} + +.nav > li > a { +  display: block; +} + +.nav > li > a:hover { +  text-decoration: none; +  background-color: #eeeeee; +} + +.nav > .pull-right { +  float: right; +} + +.nav-header { +  display: block; +  padding: 3px 15px; +  font-size: 11px; +  font-weight: bold; +  line-height: 20px; +  color: #999999; +  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +  text-transform: uppercase; +} + +.nav li + .nav-header { +  margin-top: 9px; +} + +.nav-list { +  padding-right: 15px; +  padding-left: 15px; +  margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { +  margin-right: -15px; +  margin-left: -15px; +  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { +  padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover { +  color: #ffffff; +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); +  background-color: #0088cc; +} + +.nav-list [class^="icon-"] { +  margin-right: 2px; +} + +.nav-list .divider { +  *width: 100%; +  height: 1px; +  margin: 9px 1px; +  *margin: -5px 0 5px; +  overflow: hidden; +  background-color: #e5e5e5; +  border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { +  *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.nav-tabs:after, +.nav-pills:after { +  clear: both; +} + +.nav-tabs > li, +.nav-pills > li { +  float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { +  padding-right: 12px; +  padding-left: 12px; +  margin-right: 2px; +  line-height: 14px; +} + +.nav-tabs { +  border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { +  margin-bottom: -1px; +} + +.nav-tabs > li > a { +  padding-top: 8px; +  padding-bottom: 8px; +  line-height: 20px; +  border: 1px solid transparent; +  -webkit-border-radius: 4px 4px 0 0; +     -moz-border-radius: 4px 4px 0 0; +          border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { +  border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover { +  color: #555555; +  cursor: default; +  background-color: #ffffff; +  border: 1px solid #ddd; +  border-bottom-color: transparent; +} + +.nav-pills > li > a { +  padding-top: 8px; +  padding-bottom: 8px; +  margin-top: 2px; +  margin-bottom: 2px; +  -webkit-border-radius: 5px; +     -moz-border-radius: 5px; +          border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover { +  color: #ffffff; +  background-color: #0088cc; +} + +.nav-stacked > li { +  float: none; +} + +.nav-stacked > li > a { +  margin-right: 0; +} + +.nav-tabs.nav-stacked { +  border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { +  border: 1px solid #ddd; +  -webkit-border-radius: 0; +     -moz-border-radius: 0; +          border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { +  -webkit-border-top-right-radius: 4px; +          border-top-right-radius: 4px; +  -webkit-border-top-left-radius: 4px; +          border-top-left-radius: 4px; +  -moz-border-radius-topright: 4px; +  -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { +  -webkit-border-bottom-right-radius: 4px; +          border-bottom-right-radius: 4px; +  -webkit-border-bottom-left-radius: 4px; +          border-bottom-left-radius: 4px; +  -moz-border-radius-bottomright: 4px; +  -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover { +  z-index: 2; +  border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { +  margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { +  margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { +  -webkit-border-radius: 0 0 6px 6px; +     -moz-border-radius: 0 0 6px 6px; +          border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { +  -webkit-border-radius: 6px; +     -moz-border-radius: 6px; +          border-radius: 6px; +} + +.nav .dropdown-toggle .caret { +  margin-top: 6px; +  border-top-color: #0088cc; +  border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret { +  border-top-color: #005580; +  border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { +  margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { +  border-top-color: #fff; +  border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { +  border-top-color: #555555; +  border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover { +  cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover { +  color: #ffffff; +  background-color: #999999; +  border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret { +  border-top-color: #ffffff; +  border-bottom-color: #ffffff; +  opacity: 1; +  filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover { +  border-color: #999999; +} + +.tabbable { +  *zoom: 1; +} + +.tabbable:before, +.tabbable:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.tabbable:after { +  clear: both; +} + +.tab-content { +  overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { +  border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { +  display: none; +} + +.tab-content > .active, +.pill-content > .active { +  display: block; +} + +.tabs-below > .nav-tabs { +  border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { +  margin-top: -1px; +  margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { +  -webkit-border-radius: 0 0 4px 4px; +     -moz-border-radius: 0 0 4px 4px; +          border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover { +  border-top-color: #ddd; +  border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover { +  border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { +  float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { +  min-width: 74px; +  margin-right: 0; +  margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { +  float: left; +  margin-right: 19px; +  border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { +  margin-right: -1px; +  -webkit-border-radius: 4px 0 0 4px; +     -moz-border-radius: 4px 0 0 4px; +          border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover { +  border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover { +  border-color: #ddd transparent #ddd #ddd; +  *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { +  float: right; +  margin-left: 19px; +  border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { +  margin-left: -1px; +  -webkit-border-radius: 0 4px 4px 0; +     -moz-border-radius: 0 4px 4px 0; +          border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover { +  border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover { +  border-color: #ddd #ddd #ddd transparent; +  *border-left-color: #ffffff; +} + +.nav > .disabled > a { +  color: #999999; +} + +.nav > .disabled > a:hover { +  text-decoration: none; +  cursor: default; +  background-color: transparent; +} + +.navbar { +  *position: relative; +  *z-index: 2; +  margin-bottom: 20px; +  overflow: visible; +  color: #777777; +} + +.navbar-inner { +  min-height: 40px; +  padding-right: 20px; +  padding-left: 20px; +  background-color: #fafafa; +  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); +  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); +  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); +  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); +  background-repeat: repeat-x; +  border: 1px solid #d4d4d4; +  -webkit-border-radius: 4px; +     -moz-border-radius: 4px; +          border-radius: 4px; +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); +  *zoom: 1; +  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +     -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +          box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.navbar-inner:after { +  clear: both; +} + +.navbar .container { +  width: auto; +} + +.nav-collapse.collapse { +  height: auto; +} + +.navbar .brand { +  display: block; +  float: left; +  padding: 10px 20px 10px; +  margin-left: -20px; +  font-size: 20px; +  font-weight: 200; +  color: #777777; +  text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover { +  text-decoration: none; +} + +.navbar-text { +  margin-bottom: 0; +  line-height: 40px; +} + +.navbar-link { +  color: #777777; +} + +.navbar-link:hover { +  color: #333333; +} + +.navbar .divider-vertical { +  height: 40px; +  margin: 0 9px; +  border-right: 1px solid #ffffff; +  border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { +  margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn { +  margin-top: 0; +} + +.navbar-form { +  margin-bottom: 0; +  *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.navbar-form:after { +  clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { +  margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { +  display: inline-block; +  margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { +  margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { +  margin-top: 6px; +  white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { +  margin-top: 0; +} + +.navbar-search { +  position: relative; +  float: left; +  margin-top: 5px; +  margin-bottom: 0; +} + +.navbar-search .search-query { +  padding: 4px 14px; +  margin-bottom: 0; +  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +  font-size: 13px; +  font-weight: normal; +  line-height: 1; +  -webkit-border-radius: 15px; +     -moz-border-radius: 15px; +          border-radius: 15px; +} + +.navbar-static-top { +  position: static; +  width: 100%; +  margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { +  -webkit-border-radius: 0; +     -moz-border-radius: 0; +          border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { +  position: fixed; +  right: 0; +  left: 0; +  z-index: 1030; +  margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { +  border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { +  border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { +  padding-right: 0; +  padding-left: 0; +  -webkit-border-radius: 0; +     -moz-border-radius: 0; +          border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { +  width: 940px; +} + +.navbar-fixed-top { +  top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { +  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1); +     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1); +          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { +  bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { +  -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); +     -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); +          box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { +  position: relative; +  left: 0; +  display: block; +  float: left; +  margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { +  float: right; +  margin-right: 0; +} + +.navbar .nav > li { +  float: left; +} + +.navbar .nav > li > a { +  float: none; +  padding: 10px 15px 10px; +  color: #777777; +  text-decoration: none; +  text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { +  margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { +  color: #333333; +  text-decoration: none; +  background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { +  color: #555555; +  text-decoration: none; +  background-color: #e5e5e5; +  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +     -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +          box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { +  display: none; +  float: right; +  padding: 7px 10px; +  margin-right: 5px; +  margin-left: 5px; +  color: #ffffff; +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +  background-color: #ededed; +  *background-color: #e5e5e5; +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); +  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); +  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); +  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); +  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); +  background-repeat: repeat-x; +  border-color: #e5e5e5 #e5e5e5 #bfbfbf; +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); +  filter: progid:dximagetransform.microsoft.gradient(enabled=false); +  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { +  color: #ffffff; +  background-color: #e5e5e5; +  *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { +  background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { +  display: block; +  width: 18px; +  height: 2px; +  background-color: #f5f5f5; +  -webkit-border-radius: 1px; +     -moz-border-radius: 1px; +          border-radius: 1px; +  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +     -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +          box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { +  margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { +  position: absolute; +  top: -7px; +  left: 9px; +  display: inline-block; +  border-right: 7px solid transparent; +  border-bottom: 7px solid #ccc; +  border-left: 7px solid transparent; +  border-bottom-color: rgba(0, 0, 0, 0.2); +  content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { +  position: absolute; +  top: -6px; +  left: 10px; +  display: inline-block; +  border-right: 6px solid transparent; +  border-bottom: 6px solid #ffffff; +  border-left: 6px solid transparent; +  content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { +  top: auto; +  bottom: -7px; +  border-top: 7px solid #ccc; +  border-bottom: 0; +  border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { +  top: auto; +  bottom: -6px; +  border-top: 6px solid #ffffff; +  border-bottom: 0; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { +  color: #555555; +  background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { +  border-top-color: #777777; +  border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { +  border-top-color: #555555; +  border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { +  right: 0; +  left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { +  right: 12px; +  left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { +  right: 13px; +  left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { +  right: 100%; +  left: auto; +  margin-right: -1px; +  margin-left: 0; +  -webkit-border-radius: 6px 0 6px 6px; +     -moz-border-radius: 6px 0 6px 6px; +          border-radius: 6px 0 6px 6px; +} + +.navbar-inverse { +  color: #999999; +} + +.navbar-inverse .navbar-inner { +  background-color: #1b1b1b; +  background-image: -moz-linear-gradient(top, #222222, #111111); +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); +  background-image: -webkit-linear-gradient(top, #222222, #111111); +  background-image: -o-linear-gradient(top, #222222, #111111); +  background-image: linear-gradient(to bottom, #222222, #111111); +  background-repeat: repeat-x; +  border-color: #252525; +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { +  color: #999999; +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover { +  color: #ffffff; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { +  color: #ffffff; +  background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { +  color: #ffffff; +  background-color: #111111; +} + +.navbar-inverse .navbar-link { +  color: #999999; +} + +.navbar-inverse .navbar-link:hover { +  color: #ffffff; +} + +.navbar-inverse .divider-vertical { +  border-right-color: #222222; +  border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { +  color: #ffffff; +  background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { +  border-top-color: #999999; +  border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { +  border-top-color: #ffffff; +  border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { +  color: #ffffff; +  background-color: #515151; +  border-color: #111111; +  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); +     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); +          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); +  -webkit-transition: none; +     -moz-transition: none; +       -o-transition: none; +          transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { +  color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { +  color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { +  color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { +  padding: 5px 15px; +  color: #333333; +  text-shadow: 0 1px 0 #ffffff; +  background-color: #ffffff; +  border: 0; +  outline: 0; +  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +     -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +          box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { +  color: #ffffff; +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +  background-color: #0e0e0e; +  *background-color: #040404; +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); +  background-image: -webkit-linear-gradient(top, #151515, #040404); +  background-image: -o-linear-gradient(top, #151515, #040404); +  background-image: linear-gradient(to bottom, #151515, #040404); +  background-image: -moz-linear-gradient(top, #151515, #040404); +  background-repeat: repeat-x; +  border-color: #040404 #040404 #000000; +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); +  filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { +  color: #ffffff; +  background-color: #040404; +  *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { +  background-color: #000000 \9; +} + +.breadcrumb { +  padding: 8px 15px; +  margin: 0 0 20px; +  list-style: none; +  background-color: #f5f5f5; +  -webkit-border-radius: 4px; +     -moz-border-radius: 4px; +          border-radius: 4px; +} + +.breadcrumb li { +  display: inline-block; +  *display: inline; +  text-shadow: 0 1px 0 #ffffff; +  *zoom: 1; +} + +.breadcrumb .divider { +  padding: 0 5px; +  color: #ccc; +} + +.breadcrumb .active { +  color: #999999; +} + +.pagination { +  height: 40px; +  margin: 20px 0; +} + +.pagination ul { +  display: inline-block; +  *display: inline; +  margin-bottom: 0; +  margin-left: 0; +  -webkit-border-radius: 3px; +     -moz-border-radius: 3px; +          border-radius: 3px; +  *zoom: 1; +  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +     -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { +  display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { +  float: left; +  padding: 0 14px; +  line-height: 38px; +  text-decoration: none; +  background-color: #ffffff; +  border: 1px solid #dddddd; +  border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > .active > a, +.pagination ul > .active > span { +  background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { +  color: #999999; +  cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover { +  color: #999999; +  cursor: default; +  background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { +  border-left-width: 1px; +  -webkit-border-radius: 3px 0 0 3px; +     -moz-border-radius: 3px 0 0 3px; +          border-radius: 3px 0 0 3px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { +  -webkit-border-radius: 0 3px 3px 0; +     -moz-border-radius: 0 3px 3px 0; +          border-radius: 0 3px 3px 0; +} + +.pagination-centered { +  text-align: center; +} + +.pagination-right { +  text-align: right; +} + +.pager { +  margin: 20px 0; +  text-align: center; +  list-style: none; +  *zoom: 1; +} + +.pager:before, +.pager:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.pager:after { +  clear: both; +} + +.pager li { +  display: inline; +} + +.pager a, +.pager span { +  display: inline-block; +  padding: 5px 14px; +  background-color: #fff; +  border: 1px solid #ddd; +  -webkit-border-radius: 15px; +     -moz-border-radius: 15px; +          border-radius: 15px; +} + +.pager a:hover { +  text-decoration: none; +  background-color: #f5f5f5; +} + +.pager .next a, +.pager .next span { +  float: right; +} + +.pager .previous a { +  float: left; +} + +.pager .disabled a, +.pager .disabled a:hover, +.pager .disabled span { +  color: #999999; +  cursor: default; +  background-color: #fff; +} + +.modal-open .modal .dropdown-menu { +  z-index: 2050; +} + +.modal-open .modal .dropdown.open { +  *z-index: 2050; +} + +.modal-open .modal .popover { +  z-index: 2060; +} + +.modal-open .modal .tooltip { +  z-index: 2080; +} + +.modal-backdrop { +  position: fixed; +  top: 0; +  right: 0; +  bottom: 0; +  left: 0; +  z-index: 1040; +  background-color: #000000; +} + +.modal-backdrop.fade { +  opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { +  opacity: 0.8; +  filter: alpha(opacity=80); +} + +.modal { +  position: fixed; +  top: 50%; +  left: 50%; +  z-index: 1050; +  width: 560px; +  margin: -250px 0 0 -280px; +  overflow: auto; +  background-color: #ffffff; +  border: 1px solid #999; +  border: 1px solid rgba(0, 0, 0, 0.3); +  *border: 1px solid #999; +  -webkit-border-radius: 6px; +     -moz-border-radius: 6px; +          border-radius: 6px; +  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); +     -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); +          box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); +  -webkit-background-clip: padding-box; +     -moz-background-clip: padding-box; +          background-clip: padding-box; +} + +.modal.fade { +  top: -25%; +  -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; +     -moz-transition: opacity 0.3s linear, top 0.3s ease-out; +       -o-transition: opacity 0.3s linear, top 0.3s ease-out; +          transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { +  top: 50%; +} + +.modal-header { +  padding: 9px 15px; +  border-bottom: 1px solid #eee; +} + +.modal-header .close { +  margin-top: 2px; +} + +.modal-header h3 { +  margin: 0; +  line-height: 30px; +} + +.modal-body { +  max-height: 400px; +  padding: 15px; +  overflow-y: auto; +} + +.modal-form { +  margin-bottom: 0; +} + +.modal-footer { +  padding: 14px 15px 15px; +  margin-bottom: 0; +  text-align: right; +  background-color: #f5f5f5; +  border-top: 1px solid #ddd; +  -webkit-border-radius: 0 0 6px 6px; +     -moz-border-radius: 0 0 6px 6px; +          border-radius: 0 0 6px 6px; +  *zoom: 1; +  -webkit-box-shadow: inset 0 1px 0 #ffffff; +     -moz-box-shadow: inset 0 1px 0 #ffffff; +          box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.modal-footer:after { +  clear: both; +} + +.modal-footer .btn + .btn { +  margin-bottom: 0; +  margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { +  margin-left: -1px; +} + +.tooltip { +  position: absolute; +  z-index: 1030; +  display: block; +  padding: 5px; +  font-size: 11px; +  opacity: 0; +  filter: alpha(opacity=0); +  visibility: visible; +} + +.tooltip.in { +  opacity: 0.8; +  filter: alpha(opacity=80); +} + +.tooltip.top { +  margin-top: -3px; +} + +.tooltip.right { +  margin-left: 3px; +} + +.tooltip.bottom { +  margin-top: 3px; +} + +.tooltip.left { +  margin-left: -3px; +} + +.tooltip-inner { +  max-width: 200px; +  padding: 3px 8px; +  color: #ffffff; +  text-align: center; +  text-decoration: none; +  background-color: #000000; +  -webkit-border-radius: 4px; +     -moz-border-radius: 4px; +          border-radius: 4px; +} + +.tooltip-arrow { +  position: absolute; +  width: 0; +  height: 0; +  border-color: transparent; +  border-style: solid; +} + +.tooltip.top .tooltip-arrow { +  bottom: 0; +  left: 50%; +  margin-left: -5px; +  border-top-color: #000000; +  border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { +  top: 50%; +  left: 0; +  margin-top: -5px; +  border-right-color: #000000; +  border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { +  top: 50%; +  right: 0; +  margin-top: -5px; +  border-left-color: #000000; +  border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { +  top: 0; +  left: 50%; +  margin-left: -5px; +  border-bottom-color: #000000; +  border-width: 0 5px 5px; +} + +.popover { +  position: absolute; +  top: 0; +  left: 0; +  z-index: 1010; +  display: none; +  width: 236px; +  padding: 1px; +  background-color: #ffffff; +  border: 1px solid #ccc; +  border: 1px solid rgba(0, 0, 0, 0.2); +  -webkit-border-radius: 6px; +     -moz-border-radius: 6px; +          border-radius: 6px; +  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +  -webkit-background-clip: padding-box; +     -moz-background-clip: padding; +          background-clip: padding-box; +} + +.popover.top { +  margin-bottom: 10px; +} + +.popover.right { +  margin-left: 10px; +} + +.popover.bottom { +  margin-top: 10px; +} + +.popover.left { +  margin-right: 10px; +} + +.popover-title { +  padding: 8px 14px; +  margin: 0; +  font-size: 14px; +  font-weight: normal; +  line-height: 18px; +  background-color: #f7f7f7; +  border-bottom: 1px solid #ebebeb; +  -webkit-border-radius: 5px 5px 0 0; +     -moz-border-radius: 5px 5px 0 0; +          border-radius: 5px 5px 0 0; +} + +.popover-content { +  padding: 9px 14px; +} + +.popover-content p, +.popover-content ul, +.popover-content ol { +  margin-bottom: 0; +} + +.popover .arrow, +.popover .arrow:after { +  position: absolute; +  display: inline-block; +  width: 0; +  height: 0; +  border-color: transparent; +  border-style: solid; +} + +.popover .arrow:after { +  z-index: -1; +  content: ""; +} + +.popover.top .arrow { +  bottom: -10px; +  left: 50%; +  margin-left: -10px; +  border-top-color: #ffffff; +  border-width: 10px 10px 0; +} + +.popover.top .arrow:after { +  bottom: -1px; +  left: -11px; +  border-top-color: rgba(0, 0, 0, 0.25); +  border-width: 11px 11px 0; +} + +.popover.right .arrow { +  top: 50%; +  left: -10px; +  margin-top: -10px; +  border-right-color: #ffffff; +  border-width: 10px 10px 10px 0; +} + +.popover.right .arrow:after { +  bottom: -11px; +  left: -1px; +  border-right-color: rgba(0, 0, 0, 0.25); +  border-width: 11px 11px 11px 0; +} + +.popover.bottom .arrow { +  top: -10px; +  left: 50%; +  margin-left: -10px; +  border-bottom-color: #ffffff; +  border-width: 0 10px 10px; +} + +.popover.bottom .arrow:after { +  top: -1px; +  left: -11px; +  border-bottom-color: rgba(0, 0, 0, 0.25); +  border-width: 0 11px 11px; +} + +.popover.left .arrow { +  top: 50%; +  right: -10px; +  margin-top: -10px; +  border-left-color: #ffffff; +  border-width: 10px 0 10px 10px; +} + +.popover.left .arrow:after { +  right: -1px; +  bottom: -11px; +  border-left-color: rgba(0, 0, 0, 0.25); +  border-width: 11px 0 11px 11px; +} + +.thumbnails { +  margin-left: -20px; +  list-style: none; +  *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { +  display: table; +  line-height: 0; +  content: ""; +} + +.thumbnails:after { +  clear: both; +} + +.row-fluid .thumbnails { +  margin-left: 0; +} + +.thumbnails > li { +  float: left; +  margin-bottom: 20px; +  margin-left: 20px; +} + +.thumbnail { +  display: block; +  padding: 4px; +  line-height: 20px; +  border: 1px solid #ddd; +  -webkit-border-radius: 4px; +     -moz-border-radius: 4px; +          border-radius: 4px; +  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); +     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); +          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); +  -webkit-transition: all 0.2s ease-in-out; +     -moz-transition: all 0.2s ease-in-out; +       -o-transition: all 0.2s ease-in-out; +          transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover { +  border-color: #0088cc; +  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +     -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +          box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { +  display: block; +  max-width: 100%; +  margin-right: auto; +  margin-left: auto; +} + +.thumbnail .caption { +  padding: 9px; +  color: #555555; +} + +.label, +.badge { +  font-size: 11.844px; +  font-weight: bold; +  line-height: 14px; +  color: #ffffff; +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +  white-space: nowrap; +  vertical-align: baseline; +  background-color: #999999; +} + +.label { +  padding: 1px 4px 2px; +  -webkit-border-radius: 3px; +     -moz-border-radius: 3px; +          border-radius: 3px; +} + +.badge { +  padding: 1px 9px 2px; +  -webkit-border-radius: 9px; +     -moz-border-radius: 9px; +          border-radius: 9px; +} + +a.label:hover, +a.badge:hover { +  color: #ffffff; +  text-decoration: none; +  cursor: pointer; +} + +.label-important, +.badge-important { +  background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { +  background-color: #953b39; +} + +.label-warning, +.badge-warning { +  background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { +  background-color: #c67605; +} + +.label-success, +.badge-success { +  background-color: #468847; +} + +.label-success[href], +.badge-success[href] { +  background-color: #356635; +} + +.label-info, +.badge-info { +  background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { +  background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { +  background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { +  background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { +  position: relative; +  top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { +  top: 0; +} + +@-webkit-keyframes progress-bar-stripes { +  from { +    background-position: 40px 0; +  } +  to { +    background-position: 0 0; +  } +} + +@-moz-keyframes progress-bar-stripes { +  from { +    background-position: 40px 0; +  } +  to { +    background-position: 0 0; +  } +} + +@-ms-keyframes progress-bar-stripes { +  from { +    background-position: 40px 0; +  } +  to { +    background-position: 0 0; +  } +} + +@-o-keyframes progress-bar-stripes { +  from { +    background-position: 0 0; +  } +  to { +    background-position: 40px 0; +  } +} + +@keyframes progress-bar-stripes { +  from { +    background-position: 40px 0; +  } +  to { +    background-position: 0 0; +  } +} + +.progress { +  height: 20px; +  margin-bottom: 20px; +  overflow: hidden; +  background-color: #f7f7f7; +  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); +  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); +  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); +  background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); +  background-repeat: repeat-x; +  -webkit-border-radius: 4px; +     -moz-border-radius: 4px; +          border-radius: 4px; +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); +  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { +  float: left; +  width: 0; +  height: 100%; +  font-size: 12px; +  color: #ffffff; +  text-align: center; +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +  background-color: #0e90d2; +  background-image: -moz-linear-gradient(top, #149bdf, #0480be); +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); +  background-image: -webkit-linear-gradient(top, #149bdf, #0480be); +  background-image: -o-linear-gradient(top, #149bdf, #0480be); +  background-image: linear-gradient(to bottom, #149bdf, #0480be); +  background-repeat: repeat-x; +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); +  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); +     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); +          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); +  -webkit-box-sizing: border-box; +     -moz-box-sizing: border-box; +          box-sizing: border-box; +  -webkit-transition: width 0.6s ease; +     -moz-transition: width 0.6s ease; +       -o-transition: width 0.6s ease; +          transition: width 0.6s ease; +} + +.progress .bar + .bar { +  -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +     -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +          box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { +  background-color: #149bdf; +  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); +  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  -webkit-background-size: 40px 40px; +     -moz-background-size: 40px 40px; +       -o-background-size: 40px 40px; +          background-size: 40px 40px; +} + +.progress.active .bar { +  -webkit-animation: progress-bar-stripes 2s linear infinite; +     -moz-animation: progress-bar-stripes 2s linear infinite; +      -ms-animation: progress-bar-stripes 2s linear infinite; +       -o-animation: progress-bar-stripes 2s linear infinite; +          animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { +  background-color: #dd514c; +  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); +  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); +  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); +  background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); +  background-repeat: repeat-x; +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { +  background-color: #ee5f5b; +  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); +  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { +  background-color: #5eb95e; +  background-image: -moz-linear-gradient(top, #62c462, #57a957); +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); +  background-image: -webkit-linear-gradient(top, #62c462, #57a957); +  background-image: -o-linear-gradient(top, #62c462, #57a957); +  background-image: linear-gradient(to bottom, #62c462, #57a957); +  background-repeat: repeat-x; +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { +  background-color: #62c462; +  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); +  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { +  background-color: #4bb1cf; +  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); +  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); +  background-image: -o-linear-gradient(top, #5bc0de, #339bb9); +  background-image: linear-gradient(to bottom, #5bc0de, #339bb9); +  background-repeat: repeat-x; +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { +  background-color: #5bc0de; +  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); +  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { +  background-color: #faa732; +  background-image: -moz-linear-gradient(top, #fbb450, #f89406); +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); +  background-image: -webkit-linear-gradient(top, #fbb450, #f89406); +  background-image: -o-linear-gradient(top, #fbb450, #f89406); +  background-image: linear-gradient(to bottom, #fbb450, #f89406); +  background-repeat: repeat-x; +  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { +  background-color: #fbb450; +  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); +  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { +  margin-bottom: 20px; +} + +.accordion-group { +  margin-bottom: 2px; +  border: 1px solid #e5e5e5; +  -webkit-border-radius: 4px; +     -moz-border-radius: 4px; +          border-radius: 4px; +} + +.accordion-heading { +  border-bottom: 0; +} + +.accordion-heading .accordion-toggle { +  display: block; +  padding: 8px 15px; +} + +.accordion-toggle { +  cursor: pointer; +} + +.accordion-inner { +  padding: 9px 15px; +  border-top: 1px solid #e5e5e5; +} + +.carousel { +  position: relative; +  margin-bottom: 20px; +  line-height: 1; +} + +.carousel-inner { +  position: relative; +  width: 100%; +  overflow: hidden; +} + +.carousel .item { +  position: relative; +  display: none; +  -webkit-transition: 0.6s ease-in-out left; +     -moz-transition: 0.6s ease-in-out left; +       -o-transition: 0.6s ease-in-out left; +          transition: 0.6s ease-in-out left; +} + +.carousel .item > img { +  display: block; +  line-height: 1; +} + +.carousel .active, +.carousel .next, +.carousel .prev { +  display: block; +} + +.carousel .active { +  left: 0; +} + +.carousel .next, +.carousel .prev { +  position: absolute; +  top: 0; +  width: 100%; +} + +.carousel .next { +  left: 100%; +} + +.carousel .prev { +  left: -100%; +} + +.carousel .next.left, +.carousel .prev.right { +  left: 0; +} + +.carousel .active.left { +  left: -100%; +} + +.carousel .active.right { +  left: 100%; +} + +.carousel-control { +  position: absolute; +  top: 40%; +  left: 15px; +  width: 40px; +  height: 40px; +  margin-top: -20px; +  font-size: 60px; +  font-weight: 100; +  line-height: 30px; +  color: #ffffff; +  text-align: center; +  background: #222222; +  border: 3px solid #ffffff; +  -webkit-border-radius: 23px; +     -moz-border-radius: 23px; +          border-radius: 23px; +  opacity: 0.5; +  filter: alpha(opacity=50); +} + +.carousel-control.right { +  right: 15px; +  left: auto; +} + +.carousel-control:hover { +  color: #ffffff; +  text-decoration: none; +  opacity: 0.9; +  filter: alpha(opacity=90); +} + +.carousel-caption { +  position: absolute; +  right: 0; +  bottom: 0; +  left: 0; +  padding: 15px; +  background: #333333; +  background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { +  line-height: 20px; +  color: #ffffff; +} + +.carousel-caption h4 { +  margin: 0 0 5px; +} + +.carousel-caption p { +  margin-bottom: 0; +} + +.hero-unit { +  padding: 60px; +  margin-bottom: 30px; +  background-color: #eeeeee; +  -webkit-border-radius: 6px; +     -moz-border-radius: 6px; +          border-radius: 6px; +} + +.hero-unit h1 { +  margin-bottom: 0; +  font-size: 60px; +  line-height: 1; +  letter-spacing: -1px; +  color: inherit; +} + +.hero-unit p { +  font-size: 18px; +  font-weight: 200; +  line-height: 30px; +  color: inherit; +} + +.pull-right { +  float: right; +} + +.pull-left { +  float: left; +} + +.hide { +  display: none; +} + +.show { +  display: block; +} + +.invisible { +  visibility: hidden; +} + +.affix { +  position: fixed; +} diff --git a/module/web/static/css/default/style.css b/module/web/static/css/default/style.css index 2a2878ec6..93ac91d89 100644 --- a/module/web/static/css/default/style.css +++ b/module/web/static/css/default/style.css @@ -28,18 +28,6 @@ h1, h2, h3 {  	color: #221D1D;
  }
 -h1 {
 -	font-size: 2em;
 -}
 -
 -h2 {
 -	font-size: 2.4em;
 -}
 -
 -h3 {
 -	font-size: 1.6em;
 -}
 -
  p, ul, ol {
  	margin-top: 0;
  	line-height: 180%;
 @@ -115,7 +103,7 @@ header div.center span.title {      font-family: SansationRegular, sans-serif;
      font-size: 40px;
      cursor: default;
 -    margin-top: 12px;
 +    margin-top: 24px;
  }
  header .logo {
      float: left;
 @@ -162,8 +150,8 @@ header .logo {      margin: 8px 5px 0;
  }
 -#globalprogress .ui-widget-header {
 -    background: #fee247;
 +#globalprogress .bar {
 +    background-color: #fee247;
  }
  #speedgraph {
 @@ -224,6 +212,7 @@ footer {      margin-top: -100px;
      position: relative;
      width: 100%;
 +    line-height: 16px;
      z-index: 10;
  }
 @@ -237,7 +226,7 @@ footer .logo {  }
  footer div.center {
 -    padding-top: 10px;
 +    padding-top: 8px;
      width: 900px;
      margin-left: auto;
      margin-right: auto;
 @@ -281,23 +270,9 @@ footer h2 {      padding-bottom: 6px;
  }
 -
  /*
 -   Modal Dialogs
 +   Modal Overlay
  */
 -.modal {
 -    top: 100px;
 -    left: 50%;
 -    position: fixed;
 -    width: 300px;
 -    height: 300px;
 -    margin-left: -150px;
 -    z-index: 100;
 -    background: #fcfcfc;
 -    padding: 10px 20px 20px;
 -    box-shadow: 0 0 30px rgba(0,0,0,0.2);
 -}
 -
  #modal-overlay {
      content: " ";
      height: 100%;
 @@ -315,8 +290,4 @@ footer h2 {      filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#007f7f7f', endColorstr='#e67f7f7f',GradientType=1 );
      z-index: 50;
      opacity: 0;
 -}
 -
 -.modal-closed {
 -    display: none;
  }
\ No newline at end of file diff --git a/module/web/static/css/jquery.qtip.min.css b/module/web/static/css/jquery.qtip.min.css deleted file mode 100644 index cb764835e..000000000 --- a/module/web/static/css/jquery.qtip.min.css +++ /dev/null @@ -1 +0,0 @@ -/*! qTip2 v2.0.0 | http://craigsworks.com/projects/qtip2/ | Licensed MIT, GPL */.ui-tooltip,.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;border-width:1px;border-style:solid}.ui-tooltip-fluid{display:block;visibility:hidden;position:static!important;float:left!important}.ui-tooltip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.ui-tooltip-titlebar{position:relative;min-height:14px;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.ui-tooltip-titlebar+.ui-tooltip-content{border-top-width:0!important}.ui-tooltip-titlebar .ui-state-default{position:absolute;right:4px;top:50%;margin-top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid}* html .ui-tooltip-titlebar .ui-state-default{top:16px}.ui-tooltip-titlebar .ui-icon,.ui-tooltip-icon .ui-icon{display:block;text-indent:-1000em;direction:ltr}.ui-tooltip-icon,.ui-tooltip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.ui-tooltip-icon .ui-icon{width:18px;height:14px;text-align:center;text-indent:0;font:normal bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em}.ui-tooltip-focus{}.ui-tooltip-hover{}.ui-tooltip-default{border-color:#F1D031;background-color:#FFFFA3;color:#555}.ui-tooltip-default .ui-tooltip-titlebar{background-color:#FFEF93}.ui-tooltip-default .ui-tooltip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.ui-tooltip-default .ui-tooltip-titlebar .ui-state-hover{border-color:#AAA;color:#111}/*! Light tooltip style */.ui-tooltip-light{background-color:#fff;border-color:#E2E2E2;color:#454545}.ui-tooltip-light .ui-tooltip-titlebar{background-color:#f1f1f1}/*! Dark tooltip style */.ui-tooltip-dark{background-color:#505050;border-color:#303030;color:#f3f3f3}.ui-tooltip-dark .ui-tooltip-titlebar{background-color:#404040}.ui-tooltip-dark .ui-tooltip-icon{border-color:#444}.ui-tooltip-dark .ui-tooltip-titlebar .ui-state-hover{border-color:#303030}/*! Cream tooltip style */.ui-tooltip-cream{background-color:#FBF7AA;border-color:#F9E98E;color:#A27D35}.ui-tooltip-cream .ui-tooltip-titlebar{background-color:#F0DE7D}.ui-tooltip-cream .ui-state-default .ui-tooltip-icon{background-position:-82px 0}/*! Red tooltip style */.ui-tooltip-red{background-color:#F78B83;border-color:#D95252;color:#912323}.ui-tooltip-red .ui-tooltip-titlebar{background-color:#F06D65}.ui-tooltip-red .ui-state-default .ui-tooltip-icon{background-position:-102px 0}.ui-tooltip-red .ui-tooltip-icon{border-color:#D95252}.ui-tooltip-red .ui-tooltip-titlebar .ui-state-hover{border-color:#D95252}/*! Green tooltip style */.ui-tooltip-green{background-color:#CAED9E;border-color:#90D93F;color:#3F6219}.ui-tooltip-green .ui-tooltip-titlebar{background-color:#B0DE78}.ui-tooltip-green .ui-state-default .ui-tooltip-icon{background-position:-42px 0}/*! Blue tooltip style */.ui-tooltip-blue{background-color:#E5F6FE;border-color:#ADD9ED;color:#5E99BD}.ui-tooltip-blue .ui-tooltip-titlebar{background-color:#D0E9F5}.ui-tooltip-blue .ui-state-default .ui-tooltip-icon{background-position:-2px 0}.ui-tooltip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.ui-tooltip-rounded,.ui-tooltip-tipsy,.ui-tooltip-bootstrap{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.ui-tooltip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border-width:0;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0, #4A4A4A),color-stop(100%,black));background-image:-webkit-linear-gradient(top, #4A4A4A 0,black 100%);background-image:-moz-linear-gradient(top, #4A4A4A 0,black 100%);background-image:-ms-linear-gradient(top, #4A4A4A 0,black 100%);background-image:-o-linear-gradient(top, #4A4A4A 0,black 100%)}.ui-tooltip-youtube .ui-tooltip-titlebar{background-color:#4A4A4A;background-color:rgba(0,0,0,0)}.ui-tooltip-youtube .ui-tooltip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);"}.ui-tooltip-youtube .ui-tooltip-icon{border-color:#222}.ui-tooltip-youtube .ui-tooltip-titlebar .ui-state-hover{border-color:#303030}.ui-tooltip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from( #717171),to( #232323));background-image:-moz-linear-gradient(top, #717171, #232323);background-image:-webkit-linear-gradient(top, #717171, #232323);background-image:-ms-linear-gradient(top, #717171, #232323);background-image:-o-linear-gradient(top, #717171, #232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.ui-tooltip-jtools .ui-tooltip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A)"}.ui-tooltip-jtools .ui-tooltip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323)"}.ui-tooltip-jtools .ui-tooltip-titlebar,.ui-tooltip-jtools .ui-tooltip-content{background:transparent;color:#fff;border:0 dashed transparent}.ui-tooltip-jtools .ui-tooltip-icon{border-color:#555}.ui-tooltip-jtools .ui-tooltip-titlebar .ui-state-hover{border-color:#333}.ui-tooltip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.ui-tooltip-cluetip .ui-tooltip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.ui-tooltip-cluetip .ui-tooltip-icon{border-color:#808064}.ui-tooltip-cluetip .ui-tooltip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.ui-tooltip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px black}.ui-tooltip-tipsy .ui-tooltip-titlebar{padding:6px 35px 0 10;background-color:transparent}.ui-tooltip-tipsy .ui-tooltip-content{padding:6px 10}.ui-tooltip-tipsy .ui-tooltip-icon{border-color:#222;text-shadow:none}.ui-tooltip-tipsy .ui-tooltip-titlebar .ui-state-hover{border-color:#303030}.ui-tooltip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.ui-tooltip-tipped .ui-tooltip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from( #3A79B8),to( #2E629D));background-image:-webkit-linear-gradient(top, #3A79B8, #2E629D);background-image:-moz-linear-gradient(top, #3A79B8, #2E629D);background-image:-ms-linear-gradient(top, #3A79B8, #2E629D);background-image:-o-linear-gradient(top, #3A79B8, #2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D)"}.ui-tooltip-tipped .ui-tooltip-icon{border:2px solid #285589;background:#285589}.ui-tooltip-tipped .ui-tooltip-icon .ui-icon{background-color:#FBFBFB;color:#555}.ui-tooltip-bootstrap{font-size:13px;line-height:18px;color:#333;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.ui-tooltip-bootstrap .ui-tooltip-titlebar{font-size:18px;line-height:22px;border-bottom:1px solid #ccc;background-color:transparent}.ui-tooltip-bootstrap .ui-tooltip-titlebar .ui-state-default{right:9px;top:49%;border-style:none}.ui-tooltip-bootstrap .ui-tooltip-icon{background:#fff}.ui-tooltip-bootstrap .ui-tooltip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.ui-tooltip-bootstrap .ui-tooltip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.ui-tooltip:not(.ie9haxors) div.ui-tooltip-content,.ui-tooltip:not(.ie9haxors) div.ui-tooltip-titlebar{filter:none;-ms-filter:none}.ui-tooltip .ui-tooltip-tip{margin:0 auto;overflow:hidden;z-index:10}.ui-tooltip .ui-tooltip-tip,.ui-tooltip .ui-tooltip-tip *{position:absolute;line-height:.1px!important;font-size:.1px!important;color:#123456;background:transparent;border:0 dashed transparent}.ui-tooltip .ui-tooltip-tip canvas{top:0;left:0}#qtip-overlay{position:fixed;left:-10000em;top:-10000em}#qtip-overlay.blurs{cursor:pointer}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#000;opacity:.7;filter:alpha(opacity=70);-ms-filter:"alpha(Opacity=70)"}
\ No newline at end of file diff --git a/module/web/static/img/glyphicons-halflings-white.png b/module/web/static/img/glyphicons-halflings-white.png Binary files differnew file mode 100644 index 000000000..3bf6484a2 --- /dev/null +++ b/module/web/static/img/glyphicons-halflings-white.png diff --git a/module/web/static/img/glyphicons-halflings.png b/module/web/static/img/glyphicons-halflings.png Binary files differnew file mode 100644 index 000000000..a99699932 --- /dev/null +++ b/module/web/static/img/glyphicons-halflings.png diff --git a/module/web/static/js/default.js b/module/web/static/js/default.js index d4330da81..c5f1e6054 100644 --- a/module/web/static/js/default.js +++ b/module/web/static/js/default.js @@ -10,12 +10,14 @@ require.config({          flot:"libs/jquery.flot.min",          transit:"libs/jquery.transit-0.1.3",          omniwindow: "libs/jquery.omniwindow", +        bootstrap: "libs/bootstrap-2.1.1",          underscore:"libs/lodash-0.5.2",          backbone:"libs/backbone-0.9.2",          // Require.js Plugins -        text:"plugins/text-2.0.3" +        text:"plugins/text-2.0.3", +        tpl: "../../templates"      }, @@ -33,7 +35,8 @@ require.config({  }); -define('default', ['jquery', 'backbone', 'routers/defaultRouter', 'views/headerView', 'views/packageTreeView', 'utils/animations'], +define('default', ['jquery', 'backbone', 'routers/defaultRouter', 'views/headerView', 'views/packageTreeView', +    'utils/animations', 'bootstrap'],      function ($, Backbone, DefaultRouter, HeaderView, TreeView) { diff --git a/module/web/static/js/libs/bootstrap-2.1.1.js b/module/web/static/js/libs/bootstrap-2.1.1.js new file mode 100644 index 000000000..f73fcb8e7 --- /dev/null +++ b/module/web/static/js/libs/bootstrap-2.1.1.js @@ -0,0 +1,2027 @@ +/* =================================================== + * bootstrap-transition.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + +  $(function () { + +    "use strict"; // jshint ;_; + + +    /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) +     * ======================================================= */ + +    $.support.transition = (function () { + +      var transitionEnd = (function () { + +        var el = document.createElement('bootstrap') +          , transEndEventNames = { +               'WebkitTransition' : 'webkitTransitionEnd' +            ,  'MozTransition'    : 'transitionend' +            ,  'OTransition'      : 'oTransitionEnd otransitionend' +            ,  'transition'       : 'transitionend' +            } +          , name + +        for (name in transEndEventNames){ +          if (el.style[name] !== undefined) { +            return transEndEventNames[name] +          } +        } + +      }()) + +      return transitionEnd && { +        end: transitionEnd +      } + +    })() + +  }) + +}(window.jQuery);/* ========================================================== + * bootstrap-alert.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + +  "use strict"; // jshint ;_; + + + /* ALERT CLASS DEFINITION +  * ====================== */ + +  var dismiss = '[data-dismiss="alert"]' +    , Alert = function (el) { +        $(el).on('click', dismiss, this.close) +      } + +  Alert.prototype.close = function (e) { +    var $this = $(this) +      , selector = $this.attr('data-target') +      , $parent + +    if (!selector) { +      selector = $this.attr('href') +      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 +    } + +    $parent = $(selector) + +    e && e.preventDefault() + +    $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + +    $parent.trigger(e = $.Event('close')) + +    if (e.isDefaultPrevented()) return + +    $parent.removeClass('in') + +    function removeElement() { +      $parent +        .trigger('closed') +        .remove() +    } + +    $.support.transition && $parent.hasClass('fade') ? +      $parent.on($.support.transition.end, removeElement) : +      removeElement() +  } + + + /* ALERT PLUGIN DEFINITION +  * ======================= */ + +  $.fn.alert = function (option) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('alert') +      if (!data) $this.data('alert', (data = new Alert(this))) +      if (typeof option == 'string') data[option].call($this) +    }) +  } + +  $.fn.alert.Constructor = Alert + + + /* ALERT DATA-API +  * ============== */ + +  $(function () { +    $('body').on('click.alert.data-api', dismiss, Alert.prototype.close) +  }) + +}(window.jQuery);/* ============================================================ + * bootstrap-button.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + +  "use strict"; // jshint ;_; + + + /* BUTTON PUBLIC CLASS DEFINITION +  * ============================== */ + +  var Button = function (element, options) { +    this.$element = $(element) +    this.options = $.extend({}, $.fn.button.defaults, options) +  } + +  Button.prototype.setState = function (state) { +    var d = 'disabled' +      , $el = this.$element +      , data = $el.data() +      , val = $el.is('input') ? 'val' : 'html' + +    state = state + 'Text' +    data.resetText || $el.data('resetText', $el[val]()) + +    $el[val](data[state] || this.options[state]) + +    // push to event loop to allow forms to submit +    setTimeout(function () { +      state == 'loadingText' ? +        $el.addClass(d).attr(d, d) : +        $el.removeClass(d).removeAttr(d) +    }, 0) +  } + +  Button.prototype.toggle = function () { +    var $parent = this.$element.closest('[data-toggle="buttons-radio"]') + +    $parent && $parent +      .find('.active') +      .removeClass('active') + +    this.$element.toggleClass('active') +  } + + + /* BUTTON PLUGIN DEFINITION +  * ======================== */ + +  $.fn.button = function (option) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('button') +        , options = typeof option == 'object' && option +      if (!data) $this.data('button', (data = new Button(this, options))) +      if (option == 'toggle') data.toggle() +      else if (option) data.setState(option) +    }) +  } + +  $.fn.button.defaults = { +    loadingText: 'loading...' +  } + +  $.fn.button.Constructor = Button + + + /* BUTTON DATA-API +  * =============== */ + +  $(function () { +    $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) { +      var $btn = $(e.target) +      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') +      $btn.button('toggle') +    }) +  }) + +}(window.jQuery);/* ========================================================== + * bootstrap-carousel.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + +  "use strict"; // jshint ;_; + + + /* CAROUSEL CLASS DEFINITION +  * ========================= */ + +  var Carousel = function (element, options) { +    this.$element = $(element) +    this.options = options +    this.options.slide && this.slide(this.options.slide) +    this.options.pause == 'hover' && this.$element +      .on('mouseenter', $.proxy(this.pause, this)) +      .on('mouseleave', $.proxy(this.cycle, this)) +  } + +  Carousel.prototype = { + +    cycle: function (e) { +      if (!e) this.paused = false +      this.options.interval +        && !this.paused +        && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) +      return this +    } + +  , to: function (pos) { +      var $active = this.$element.find('.item.active') +        , children = $active.parent().children() +        , activePos = children.index($active) +        , that = this + +      if (pos > (children.length - 1) || pos < 0) return + +      if (this.sliding) { +        return this.$element.one('slid', function () { +          that.to(pos) +        }) +      } + +      if (activePos == pos) { +        return this.pause().cycle() +      } + +      return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])) +    } + +  , pause: function (e) { +      if (!e) this.paused = true +      if (this.$element.find('.next, .prev').length && $.support.transition.end) { +        this.$element.trigger($.support.transition.end) +        this.cycle() +      } +      clearInterval(this.interval) +      this.interval = null +      return this +    } + +  , next: function () { +      if (this.sliding) return +      return this.slide('next') +    } + +  , prev: function () { +      if (this.sliding) return +      return this.slide('prev') +    } + +  , slide: function (type, next) { +      var $active = this.$element.find('.item.active') +        , $next = next || $active[type]() +        , isCycling = this.interval +        , direction = type == 'next' ? 'left' : 'right' +        , fallback  = type == 'next' ? 'first' : 'last' +        , that = this +        , e = $.Event('slide', { +            relatedTarget: $next[0] +          }) + +      this.sliding = true + +      isCycling && this.pause() + +      $next = $next.length ? $next : this.$element.find('.item')[fallback]() + +      if ($next.hasClass('active')) return + +      if ($.support.transition && this.$element.hasClass('slide')) { +        this.$element.trigger(e) +        if (e.isDefaultPrevented()) return +        $next.addClass(type) +        $next[0].offsetWidth // force reflow +        $active.addClass(direction) +        $next.addClass(direction) +        this.$element.one($.support.transition.end, function () { +          $next.removeClass([type, direction].join(' ')).addClass('active') +          $active.removeClass(['active', direction].join(' ')) +          that.sliding = false +          setTimeout(function () { that.$element.trigger('slid') }, 0) +        }) +      } else { +        this.$element.trigger(e) +        if (e.isDefaultPrevented()) return +        $active.removeClass('active') +        $next.addClass('active') +        this.sliding = false +        this.$element.trigger('slid') +      } + +      isCycling && this.cycle() + +      return this +    } + +  } + + + /* CAROUSEL PLUGIN DEFINITION +  * ========================== */ + +  $.fn.carousel = function (option) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('carousel') +        , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) +        , action = typeof option == 'string' ? option : options.slide +      if (!data) $this.data('carousel', (data = new Carousel(this, options))) +      if (typeof option == 'number') data.to(option) +      else if (action) data[action]() +      else if (options.interval) data.cycle() +    }) +  } + +  $.fn.carousel.defaults = { +    interval: 5000 +  , pause: 'hover' +  } + +  $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL DATA-API +  * ================= */ + +  $(function () { +    $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) { +      var $this = $(this), href +        , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 +        , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data()) +      $target.carousel(options) +      e.preventDefault() +    }) +  }) + +}(window.jQuery);/* ============================================================= + * bootstrap-collapse.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + +  "use strict"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION +  * ================================ */ + +  var Collapse = function (element, options) { +    this.$element = $(element) +    this.options = $.extend({}, $.fn.collapse.defaults, options) + +    if (this.options.parent) { +      this.$parent = $(this.options.parent) +    } + +    this.options.toggle && this.toggle() +  } + +  Collapse.prototype = { + +    constructor: Collapse + +  , dimension: function () { +      var hasWidth = this.$element.hasClass('width') +      return hasWidth ? 'width' : 'height' +    } + +  , show: function () { +      var dimension +        , scroll +        , actives +        , hasData + +      if (this.transitioning) return + +      dimension = this.dimension() +      scroll = $.camelCase(['scroll', dimension].join('-')) +      actives = this.$parent && this.$parent.find('> .accordion-group > .in') + +      if (actives && actives.length) { +        hasData = actives.data('collapse') +        if (hasData && hasData.transitioning) return +        actives.collapse('hide') +        hasData || actives.data('collapse', null) +      } + +      this.$element[dimension](0) +      this.transition('addClass', $.Event('show'), 'shown') +      $.support.transition && this.$element[dimension](this.$element[0][scroll]) +    } + +  , hide: function () { +      var dimension +      if (this.transitioning) return +      dimension = this.dimension() +      this.reset(this.$element[dimension]()) +      this.transition('removeClass', $.Event('hide'), 'hidden') +      this.$element[dimension](0) +    } + +  , reset: function (size) { +      var dimension = this.dimension() + +      this.$element +        .removeClass('collapse') +        [dimension](size || 'auto') +        [0].offsetWidth + +      this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + +      return this +    } + +  , transition: function (method, startEvent, completeEvent) { +      var that = this +        , complete = function () { +            if (startEvent.type == 'show') that.reset() +            that.transitioning = 0 +            that.$element.trigger(completeEvent) +          } + +      this.$element.trigger(startEvent) + +      if (startEvent.isDefaultPrevented()) return + +      this.transitioning = 1 + +      this.$element[method]('in') + +      $.support.transition && this.$element.hasClass('collapse') ? +        this.$element.one($.support.transition.end, complete) : +        complete() +    } + +  , toggle: function () { +      this[this.$element.hasClass('in') ? 'hide' : 'show']() +    } + +  } + + + /* COLLAPSIBLE PLUGIN DEFINITION +  * ============================== */ + +  $.fn.collapse = function (option) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('collapse') +        , options = typeof option == 'object' && option +      if (!data) $this.data('collapse', (data = new Collapse(this, options))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.collapse.defaults = { +    toggle: true +  } + +  $.fn.collapse.Constructor = Collapse + + + /* COLLAPSIBLE DATA-API +  * ==================== */ + +  $(function () { +    $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { +      var $this = $(this), href +        , target = $this.attr('data-target') +          || e.preventDefault() +          || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 +        , option = $(target).data('collapse') ? 'toggle' : $this.data() +      $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') +      $(target).collapse(option) +    }) +  }) + +}(window.jQuery);/* ============================================================ + * bootstrap-dropdown.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + +  "use strict"; // jshint ;_; + + + /* DROPDOWN CLASS DEFINITION +  * ========================= */ + +  var toggle = '[data-toggle=dropdown]' +    , Dropdown = function (element) { +        var $el = $(element).on('click.dropdown.data-api', this.toggle) +        $('html').on('click.dropdown.data-api', function () { +          $el.parent().removeClass('open') +        }) +      } + +  Dropdown.prototype = { + +    constructor: Dropdown + +  , toggle: function (e) { +      var $this = $(this) +        , $parent +        , isActive + +      if ($this.is('.disabled, :disabled')) return + +      $parent = getParent($this) + +      isActive = $parent.hasClass('open') + +      clearMenus() + +      if (!isActive) { +        $parent.toggleClass('open') +        $this.focus() +      } + +      return false +    } + +  , keydown: function (e) { +      var $this +        , $items +        , $active +        , $parent +        , isActive +        , index + +      if (!/(38|40|27)/.test(e.keyCode)) return + +      $this = $(this) + +      e.preventDefault() +      e.stopPropagation() + +      if ($this.is('.disabled, :disabled')) return + +      $parent = getParent($this) + +      isActive = $parent.hasClass('open') + +      if (!isActive || (isActive && e.keyCode == 27)) return $this.click() + +      $items = $('[role=menu] li:not(.divider) a', $parent) + +      if (!$items.length) return + +      index = $items.index($items.filter(':focus')) + +      if (e.keyCode == 38 && index > 0) index--                                        // up +      if (e.keyCode == 40 && index < $items.length - 1) index++                        // down +      if (!~index) index = 0 + +      $items +        .eq(index) +        .focus() +    } + +  } + +  function clearMenus() { +    getParent($(toggle)) +      .removeClass('open') +  } + +  function getParent($this) { +    var selector = $this.attr('data-target') +      , $parent + +    if (!selector) { +      selector = $this.attr('href') +      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 +    } + +    $parent = $(selector) +    $parent.length || ($parent = $this.parent()) + +    return $parent +  } + + +  /* DROPDOWN PLUGIN DEFINITION +   * ========================== */ + +  $.fn.dropdown = function (option) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('dropdown') +      if (!data) $this.data('dropdown', (data = new Dropdown(this))) +      if (typeof option == 'string') data[option].call($this) +    }) +  } + +  $.fn.dropdown.Constructor = Dropdown + + +  /* APPLY TO STANDARD DROPDOWN ELEMENTS +   * =================================== */ + +  $(function () { +    $('html') +      .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus) +    $('body') +      .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) +      .on('click.dropdown.data-api touchstart.dropdown.data-api'  , toggle, Dropdown.prototype.toggle) +      .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) +  }) + +}(window.jQuery);/* ========================================================= + * bootstrap-modal.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function ($) { + +  "use strict"; // jshint ;_; + + + /* MODAL CLASS DEFINITION +  * ====================== */ + +  var Modal = function (element, options) { +    this.options = options +    this.$element = $(element) +      .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) +    this.options.remote && this.$element.find('.modal-body').load(this.options.remote) +  } + +  Modal.prototype = { + +      constructor: Modal + +    , toggle: function () { +        return this[!this.isShown ? 'show' : 'hide']() +      } + +    , show: function () { +        var that = this +          , e = $.Event('show') + +        this.$element.trigger(e) + +        if (this.isShown || e.isDefaultPrevented()) return + +        $('body').addClass('modal-open') + +        this.isShown = true + +        this.escape() + +        this.backdrop(function () { +          var transition = $.support.transition && that.$element.hasClass('fade') + +          if (!that.$element.parent().length) { +            that.$element.appendTo(document.body) //don't move modals dom position +          } + +          that.$element +            .show() + +          if (transition) { +            that.$element[0].offsetWidth // force reflow +          } + +          that.$element +            .addClass('in') +            .attr('aria-hidden', false) +            .focus() + +          that.enforceFocus() + +          transition ? +            that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) : +            that.$element.trigger('shown') + +        }) +      } + +    , hide: function (e) { +        e && e.preventDefault() + +        var that = this + +        e = $.Event('hide') + +        this.$element.trigger(e) + +        if (!this.isShown || e.isDefaultPrevented()) return + +        this.isShown = false + +        $('body').removeClass('modal-open') + +        this.escape() + +        $(document).off('focusin.modal') + +        this.$element +          .removeClass('in') +          .attr('aria-hidden', true) + +        $.support.transition && this.$element.hasClass('fade') ? +          this.hideWithTransition() : +          this.hideModal() +      } + +    , enforceFocus: function () { +        var that = this +        $(document).on('focusin.modal', function (e) { +          if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { +            that.$element.focus() +          } +        }) +      } + +    , escape: function () { +        var that = this +        if (this.isShown && this.options.keyboard) { +          this.$element.on('keyup.dismiss.modal', function ( e ) { +            e.which == 27 && that.hide() +          }) +        } else if (!this.isShown) { +          this.$element.off('keyup.dismiss.modal') +        } +      } + +    , hideWithTransition: function () { +        var that = this +          , timeout = setTimeout(function () { +              that.$element.off($.support.transition.end) +              that.hideModal() +            }, 500) + +        this.$element.one($.support.transition.end, function () { +          clearTimeout(timeout) +          that.hideModal() +        }) +      } + +    , hideModal: function (that) { +        this.$element +          .hide() +          .trigger('hidden') + +        this.backdrop() +      } + +    , removeBackdrop: function () { +        this.$backdrop.remove() +        this.$backdrop = null +      } + +    , backdrop: function (callback) { +        var that = this +          , animate = this.$element.hasClass('fade') ? 'fade' : '' + +        if (this.isShown && this.options.backdrop) { +          var doAnimate = $.support.transition && animate + +          this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') +            .appendTo(document.body) + +          if (this.options.backdrop != 'static') { +            this.$backdrop.click($.proxy(this.hide, this)) +          } + +          if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + +          this.$backdrop.addClass('in') + +          doAnimate ? +            this.$backdrop.one($.support.transition.end, callback) : +            callback() + +        } else if (!this.isShown && this.$backdrop) { +          this.$backdrop.removeClass('in') + +          $.support.transition && this.$element.hasClass('fade')? +            this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) : +            this.removeBackdrop() + +        } else if (callback) { +          callback() +        } +      } +  } + + + /* MODAL PLUGIN DEFINITION +  * ======================= */ + +  $.fn.modal = function (option) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('modal') +        , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option) +      if (!data) $this.data('modal', (data = new Modal(this, options))) +      if (typeof option == 'string') data[option]() +      else if (options.show) data.show() +    }) +  } + +  $.fn.modal.defaults = { +      backdrop: true +    , keyboard: true +    , show: true +  } + +  $.fn.modal.Constructor = Modal + + + /* MODAL DATA-API +  * ============== */ + +  $(function () { +    $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) { +      var $this = $(this) +        , href = $this.attr('href') +        , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7 +        , option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + +      e.preventDefault() + +      $target +        .modal(option) +        .one('hide', function () { +          $this.focus() +        }) +    }) +  }) + +}(window.jQuery);/* =========================================================== + * bootstrap-tooltip.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#tooltips + * Inspired by the original jQuery.tipsy by Jason Frame + * =========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + +  "use strict"; // jshint ;_; + + + /* TOOLTIP PUBLIC CLASS DEFINITION +  * =============================== */ + +  var Tooltip = function (element, options) { +    this.init('tooltip', element, options) +  } + +  Tooltip.prototype = { + +    constructor: Tooltip + +  , init: function (type, element, options) { +      var eventIn +        , eventOut + +      this.type = type +      this.$element = $(element) +      this.options = this.getOptions(options) +      this.enabled = true + +      if (this.options.trigger == 'click') { +        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) +      } else if (this.options.trigger != 'manual') { +        eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus' +        eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur' +        this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) +        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) +      } + +      this.options.selector ? +        (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : +        this.fixTitle() +    } + +  , getOptions: function (options) { +      options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data()) + +      if (options.delay && typeof options.delay == 'number') { +        options.delay = { +          show: options.delay +        , hide: options.delay +        } +      } + +      return options +    } + +  , enter: function (e) { +      var self = $(e.currentTarget)[this.type](this._options).data(this.type) + +      if (!self.options.delay || !self.options.delay.show) return self.show() + +      clearTimeout(this.timeout) +      self.hoverState = 'in' +      this.timeout = setTimeout(function() { +        if (self.hoverState == 'in') self.show() +      }, self.options.delay.show) +    } + +  , leave: function (e) { +      var self = $(e.currentTarget)[this.type](this._options).data(this.type) + +      if (this.timeout) clearTimeout(this.timeout) +      if (!self.options.delay || !self.options.delay.hide) return self.hide() + +      self.hoverState = 'out' +      this.timeout = setTimeout(function() { +        if (self.hoverState == 'out') self.hide() +      }, self.options.delay.hide) +    } + +  , show: function () { +      var $tip +        , inside +        , pos +        , actualWidth +        , actualHeight +        , placement +        , tp + +      if (this.hasContent() && this.enabled) { +        $tip = this.tip() +        this.setContent() + +        if (this.options.animation) { +          $tip.addClass('fade') +        } + +        placement = typeof this.options.placement == 'function' ? +          this.options.placement.call(this, $tip[0], this.$element[0]) : +          this.options.placement + +        inside = /in/.test(placement) + +        $tip +          .remove() +          .css({ top: 0, left: 0, display: 'block' }) +          .appendTo(inside ? this.$element : document.body) + +        pos = this.getPosition(inside) + +        actualWidth = $tip[0].offsetWidth +        actualHeight = $tip[0].offsetHeight + +        switch (inside ? placement.split(' ')[1] : placement) { +          case 'bottom': +            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2} +            break +          case 'top': +            tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2} +            break +          case 'left': +            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth} +            break +          case 'right': +            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width} +            break +        } + +        $tip +          .css(tp) +          .addClass(placement) +          .addClass('in') +      } +    } + +  , setContent: function () { +      var $tip = this.tip() +        , title = this.getTitle() + +      $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) +      $tip.removeClass('fade in top bottom left right') +    } + +  , hide: function () { +      var that = this +        , $tip = this.tip() + +      $tip.removeClass('in') + +      function removeWithAnimation() { +        var timeout = setTimeout(function () { +          $tip.off($.support.transition.end).remove() +        }, 500) + +        $tip.one($.support.transition.end, function () { +          clearTimeout(timeout) +          $tip.remove() +        }) +      } + +      $.support.transition && this.$tip.hasClass('fade') ? +        removeWithAnimation() : +        $tip.remove() + +      return this +    } + +  , fixTitle: function () { +      var $e = this.$element +      if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') { +        $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title') +      } +    } + +  , hasContent: function () { +      return this.getTitle() +    } + +  , getPosition: function (inside) { +      return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), { +        width: this.$element[0].offsetWidth +      , height: this.$element[0].offsetHeight +      }) +    } + +  , getTitle: function () { +      var title +        , $e = this.$element +        , o = this.options + +      title = $e.attr('data-original-title') +        || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title) + +      return title +    } + +  , tip: function () { +      return this.$tip = this.$tip || $(this.options.template) +    } + +  , validate: function () { +      if (!this.$element[0].parentNode) { +        this.hide() +        this.$element = null +        this.options = null +      } +    } + +  , enable: function () { +      this.enabled = true +    } + +  , disable: function () { +      this.enabled = false +    } + +  , toggleEnabled: function () { +      this.enabled = !this.enabled +    } + +  , toggle: function () { +      this[this.tip().hasClass('in') ? 'hide' : 'show']() +    } + +  , destroy: function () { +      this.hide().$element.off('.' + this.type).removeData(this.type) +    } + +  } + + + /* TOOLTIP PLUGIN DEFINITION +  * ========================= */ + +  $.fn.tooltip = function ( option ) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('tooltip') +        , options = typeof option == 'object' && option +      if (!data) $this.data('tooltip', (data = new Tooltip(this, options))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.tooltip.Constructor = Tooltip + +  $.fn.tooltip.defaults = { +    animation: true +  , placement: 'top' +  , selector: false +  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' +  , trigger: 'hover' +  , title: '' +  , delay: 0 +  , html: true +  } + +}(window.jQuery); +/* =========================================================== + * bootstrap-popover.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#popovers + * =========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =========================================================== */ + + +!function ($) { + +  "use strict"; // jshint ;_; + + + /* POPOVER PUBLIC CLASS DEFINITION +  * =============================== */ + +  var Popover = function (element, options) { +    this.init('popover', element, options) +  } + + +  /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js +     ========================================== */ + +  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, { + +    constructor: Popover + +  , setContent: function () { +      var $tip = this.tip() +        , title = this.getTitle() +        , content = this.getContent() + +      $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) +      $tip.find('.popover-content > *')[this.options.html ? 'html' : 'text'](content) + +      $tip.removeClass('fade top bottom left right in') +    } + +  , hasContent: function () { +      return this.getTitle() || this.getContent() +    } + +  , getContent: function () { +      var content +        , $e = this.$element +        , o = this.options + +      content = $e.attr('data-content') +        || (typeof o.content == 'function' ? o.content.call($e[0]) :  o.content) + +      return content +    } + +  , tip: function () { +      if (!this.$tip) { +        this.$tip = $(this.options.template) +      } +      return this.$tip +    } + +  , destroy: function () { +      this.hide().$element.off('.' + this.type).removeData(this.type) +    } + +  }) + + + /* POPOVER PLUGIN DEFINITION +  * ======================= */ + +  $.fn.popover = function (option) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('popover') +        , options = typeof option == 'object' && option +      if (!data) $this.data('popover', (data = new Popover(this, options))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.popover.Constructor = Popover + +  $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, { +    placement: 'right' +  , trigger: 'click' +  , content: '' +  , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>' +  }) + +}(window.jQuery);/* ============================================================= + * bootstrap-scrollspy.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#scrollspy + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================== */ + + +!function ($) { + +  "use strict"; // jshint ;_; + + + /* SCROLLSPY CLASS DEFINITION +  * ========================== */ + +  function ScrollSpy(element, options) { +    var process = $.proxy(this.process, this) +      , $element = $(element).is('body') ? $(window) : $(element) +      , href +    this.options = $.extend({}, $.fn.scrollspy.defaults, options) +    this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process) +    this.selector = (this.options.target +      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 +      || '') + ' .nav li > a' +    this.$body = $('body') +    this.refresh() +    this.process() +  } + +  ScrollSpy.prototype = { + +      constructor: ScrollSpy + +    , refresh: function () { +        var self = this +          , $targets + +        this.offsets = $([]) +        this.targets = $([]) + +        $targets = this.$body +          .find(this.selector) +          .map(function () { +            var $el = $(this) +              , href = $el.data('target') || $el.attr('href') +              , $href = /^#\w/.test(href) && $(href) +            return ( $href +              && $href.length +              && [[ $href.position().top, href ]] ) || null +          }) +          .sort(function (a, b) { return a[0] - b[0] }) +          .each(function () { +            self.offsets.push(this[0]) +            self.targets.push(this[1]) +          }) +      } + +    , process: function () { +        var scrollTop = this.$scrollElement.scrollTop() + this.options.offset +          , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight +          , maxScroll = scrollHeight - this.$scrollElement.height() +          , offsets = this.offsets +          , targets = this.targets +          , activeTarget = this.activeTarget +          , i + +        if (scrollTop >= maxScroll) { +          return activeTarget != (i = targets.last()[0]) +            && this.activate ( i ) +        } + +        for (i = offsets.length; i--;) { +          activeTarget != targets[i] +            && scrollTop >= offsets[i] +            && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) +            && this.activate( targets[i] ) +        } +      } + +    , activate: function (target) { +        var active +          , selector + +        this.activeTarget = target + +        $(this.selector) +          .parent('.active') +          .removeClass('active') + +        selector = this.selector +          + '[data-target="' + target + '"],' +          + this.selector + '[href="' + target + '"]' + +        active = $(selector) +          .parent('li') +          .addClass('active') + +        if (active.parent('.dropdown-menu').length)  { +          active = active.closest('li.dropdown').addClass('active') +        } + +        active.trigger('activate') +      } + +  } + + + /* SCROLLSPY PLUGIN DEFINITION +  * =========================== */ + +  $.fn.scrollspy = function (option) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('scrollspy') +        , options = typeof option == 'object' && option +      if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.scrollspy.Constructor = ScrollSpy + +  $.fn.scrollspy.defaults = { +    offset: 10 +  } + + + /* SCROLLSPY DATA-API +  * ================== */ + +  $(window).on('load', function () { +    $('[data-spy="scroll"]').each(function () { +      var $spy = $(this) +      $spy.scrollspy($spy.data()) +    }) +  }) + +}(window.jQuery);/* ======================================================== + * bootstrap-tab.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#tabs + * ======================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================== */ + + +!function ($) { + +  "use strict"; // jshint ;_; + + + /* TAB CLASS DEFINITION +  * ==================== */ + +  var Tab = function (element) { +    this.element = $(element) +  } + +  Tab.prototype = { + +    constructor: Tab + +  , show: function () { +      var $this = this.element +        , $ul = $this.closest('ul:not(.dropdown-menu)') +        , selector = $this.attr('data-target') +        , previous +        , $target +        , e + +      if (!selector) { +        selector = $this.attr('href') +        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 +      } + +      if ( $this.parent('li').hasClass('active') ) return + +      previous = $ul.find('.active a').last()[0] + +      e = $.Event('show', { +        relatedTarget: previous +      }) + +      $this.trigger(e) + +      if (e.isDefaultPrevented()) return + +      $target = $(selector) + +      this.activate($this.parent('li'), $ul) +      this.activate($target, $target.parent(), function () { +        $this.trigger({ +          type: 'shown' +        , relatedTarget: previous +        }) +      }) +    } + +  , activate: function ( element, container, callback) { +      var $active = container.find('> .active') +        , transition = callback +            && $.support.transition +            && $active.hasClass('fade') + +      function next() { +        $active +          .removeClass('active') +          .find('> .dropdown-menu > .active') +          .removeClass('active') + +        element.addClass('active') + +        if (transition) { +          element[0].offsetWidth // reflow for transition +          element.addClass('in') +        } else { +          element.removeClass('fade') +        } + +        if ( element.parent('.dropdown-menu') ) { +          element.closest('li.dropdown').addClass('active') +        } + +        callback && callback() +      } + +      transition ? +        $active.one($.support.transition.end, next) : +        next() + +      $active.removeClass('in') +    } +  } + + + /* TAB PLUGIN DEFINITION +  * ===================== */ + +  $.fn.tab = function ( option ) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('tab') +      if (!data) $this.data('tab', (data = new Tab(this))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.tab.Constructor = Tab + + + /* TAB DATA-API +  * ============ */ + +  $(function () { +    $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { +      e.preventDefault() +      $(this).tab('show') +    }) +  }) + +}(window.jQuery);/* ============================================================= + * bootstrap-typeahead.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#typeahead + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function($){ + +  "use strict"; // jshint ;_; + + + /* TYPEAHEAD PUBLIC CLASS DEFINITION +  * ================================= */ + +  var Typeahead = function (element, options) { +    this.$element = $(element) +    this.options = $.extend({}, $.fn.typeahead.defaults, options) +    this.matcher = this.options.matcher || this.matcher +    this.sorter = this.options.sorter || this.sorter +    this.highlighter = this.options.highlighter || this.highlighter +    this.updater = this.options.updater || this.updater +    this.$menu = $(this.options.menu).appendTo('body') +    this.source = this.options.source +    this.shown = false +    this.listen() +  } + +  Typeahead.prototype = { + +    constructor: Typeahead + +  , select: function () { +      var val = this.$menu.find('.active').attr('data-value') +      this.$element +        .val(this.updater(val)) +        .change() +      return this.hide() +    } + +  , updater: function (item) { +      return item +    } + +  , show: function () { +      var pos = $.extend({}, this.$element.offset(), { +        height: this.$element[0].offsetHeight +      }) + +      this.$menu.css({ +        top: pos.top + pos.height +      , left: pos.left +      }) + +      this.$menu.show() +      this.shown = true +      return this +    } + +  , hide: function () { +      this.$menu.hide() +      this.shown = false +      return this +    } + +  , lookup: function (event) { +      var items + +      this.query = this.$element.val() + +      if (!this.query || this.query.length < this.options.minLength) { +        return this.shown ? this.hide() : this +      } + +      items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source + +      return items ? this.process(items) : this +    } + +  , process: function (items) { +      var that = this + +      items = $.grep(items, function (item) { +        return that.matcher(item) +      }) + +      items = this.sorter(items) + +      if (!items.length) { +        return this.shown ? this.hide() : this +      } + +      return this.render(items.slice(0, this.options.items)).show() +    } + +  , matcher: function (item) { +      return ~item.toLowerCase().indexOf(this.query.toLowerCase()) +    } + +  , sorter: function (items) { +      var beginswith = [] +        , caseSensitive = [] +        , caseInsensitive = [] +        , item + +      while (item = items.shift()) { +        if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item) +        else if (~item.indexOf(this.query)) caseSensitive.push(item) +        else caseInsensitive.push(item) +      } + +      return beginswith.concat(caseSensitive, caseInsensitive) +    } + +  , highlighter: function (item) { +      var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&') +      return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) { +        return '<strong>' + match + '</strong>' +      }) +    } + +  , render: function (items) { +      var that = this + +      items = $(items).map(function (i, item) { +        i = $(that.options.item).attr('data-value', item) +        i.find('a').html(that.highlighter(item)) +        return i[0] +      }) + +      items.first().addClass('active') +      this.$menu.html(items) +      return this +    } + +  , next: function (event) { +      var active = this.$menu.find('.active').removeClass('active') +        , next = active.next() + +      if (!next.length) { +        next = $(this.$menu.find('li')[0]) +      } + +      next.addClass('active') +    } + +  , prev: function (event) { +      var active = this.$menu.find('.active').removeClass('active') +        , prev = active.prev() + +      if (!prev.length) { +        prev = this.$menu.find('li').last() +      } + +      prev.addClass('active') +    } + +  , listen: function () { +      this.$element +        .on('blur',     $.proxy(this.blur, this)) +        .on('keypress', $.proxy(this.keypress, this)) +        .on('keyup',    $.proxy(this.keyup, this)) + +      if ($.browser.chrome || $.browser.webkit || $.browser.msie) { +        this.$element.on('keydown', $.proxy(this.keydown, this)) +      } + +      this.$menu +        .on('click', $.proxy(this.click, this)) +        .on('mouseenter', 'li', $.proxy(this.mouseenter, this)) +    } + +  , move: function (e) { +      if (!this.shown) return + +      switch(e.keyCode) { +        case 9: // tab +        case 13: // enter +        case 27: // escape +          e.preventDefault() +          break + +        case 38: // up arrow +          e.preventDefault() +          this.prev() +          break + +        case 40: // down arrow +          e.preventDefault() +          this.next() +          break +      } + +      e.stopPropagation() +    } + +  , keydown: function (e) { +      this.suppressKeyPressRepeat = !~$.inArray(e.keyCode, [40,38,9,13,27]) +      this.move(e) +    } + +  , keypress: function (e) { +      if (this.suppressKeyPressRepeat) return +      this.move(e) +    } + +  , keyup: function (e) { +      switch(e.keyCode) { +        case 40: // down arrow +        case 38: // up arrow +          break + +        case 9: // tab +        case 13: // enter +          if (!this.shown) return +          this.select() +          break + +        case 27: // escape +          if (!this.shown) return +          this.hide() +          break + +        default: +          this.lookup() +      } + +      e.stopPropagation() +      e.preventDefault() +  } + +  , blur: function (e) { +      var that = this +      setTimeout(function () { that.hide() }, 150) +    } + +  , click: function (e) { +      e.stopPropagation() +      e.preventDefault() +      this.select() +    } + +  , mouseenter: function (e) { +      this.$menu.find('.active').removeClass('active') +      $(e.currentTarget).addClass('active') +    } + +  } + + +  /* TYPEAHEAD PLUGIN DEFINITION +   * =========================== */ + +  $.fn.typeahead = function (option) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('typeahead') +        , options = typeof option == 'object' && option +      if (!data) $this.data('typeahead', (data = new Typeahead(this, options))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.typeahead.defaults = { +    source: [] +  , items: 8 +  , menu: '<ul class="typeahead dropdown-menu"></ul>' +  , item: '<li><a href="#"></a></li>' +  , minLength: 1 +  } + +  $.fn.typeahead.Constructor = Typeahead + + + /*   TYPEAHEAD DATA-API +  * ================== */ + +  $(function () { +    $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) { +      var $this = $(this) +      if ($this.data('typeahead')) return +      e.preventDefault() +      $this.typeahead($this.data()) +    }) +  }) + +}(window.jQuery); +/* ========================================================== + * bootstrap-affix.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#affix + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + +  "use strict"; // jshint ;_; + + + /* AFFIX CLASS DEFINITION +  * ====================== */ + +  var Affix = function (element, options) { +    this.options = $.extend({}, $.fn.affix.defaults, options) +    this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this)) +    this.$element = $(element) +    this.checkPosition() +  } + +  Affix.prototype.checkPosition = function () { +    if (!this.$element.is(':visible')) return + +    var scrollHeight = $(document).height() +      , scrollTop = this.$window.scrollTop() +      , position = this.$element.offset() +      , offset = this.options.offset +      , offsetBottom = offset.bottom +      , offsetTop = offset.top +      , reset = 'affix affix-top affix-bottom' +      , affix + +    if (typeof offset != 'object') offsetBottom = offsetTop = offset +    if (typeof offsetTop == 'function') offsetTop = offset.top() +    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() + +    affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? +      false    : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? +      'bottom' : offsetTop != null && scrollTop <= offsetTop ? +      'top'    : false + +    if (this.affixed === affix) return + +    this.affixed = affix +    this.unpin = affix == 'bottom' ? position.top - scrollTop : null + +    this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : '')) +  } + + + /* AFFIX PLUGIN DEFINITION +  * ======================= */ + +  $.fn.affix = function (option) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('affix') +        , options = typeof option == 'object' && option +      if (!data) $this.data('affix', (data = new Affix(this, options))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.affix.Constructor = Affix + +  $.fn.affix.defaults = { +    offset: 0 +  } + + + /* AFFIX DATA-API +  * ============== */ + +  $(window).on('load', function () { +    $('[data-spy="affix"]').each(function () { +      var $spy = $(this) +        , data = $spy.data() + +      data.offset = data.offset || {} + +      data.offsetBottom && (data.offset.bottom = data.offsetBottom) +      data.offsetTop && (data.offset.top = data.offsetTop) + +      $spy.affix(data) +    }) +  }) + + +}(window.jQuery);
\ No newline at end of file diff --git a/module/web/static/js/libs/jquery.qtip.min.js b/module/web/static/js/libs/jquery.qtip.min.js deleted file mode 100644 index a9c330966..000000000 --- a/module/web/static/js/libs/jquery.qtip.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! qTip2 v2.0.0 | http://craigsworks.com/projects/qtip2/ | Licensed MIT, GPL */ -(function(a){"use strict",typeof define=="function"&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)})(function(a){function G(){G.history=G.history||[],G.history.push(arguments);if("object"==typeof console){var a=console[console.warn?"warn":"log"],b=Array.prototype.slice.call(arguments),c;typeof arguments[0]=="string"&&(b[0]="qTip2: "+b[0]),c=a.apply?a.apply(console,b):a(b)}}function H(b){var e=function(a){return a===d||"object"!=typeof a},f=function(b){return!a.isFunction(b)&&(!b&&!b.attr||b.length<1||"object"==typeof b&&!b.jquery)};if(!b||"object"!=typeof b)return c;e(b.metadata)&&(b.metadata={type:b.metadata});if("content"in b){if(e(b.content)||b.content.jquery)b.content={text:b.content};f(b.content.text||c)&&(b.content.text=c),"title"in b.content&&(e(b.content.title)&&(b.content.title={text:b.content.title}),f(b.content.title.text||c)&&(b.content.title.text=c))}return"position"in b&&e(b.position)&&(b.position={my:b.position,at:b.position}),"show"in b&&e(b.show)&&(b.show=b.show.jquery?{target:b.show}:{event:b.show}),"hide"in b&&e(b.hide)&&(b.hide=b.hide.jquery?{target:b.hide}:{event:b.hide}),"style"in b&&e(b.style)&&(b.style={classes:b.style}),a.each(r,function(){this.sanitize&&this.sanitize(b)}),b}function I(e,f,n,o){function N(a){var b=0,c,d=f,e=a.split(".");while(d=d[e[b++]])b<e.length&&(c=d);return[c||f,e.pop()]}function O(){var a=f.style.widget;J.toggleClass(v,a).toggleClass(y,f.style.def&&!a),L.content.toggleClass(v+"-content",a),L.titlebar&&L.titlebar.toggleClass(v+"-header",a),L.button&&L.button.toggleClass(u+"-icon",!a)}function P(a){L.title&&(L.titlebar.remove(),L.titlebar=L.title=L.button=d,a!==c&&p.reposition())}function Q(){var b=f.content.title.button,d=typeof b=="string",e=d?b:"Close tooltip";L.button&&L.button.remove(),b.jquery?L.button=b:L.button=a("<a />",{"class":"ui-state-default ui-tooltip-close "+(f.style.widget?"":u+"-icon"),title:e,"aria-label":e}).prepend(a("<span />",{"class":"ui-icon ui-icon-close",html:"×"})),L.button.appendTo(L.titlebar).attr("role","button").click(function(a){return J.hasClass(w)||p.hide(a),c}),p.redraw()}function R(){var c=D+"-title";L.titlebar&&P(),L.titlebar=a("<div />",{"class":u+"-titlebar "+(f.style.widget?"ui-widget-header":"")}).append(L.title=a("<div />",{id:c,"class":u+"-title","aria-atomic":b})).insertBefore(L.content).delegate(".ui-tooltip-close","mousedown keydown mouseup keyup mouseout",function(b){a(this).toggleClass("ui-state-active ui-state-focus",b.type.substr(-4)==="down")}).delegate(".ui-tooltip-close","mouseover mouseout",function(b){a(this).toggleClass("ui-state-hover",b.type==="mouseover")}),f.content.title.button?Q():p.rendered&&p.redraw()}function S(a){var b=L.button,d=L.title;if(!p.rendered)return c;a?(d||R(),Q()):b.remove()}function T(b,d){var f=L.title;if(!p.rendered||!b)return c;a.isFunction(b)&&(b=b.call(e,M.event,p));if(b===c||!b&&b!=="")return P(c);b.jquery&&b.length>0?f.empty().append(b.css({display:"block"})):f.html(b),p.redraw(),d!==c&&p.rendered&&J[0].offsetWidth>0&&p.reposition(M.event)}function U(b,d){function g(b){function h(e){e&&(delete g[e.src],clearTimeout(p.timers.img[e.src]),a(e).unbind(K)),a.isEmptyObject(g)&&(p.redraw(),d!==c&&p.reposition(M.event),b())}var e,g={};if((e=f.find("img[src]:not([height]):not([width])")).length===0)return h();e.each(function(b,c){if(g[c.src]!==undefined)return;var d=0,e=3;(function f(){if(c.height||c.width||d>e)return h(c);d+=1,p.timers.img[c.src]=setTimeout(f,700)})(),a(c).bind("error"+K+" load"+K,function(){h(this)}),g[c.src]=c})}var f=L.content;return!p.rendered||!b?c:(a.isFunction(b)&&(b=b.call(e,M.event,p)||""),b.jquery&&b.length>0?f.empty().append(b.css({display:"block"})):f.html(b),p.rendered<0?J.queue("fx",g):(I=0,g(a.noop)),p)}function V(){function j(a){if(J.hasClass(w))return c;clearTimeout(p.timers.show),clearTimeout(p.timers.hide);var d=function(){p.toggle(b,a)};f.show.delay>0?p.timers.show=setTimeout(d,f.show.delay):d()}function k(b){if(J.hasClass(w)||G||I)return c;var e=a(b.relatedTarget||b.target),h=e.closest(x)[0]===J[0],i=e[0]===g.show[0];clearTimeout(p.timers.show),clearTimeout(p.timers.hide);if(d.target==="mouse"&&h||f.hide.fixed&&/mouse(out|leave|move)/.test(b.type)&&(h||i)){try{b.preventDefault(),b.stopImmediatePropagation()}catch(j){}return}f.hide.delay>0?p.timers.hide=setTimeout(function(){p.hide(b)},f.hide.delay):p.hide(b)}function l(a){if(J.hasClass(w))return c;clearTimeout(p.timers.inactive),p.timers.inactive=setTimeout(function(){p.hide(a)},f.hide.inactive)}function m(a){p.rendered&&J[0].offsetWidth>0&&p.reposition(a)}var d=f.position,g={show:f.show.target,hide:f.hide.target,viewport:a(d.viewport),document:a(document),body:a(document.body),window:a(window)},h={show:a.trim(""+f.show.event).split(" "),hide:a.trim(""+f.hide.event).split(" ")},i=a.browser.msie&&parseInt(a.browser.version,10)===6;J.bind("mouseenter"+K+" mouseleave"+K,function(a){var b=a.type==="mouseenter";b&&p.focus(a),J.toggleClass(A,b)}),/mouse(out|leave)/i.test(f.hide.event)&&f.hide.leave==="window"&&g.window.bind("mouseout"+K+" blur"+K,function(a){!/select|option/.test(a.target.nodeName)&&!a.relatedTarget&&p.hide(a)}),f.hide.fixed?(g.hide=g.hide.add(J),J.bind("mouseover"+K,function(){J.hasClass(w)||clearTimeout(p.timers.hide)})):/mouse(over|enter)/i.test(f.show.event)&&g.hide.bind("mouseleave"+K,function(a){clearTimeout(p.timers.show)}),(""+f.hide.event).indexOf("unfocus")>-1&&d.container.closest("html").bind("mousedown"+K,function(b){var c=a(b.target),d=p.rendered&&!J.hasClass(w)&&J[0].offsetWidth>0,f=c.parents(x).filter(J[0]).length>0;c[0]!==e[0]&&c[0]!==J[0]&&!f&&!e.has(c[0]).length&&!c.attr("disabled")&&p.hide(b)}),"number"==typeof f.hide.inactive&&(g.show.bind("qtip-"+n+"-inactive",l),a.each(q.inactiveEvents,function(a,b){g.hide.add(L.tooltip).bind(b+K+"-inactive",l)})),a.each(h.hide,function(b,c){var d=a.inArray(c,h.show),e=a(g.hide);d>-1&&e.add(g.show).length===e.length||c==="unfocus"?(g.show.bind(c+K,function(a){J[0].offsetWidth>0?k(a):j(a)}),delete h.show[d]):g.hide.bind(c+K,k)}),a.each(h.show,function(a,b){g.show.bind(b+K,j)}),"number"==typeof f.hide.distance&&g.show.add(J).bind("mousemove"+K,function(a){var b=M.origin||{},c=f.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&p.hide(a)}),d.target==="mouse"&&(g.show.bind("mousemove"+K,function(a){s={pageX:a.pageX,pageY:a.pageY,type:"mousemove"}}),d.adjust.mouse&&(f.hide.event&&(J.bind("mouseleave"+K,function(a){(a.relatedTarget||a.target)!==g.show[0]&&p.hide(a)}),L.target.bind("mouseenter"+K+" mouseleave"+K,function(a){M.onTarget=a.type==="mouseenter"})),g.document.bind("mousemove"+K,function(a){p.rendered&&M.onTarget&&!J.hasClass(w)&&J[0].offsetWidth>0&&p.reposition(a||s)}))),(d.adjust.resize||g.viewport.length)&&(a.event.special.resize?g.viewport:g.window).bind("resize"+K,m),(g.viewport.length||i&&J.css("position")==="fixed")&&g.viewport.bind("scroll"+K,m)}function W(){var b=[f.show.target[0],f.hide.target[0],p.rendered&&L.tooltip[0],f.position.container[0],f.position.viewport[0],window,document];p.rendered?a([]).pushStack(a.grep(b,function(a){return typeof a=="object"})).unbind(K):f.show.target.unbind(K+"-create")}var p=this,C=document.body,D=u+"-"+n,G=0,I=0,J=a(),K=".qtip-"+n,L,M;p.id=n,p.rendered=c,p.destroyed=c,p.elements=L={target:e},p.timers={img:{}},p.options=f,p.checks={},p.plugins={},p.cache=M={event:{},target:a(),disabled:c,attr:o,onTarget:c,lastClass:""},p.checks.builtin={"^id$":function(d,e,f){var g=f===b?q.nextid:f,h=u+"-"+g;g!==c&&g.length>0&&!a("#"+h).length&&(J[0].id=h,L.content[0].id=h+"-content",L.title[0].id=h+"-title")},"^content.text$":function(a,b,c){U(c)},"^content.title.text$":function(a,b,c){if(!c)return P();!L.title&&c&&R(),T(c)},"^content.title.button$":function(a,b,c){S(c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(a[b]=new r.Corner(c))},"^position.container$":function(a,b,c){p.rendered&&J.appendTo(c)},"^show.ready$":function(){p.rendered?p.toggle(b):p.render(1)},"^style.classes$":function(a,b,c){J.attr("class",u+" qtip ui-helper-reset "+c)},"^style.widget|content.title":O,"^events.(render|show|move|hide|focus|blur)$":function(b,c,d){J[(a.isFunction(d)?"":"un")+"bind"]("tooltip"+c,d)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){var a=f.position;J.attr("tracking",a.target==="mouse"&&a.adjust.mouse),W(),V()}},a.extend(p,{render:function(d){if(p.rendered)return p;var g=f.content.text,h=f.content.title.text,i=f.position,j=a.Event("tooltiprender");return a.attr(e[0],"aria-describedby",D),J=L.tooltip=a("<div/>",{id:D,"class":u+" qtip ui-helper-reset "+y+" "+f.style.classes+" "+u+"-pos-"+f.position.my.abbrev(),width:f.style.width||"",height:f.style.height||"",tracking:i.target==="mouse"&&i.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":c,"aria-describedby":D+"-content","aria-hidden":b}).toggleClass(w,M.disabled).data("qtip",p).appendTo(f.position.container).append(L.content=a("<div />",{"class":u+"-content",id:D+"-content","aria-atomic":b})),p.rendered=-1,I=1,G=1,h&&(R(),a.isFunction(h)||T(h,c)),a.isFunction(g)||U(g,c),p.rendered=b,O(),a.each(f.events,function(b,c){a.isFunction(c)&&J.bind(b==="toggle"?"tooltipshow tooltiphide":"tooltip"+b,c)}),a.each(r,function(){this.initialize==="render"&&this(p)}),V(),J.queue("fx",function(a){j.originalEvent=M.event,J.trigger(j,[p]),I=0,G=0,p.redraw(),(f.show.ready||d)&&p.toggle(b,M.event,c),a()}),p},get:function(a){var b,c;switch(a.toLowerCase()){case"dimensions":b={height:J.outerHeight(),width:J.outerWidth()};break;case"offset":b=r.offset(J,f.position.container);break;default:c=N(a.toLowerCase()),b=c[0][c[1]],b=b.precedance?b.string():b}return b},set:function(e,g){function n(a,b){var c,d,e;for(c in l)for(d in l[c])if(e=(new RegExp(d,"i")).exec(a))b.push(e),l[c][d].apply(p,b)}var h=/^position\.(my|at|adjust|target|container)|style|content|show\.ready/i,i=/^content\.(title|attr)|style/i,j=c,k=c,l=p.checks,m;return"string"==typeof e?(m=e,e={},e[m]=g):e=a.extend(b,{},e),a.each(e,function(b,c){var d=N(b.toLowerCase()),f;f=d[0][d[1]],d[0][d[1]]="object"==typeof c&&c.nodeType?a(c):c,e[b]=[d[0],d[1],c,f],j=h.test(b)||j,k=i.test(b)||k}),H(f),G=I=1,a.each(e,n),G=I=0,p.rendered&&J[0].offsetWidth>0&&(j&&p.reposition(f.position.target==="mouse"?d:M.event),k&&p.redraw()),p},toggle:function(e,g){function u(){e?(a.browser.msie&&J[0].style.removeAttribute("filter"),J.css("overflow",""),"string"==typeof i.autofocus&&a(i.autofocus,J).focus(),i.target.trigger("qtip-"+n+"-inactive")):J.css({display:"",visibility:"",opacity:"",left:"",top:""}),t=a.Event("tooltip"+(e?"visible":"hidden")),t.originalEvent=g?M.event:d,J.trigger(t,[p])}if(!p.rendered)return e?p.render(1):p;var h=e?"show":"hide",i=f[h],j=f[e?"hide":"show"],k=f.position,l=f.content,m=J[0].offsetWidth>0,o=e||i.target.length===1,q=!g||i.target.length<2||M.target[0]===g.target,r,t;(typeof e).search("boolean|number")&&(e=!m);if(!J.is(":animated")&&m===e&&q)return p;if(g){if(/over|enter/.test(g.type)&&/out|leave/.test(M.event.type)&&f.show.target.add(g.target).length===f.show.target.length&&J.has(g.relatedTarget).length)return p;M.event=a.extend({},g)}return t=a.Event("tooltip"+h),t.originalEvent=g?M.event:d,J.trigger(t,[p,90]),t.isDefaultPrevented()?p:(a.attr(J[0],"aria-hidden",!e),e?(M.origin=a.extend({},s),p.focus(g),a.isFunction(l.text)&&U(l.text,c),a.isFunction(l.title.text)&&T(l.title.text,c),!F&&k.target==="mouse"&&k.adjust.mouse&&(a(document).bind("mousemove.qtip",function(a){s={pageX:a.pageX,pageY:a.pageY,type:"mousemove"}}),F=b),p.reposition(g,arguments[2]),(t.solo=!!i.solo)&&a(x,i.solo).not(J).qtip("hide",t)):(clearTimeout(p.timers.show),delete M.origin,F&&!a(x+'[tracking="true"]:visible',i.solo).not(J).length&&(a(document).unbind("mousemove.qtip"),F=c),p.blur(g)),i.effect===c||o===c?(J[h](),u.call(J)):a.isFunction(i.effect)?(J.stop(1,1),i.effect.call(J,p),J.queue("fx",function(a){u(),a()})):J.fadeTo(90,e?1:0,u),e&&i.target.trigger("qtip-"+n+"-inactive"),p)},show:function(a){return p.toggle(b,a)},hide:function(a){return p.toggle(c,a)},focus:function(b){if(!p.rendered)return p;var c=a(x),d=parseInt(J[0].style.zIndex,10),e=q.zindex+c.length,f=a.extend({},b),g,h;return J.hasClass(z)||(h=a.Event("tooltipfocus"),h.originalEvent=f,J.trigger(h,[p,e]),h.isDefaultPrevented()||(d!==e&&(c.each(function(){this.style.zIndex>d&&(this.style.zIndex=this.style.zIndex-1)}),c.filter("."+z).qtip("blur",f)),J.addClass(z)[0].style.zIndex=e)),p},blur:function(b){var c=a.extend({},b),d;return J.removeClass(z),d=a.Event("tooltipblur"),d.originalEvent=c,J.trigger(d,[p]),p},reposition:function(b,d){if(!p.rendered||G)return p;G=1;var e=f.position.target,g=f.position,h=g.my,n=g.at,o=g.adjust,q=o.method.split(" "),t=J.outerWidth(),u=J.outerHeight(),v=0,w=0,x=a.Event("tooltipmove"),y=J.css("position")==="fixed",z=g.viewport,A={left:0,top:0},B=g.container,C=J[0].offsetWidth>0,D,E,F;if(a.isArray(e)&&e.length===2)n={x:j,y:i},A={left:e[0],top:e[1]};else if(e==="mouse"&&(b&&b.pageX||M.event.pageX))n={x:j,y:i},b=(b&&(b.type==="resize"||b.type==="scroll")?M.event:b&&b.pageX&&b.type==="mousemove"?b:s&&s.pageX&&(o.mouse||!b||!b.pageX)?{pageX:s.pageX,pageY:s.pageY}:!o.mouse&&M.origin&&M.origin.pageX&&f.show.distance?M.origin:b)||b||M.event||s||{},A={top:b.pageY,left:b.pageX};else{e==="event"&&b&&b.target&&b.type!=="scroll"&&b.type!=="resize"?M.target=a(b.target):e!=="event"&&(M.target=a(e.jquery?e:L.target)),e=M.target,e=a(e).eq(0);if(e.length===0)return p;e[0]===document||e[0]===window?(v=r.iOS?window.innerWidth:e.width(),w=r.iOS?window.innerHeight:e.height(),e[0]===window&&(A={top:(z||e).scrollTop(),left:(z||e).scrollLeft()})):r.imagemap&&e.is("area")?D=r.imagemap(p,e,n,r.viewport?q:c):r.svg&&typeof e[0].xmlbase=="string"?D=r.svg(p,e,n,r.viewport?q:c):(v=e.outerWidth(),w=e.outerHeight(),A=r.offset(e,B)),D&&(v=D.width,w=D.height,E=D.offset,A=D.position);if(r.iOS>3.1&&r.iOS<4.1||r.iOS>=4.3&&r.iOS<4.33||!r.iOS&&y)F=a(window),A.left-=F.scrollLeft(),A.top-=F.scrollTop();A.left+=n.x===l?v:n.x===m?v/2:0,A.top+=n.y===k?w:n.y===m?w/2:0}return A.left+=o.x+(h.x===l?-t:h.x===m?-t/2:0),A.top+=o.y+(h.y===k?-u:h.y===m?-u/2:0),r.viewport?(A.adjusted=r.viewport(p,A,g,v,w,t,u),E&&A.adjusted.left&&(A.left+=E.left),E&&A.adjusted.top&&(A.top+=E.top)):A.adjusted={left:0,top:0},x.originalEvent=a.extend({},b),J.trigger(x,[p,A,z.elem||z]),x.isDefaultPrevented()?p:(delete A.adjusted,d===c||!C||isNaN(A.left)||isNaN(A.top)||e==="mouse"||!a.isFunction(g.effect)?J.css(A):a.isFunction(g.effect)&&(g.effect.call(J,p,a.extend({},A)),J.queue(function(b){a(this).css({opacity:"",height:""}),a.browser.msie&&this.style.removeAttribute("filter"),b()})),G=0,p)},redraw:function(){if(p.rendered<1||I)return p;var a=f.position.container,b,c,d,e;return I=1,f.style.height&&J.css(h,f.style.height),f.style.width?J.css(g,f.style.width):(J.css(g,"").addClass(B),c=J.width()+1,d=J.css("max-width")||"",e=J.css("min-width")||"",b=(d+e).indexOf("%")>-1?a.width()/100:0,d=(d.indexOf("%")>-1?b:1)*parseInt(d,10)||c,e=(e.indexOf("%")>-1?b:1)*parseInt(e,10)||0,c=d+e?Math.min(Math.max(c,e),d):c,J.css(g,Math.round(c)).removeClass(B)),I=0,p},disable:function(b){return"boolean"!=typeof b&&(b=!J.hasClass(w)&&!M.disabled),p.rendered?(J.toggleClass(w,b),a.attr(J[0],"aria-disabled",b)):M.disabled=!!b,p},enable:function(){return p.disable(c)},destroy:function(){var c=e[0],d=a.attr(c,E),g=e.data("qtip");p.destroyed=b,p.rendered&&(J.stop(1,0).remove(),a.each(p.plugins,function(){this.destroy&&this.destroy()})),clearTimeout(p.timers.show),clearTimeout(p.timers.hide),W();if(!g||p===g)a.removeData(c,"qtip"),f.suppress&&d&&(a.attr(c,"title",d),e.removeAttr(E)),e.removeAttr("aria-describedby");return e.unbind(".qtip-"+n),delete t[p.id],e}})}function J(e,f){var g,h,i,j,k,l=a(this),m=a(document.body),n=this===document?m:l,o=l.metadata?l.metadata(f.metadata):d,p=f.metadata.type==="html5"&&o?o[f.metadata.name]:d,s=l.data(f.metadata.name||"qtipopts");try{s=typeof s=="string"?a.parseJSON(s):s}catch(t){G("Unable to parse HTML5 attribute data: "+s)}j=a.extend(b,{},q.defaults,f,typeof s=="object"?H(s):d,H(p||o)),h=j.position,j.id=e;if("boolean"==typeof j.content.text){i=l.attr(j.content.attr);if(j.content.attr!==c&&i)j.content.text=i;else return G("Unable to locate content for tooltip! Aborting render of tooltip on element: ",l),c}h.container.length||(h.container=m),h.target===c&&(h.target=n),j.show.target===c&&(j.show.target=n),j.show.solo===b&&(j.show.solo=h.container.closest("body")),j.hide.target===c&&(j.hide.target=n),j.position.viewport===b&&(j.position.viewport=h.container),h.container=h.container.eq(0),h.at=new r.Corner(h.at),h.my=new r.Corner(h.my);if(a.data(this,"qtip"))if(j.overwrite)l.qtip("destroy");else if(j.overwrite===c)return c;return j.suppress&&(k=a.attr(this,"title"))&&a(this).removeAttr("title").attr(E,k).attr("title",""),g=new I(l,j,e,!!i),a.data(this,"qtip",g),l.bind("remove.qtip-"+e+" removeqtip.qtip-"+e,function(){g.destroy()}),g}function K(d){var e=this,f=d.elements.tooltip,g=d.options.content.ajax,h=q.defaults.content.ajax,i=".qtip-ajax",j=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,k=b,l=c,m;d.checks.ajax={"^content.ajax":function(a,b,c){b==="ajax"&&(g=c),b==="once"?e.init():g&&g.url?e.load():f.unbind(i)}},a.extend(e,{init:function(){return g&&g.url&&f.unbind(i)[g.once?"one":"bind"]("tooltipshow"+i,e.load),e},load:function(f){function r(){var e;if(d.destroyed)return;k=c,p&&(l=b,d.show(f.originalEvent)),(e=h.complete||g.complete)&&a.isFunction(e)&&e.apply(g.context||d,arguments)}function s(b,c,e){var f;if(d.destroyed)return;o&&(b=a("<div/>").append(b.replace(j,"")).find(o)),(f=h.success||g.success)&&a.isFunction(f)?f.call(g.context||d,b,c,e):d.set("content.text",b)}function t(a,b,c){if(d.destroyed||a.status===0)return;d.set("content.text",b+": "+c)}if(l){l=c;return}var i=g.url.indexOf(" "),n=g.url,o,p=!g.loading&&k;if(p)try{f.preventDefault()}catch(q){}else if(f&&f.isDefaultPrevented())return e;m&&m.abort&&m.abort(),i>-1&&(o=n.substr(i),n=n.substr(0,i)),m=a.ajax(a.extend({error:h.error||t,context:d},g,{url:n,success:s,complete:r}))},destroy:function(){m&&m.abort&&m.abort(),d.destroyed=b}}),e.init()}function L(a,b,c){var d=Math.ceil(b/2),e=Math.ceil(c/2),f={bottomright:[[0,0],[b,c],[b,0]],bottomleft:[[0,0],[b,0],[0,c]],topright:[[0,c],[b,0],[b,c]],topleft:[[0,0],[0,c],[b,c]],topcenter:[[0,c],[d,0],[b,c]],bottomcenter:[[0,0],[b,0],[d,c]],rightcenter:[[0,0],[b,e],[0,c]],leftcenter:[[b,0],[b,c],[0,e]]};return f.lefttop=f.bottomright,f.righttop=f.bottomleft,f.leftbottom=f.topright,f.rightbottom=f.topleft,f[a.string()]}function M(n,o){function C(){w.width=s.height,w.height=s.width}function D(){w.width=s.width,w.height=s.height}function E(a,d,g,h){if(!t.tip)return;var o=q.corner.clone(),r=g.adjusted,u=n.options.position.adjust.method.split(" "),w=u[0],x=u[1]||u[0],y={left:c,top:c,x:0,y:0},z,A={},B;q.corner.fixed!==b&&(w===p&&o.precedance===e&&r.left&&o.y!==m?o.precedance=o.precedance===e?f:e:w!==p&&r.left&&(o.x=o.x===m?r.left>0?j:l:o.x===j?l:j),x===p&&o.precedance===f&&r.top&&o.x!==m?o.precedance=o.precedance===f?e:f:x!==p&&r.top&&(o.y=o.y===m?r.top>0?i:k:o.y===i?k:i),o.string()!==v.corner.string()&&(v.top!==r.top||v.left!==r.left)&&q.update(o,c)),z=q.position(o,r),z[o.x]+=F(o,o.x,b),z[o.y]+=F(o,o.y,b),z.right!==undefined&&(z.left=-z.right),z.bottom!==undefined&&(z.top=-z.bottom),z.user=Math.max(0,s.offset);if(y.left=w===p&&!!r.left)o.x===m?A["margin-left"]=y.x=z["margin-left"]-r.left:(B=z.right!==undefined?[r.left,-z.left]:[-r.left,z.left],(y.x=Math.max(B[0],B[1]))>B[0]&&(g.left-=r.left,y.left=c),A[z.right!==undefined?l:j]=y.x);if(y.top=x===p&&!!r.top)o.y===m?A["margin-top"]=y.y=z["margin-top"]-r.top:(B=z.bottom!==undefined?[r.top,-z.top]:[-r.top,z.top],(y.y=Math.max(B[0],B[1]))>B[0]&&(g.top-=r.top,y.top=c),A[z.bottom!==undefined?k:i]=y.y);t.tip.css(A).toggle(!(y.x&&y.y||o.x===m&&y.y||o.y===m&&y.x)),g.left-=z.left.charAt?z.user:w!==p||y.top||!y.left&&!y.top?z.left:0,g.top-=z.top.charAt?z.user:x!==p||y.left||!y.left&&!y.top?z.top:0,v.left=r.left,v.top=r.top,v.corner=o.clone()}function F(a,b,c){b=b?b:a[a.precedance];var d=u.hasClass(B),e=t.titlebar&&a.y===i,f=e?t.titlebar:t.tooltip,g="border-"+b+"-width",h;return u.addClass(B),h=parseInt(f.css(g),10),h=(c?h||parseInt(u.css(g),10):h)||0,u.toggleClass(B,d),h}function G(b){function j(a){return parseInt(d.css(a),10)||parseInt(u.css(a),10)}var c=t.titlebar&&b.y===i,d=c?t.titlebar:t.content,e=a.browser.mozilla,f=e?"-moz-":a.browser.webkit?"-webkit-":"",g="border-radius-"+b.y+b.x,h="border-"+b.y+"-"+b.x+"-radius";return j(h)||j(f+h)||j(f+g)||j(g)||0}function H(a){var b=a.precedance===f,c=w[b?g:h],d=w[b?h:g],e=a.string().indexOf(m)>-1,i=c*(e?.5:1),j=Math.pow,k=Math.round,l,n,o,p=Math.sqrt(j(i,2)+j(d,2)),q=[y/i*p,y/d*p];return q[2]=Math.sqrt(j(q[0],2)-j(y,2)),q[3]=Math.sqrt(j(q[1],2)-j(y,2)),l=p+q[2]+q[3]+(e?0:q[0]),n=l/p,o=[k(n*d),k(n*c)],{height:o[b?0:1],width:o[b?1:0]}}var q=this,s=n.options.style.tip,t=n.elements,u=t.tooltip,v={top:0,left:0},w={width:s.width,height:s.height},x={},y=s.border||0,z=".qtip-tip",A=!!(a("<canvas />")[0]||{}).getContext;q.corner=d,q.mimic=d,q.border=y,q.offset=s.offset,q.size=w,n.checks.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){q.init()||q.destroy(),n.reposition()},"^style.tip.(height|width)$":function(){w={width:s.width,height:s.height},q.create(),q.update(),n.reposition()},"^content.title.text|style.(classes|widget)$":function(){t.tip&&t.tip.length&&q.update()}},a.extend(q,{init:function(){var b=q.detectCorner()&&(A||a.browser.msie);return b&&(q.create(),q.update(),u.unbind(z).bind("tooltipmove"+z,E)),b},detectCorner:function(){var a=s.corner,d=n.options.position,e=d.at,f=d.my.string?d.my.string():d.my;return a===c||f===c&&e===c?c:(a===b?q.corner=new r.Corner(f):a.string||(q.corner=new r.Corner(a),q.corner.fixed=b),v.corner=new r.Corner(q.corner.string()),q.corner.string()!=="centercenter")},detectColours:function(b){var c,d,e,f=t.tip.css("cssText",""),g=b||q.corner,h=g[g.precedance],j="border-"+h+"-color",k="border"+h.charAt(0)+h.substr(1)+"Color",l=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,n="background-color",o="transparent",p=" !important",r=t.titlebar&&(g.y===i||g.y===m&&f.position().top+w.height/2+s.offset<t.titlebar.outerHeight(1)),v=r?t.titlebar:t.tooltip;u.addClass(B),x.fill=d=f.css(n),x.border=e=f[0].style[k]||f.css(j)||u.css(j);if(!d||l.test(d))x.fill=v.css(n)||o,l.test(x.fill)&&(x.fill=u.css(n)||d);if(!e||l.test(e)||e===a(document.body).css("color")){x.border=v.css(j)||o;if(l.test(x.border)||x.border===v.css("color"))x.border=u.css(j)||u.css(k)||e}a("*",f).add(f).css("cssText",n+":"+o+p+";border:0"+p+";"),u.removeClass(B)},create:function(){var b=w.width,c=w.height,d;t.tip&&t.tip.remove(),t.tip=a("<div />",{"class":"ui-tooltip-tip"}).css({width:b,height:c}).prependTo(u),A?a("<canvas />").appendTo(t.tip)[0].getContext("2d").save():(d='<vml:shape coordorigin="0,0" style="display:inline-block; position:absolute; behavior:url(#default#VML);"></vml:shape>',t.tip.html(d+d),a("*",t.tip).bind("click mousedown",function(a){a.stopPropagation()}))},update:function(g,h){var n=t.tip,o=n.children(),p=w.width,z=w.height,B="px solid ",E="px dashed transparent",G=s.mimic,I=Math.round,J,K,M,N,O;g||(g=v.corner||q.corner),G===c?G=g:(G=new r.Corner(G),G.precedance=g.precedance,G.x==="inherit"?G.x=g.x:G.y==="inherit"?G.y=g.y:G.x===G.y&&(G[g.precedance]=g[g.precedance])),J=G.precedance,g.precedance===e?C():D(),t.tip.css({width:p=w.width,height:z=w.height}),q.detectColours(g),x.border!=="transparent"?(y=F(g,d,b),s.border===0&&y>0&&(x.fill=x.border),q.border=y=s.border!==b?s.border:y):q.border=y=0,M=L(G,p,z),q.size=O=H(g),n.css(O),g.precedance===f?N=[I(G.x===j?y:G.x===l?O.width-p-y:(O.width-p)/2),I(G.y===i?O.height-z:0)]:N=[I(G.x===j?O.width-p:0),I(G.y===i?y:G.y===k?O.height-z-y:(O.height-z)/2)],A?(o.attr(O),K=o[0].getContext("2d"),K.restore(),K.save(),K.clearRect(0,0,3e3,3e3),K.fillStyle=x.fill,K.strokeStyle=x.border,K.lineWidth=y*2,K.lineJoin="miter",K.miterLimit=100,K.translate(N[0],N[1]),K.beginPath(),K.moveTo(M[0][0],M[0][1]),K.lineTo(M[1][0],M[1][1]),K.lineTo(M[2][0],M[2][1]),K.closePath(),y&&(u.css("background-clip")==="border-box"&&(K.strokeStyle=x.fill,K.stroke()),K.strokeStyle=x.border,K.stroke()),K.fill()):(M="m"+M[0][0]+","+M[0][1]+" l"+M[1][0]+","+M[1][1]+" "+M[2][0]+","+M[2][1]+" xe",N[2]=y&&/^(r|b)/i.test(g.string())?parseFloat(a.browser.version,10)===8?2:1:0,o.css({antialias:""+(G.string().indexOf(m)>-1),left:N[0]-N[2]*Number(J===e),top:N[1]-N[2]*Number(J===f),width:p+y,height:z+y}).each(function(b){var c=a(this);c[c.prop?"prop":"attr"]({coordsize:p+y+" "+(z+y),path:M,fillcolor:x.fill,filled:!!b,stroked:!b}).css({display:y||b?"block":"none"}),!b&&c.html()===""&&c.html('<vml:stroke weight="'+y*2+'px" color="'+x.border+'" miterlimit="1000" joinstyle="miter" '+' style="behavior:url(#default#VML); display:inline-block;" />')})),h!==c&&q.position(g)},position:function(b){var d=t.tip,k={},l=Math.max(0,s.offset),n,o,p;return s.corner===c||!d?c:(b=b||q.corner,n=b.precedance,o=H(b),p=[b.x,b.y],n===e&&p.reverse(),a.each(p,function(a,c){var d,e;c===m?(d=n===f?j:i,k[d]="50%",k["margin-"+d]=-Math.round(o[n===f?g:h]/2)+l):(d=F(b,c),e=G(b),k[c]=a?0:l+(e>d?e:-d))}),k[b[n]]-=o[n===e?g:h],d.css({top:"",bottom:"",left:"",right:"",margin:""}).css(k),k)},destroy:function(){t.tip&&t.tip.remove(),t.tip=!1,u.unbind(z)}}),q.init()}function N(d){function q(){o=a(n,h).not("[disabled]").map(function(){return typeof this.focus=="function"?this:null})}function s(a){o.length<1&&a.length?a.not("body").blur():o.first().focus()}function t(b){var d=a(b.target),e=d.closest(".qtip"),f;f=e.length<1?c:parseInt(e[0].style.zIndex,10)>parseInt(h[0].style.zIndex,10),!f&&a(b.target).closest(x)[0]!==h[0]&&s(d)}var e=this,f=d.options.show.modal,g=d.elements,h=g.tooltip,i="#qtip-overlay",j=".qtipmodal",k=j+d.id,l="is-modal-qtip",m=a(document.body),n=r.modal.focusable.join(","),o={},p;d.checks.modal={"^show.modal.(on|blur)$":function(){e.init(),g.overlay.toggle(h.is(":visible"))},"^content.text$":function(){q()}},a.extend(e,{init:function(){return f.on?(p=e.create(),h.attr(l,b).css("z-index",r.modal.zindex+a(x+"["+l+"]").length).unbind(j).unbind(k).bind("tooltipshow"+j+" tooltiphide"+j,function(b,c,d){var f=b.originalEvent;if(b.target===h[0])if(f&&b.type==="tooltiphide"&&/mouse(leave|enter)/.test(f.type)&&a(f.relatedTarget).closest(p[0]).length)try{b.preventDefault()}catch(g){}else(!f||f&&!f.solo)&&e[b.type.replace("tooltip","")](b,d)}).bind("tooltipfocus"+j,function(b){if(b.isDefaultPrevented()||b.target!==h[0])return;var c=a(x).filter("["+l+"]"),d=r.modal.zindex+c.length,e=parseInt(h[0].style.zIndex,10);p[0].style.zIndex=d-2,c.each(function(){this.style.zIndex>e&&(this.style.zIndex-=1)}),c.end().filter("."+z).qtip("blur",b.originalEvent),h.addClass(z)[0].style.zIndex=d;try{b.preventDefault()}catch(f){}}).bind("tooltiphide"+j,function(b){b.target===h[0]&&a("["+l+"]").filter(":visible").not(h).last().qtip("focus",b)}),f.escape&&a(document).unbind(k).bind("keydown"+k,function(a){a.keyCode===27&&h.hasClass(z)&&d.hide(a)}),f.blur&&g.overlay.unbind(k).bind("click"+k,function(a){h.hasClass(z)&&d.hide(a)}),q(),e):e},create:function(){function d(){p.css({height:a(window).height(),width:a(window).width()})}var b=a(i);return b.length?g.overlay=b.insertAfter(a(x).last()):(p=g.overlay=a("<div />",{id:i.substr(1),html:"<div></div>",mousedown:function(){return c}}).hide().insertAfter(a(x).last()),a(window).unbind(j).bind("resize"+j,d),d(),p)},toggle:function(d,g,i){if(d&&d.isDefaultPrevented())return e;var j=f.effect,n=g?"show":"hide",o=p.is(":visible"),q=a("["+l+"]").filter(":visible").not(h),r;return p||(p=e.create()),p.is(":animated")&&o===g||!g&&q.length?e:(g?(p.css({left:0,top:0}),p.toggleClass("blurs",f.blur),f.stealfocus!==c&&(m.bind("focusin"+k,t),s(a("body *")))):m.unbind("focusin"+k),p.stop(b,c),a.isFunction(j)?j.call(p,g):j===c?p[n]():p.fadeTo(parseInt(i,10)||90,g?1:0,function(){g||a(this).hide()}),g||p.queue(function(a){p.css({left:"",top:""}),a()}),e)},show:function(a,c){return e.toggle(a,b,c)},hide:function(a,b){return e.toggle(a,c,b)},destroy:function(){var b=p;return b&&(b=a("["+l+"]").not(h).length<1,b?(g.overlay.remove(),a(document).unbind(j)):g.overlay.unbind(j+d.id),m.undelegate("*","focusin"+k)),h.removeAttr(l).unbind(j)}}),e.init()}function O(b){var c=this,d=b.elements,e=d.tooltip,f=".bgiframe-"+b.id;a.extend(c,{init:function(){d.bgiframe=a('<iframe class="ui-tooltip-bgiframe" frameborder="0" tabindex="-1" src="javascript:\'\';"  style="display:block; position:absolute; z-index:-1; filter:alpha(opacity=0); -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";"></iframe>'),d.bgiframe.appendTo(e),e.bind("tooltipmove"+f,c.adjust)},adjust:function(){var a=b.get("dimensions"),c=b.plugins.tip,f=d.tip,g,h;h=parseInt(e.css("border-left-width"),10)||0,h={left:-h,top:-h},c&&f&&(g=c.corner.precedance==="x"?["width","left"]:["height","top"],h[g[1]]-=f[g[0]]()),d.bgiframe.css(h).css(a)},destroy:function(){d.bgiframe.remove(),e.unbind(f)}}),c.init()}"use strict";var b=!0,c=!1,d=null,e="x",f="y",g="width",h="height",i="top",j="left",k="bottom",l="right",m="center",n="flip",o="flipinvert",p="shift",q,r,s,t={},u="ui-tooltip",v="ui-widget",w="ui-state-disabled",x="div.qtip."+u,y=u+"-default",z=u+"-focus",A=u+"-hover",B=u+"-fluid",C="-31000px",D="_replacedByqTip",E="oldtitle",F;q=a.fn.qtip=function(e,f,g){var h=(""+e).toLowerCase(),i=d,j=a.makeArray(arguments).slice(1),k=j[j.length-1],l=this[0]?a.data(this[0],"qtip"):d;if(!arguments.length&&l||h==="api")return l;if("string"==typeof e)return this.each(function(){var d=a.data(this,"qtip");if(!d)return b;k&&k.timeStamp&&(d.cache.event=k);if(h!=="option"&&h!=="options"||!f)d[h]&&d[h].apply(d[h],j);else if(a.isPlainObject(f)||g!==undefined)d.set(f,g);else return i=d.get(f),c}),i!==d?i:this;if("object"==typeof e||!arguments.length)return l=H(a.extend(b,{},e)),q.bind.call(this,l,k)},q.bind=function(d,e){return this.each(function(f){function m(b){function d(){k.render(typeof b=="object"||g.show.ready),h.show.add(h.hide).unbind(j)}if(k.cache.disabled)return c;k.cache.event=a.extend({},b),k.cache.target=b?a(b.target):[undefined],g.show.delay>0?(clearTimeout(k.timers.show),k.timers.show=setTimeout(d,g.show.delay),i.show!==i.hide&&h.hide.bind(i.hide,function(){clearTimeout(k.timers.show)})):d()}var g,h,i,j,k,l;l=a.isArray(d.id)?d.id[f]:d.id,l=!l||l===c||l.length<1||t[l]?q.nextid++:t[l]=l,j=".qtip-"+l+"-create",k=J.call(this,l,d);if(k===c)return b;g=k.options,a.each(r,function(){this.initialize==="initialize"&&this(k)}),h={show:g.show.target,hide:g.hide.target},i={show:a.trim(""+g.show.event).replace(/ /g,j+" ")+j,hide:a.trim(""+g.hide.event).replace(/ /g,j+" ")+j},/mouse(over|enter)/i.test(i.show)&&!/mouse(out|leave)/i.test(i.hide)&&(i.hide+=" mouseleave"+j),h.show.bind("mousemove"+j,function(a){s={pageX:a.pageX,pageY:a.pageY,type:"mousemove"},k.cache.onTarget=b}),h.show.bind(i.show,m),(g.show.ready||g.prerender)&&m(e)})},r=q.plugins={Corner:function(a){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,m).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase();var b=a.charAt(0);this.precedance=b==="t"||b==="b"?f:e,this.string=function(){return this.precedance===f?this.y+this.x:this.x+this.y},this.abbrev=function(){var a=this.x.substr(0,1),b=this.y.substr(0,1);return a===b?a:this.precedance===f?b+a:a+b},this.invertx=function(a){this.x=this.x===j?l:this.x===l?j:a||this.x},this.inverty=function(a){this.y=this.y===i?k:this.y===k?i:a||this.y},this.clone=function(){return{x:this.x,y:this.y,precedance:this.precedance,string:this.string,abbrev:this.abbrev,clone:this.clone,invertx:this.invertx,inverty:this.inverty}}},offset:function(b,c){function j(a,b){d.left+=b*a.scrollLeft(),d.top+=b*a.scrollTop()}var d=b.offset(),e=b.closest("body")[0],f=c,g,h,i;if(f){do f.css("position")!=="static"&&(h=f.position(),d.left-=h.left+(parseInt(f.css("borderLeftWidth"),10)||0)+(parseInt(f.css("marginLeft"),10)||0),d.top-=h.top+(parseInt(f.css("borderTopWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0),!g&&(i=f.css("overflow"))!=="hidden"&&i!=="visible"&&(g=f));while((f=a(f[0].offsetParent)).length);g&&g[0]!==e&&j(g,1)}return d},iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||c,fn:{attr:function(b,c){if(this.length){var d=this[0],e="title",f=a.data(d,"qtip");if(b===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?a.attr(d,E):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",c),this.attr(E,c))}return a.fn["attr"+D].apply(this,arguments)},clone:function(b){var c=a([]),d="title",e=a.fn["clone"+D].apply(this,arguments);return b||e.filter("["+E+"]").attr("title",function(){return a.attr(this,E)}).removeAttr(E),e}}},a.each(r.fn,function(c,d){if(!d||a.fn[c+D])return b;var e=a.fn[c+D]=a.fn[c];a.fn[c]=function(){return d.apply(this,arguments)||e.apply(this,arguments)}}),a.ui||(a["cleanData"+D]=a.cleanData,a.cleanData=function(b){for(var c=0,d;(d=b[c])!==undefined;c++)try{a(d).triggerHandler("removeqtip")}catch(e){}a["cleanData"+D](b)}),q.version="@VERSION",q.nextid=0,q.inactiveEvents="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),q.zindex=15e3,q.defaults={prerender:c,id:c,overwrite:b,suppress:b,content:{text:b,attr:"title",title:{text:c,button:c}},position:{my:"top left",at:"bottom right",target:c,container:c,viewport:c,adjust:{x:0,y:0,mouse:b,resize:b,method:"flip flip"},effect:function(b,d,e){a(this).animate(d,{duration:200,queue:c})}},show:{target:c,event:"mouseenter",effect:b,delay:90,solo:c,ready:c,autofocus:c},hide:{target:c,event:"mouseleave",effect:b,delay:0,fixed:c,inactive:c,leave:"window",distance:c},style:{classes:"",widget:c,width:c,height:c,def:b},events:{render:d,move:d,show:d,hide:d,toggle:d,visible:d,hidden:d,focus:d,blur:d}},r.svg=function(b,c,d,e){var f=a(document),g=c[0],h={width:0,height:0,position:{top:1e10,left:1e10}},i,j,k,l,m;while(!g.getBBox)g=g.parentNode;if(g.getBBox&&g.parentNode){i=g.getBBox(),j=g.getScreenCTM(),k=g.farthestViewportElement||g;if(!k.createSVGPoint)return h;l=k.createSVGPoint(),l.x=i.x,l.y=i.y,m=l.matrixTransform(j),h.position.left=m.x,h.position.top=m.y,l.x+=i.width,l.y+=i.height,m=l.matrixTransform(j),h.width=m.x-h.position.left,h.height=m.y-h.position.top,h.position.left+=f.scrollLeft(),h.position.top+=f.scrollTop()}return h},r.ajax=function(a){var b=a.plugins.ajax;return"object"==typeof b?b:a.plugins.ajax=new K(a)},r.ajax.initialize="render",r.ajax.sanitize=function(a){var b=a.content,c;b&&"ajax"in b&&(c=b.ajax,typeof c!="object"&&(c=a.content.ajax={url:c}),"boolean"!=typeof c.once&&c.once&&(c.once=!!c.once))},a.extend(b,q.defaults,{content:{ajax:{loading:b,once:b}}}),r.tip=function(a){var b=a.plugins.tip;return"object"==typeof b?b:a.plugins.tip=new M(a)},r.tip.initialize="render",r.tip.sanitize=function(a){var c=a.style,d;c&&"tip"in c&&(d=a.style.tip,typeof d!="object"&&(a.style.tip={corner:d}),/string|boolean/i.test(typeof d.corner)||(d.corner=b),typeof d.width!="number"&&delete d.width,typeof d.height!="number"&&delete d.height,typeof d.border!="number"&&d.border!==b&&delete d.border,typeof d.offset!="number"&&delete d.offset)},a.extend(b,q.defaults,{style:{tip:{corner:b,mimic:c,width:6,height:6,border:b,offset:0}}}),r.modal=function(a){var b=a.plugins.modal;return"object"==typeof b?b:a.plugins.modal=new N(a)},r.modal.initialize="render",r.modal.sanitize=function(a){a.show&&(typeof a.show.modal!="object"?a.show.modal={on:!!a.show.modal}:typeof a.show.modal.on=="undefined"&&(a.show.modal.on=b))},r.modal.zindex=q.zindex-200,r.modal.focusable=["a[href]","area[href]","input","select","textarea","button","iframe","object","embed","[tabindex]","[contenteditable]"],a.extend(b,q.defaults,{show:{modal:{on:c,effect:b,blur:b,stealfocus:b,escape:b}}}),r.viewport=function(a,b,c,d,n,q,r){function J(a,c,d,e,f,g,h,i,j){var k=b[f],l=v[a],n=w[a],q=d===p,r=-C.offset[f]+B.offset[f]+B["scroll"+f],s=l===f?j:l===g?-j:-j/2,t=n===f?i:n===g?-i:-i/2,u=E&&E.size?E.size[h]||0:0,x=E&&E.corner&&E.corner.precedance===a&&!q?u:0,y=r-k+x,z=k+j-B[h]-r+x,A=s-(v.precedance===a||l===v[c]?t:0)-(n===m?i/2:0);return q?(x=E&&E.corner&&E.corner.precedance===c?u:0,A=(l===f?1:-1)*s-x,b[f]+=y>0?y:z>0?-z:0,b[f]=Math.max(-C.offset[f]+B.offset[f]+(x&&E.corner[a]===m?E.offset:0),k-A,Math.min(Math.max(-C.offset[f]+B.offset[f]+B[h],k+A),b[f]))):(e*=d===o?2:0,y>0&&(l!==f||z>0)?(b[f]-=A+e,H["invert"+a](f)):z>0&&(l!==g||y>0)&&(b[f]-=(l===m?-A:A)+e,H["invert"+a](g)),b[f]<r&&-b[f]>z&&(b[f]=k,H=undefined)),b[f]-k}var s=c.target,t=a.elements.tooltip,v=c.my,w=c.at,x=c.adjust,y=x.method.split(" "),z=y[0],A=y[1]||y[0],B=c.viewport,C=c.container,D=a.cache,E=a.plugins.tip,F={left:0,top:0},G,H,I;if(!B.jquery||s[0]===window||s[0]===document.body||x.method==="none")return F;G=t.css("position")==="fixed",B={elem:B,height:B[(B[0]===window?"h":"outerH")+"eight"](),width:B[(B[0]===window?"w":"outerW")+"idth"](),scrollleft:G?0:B.scrollLeft(),scrolltop:G?0:B.scrollTop(),offset:B.offset()||{left:0,top:0}},C={elem:C,scrollLeft:C.scrollLeft(),scrollTop:C.scrollTop(),offset:C.offset()||{left:0,top:0}};if(z!=="shift"||A!=="shift")H=v.clone();return F={left:z!=="none"?J(e,f,z,x.x,j,l,g,d,q):0,top:A!=="none"?J(f,e,A,x.y,i,k,h,n,r):0},H&&D.lastClass!==(I=u+"-pos-"+H.abbrev())&&t.removeClass(a.cache.lastClass).addClass(a.cache.lastClass=I),F},r.imagemap=function(b,c,d,e){function v(a,b,c){var d=0,e=1,f=1,g=0,h=0,n=a.width,o=a.height;while(n>0&&o>0&&e>0&&f>0){n=Math.floor(n/2),o=Math.floor(o/2),c.x===j?e=n:c.x===l?e=a.width-n:e+=Math.floor(n/2),c.y===i?f=o:c.y===k?f=a.height-o:f+=Math.floor(o/2),d=b.length;while(d--){if(b.length<2)break;g=b[d][0]-a.position.left,h=b[d][1]-a.position.top,(c.x===j&&g>=e||c.x===l&&g<=e||c.x===m&&(g<e||g>a.width-e)||c.y===i&&h>=f||c.y===k&&h<=f||c.y===m&&(h<f||h>a.height-f))&&b.splice(d,1)}}return{left:b[0][0],top:b[0][1]}}c.jquery||(c=a(c));var f=b.cache.areas={},g=(c[0].shape||c.attr("shape")).toLowerCase(),h=c[0].coords||c.attr("coords"),n=h.split(","),o=[],p=a('img[usemap="#'+c.parent("map").attr("name")+'"]'),q=p.offset(),r={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10}},s=0,t=0,u;q.left+=Math.ceil((p.outerWidth()-p.width())/2),q.top+=Math.ceil((p.outerHeight()-p.height())/2);if(g==="poly"){s=n.length;while(s--)t=[parseInt(n[--s],10),parseInt(n[s+1],10)],t[0]>r.position.right&&(r.position.right=t[0]),t[0]<r.position.left&&(r.position.left=t[0]),t[1]>r.position.bottom&&(r.position.bottom=t[1]),t[1]<r.position.top&&(r.position.top=t[1]),o.push(t)}else{s=-1;while(s++<n.length)o.push(parseInt(n[s],10))}switch(g){case"rect":r={width:Math.abs(o[2]-o[0]),height:Math.abs(o[3]-o[1]),position:{left:Math.min(o[0],o[2]),top:Math.min(o[1],o[3])}};break;case"circle":r={width:o[2]+2,height:o[2]+2,position:{left:o[0],top:o[1]}};break;case"poly":r.width=Math.abs(r.position.right-r.position.left),r.height=Math.abs(r.position.bottom-r.position.top),d.abbrev()==="c"?r.position={left:r.position.left+r.width/2,top:r.position.top+r.height/2}:(f[d+h]||(r.position=v(r,o.slice(),d),e&&(e[0]==="flip"||e[1]==="flip")&&(r.offset=v(r,o.slice(),{x:d.x===j?l:d.x===l?j:m,y:d.y===i?k:d.y===k?i:m}),r.offset.left-=r.position.left,r.offset.top-=r.position.top),f[d+h]=r),r=f[d+h]),r.width=r.height=0}return r.position.left+=q.left,r.position.top+=q.top,r},r.bgiframe=function(b){var d=a.browser,e=b.plugins.bgiframe;return a("select, object").length<1||!d.msie||(""+d.version).charAt(0)!=="6"?c:"object"==typeof e?e:b.plugins.bgiframe=new O(b)},r.bgiframe.initialize="render"});
\ No newline at end of file diff --git a/module/web/static/js/utils/lazyRequire.js b/module/web/static/js/utils/lazyRequire.js new file mode 100644 index 000000000..d20d78610 --- /dev/null +++ b/module/web/static/js/utils/lazyRequire.js @@ -0,0 +1,89 @@ +// Define the module. +define( +	[ +		"require" +	], +	function( require ){ + + +		// Define the states of loading for a given set of modules +		// within a require() statement. +		var states = { +			unloaded: "UNLOADED", +			loading: "LOADING", +			loaded: "LOADED" +		}; + + +		// Define the top-level module container. Mostly, we're making +		// the top-level container a non-Function so that users won't +		// try to invoke this without calling the once() method below. +		var lazyRequire = {}; + + +		// I will return a new, unique instance of the requrieOnce() +		// method. Each instance will only call the require() method +		// once internally. +		lazyRequire.once = function(){ + +			// The modules start in an unloaded state before +			// requireOnce() is invoked by the calling code. +			var state = states.unloaded; +            var args; + +			var requireOnce = function( dependencies, loadCallback ){ + +				// Use the module state to determine which method to +				// invoke (or just to ignore the invocation). +				if (state === states.loaded){ +					loadCallback.apply(null, args); + +				// The modules have not yet been requested - let's +				// lazy load them. +				} else if (state !== states.loading){ + +					// We're about to load the modules asynchronously; +					// flag the interim state. +					state = states.loading; + +					// Load the modules. +					require( +						dependencies, +						function(){ + +                            args = arguments; +							loadCallback.apply( null, args ); +                            state = states.loaded; + + +						} +					); + +				// RequireJS is currently loading the modules +				// asynchronously, but they have not finished +				// loading yet. +				} else { + +					// Simply ignore this call. +					return; + +				} + +			}; + +			// Return the new lazy loader. +			return( requireOnce ); + +		}; + + +		// -------------------------------------------------- // +		// -------------------------------------------------- // + + +		// Return the module definition. +		return( lazyRequire ); + + +	} +);
\ No newline at end of file diff --git a/module/web/static/js/views/headerView.js b/module/web/static/js/views/headerView.js index 0c6447c3e..21b591a3d 100644 --- a/module/web/static/js/views/headerView.js +++ b/module/web/static/js/views/headerView.js @@ -9,7 +9,6 @@ define(['jquery', 'backbone', 'flot', 'jqueryui/progressbar'], function($, Backb          },          initialize: function() { -            this.$el.find("#globalprogress").progressbar({ value:37 });              var totalPoints = 100;              var data = []; diff --git a/module/web/static/js/views/modal/modalView.js b/module/web/static/js/views/modal/modalView.js index efc0cc3cb..b20aab57d 100644 --- a/module/web/static/js/views/modal/modalView.js +++ b/module/web/static/js/views/modal/modalView.js @@ -1,11 +1,14 @@ -define(['jquery', 'backbone', 'underscore', 'omniwindow'], function($, Backbone, _) { +define(['jquery', 'backbone', 'underscore', 'text!tpl/default/modal.html', 'omniwindow'], function($, Backbone, _, template) {      return Backbone.View.extend({          events: { - +            'click .btn-close': 'hide', +            'click .close': 'hide'          }, +        template: _.template(template), +          dialog: null,          initialize: function() { @@ -13,16 +16,15 @@ define(['jquery', 'backbone', 'underscore', 'omniwindow'], function($, Backbone,          },          render: function() { -            this.$el.addClass('modal'); -            this.$el.addClass('modal-closed'); -            this.$el.append(this.renderContent()); +            this.$el.html(this.template({ content: this.renderContent().html(), header: this.getHeader()})); +            this.$el.addClass('modal hide');              this.$el.css({opacity: 0, scale: 0.7});              $("body").append(this.el);              this.dialog = this.$el.omniWindow({                  overlay: {                      selector: '#modal-overlay', -                    hideClass: 'modal-closed', +                    hideClass: 'hide',                      animations: {                          hide: function(subjects, internalCallback) {                              subjects.overlay.fadeOut(400, function() { @@ -35,7 +37,7 @@ define(['jquery', 'backbone', 'underscore', 'omniwindow'], function($, Backbone,                              });                          }}},                  modal: { -                    hideClass: 'modal-closed', +                    hideClass: 'hide',                      animations: {                          hide: function(subjects, internalCallback) {                              subjects.modal.transition({opacity: 'hide', scale: 0.7}, 250, function() { @@ -53,7 +55,11 @@ define(['jquery', 'backbone', 'underscore', 'omniwindow'], function($, Backbone,              return this;          },          renderContent: function() { -            return $('<h1>Dialog</h1>'); +            return $('<h1>Content!</h1>'); +        }, + +        getHeader: function() { +            return 'Dialog';          },          show: function() { @@ -61,6 +67,8 @@ define(['jquery', 'backbone', 'underscore', 'omniwindow'], function($, Backbone,                  this.render();              this.dialog.trigger('show'); + +            // TODO: set focus on first element          },          hide: function() { diff --git a/module/web/static/js/views/packageView.js b/module/web/static/js/views/packageView.js index b820b9ba8..171325d1f 100644 --- a/module/web/static/js/views/packageView.js +++ b/module/web/static/js/views/packageView.js @@ -1,5 +1,5 @@ -define(['jquery', 'backbone', 'underscore', 'views/fileView', 'views/modal/modalView'], -    function($, Backbone, _, fileView, modalView) { +define(['jquery', 'backbone', 'underscore', 'views/fileView', 'utils/lazyRequire'], +    function($, Backbone, _, fileView, lazyLoader) {      // Renders a single package item      return Backbone.View.extend({ @@ -8,10 +8,11 @@ define(['jquery', 'backbone', 'underscore', 'views/fileView', 'views/modal/modal          events: {              'click .load': 'load',              'click .delete': 'delete', -            'click .show': 'show' +            'click .show-dialog': 'show'          },          modal: null, +        requireOnce: lazyLoader.once(),          initialize: function() {              this.model.on('change', this.render, this); @@ -22,7 +23,7 @@ define(['jquery', 'backbone', 'underscore', 'views/fileView', 'views/modal/modal              this.$el.html('Package ' + this.model.get('pid') + ': ' + this.model.get('name'));              this.$el.append($('<a class="load" href="#"> Load</a>'));              this.$el.append($('<a class="delete" href="#"> Delete</a>')); -            this.$el.append($('<a class="show" href="#"> Show</a>')); +            this.$el.append($('<a class="show-dialog" href="#"> Show</a>'));              if (this.model.isLoaded()) {                  var ul = $('<ul></ul>'); @@ -47,11 +48,13 @@ define(['jquery', 'backbone', 'underscore', 'views/fileView', 'views/modal/modal          },          show: function() { -            if (this.modal === null) -                this.modal = new modalView(); - -            this.modal.show(); -        } - +            var self = this; +            this.requireOnce(['views/modal/modalView'], function(modalView){ +                if (self.modal === null) +                    self.modal = new modalView(); + +                self.modal.show(); +            }); +         }      });  });
\ No newline at end of file diff --git a/module/web/templates/default/backbone/modal.html b/module/web/templates/default/backbone/modal.html new file mode 100644 index 000000000..97a5a4d97 --- /dev/null +++ b/module/web/templates/default/backbone/modal.html @@ -0,0 +1,11 @@ +<div class="modal-header"> +    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> +    <h3><%- header %></h3> +</div> +<div class="modal-body" tabindex="0"> +    <%- content %> +</div> +<div class="modal-footer"> +    <a href="#" class="btn btn-close">Close</a> +    <a href="#" class="btn btn-primary">Save</a> +</div>
\ No newline at end of file diff --git a/module/web/templates/default/base.html b/module/web/templates/default/base.html index e4c606efa..34957344c 100644 --- a/module/web/templates/default/base.html +++ b/module/web/templates/default/base.html @@ -9,10 +9,10 @@      <!-- TODO Include this font -->
      <link href="http://fonts.googleapis.com/css?family=Abel" rel="stylesheet" type="text/css"/>
 +    <link href="static/css/bootstrap.css" rel="stylesheet" type="text/css"/>
      <link href="static/css/font.css" rel="stylesheet" type="text/css"/>
      <link href="static/css/default/style.css" rel="stylesheet" type="text/css" media="screen"/>
      <link href="static/css/black-tie/jquery-ui-1.8.22.custom.css" rel="stylesheet" type="text/css" media="screen"/>
 -    <link href="static/css/jquery.qtip.min.css" rel="stylesheet" type="text/css" media="screen"/>
      <script type="text/javascript" data-main="static/js/default" src="static/js/libs/require-2.0.6.js"></script>
      <script>
 @@ -35,13 +35,10 @@              {% if user %}
                  <div id="notification_div">
                      No runnings tasks
 -                    <div id="globalprogress"></div>
 +                    <div class="progress progress-warning progress-striped" id="globalprogress">
 +                        <div class="bar" style="width: 60%"></div>
 +                    </div>
                  </div>
 -                <script>
 -                    $(document).ready(function () {
 -                        $("#globalprogress").progressbar({ value:37 });
 -                    });
 -                </script>
                  <div class="header_block">
                      <div class="header_icon" id="header_user">
 @@ -109,104 +106,7 @@          </div>
      </div>
  </footer>
 -<script type="text/javascript">
 -    $(function () {
 -        var totalPoints = 100;
 -        var data = [];
 -
 -        function getRandomData() {
 -            if (data.length > 0)
 -                data = data.slice(1);
 -
 -            // do a random walk
 -            while (data.length < totalPoints) {
 -                var prev = data.length > 0 ? data[data.length - 1] : 50;
 -                var y = prev + Math.random() * 10 - 5;
 -                if (y < 0)
 -                    y = 0;
 -                if (y > 100)
 -                    y = 100;
 -                data.push(y);
 -            }
 -
 -            // zip the generated y values with the x values
 -            var res = [];
 -            for (var i = 0; i < data.length; ++i)
 -                res.push([i, data[i]])
 -            return res;
 -        }
 -
 -        var updateInterval = 1500;
 -
 -        var speedgraph = $.plot($("#speedgraph"), [getRandomData()], {
 -            series:{
 -                lines:{ show:true, lineWidth:2 },
 -                shadowSize:0,
 -                color:"#fee247"
 -            },
 -            xaxis:{ ticks:[], mode:"time" },
 -            yaxis:{ ticks:[], min:0, autoscaleMargin:0.1 },
 -            grid:{
 -                show:true,
 -//            borderColor: "#757575",
 -                borderColor:"white",
 -                borderWidth:1,
 -                labelMargin:0,
 -                axisMargin:0,
 -                minBorderMargin:0
 -            }
 -        });
 -
 -        function update() {
 -            speedgraph.setData([ getRandomData() ]);
 -            // since the axes don't change, we don't need to call plot.setupGrid()
 -            speedgraph.draw();
 -
 -            setTimeout(update, updateInterval);
 -        }
 -
 -        update();
 -
 -    });
 -</script>
 -<script type="text/javascript">
 -    $(function () {
 -        $("#header_speed").qtip({
 -            content:{
 -                text:"Download speed"
 -            },
 -            position:{
 -                my:'top center',
 -                at:'bottom center'
 -            },
 -            show:{ delay:1000},
 -            style:{
 -                classes:'ui-tooltip-dark ui-tooltip-shadow'
 -            }
 -        });
 -
 -        $("#notification_div").qtip({
 -            content:{
 -                title: {text: "Running Tasks", button:true},
 -                text:  "Content"
 -            },
 -            position:{
 -                my:'top center',
 -                at:'bottom center'
 -            },
 -            show:{ delay:500, effect: function(offset) {
 -                $(this).slideDown(250); // "this" refers to the tooltip
 -                    }},
 -            style:{
 -                classes:'ui-tooltip-light ui-tooltip-shadow',
 -                width: $("#globalprogress").outerWidth(),
 -                height: 100
 -            },
 -            hide: false
 -        });
 -    });
 -</script>
 -<div id="modal-overlay" class="modal-closed"></div>
 +<div id="modal-overlay" class="hide"></div>
  {% block deferred %}
  {% endblock deferred %}
  </body>
  | 
