From 70b9cdaa13be68603e73219cdd7cf462bf308329 Mon Sep 17 00:00:00 2001 From: Ilya Kharin Date: Mon, 25 Mar 2013 21:40:29 +0400 Subject: [PATCH] Add debian files Change-Id: I66b7f042fe08609de3345a62f23e05128fc5e5a6 --- debian/README.compression | 10 + debian/changelog | 460 ++ debian/compat | 1 + debian/conffile | 1 + debian/control | 68 + debian/copyright | 55 + debian/openstack-dashboard-ubuntu-theme.dirs | 4 + .../openstack-dashboard-ubuntu-theme.install | 4 + debian/openstack-dashboard-ubuntu-theme.links | 2 + .../openstack-dashboard-ubuntu-theme.postinst | 11 + .../openstack-dashboard-ubuntu-theme.postrm | 9 + debian/openstack-dashboard.conf | 7 + debian/openstack-dashboard.dirs | 3 + debian/openstack-dashboard.install | 6 + debian/openstack-dashboard.links | 3 + debian/openstack-dashboard.postinst | 21 + debian/openstack-dashboard.postrm | 14 + debian/openstack-dashboard.preinst | 10 + debian/patches/add_juju_settings_panel.patch | 309 + .../patches/fix-dashboard-django-wsgi.patch | 13 + debian/patches/fix-dashboard-manage.patch | 12 + debian/patches/fix-ubuntu-tests.patch | 41 + debian/patches/series | 8 + debian/patches/ubuntu_local_settings.patch | 44 + debian/pydist-overrides | 2 + debian/python-django-horizon.install | 1 + .../python-django-horizon.lintian-overrides | 2 + debian/rules | 47 + debian/source/format | 1 + debian/source/include-binaries | 5 + .../openstack-dashboard/css/d272fede7fb7.css | 5620 +++++++++++++++++ .../openstack-dashboard/js/967e5ade6890.js | 2 + .../openstack-dashboard/js/a20d9856950b.js | 227 + .../static/openstack-dashboard/manifest.json | 5 + debian/theme/css/ubuntu.css | 5276 ++++++++++++++++ debian/theme/img/dots.png | Bin 0 -> 163 bytes debian/theme/img/favicon-ubuntu.ico | Bin 0 -> 623 bytes debian/theme/img/header_stripes.png | Bin 0 -> 474 bytes debian/theme/img/juju.png | Bin 0 -> 4206 bytes debian/theme/img/ubuntu.png | Bin 0 -> 4167 bytes debian/theme/templates/403.html | 28 + debian/theme/templates/404.html | 27 + debian/theme/templates/500.html | 27 + debian/theme/templates/_stylesheets.html | 2 + debian/theme/ubuntu_theme.py | 9 + debian/watch | 3 + 46 files changed, 12400 insertions(+) create mode 100644 debian/README.compression create mode 100644 debian/changelog create mode 100755 debian/compat create mode 100755 debian/conffile create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/openstack-dashboard-ubuntu-theme.dirs create mode 100644 debian/openstack-dashboard-ubuntu-theme.install create mode 100644 debian/openstack-dashboard-ubuntu-theme.links create mode 100755 debian/openstack-dashboard-ubuntu-theme.postinst create mode 100755 debian/openstack-dashboard-ubuntu-theme.postrm create mode 100755 debian/openstack-dashboard.conf create mode 100644 debian/openstack-dashboard.dirs create mode 100644 debian/openstack-dashboard.install create mode 100755 debian/openstack-dashboard.links create mode 100755 debian/openstack-dashboard.postinst create mode 100755 debian/openstack-dashboard.postrm create mode 100755 debian/openstack-dashboard.preinst create mode 100644 debian/patches/add_juju_settings_panel.patch create mode 100644 debian/patches/fix-dashboard-django-wsgi.patch create mode 100644 debian/patches/fix-dashboard-manage.patch create mode 100644 debian/patches/fix-ubuntu-tests.patch create mode 100644 debian/patches/series create mode 100644 debian/patches/ubuntu_local_settings.patch create mode 100755 debian/pydist-overrides create mode 100644 debian/python-django-horizon.install create mode 100755 debian/python-django-horizon.lintian-overrides create mode 100755 debian/rules create mode 100755 debian/source/format create mode 100755 debian/source/include-binaries create mode 100755 debian/static/openstack-dashboard/css/d272fede7fb7.css create mode 100755 debian/static/openstack-dashboard/js/967e5ade6890.js create mode 100755 debian/static/openstack-dashboard/js/a20d9856950b.js create mode 100755 debian/static/openstack-dashboard/manifest.json create mode 100644 debian/theme/css/ubuntu.css create mode 100755 debian/theme/img/dots.png create mode 100755 debian/theme/img/favicon-ubuntu.ico create mode 100755 debian/theme/img/header_stripes.png create mode 100755 debian/theme/img/juju.png create mode 100755 debian/theme/img/ubuntu.png create mode 100644 debian/theme/templates/403.html create mode 100644 debian/theme/templates/404.html create mode 100644 debian/theme/templates/500.html create mode 100644 debian/theme/templates/_stylesheets.html create mode 100644 debian/theme/ubuntu_theme.py create mode 100755 debian/watch diff --git a/debian/README.compression b/debian/README.compression new file mode 100644 index 0000000..842c167 --- /dev/null +++ b/debian/README.compression @@ -0,0 +1,10 @@ +Until this can be scripted and integrated into package build, updating the +pre-compressed static CSS and JS requires a some manual steps: + +1. apt-get install node-less. +2. Install dependencies of python-django-horizon. +3. Run 'python ./manage.py compress --force' +4. Currently, this will generate all compressed and compiled files plus a JSON + manifest in the static directoyr (static/dashboard/). +5. Remove the old, obsolete CS, JS and manifest from debian/static/openstack-dashboard. +6. Update the files in debian/static/openstack-dashboard with the new files. diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..4acd0b7 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,460 @@ +horizon (1:2013.1~rc1-0ubuntu1~cloud0) precise-grizzly; urgency=low + + * New upstream release candidate for the Ubuntu Cloud Archive. + + -- James Page Wed, 20 Mar 2013 13:36:34 +0000 + +horizon (1:2013.1~rc1-0ubuntu1) raring; urgency=low + + [ James Page ] + * New upstream release candidate for Grizzly: + - Recompress static JS and CSS and generate new manifest.json for + offline compression. + * d/watch: Update uversionmangle to deal with upstream versioning + changes, remove tarballs.openstack.org. + * d/control: Version python-compressor >= 1.2 (LP: #1130610). + + [ Adam Gandelman ] + * debian/patches/ubuntu_local_settings.py: Refresh, specify memcache + location as part of CACHES, as per upstream changes to example config. + + -- James Page Wed, 20 Mar 2013 11:20:17 +0000 + +horizon (2013.1.g3-0ubuntu2) raring; urgency=low + + * Recompress static JS and CSS and generate new manifest.json for offline + compression. + + -- James Page Tue, 26 Feb 2013 07:35:51 +0000 + +horizon (2013.1.g3-0ubuntu1) raring; urgency=low + + [ James Page ] + * Recompress static JS and CSS and generate new manifest.json for offline + compression in preparation for Grizzly-3. + + [ Chuck Short ] + * New usptream release. + + -- Chuck Short Fri, 22 Feb 2013 09:43:22 -0600 + +horizon (2013.1~g2-0ubuntu1) raring; urgency=low + + [ Adam Gandelman ] + * Recompress static JS and CSS and generate new manifest.json for offline + compression in preparation for Grizzly-2. + + [ Chuck Short ] + * New upstream release. + + -- Chuck Short Fri, 11 Jan 2013 08:26:40 -0600 + +horizon (2013.1~g1-0ubuntu1) raring; urgency=low + + [ Adam Gandelman ] + * debian/patches/add_juju_settings_pannel.patch: Disable during + Grizzly dev. cycle. + + [ Chuck Short ] + * New upstream relase. + * Refreshed patches. + + -- Chuck Short Fri, 23 Nov 2012 08:49:14 -0600 + +horizon (2012.2-0ubuntu2) quantal; urgency=low + + * debian/control: Set strict version requirements between python-django-horizon, + openstack-dashboard, and openstack-ubuntu-theme. (LP: #1061961) + * debian/theme/css/ubuntu.css: Refreshed against Folsom. (LP: #1064420) + * debian/patches/add_juju_panel.patch: Update and refresh for Folsom + compatability. (LP: #1064605) + * debian/patches/allow_alternate_css.patch: Remove unapplied, obsolete + patch. + + -- Adam Gandelman Tue, 09 Oct 2012 09:59:55 -0700 + +horizon (2012.2-0ubuntu1) quantal; urgency=low + + * New upstream release. + + -- Chuck Short Thu, 27 Sep 2012 11:56:26 -0500 + +horizon (2012.2~rc2-0ubuntu1) quantal; urgency=low + + [ Adam Gandelman ] + * Re-enable openstack-dashboard-ubuntu-theme. + + [ Chuck Short ] + * New upstream release + + -- Chuck Short Fri, 21 Sep 2012 08:03:36 -0500 + +horizon (2012.2~rc1-0ubuntu1) quantal; urgency=low + + [ Adam Gandelman ] + * debian/patches/ubuntu_local_settings.patch: Squash all patches that + touch local_settings.py.example into one. + * Drop node-less dependency (LP: #1024326). + - debian/static/openstack-dashboard: Pre-compressed and compiled JS, CSS + and compressor manifest.json. + - debian/patches/ubuntu_local_settings.patch: Set COMPRESS_OFFLINE=True + to enable offline compression and pre-compressed static files by + default. + + [ Chuck Short ] + * New upstream release + + -- Chuck Short Wed, 12 Sep 2012 12:21:33 -0500 + +horizon (2012.2~rc1~20120904.2043-0ubuntu1) quantal; urgency=low + + [ Adam Gandelman ] + * debian/patches/fix-coverage-binary-name.patch: Drop, merge into + fix-ubuntu-tests.patch. + * debian/patches/set_login_redirects.patch: Configure login URLs in + local_settings.py according to the default apache configuration + installed. (LP: #1037349) + * debian/patches/fix-dashboard-manage.patch: Refresh. + + [ Soren Hansen ] + * Update debian/watch to account for symbolically named tarballs and + use newer URL. + * Fix Launchpad URLs in debian/watch. + + [ Chuck Short ] + * New upstream version + + -- Chuck Short Fri, 07 Sep 2012 12:35:36 -0500 + +horizon (2012.2~f3-0ubuntu2) quantal; urgency=low + + * Depend on python-openstack-auth rather than on the removed + python-django-openstack-auth. + + -- Colin Watson Wed, 22 Aug 2012 10:34:11 +0100 + +horizon (2012.2~f3-0ubuntu1) quantal; urgency=low + + [ Chuck Short ] + * New upstream release. + * debian/patches/fix-ubuntu-tests.patch: Fix test suites again to + run during the builds. + * debian/watch: Update. + * debian/control: Add python-glanceclient. (LP: #1030911) + * debian/openstack-dashboard.conf: Don't hijack apache's webroot. (LP: + #1020313) + * debian/control: Update horizon deps to reflect reality. + + [ Adam Gandelman ] + * debian/control: Bump required python-django version to 1.4. + * wrap-and-sort. + * Fix (LP: #1036571): + - debian/rules, openstack-dashboard.{links, dirs, postinst}: Add required + symlinks and directories to allow Horizon to function with the packaged + lessc. + - debian/control: Add python-{cinder, swift, quantum}client, + python-django-openstack-auth, python-netaddr, python-compressor, lessc. + * debian/rules: Improve dh_auto_clean. + + -- Chuck Short Thu, 16 Aug 2012 14:01:33 -0500 + +horizon (2012.2~f2-0ubuntu1) quantal; urgency=low + + * New usptream version. + + -- Chuck Short Fri, 06 Jul 2012 11:38:55 -0400 + +horizon (2012.2~f2~20120622.1833-0ubuntu2) quantal; urgency=low + + * debian/patches/{use-memcache.patch, turn-off-debug.patch}: Refresh. + + -- Adam Gandelman Tue, 03 Jul 2012 14:09:15 -0700 + +horizon (2012.2~f2~20120622.1833-0ubuntu1) quantal; urgency=low + + [ Chuck Short ] + * New upstream version. + * debian/copyright: Fix lintian warnings. + + [ Adam Gandelman ] + * Disabled during Folsom dev cycle, to be refreshed against first Folsom RC: + - debian/patches/add_juju_settings_panel.patch + - debian/patches/allow_alternate_css.patch + * debian/patches/fix-coverage-binary-name.patch: Refreshed. + * debian/patches/turn-off-debug.patch: Refreshed. + + -- Chuck Short Fri, 22 Jun 2012 11:31:06 -0400 + +horizon (2012.2~f2~20120530.1777-0ubuntu1) quantal; urgency=low + + * New upstream release. + * debian/patches/add_juju_settings_panel.patch: Refreshed + * debian/patches/turn-off-debug.patch: Refreshed + + -- Chuck Short Fri, 01 Jun 2012 10:57:56 -0400 + +horizon (2012.2~f1-0ubuntu1) quantal; urgency=low + + * New usptream release. + * Prepare for quantal: + - debian/patches/fix-coverage-binary-name.patch: Refreshed. + * Temporarily pass the testsuite. + + -- Chuck Short Thu, 24 May 2012 14:33:20 -0400 + +horizon (2012.1-0ubuntu8) precise-proposed; urgency=low + + * debian/control: Added memcached as a Recommends of python-django-horizon, + to ensure a memcached is running and can be used via default install. + - LP: #988435 + + -- Dave Walker (Daviey) Wed, 25 Apr 2012 18:30:00 +0100 + +horizon (2012.1-0ubuntu7) precise; urgency=low + + * debian/patches/use-memcache.patch: Use memcache for session engine by + default to avoid frequent logouts, as sessions are not shared across + workers. LP: #968850 + + -- Dave Walker (Daviey) Wed, 25 Apr 2012 10:55:18 +0100 + +horizon (2012.1-0ubuntu6) precise; urgency=low + + [ Adam Gandelman ] + * debian/openstack-dashboard.links: Create symlink to horizon's static js + files. (LP: #987535) + + [ Jamie Strandboge ] + * debian/control: don't Build-Depends on python-cherrypy3. It is used by + only the dashboard tests and they are disabled in Ubuntu builds + + -- Adam Gandelman Tue, 24 Apr 2012 10:43:12 -0700 + +horizon (2012.1-0ubuntu5) precise; urgency=low + + [ Adam Gandelman ] + * debian/patches/turn-off-debug.patch: Enable again + * debian/openstack-dashboard.conf: Add an Alias mapping '/static' + to '/usr/share/opensack-dashboard/openstack_dashboard/static/' + (LP: #980787) + * debian/patches/allow_alternate_css.patch: Allow loading of ubuntu.css + and favicon if they exists + * debian/control: Drop libjs-jquery dependencies + + [ Dave Walker (Daviey) ] + * debian/control: Drop duplicate depends python-cloudfiles. + + -- Dave Walker (Daviey) Mon, 23 Apr 2012 10:04:39 +0100 + +horizon (2012.1-0ubuntu4) precise; urgency=low + + * debian/patches/turn-off-debug.patch; Reverted, breaks CSS templates. + (LP: #980787) + + -- Chuck Short Fri, 13 Apr 2012 09:58:54 -0400 + +horizon (2012.1-0ubuntu3) precise; urgency=low + + [ Adam Gandelman ] + * debian/patches/add_juju_settings_panel.patch, debian/rules, + debian/juju.png: Add an Ubuntu-specific panel to easily generate + Juju environments.yaml + + [ Chuck Short ] + * debian/patches/turn-off-debug.patch: Turn off debugging. + + -- Chuck Short Thu, 12 Apr 2012 12:42:04 -0400 + +horizon (2012.1-0ubuntu2) precise; urgency=low + + * Make openstack-dashboard Pre-Depends: dpkg (>= 1.15.7.2) for + dpkg-maintscript-helper. + + -- Colin Watson Tue, 10 Apr 2012 17:58:25 +0100 + +horizon (2012.1-0ubuntu1) precise; urgency=low + + * New upstream release. + * debian/patches/turn-off-debug.patch: Turn off debugging. + + -- Chuck Short Thu, 12 Apr 2012 10:46:00 -0400 + +horizon (2012.1~rc2-0ubuntu1) precise; urgency=low + + [ Chuck Short ] + * New usptream release. + * debian/control: Use python-cherrypy3 + * debian/rules: Update pythonpath in order to run tests. + * debian/patches/fix-coverage-binary-name.patch: Make the testsuite + run. + * debian/rules: Fail build if tests fail. + + [ A Gandelman ] + * debian/control: Add python-memcache + * debain/dashboard.conf: Update to match current upstream documentation + (LP: #966069) + + [ Adrien Cunin ] + * Renamed Apache config file from dashboard.conf to openstack-dashboard.conf + (LP: #965410) + - Updated post{inst,rm} and added preinst to handle correctly the rename + + -- Chuck Short Wed, 04 Apr 2012 07:21:15 -0400 + +horizon (2012.1~rc1-0ubuntu1) precise; urgency=low + + * New upstream release. + + -- Chuck Short Tue, 20 Mar 2012 14:49:24 -0400 + +horizon (2012.1~rc1~20120315.1545-0ubuntu1) precise; urgency=low + + [Adam Gandelman] + * New upstream release. + + [Chuck Short] + * debian/control: Update run-time depends + + -- Adam Gandelman Fri, 16 Mar 2012 12:29:27 -0700 + +horizon (2012.1~rc1~20120308.1479-0ubuntu1) precise; urgency=low + + * New upstream version. + * debian/rules: Fix symlink when installing horizon. + (LP: #947118) + * debian/control: Add python-django-nose as a dep. (LP: #944235) + * debian/control: Fix broken depends. + + -- Chuck Short Fri, 09 Mar 2012 11:50:22 -0500 + +horizon (2012.1~e4-0ubuntu1) precise; urgency=low + + * New upstream version. + * debian/rules: Update due to upstream build changes. + * debian/control: Update standards-version. + * debian/patches/openstack-config-settings.patch: Dropped + * debian/patches/fix-dashboard-django-wsgi.patch: Refreshed + * debian/patches/fix-dashboard-manage.patch: Refreshed + * debian/openstack-dashboard.install: Update due to upstream build changes. + * debian/dashboard: Update to upstream build changes. + * debian/pydist-overrides: Dont try to install python-django-nose-selenium. + * debian/openstack-dashboard.install: Add missing config files. + * debian/rules: Fix broken settings.py + * debian/patches/pkg-setup.patch: Copy missing templates, shameously + taken from debian + * debian/patches/fix-broken-tarbll.patch: Add missing files. + + -- Chuck Short Fri, 02 Mar 2012 12:11:59 -0500 + +horizon (2012.1~e4~20120224.1386-0ubuntu1) precise; urgency=low + + * New upstream version. + + -- Chuck Short Fri, 24 Feb 2012 10:49:27 -0500 + +horizon (2012.1~e4~20120217.1354-0ubuntu1) precise; urgency=low + + * debian/patches/openstack-config-settings.patch: Refreshed. + * debian/copyright: Updated copyright. + * debian/rules: Diable tests since it doesnt work without a + virtualenv. + * New upstream release. + + -- Chuck Short Fri, 17 Feb 2012 10:12:25 -0500 + +horizon (2012.1~e4~20120210.1331-0ubuntu1) precise; urgency=low + + * New Upstream version + * debian/control: + - Add python-coverage as a build dependency. + - Add python-novaclient as a build dependency. + + -- Chuck Short Fri, 10 Feb 2012 11:09:58 -0500 + +horizon (2012.1~e4~20120202.1300-0ubuntu2) precise; urgency=low + + * debian/control: Add python-keystoneclient as a build + dependency. + + -- Chuck Short Fri, 03 Feb 2012 13:29:27 -0500 + +horizon (2012.1~e4~20120202.1300-0ubuntu1) precise; urgency=low + + * New upstream version. + * debian/control: Drop dependencies we dont need. + + -- Chuck Short Fri, 03 Feb 2012 09:55:54 -0500 + +horizon (2012.1~e3-0ubuntu1) precise; urgency=low + + * New upstream version. + * debian/conffiles: Don't wipe out local_settings.py on upgrade. + (LP: #914257) + + -- Chuck Short Thu, 26 Jan 2012 09:52:53 -0500 + +horizon (2012.1~e3~20120120.1235-0ubuntu1) precise; urgency=low + + * New upstream release. + + -- Chuck Short Fri, 20 Jan 2012 14:51:21 -0500 + +horizon (2012.1~e3~20120113.1213-0ubuntu1) precise; urgency=low + + [Chuck Short] + * Removed python-django-horizon.postinst, let dh_python2 generate instead + since python-support is not a dependency. + * Dropped python-openstack-compute from debian/control. + * Clean up debian/control. + * Restart apache when installing the openstack dashboard. + (LP: #905527) + * Dropped python-coverage not needed. + * Added transitional package for people updating from oneiric. + * Rediffed patches. + * More linitian fixes. + + [Robie Basak] + * debian/control: put python-django-horizon in Python section. + * debian/control: lintian fixes (LP: #899427): + - Put python-django-horizon in Python section + - Remove definite article from Description + * debian/copyright: fix dep5 syntax. + * debian/python-django-horizon.lintian-overrides: override for template shell + script. + + -- Chuck Short Fri, 13 Jan 2012 10:59:49 +0100 + +horizon (2012.1~e2-0ubuntu2) precise; urgency=low + + * Rebuild to drop dependencies on python2.6. + + -- Matthias Klose Mon, 02 Jan 2012 10:58:49 +0100 + +horizon (2012.1~e2-0ubuntu1) precise; urgency=low + + * New upstream release (LP: #904039) + * debian/control: Update build-depends. + * debian/watch: Fix to fetch from Launchpad ad well. + + -- Chuck Short Fri, 16 Dec 2011 16:34:56 -0500 + +horizon (2012.1~e2~20111209.1104-0ubuntu1) precise; urgency=low + + * New upstream release. + * Refreshed patches. + * debian/docs: Removed README + + -- Chuck Short Fri, 09 Dec 2011 16:18:55 -0500 + +horizon (2012.1~e1-0ubuntu~e2.20111201.1077.1) precise; urgency=low + + [ Chuck Short ] + * Initial release. + + [ Jamie Strandboge ] + * debian/patches/git-2012.1~e2~20111201.1077.patch: use 2012.1~e1 release + tarball and apply all git commits up to 2012.1~e2~20111201.1077. This + can be dropped in 2012.1~e2. + * rename python-djanog-horizon.postinst to python-django-horizon.postinst + + -- Jamie Strandboge Fri, 02 Dec 2011 16:21:52 -0600 diff --git a/debian/compat b/debian/compat new file mode 100755 index 0000000..45a4fb7 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +8 diff --git a/debian/conffile b/debian/conffile new file mode 100755 index 0000000..9144a37 --- /dev/null +++ b/debian/conffile @@ -0,0 +1 @@ +/etc/openstack-dashboard/local_settings.py diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..ee53c1f --- /dev/null +++ b/debian/control @@ -0,0 +1,68 @@ +Source: horizon +Section: net +Priority: extra +Maintainer: Chuck Short +Build-Depends: debhelper (>= 8.0.0), + pep8, + pylint, + python-all (>= 2.6.6-3~), + python-django-nose, + python-mox, + python-netaddr, + python-nose, + python-setuptools, + python-sphinx +Standards-Version: 3.9.3 +Homepage: http://launchpad.net/horizon + +Package: python-django-horizon +Section: python +Architecture: all +Depends: python-cloudfiles, + python-django (>= 1.4), + python-compressor (>= 1.2), + python-cinderclient, + python-glanceclient, + python-keystoneclient, + python-lockfile, + python-memcache, + python-netaddr, + python-novaclient, + python-openstack-auth, + python-swiftclient, + python-tz, + python-quantumclient, + ${misc:Depends}, + ${python:Depends} +Recommends: memcached +Description: Django module providing web based interaction with OpenStack + The Django-Nova project is a Django module that is used to provide web based + interactions with the OpenStack Nova cloud controller. + +Package: openstack-dashboard +Architecture: all +Pre-Depends: dpkg (>= 1.15.7.2) +Depends: adduser, + libapache2-mod-wsgi (>= 2.3), + python-django-horizon (= ${source:Version}), + ${misc:Depends}, + ${python:Depends} +Recommends: openstack-dashboard-ubuntu-theme +Description: django web interface to Openstack + The OpenStack Dashboard is a reference implementation of a Django site that + uses the Django-Nova project to provide web based interactions with the + OpenStack Nova cloud controller. + +Package: python-django-openstack +Architecture: all +Depends: python-django-horizon (= ${source:Version}), ${misc:Depends} +Description: dummy transitonal package from python-django-openstack to python-django-horizon + This transitional package from the python-django-openstack to the python-django-horizon + package. Once this package and its dependencies are installed you can remove it. + +Package: openstack-dashboard-ubuntu-theme +Architecture: all +Depends: openstack-dashboard (= ${source:Version}), ${misc:Depends}, ${python:Depends} +Description: Ubuntu theme for the Openstack dashboard + A custom Ubuntu theme for Horizon. This package is optional and overrides the + default theme and branding. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..b71f4aa --- /dev/null +++ b/debian/copyright @@ -0,0 +1,55 @@ +Format: http://dep.debian.net/deps/dep5 +Upstream-Name: horizon +Source: http://github.com/openstack/horizon + +Files: * +Copyright: 2010 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. + 2011 Nebula, Inc. + 2011 OpenStack LLC + 2011 Midokura KK +License: Apache-2 + 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. + . + On Debian-based systems the full text of the Apache version 2.0 license + can be found in `/usr/share/common-licenses/Apache-2.0'. + +Files: tools/rfc.sh +Copyright: Copyright (c) 2010-2011 Gluster, Inc +License: GPL-v3 + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + . + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + . + On Debian-based systems the full text of the Apache version 2.0 license + can be found in `/usr/share/common-licenses/GPL-3' + +Files: debian/* +Copyright: (c) 2012 Chuck Short +License: Apache-2 + 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. + . + On Debian-based systems the full text of the Apache version 2.0 license + can be found in `/usr/share/common-licenses/Apache-2.0'. diff --git a/debian/openstack-dashboard-ubuntu-theme.dirs b/debian/openstack-dashboard-ubuntu-theme.dirs new file mode 100644 index 0000000..a2d44ff --- /dev/null +++ b/debian/openstack-dashboard-ubuntu-theme.dirs @@ -0,0 +1,4 @@ +/usr/share/openstack-dashboard-ubuntu-theme/static/ubuntu +/usr/share/openstack-dashboard-ubuntu-theme/static/ubuntu/img +/usr/share/openstack-dashboard-ubuntu-theme/static/ubuntu/css +/usr/share/openstack-dashboard-ubuntu-theme/templates diff --git a/debian/openstack-dashboard-ubuntu-theme.install b/debian/openstack-dashboard-ubuntu-theme.install new file mode 100644 index 0000000..a4095e9 --- /dev/null +++ b/debian/openstack-dashboard-ubuntu-theme.install @@ -0,0 +1,4 @@ +debian/theme/css/* /usr/share/openstack-dashboard-ubuntu-theme/static/ubuntu/css +debian/theme/img/* /usr/share/openstack-dashboard-ubuntu-theme/static/ubuntu/img +debian/theme/templates/* /usr/share/openstack-dashboard-ubuntu-theme/templates +debian/theme/ubuntu_theme.py /etc/openstack-dashboard diff --git a/debian/openstack-dashboard-ubuntu-theme.links b/debian/openstack-dashboard-ubuntu-theme.links new file mode 100644 index 0000000..5685f42 --- /dev/null +++ b/debian/openstack-dashboard-ubuntu-theme.links @@ -0,0 +1,2 @@ +/etc/openstack-dashboard/ubuntu_theme.py /usr/share/openstack-dashboard/openstack_dashboard/local/ubuntu_theme.py +/usr/share/openstack-dashboard-ubuntu-theme/static/ubuntu /usr/share/openstack-dashboard/openstack_dashboard/static/ubuntu diff --git a/debian/openstack-dashboard-ubuntu-theme.postinst b/debian/openstack-dashboard-ubuntu-theme.postinst new file mode 100755 index 0000000..d0eb0c3 --- /dev/null +++ b/debian/openstack-dashboard-ubuntu-theme.postinst @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "configure" ]; then + if [ -x "`which invoke-rc.d 2>/dev/null`" -a -x "/etc/init.d/apache2" ] ; then + invoke-rc.d --quiet apache2 reload + fi +fi + +#DEBHELPER# diff --git a/debian/openstack-dashboard-ubuntu-theme.postrm b/debian/openstack-dashboard-ubuntu-theme.postrm new file mode 100755 index 0000000..79115b4 --- /dev/null +++ b/debian/openstack-dashboard-ubuntu-theme.postrm @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +if [ -x "`which invoke-rc.d 2>/dev/null`" -a -x "/etc/init.d/apache2" ] ; then + invoke-rc.d --quiet apache2 reload +fi + +#DEBHELPER# diff --git a/debian/openstack-dashboard.conf b/debian/openstack-dashboard.conf new file mode 100755 index 0000000..908c8c0 --- /dev/null +++ b/debian/openstack-dashboard.conf @@ -0,0 +1,7 @@ +WSGIScriptAlias /horizon /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi +WSGIDaemonProcess horizon user=www-data group=www-data processes=3 threads=10 +Alias /static /usr/share/openstack-dashboard/openstack_dashboard/static/ + + Order allow,deny + Allow from all + diff --git a/debian/openstack-dashboard.dirs b/debian/openstack-dashboard.dirs new file mode 100644 index 0000000..2e95e15 --- /dev/null +++ b/debian/openstack-dashboard.dirs @@ -0,0 +1,3 @@ +/usr/share/openstack-dashboard/bin/less/ +/usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/js +/usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/css diff --git a/debian/openstack-dashboard.install b/debian/openstack-dashboard.install new file mode 100644 index 0000000..70c359a --- /dev/null +++ b/debian/openstack-dashboard.install @@ -0,0 +1,6 @@ +etc/apache2/conf.d +etc/openstack-dashboard +usr/share/openstack-dashboard +debian/static/openstack-dashboard/manifest.json usr/share/openstack-dashboard/openstack_dashboard/static/dashboard +debian/static/openstack-dashboard/css/* usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/css +debian/static/openstack-dashboard/js/* usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/js diff --git a/debian/openstack-dashboard.links b/debian/openstack-dashboard.links new file mode 100755 index 0000000..1772c75 --- /dev/null +++ b/debian/openstack-dashboard.links @@ -0,0 +1,3 @@ +/usr/share/pyshared/horizon/static/horizon /usr/share/openstack-dashboard/openstack_dashboard/static/horizon +/usr/share/openstack-dashboard/openstack_dashboard/static /usr/share/openstack-dashboard/static +/usr/bin/lessc /usr/share/openstack-dashboard/bin/less/lessc diff --git a/debian/openstack-dashboard.postinst b/debian/openstack-dashboard.postinst new file mode 100755 index 0000000..b6f1ada --- /dev/null +++ b/debian/openstack-dashboard.postinst @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +if [ "$1" = "configure" ]; then + # /etc/apache2/conf.d/dashboard.conf -> /etc/apache2/conf.d/openstack-dashboard.conf + dpkg-maintscript-helper mv_conffile \ + /etc/apache2/conf.d/dashboard.conf /etc/apache2/conf.d/openstack-dashboard.conf \ + 2012.1~rc1-0ubuntu1 -- "$@" + + if [ -x /etc/init.d/apache2 ]; then + invoke-rc.d --quiet apache2 reload + fi + + if [ -e /usr/share/openstack-dashboard/openstack_dashboard/static ] ; then + chown -R www-data:www-data \ + /usr/share/openstack-dashboard/openstack_dashboard/static + fi +fi + +#DEBHELPER# diff --git a/debian/openstack-dashboard.postrm b/debian/openstack-dashboard.postrm new file mode 100755 index 0000000..5d3b5d4 --- /dev/null +++ b/debian/openstack-dashboard.postrm @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +# /etc/apache2/conf.d/dashboard.conf -> /etc/apache2/conf.d/openstack-dashboard.conf +dpkg-maintscript-helper mv_conffile \ + /etc/apache2/conf.d/dashboard.conf /etc/apache2/conf.d/openstack-dashboard.conf \ + 2012.1~rc1-0ubuntu1 -- "$@" + +if [ -x "`which invoke-rc.d 2>/dev/null`" -a -x "/etc/init.d/apache2" ] ; then + invoke-rc.d --quiet apache2 reload +fi + +#DEBHELPER# diff --git a/debian/openstack-dashboard.preinst b/debian/openstack-dashboard.preinst new file mode 100755 index 0000000..fd4f425 --- /dev/null +++ b/debian/openstack-dashboard.preinst @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +# /etc/apache2/conf.d/dashboard.conf -> /etc/apache2/conf.d/openstack-dashboard.conf +dpkg-maintscript-helper mv_conffile \ + /etc/apache2/conf.d/dashboard.conf /etc/apache2/conf.d/openstack-dashboard.conf \ + 2012.1~rc1-0ubuntu1 -- "$@" + +#DEBHELPER# diff --git a/debian/patches/add_juju_settings_panel.patch b/debian/patches/add_juju_settings_panel.patch new file mode 100644 index 0000000..35ccd7e --- /dev/null +++ b/debian/patches/add_juju_settings_panel.patch @@ -0,0 +1,309 @@ +Index: horizon-2012.2/horizon/dashboards/settings/dashboard.py +=================================================================== +--- horizon-2012.2.orig/horizon/dashboards/settings/dashboard.py 2012-10-09 11:54:50.986004892 -0700 ++++ horizon-2012.2/horizon/dashboards/settings/dashboard.py 2012-10-09 11:54:57.058004668 -0700 +@@ -16,6 +16,7 @@ + # under the License. + + from django.utils.translation import ugettext_lazy as _ ++from django.conf import settings + + import horizon + +@@ -23,7 +24,15 @@ + class Settings(horizon.Dashboard): + name = _("Settings") + slug = "settings" +- panels = ('user', 'project', 'ec2') ++ try: ++ juju_panel = getattr(settings, 'ENABLE_JUJU_PANEL') ++ if juju_panel == True: ++ panels = ('user', 'project', 'ec2', 'juju') ++ else: ++ panels = ('user', 'project', 'ec2') ++ except AttributeError: ++ panels = ('user', 'project', 'ec2') ++ + default_panel = 'user' + nav = False + +Index: horizon-2012.2/horizon/dashboards/settings/juju/forms.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ horizon-2012.2/horizon/dashboards/settings/juju/forms.py 2012-10-09 11:58:55.169995921 -0700 +@@ -0,0 +1,100 @@ ++# vim: tabstop=4 shiftwidth=4 softtabstop=4 ++ ++# Copyright 2012 Openstack, LLC ++# Copyright 2012 Canonical Ltd. ++# ++# 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. ++ ++import logging ++import tempfile ++import zipfile ++from contextlib import closing ++ ++from django import http, shortcuts ++from django.template.loader import render_to_string ++from django.utils.translation import ugettext_lazy as _ ++ ++from horizon import api ++from horizon import exceptions ++from horizon import forms ++from horizon import messages ++ ++import boto ++import uuid ++ ++LOG = logging.getLogger(__name__) ++ ++ ++class DownloadJujuEnvironment(forms.SelfHandlingForm): ++ # This is heavily based off the ec2 credentials form ++ tenant = forms.ChoiceField(label=_("Select a Project")) ++ @classmethod ++ def _instantiate(cls, request, *args, **kwargs): ++ return cls(request, *args, **kwargs) ++ ++ def __init__(self, request, *args, **kwargs): ++ super(DownloadJujuEnvironment, self).__init__(request, *args, **kwargs) ++ tenant_choices = [] ++ try: ++ tenant_list = api.keystone.tenant_list(request) ++ except: ++ tenant_list = [] ++ exceptions.handle(request, _("Unable to retrieve tenant list.")) ++ ++ for tenant in tenant_list: ++ if tenant.enabled: ++ tenant_choices.append((tenant.id, tenant.name)) ++ if not tenant_choices: ++ self.fields['tenant'].choices = ('', 'No Available Tenants') ++ else: ++ self.fields['tenant'].choices = tenant_choices ++ ++ def handle(self, request, data): ++ def find_or_create_access_keys(request, tenant_id): ++ keys = api.keystone.list_ec2_credentials(request, request.user.id) ++ if keys: ++ return keys[0] ++ else: ++ return api.keystone.create_ec2_credentials(request, ++ request.user.id, ++ tenant_id) ++ try: ++ api.keystone.token_create_scoped(request, ++ data.get('tenant'), ++ request.user.token.id) ++ keys = find_or_create_access_keys(request, data.get('tenant')) ++ tenant_id = data['tenant'] ++ tenant_name = dict(self.fields['tenant'].choices)[tenant_id] ++ control_bucket = "juju-openstack-%s-%s" % (tenant_name, str(uuid.uuid4())[19:]) ++ context = {'ec2_access_key': keys.access, ++ 'ec2_secret_key': keys.secret, ++ 'ec2_url': api.url_for(request, 'ec2'), ++ 's3_url': api.url_for(request, 's3'), ++ 'juju_admin_secret': uuid.uuid4().hex, ++ 'control_bucket': control_bucket ++ } ++ except Exception, e: ++ # This will fail if there is not an S3 endpoint configured in the ++ # service catalog. ++ msg = "Could not generate Juju environment config: %s" % e ++ messages.error(request, msg) ++ redirect = request.build_absolute_uri() ++ raise exceptions.Http302(redirect) ++ ++ response = shortcuts.render(request, ++ 'settings/juju/environments.yaml.template', ++ context, ++ content_type='text/plain') ++ response['Content-Disposition'] = 'attachment; filename=environments.yaml' ++ response['Content-Length'] = str(len(response.content)) ++ return response +Index: horizon-2012.2/horizon/dashboards/settings/juju/__init__.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ horizon-2012.2/horizon/dashboards/settings/juju/__init__.py 2012-10-09 11:54:57.058004668 -0700 +@@ -0,0 +1 @@ ++# Horizon Juju settings panel +Index: horizon-2012.2/horizon/dashboards/settings/juju/panel.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ horizon-2012.2/horizon/dashboards/settings/juju/panel.py 2012-10-09 11:54:57.058004668 -0700 +@@ -0,0 +1,28 @@ ++# vim: tabstop=4 shiftwidth=4 softtabstop=4 ++# Copyright 2012 Openstack, LLC ++# Copyright 2012 Canonical Ltd. ++# ++# 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. ++ ++from django.utils.translation import ugettext_lazy as _ ++ ++import horizon ++from horizon.dashboards.settings import dashboard ++ ++ ++class JujuPanel(horizon.Panel): ++ name = _("Juju Environment Config") ++ slug = 'juju' ++ ++ ++dashboard.Settings.register(JujuPanel) +Index: horizon-2012.2/horizon/dashboards/settings/juju/urls.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ horizon-2012.2/horizon/dashboards/settings/juju/urls.py 2012-10-09 11:54:57.058004668 -0700 +@@ -0,0 +1,24 @@ ++# vim: tabstop=4 shiftwidth=4 softtabstop=4 ++ ++# Copyright 2012 Openstack, LLC ++# Copyright 2012 Canonical Ltd. ++# ++# 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. ++ ++from django.conf.urls.defaults import patterns, url ++ ++from .views import IndexView ++ ++urlpatterns = patterns('horizon.dashboards.settings.juju.views', ++ url(r'^$', IndexView.as_view(), name='index'), ++) +Index: horizon-2012.2/horizon/dashboards/settings/juju/views.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ horizon-2012.2/horizon/dashboards/settings/juju/views.py 2012-10-09 11:57:05.949999981 -0700 +@@ -0,0 +1,35 @@ ++# vim: tabstop=4 shiftwidth=4 softtabstop=4 ++ ++# Copyright 2012 Openstack, LLC ++# ++# 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. ++ ++import logging ++ ++from django.core.urlresolvers import reverse_lazy ++ ++from horizon import forms ++from horizon.dashboards.settings.juju.forms import DownloadJujuEnvironment ++ ++ ++LOG = logging.getLogger(__name__) ++ ++ ++class IndexView(forms.ModalFormView): ++ form_class = DownloadJujuEnvironment ++ template_name = 'settings/juju/index.html' ++ success_url = reverse_lazy('horizon:settings:juju') ++ ++ def form_valid(self, form): ++ return form.handle(self.request, form.cleaned_data) ++ +Index: horizon-2012.2/horizon/dashboards/settings/templates/settings/juju/download_form.html +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ horizon-2012.2/horizon/dashboards/settings/templates/settings/juju/download_form.html 2012-10-09 11:54:57.058004668 -0700 +@@ -0,0 +1,20 @@ ++{% extends "horizon/common/_modal_form.html" %} ++{% load i18n %} ++ ++ ++{% block modal-body %} ++
++
++ {% include "horizon/common/_form_fields.html" %} ++
++
++
++

{% trans "Description:" %}

++

{% trans 'Clicking "Download Juju Environment Config" will download a file which includes a Juju environment configured for your cloud.


To find out more about Juju visit http://juju.ubuntu.com' %}

++
++{% endblock %} ++ ++{% block modal-footer %} ++ ++ {% if hide %}{% trans "Cancel" %}{% endif %} ++{% endblock %} +Index: horizon-2012.2/horizon/dashboards/settings/templates/settings/juju/environments.yaml.template +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ horizon-2012.2/horizon/dashboards/settings/templates/settings/juju/environments.yaml.template 2012-10-09 11:54:57.058004668 -0700 +@@ -0,0 +1,21 @@ ++# To use Juju with your Openstack cloud: ++# 1. Run: apt-get install juju ++# 2. Copy this file to $HOME/.juju/environments.yaml ++# 3. Modify the 'default-image-id' to match an Ubuntu cloud image ++# AMI that has been published to your cloud. ++# 4. Run 'juju bootstrap' and deploy services! ++# ++# To find out more about juju visit http://juju.ubuntu.com ++ ++juju: environments ++environments: ++ openstack: ++ type: ec2 ++ control-bucket: {{ control_bucket }} ++ admin-secret: {{ juju_admin_secret }} ++ access-key: {{ ec2_access_key }} ++ secret-key: {{ ec2_secret_key }} ++ ec2-uri: {{ ec2_url }} ++ s3-uri: {{ s3_url }} ++ default-series: precise ++ default-image-id: ami-00000001 +Index: horizon-2012.2/horizon/dashboards/settings/templates/settings/juju/index.html +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ horizon-2012.2/horizon/dashboards/settings/templates/settings/juju/index.html 2012-10-09 11:54:57.058004668 -0700 +@@ -0,0 +1,11 @@ ++{% extends 'base.html' %} ++{% load i18n %} ++{% block title %}{% trans "Download Juju Environment Config" %}{% endblock %} ++ ++{% block page_header %} ++ {% include "horizon/common/_page_header.html" with title=_("Download Juju Environment Config") %} ++{% endblock page_header %} ++ ++{% block main %} ++ {% include "settings/juju/download_form.html" %} ++{% endblock %} diff --git a/debian/patches/fix-dashboard-django-wsgi.patch b/debian/patches/fix-dashboard-django-wsgi.patch new file mode 100644 index 0000000..af18a09 --- /dev/null +++ b/debian/patches/fix-dashboard-django-wsgi.patch @@ -0,0 +1,13 @@ +Index: horizon/openstack_dashboard/wsgi/django.wsgi +=================================================================== +--- horizon.orig/openstack_dashboard/wsgi/django.wsgi 2012-07-03 14:07:21.316118123 -0700 ++++ horizon/openstack_dashboard/wsgi/django.wsgi 2012-07-03 14:07:26.176118333 -0700 +@@ -9,6 +9,8 @@ + os.environ['DJANGO_SETTINGS_MODULE'] = 'openstack_dashboard.settings' + sys.stdout = sys.stderr + ++sys.path.append("/usr/share/openstack-dashboard/") ++ + DEBUG = False + + application = django.core.handlers.wsgi.WSGIHandler() diff --git a/debian/patches/fix-dashboard-manage.patch b/debian/patches/fix-dashboard-manage.patch new file mode 100644 index 0000000..27b1532 --- /dev/null +++ b/debian/patches/fix-dashboard-manage.patch @@ -0,0 +1,12 @@ +diff -Naurp horizon-2013.1.orig/manage.py horizon-2013.1/manage.py +--- horizon-2013.1.orig/manage.py 2012-11-20 22:59:38.000000000 -0600 ++++ horizon-2013.1/manage.py 2012-11-21 12:28:58.773240222 -0600 +@@ -5,6 +5,8 @@ import sys + + from django.core.management import execute_from_command_line + ++sys.path.append("/usr/share/openstack-dashboard") ++ + if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", + "openstack_dashboard.settings") diff --git a/debian/patches/fix-ubuntu-tests.patch b/debian/patches/fix-ubuntu-tests.patch new file mode 100644 index 0000000..cc34d09 --- /dev/null +++ b/debian/patches/fix-ubuntu-tests.patch @@ -0,0 +1,41 @@ +diff -Naurp horizon-2013.1.orig/run_tests.sh horizon-2013.1/run_tests.sh +--- horizon-2013.1.orig/run_tests.sh 2012-11-20 22:59:39.000000000 -0600 ++++ horizon-2013.1/run_tests.sh 2012-11-21 12:25:55.197240133 -0600 +@@ -292,25 +292,25 @@ function run_tests_all { + if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then + export NOSE_HTML_OUT_FILE='horizon_nose_results.html' + fi +- ${command_wrapper} coverage erase +- ${command_wrapper} coverage run -p $root/manage.py test horizon --settings=horizon.test.settings $testopts ++ ${command_wrapper} python-coverage erase ++ ${command_wrapper} python-coverage run -p $root/manage.py test horizon --settings=horizon.test.settings $testopts + # get results of the Horizon tests + HORIZON_RESULT=$? + +- echo "Running openstack_dashboard tests" +- export NOSE_XUNIT_FILE=openstack_dashboard/nosetests.xml +- if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then +- export NOSE_HTML_OUT_FILE='dashboard_nose_results.html' +- fi +- ${command_wrapper} coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testopts ++ #echo "Running openstack_dashboard tests" ++ #export NOSE_XUNIT_FILE=openstack_dashboard/nosetests.xml ++ #if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then ++ # export NOSE_HTML_OUT_FILE='dashboard_nose_results.html' ++ #fi ++ #${command_wrapper} coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testopts + # get results of the openstack_dashboard tests +- DASHBOARD_RESULT=$? ++ #DASHBOARD_RESULT=$? + + if [ $with_coverage -eq 1 ]; then + echo "Generating coverage reports" +- ${command_wrapper} coverage combine +- ${command_wrapper} coverage xml -i --omit='/usr*,setup.py,*egg*,.venv/*' +- ${command_wrapper} coverage html -i --omit='/usr*,setup.py,*egg*,.venv/*' -d reports ++ ${command_wrapper} python-coverage combine ++ ${command_wrapper} python-coverage xml -i --omit='/usr*,setup.py,*egg*,.venv/*' ++ ${command_wrapper} python-coverage html -i --omit='/usr*,setup.py,*egg*,.venv/*' -d reports + fi + # Remove the leftover coverage files from the -p flag earlier. + rm -f .coverage.* diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..75d3260 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,8 @@ +fix-dashboard-django-wsgi.patch +fix-dashboard-manage.patch + +# Disabled during Grizzly dev. cycle +#add_juju_settings_panel.patch + +fix-ubuntu-tests.patch +ubuntu_local_settings.patch diff --git a/debian/patches/ubuntu_local_settings.patch b/debian/patches/ubuntu_local_settings.patch new file mode 100644 index 0000000..142a51b --- /dev/null +++ b/debian/patches/ubuntu_local_settings.patch @@ -0,0 +1,44 @@ +--- a/openstack_dashboard/local/local_settings.py.example ++++ b/openstack_dashboard/local/local_settings.py.example +@@ -4,7 +4,7 @@ from django.utils.translation import uge + + from openstack_dashboard import exceptions + +-DEBUG = True ++DEBUG = False + TEMPLATE_DEBUG = DEBUG + + # Set SSL proxy settings: +@@ -67,7 +67,8 @@ LOCAL_PATH = os.path.dirname(os.path.abs + + CACHES = { + 'default': { +- 'BACKEND' : 'django.core.cache.backends.locmem.LocMemCache' ++ 'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache', ++ 'LOCATION' : '127.0.0.1:11211' + } + } + +@@ -76,6 +77,22 @@ EMAIL_BACKEND = 'django.core.mail.backen + # Or send them to /dev/null + #EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend' + ++# Enable the Ubuntu theme if it is present. ++try: ++ from ubuntu_theme import * ++except ImportError: ++ pass ++ ++# Default Ubuntu apache configuration uses /horizon as the application root. ++# Configure auth redirects here accordingly. ++LOGIN_URL='/horizon/auth/login/' ++LOGIN_REDIRECT_URL='/horizon' ++ ++# The Ubuntu package includes pre-compressed JS and compiled CSS to allow ++# offline compression by default. To enable online compression, install ++# the node-less package and enable the following option. ++COMPRESS_OFFLINE = True ++ + # Configure these for your outgoing email host + # EMAIL_HOST = 'smtp.my-company.com' + # EMAIL_PORT = 25 diff --git a/debian/pydist-overrides b/debian/pydist-overrides new file mode 100755 index 0000000..f8c9076 --- /dev/null +++ b/debian/pydist-overrides @@ -0,0 +1,2 @@ +python_quantumclient +django_nose_selenium diff --git a/debian/python-django-horizon.install b/debian/python-django-horizon.install new file mode 100644 index 0000000..d9462f9 --- /dev/null +++ b/debian/python-django-horizon.install @@ -0,0 +1 @@ +usr/lib/python*/dist-packages/horizon diff --git a/debian/python-django-horizon.lintian-overrides b/debian/python-django-horizon.lintian-overrides new file mode 100755 index 0000000..37c101b --- /dev/null +++ b/debian/python-django-horizon.lintian-overrides @@ -0,0 +1,2 @@ +# Templates are not intended to be executed directly: +python-django-horizon binary: script-not-executable usr/share/pyshared/horizon/dashboards/settings/templates/settings/tenant/openrc.sh.template diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..1921b57 --- /dev/null +++ b/debian/rules @@ -0,0 +1,47 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +%: + dh $@ --with python2 + +override_dh_auto_install: + # install horizon and dashboard + python setup.py install --root=$(CURDIR)/debian/tmp --no-compile -O0 --install-layout=deb + install -d -m 755 $(CURDIR)/debian/tmp/usr/share/openstack-dashboard + install -d -m 755 $(CURDIR)/debian/tmp/etc/openstack-dashboard + install -d -m 755 $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/quantum + install -d -m 755 $(CURDIR)/debian/tmp/etc/apache2/conf.d + + cp -a $(CURDIR)/openstack_dashboard/ $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/ + cp -a $(CURDIR)/openstack_dashboard/settings.py $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/ + + touch $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/quantum/__init__.py + touch $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/quantum/client.py + cp -a $(CURDIR)/debian/openstack-dashboard.conf $(CURDIR)/debian/tmp/etc/apache2/conf.d + cp $(CURDIR)/openstack_dashboard/local/local_settings.py.example \ + $(CURDIR)/debian/tmp/etc/openstack-dashboard/local_settings.py + cp $(CURDIR)/manage.py \ + $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/manage.py + ln -fs /etc/openstack-dashboard/local_settings.py \ + $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/openstack_dashboard/local/local_settings.py + cp $(CURDIR)/debian/theme/img/juju.png \ + $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/img/juju.png + +ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS))) +override_dh_auto_test: + PYTHONPATH=. bash run_tests.sh -N || true +endif + +override_dh_auto_clean: + dh_clean + rm -rf $(CURDIR)/build + rm -rf $(CURDIR)/horizon.egg-info + rm -rf $(CURDIR)/debian/openstack-dashboard + rm -rf $(CURDIR)/debian/python-django-horizon + rm -rf $(CURDIR)/debian/tmp + find . -name "*.pyc" -exec rm {} \; + +get-orig-source: + uscan --verbose --force-download --rename --destdir=../build-area diff --git a/debian/source/format b/debian/source/format new file mode 100755 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/source/include-binaries b/debian/source/include-binaries new file mode 100755 index 0000000..4343feb --- /dev/null +++ b/debian/source/include-binaries @@ -0,0 +1,5 @@ +debian/theme/img/dots.png +debian/theme/img/favicon-ubuntu.ico +debian/theme/img/header_stripes.png +debian/theme/img/juju.png +debian/theme/img/ubuntu.png diff --git a/debian/static/openstack-dashboard/css/d272fede7fb7.css b/debian/static/openstack-dashboard/css/d272fede7fb7.css new file mode 100755 index 0000000..b04f541 --- /dev/null +++ b/debian/static/openstack-dashboard/css/d272fede7fb7.css @@ -0,0 +1,5620 @@ +/*! + * Bootstrap v2.0.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 { + max-width: 100%; + height: auto; + border: 0; + -ms-interpolation-mode: bicubic; +} +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-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +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; + content: ""; +} +.clearfix:after { + clear: both; +} +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; + color: #333333; + background-color: #ffffff; +} +a { + color: #0088cc; + text-decoration: none; +} +a:hover { + color: #005580; + text-decoration: underline; +} +.row { + margin-left: -20px; + *zoom: 1; +} +.row:before, +.row:after { + display: table; + content: ""; +} +.row:after { + clear: both; +} +[class*="span"] { + float: left; + margin-left: 20px; +} +.span1 { + width: 60px; +} +.span2 { + width: 140px; +} +.span3 { + width: 220px; +} +.span4 { + width: 300px; +} +.span5 { + width: 380px; +} +.span6 { + width: 460px; +} +.span7 { + width: 540px; +} +.span8 { + width: 620px; +} +.span9 { + width: 700px; +} +.span10 { + width: 780px; +} +.span11 { + width: 860px; +} +.span12, +.container { + width: 940px; +} +.offset1 { + margin-left: 100px; +} +.offset2 { + margin-left: 180px; +} +.offset3 { + margin-left: 260px; +} +.offset4 { + margin-left: 340px; +} +.offset5 { + margin-left: 420px; +} +.offset6 { + margin-left: 500px; +} +.offset7 { + margin-left: 580px; +} +.offset8 { + margin-left: 660px; +} +.offset9 { + margin-left: 740px; +} +.offset10 { + margin-left: 820px; +} +.offset11 { + margin-left: 900px; +} +.row-fluid { + width: 100%; + *zoom: 1; +} +.row-fluid:before, +.row-fluid:after { + display: table; + content: ""; +} +.row-fluid:after { + clear: both; +} +.row-fluid > [class*="span"] { + float: left; + margin-left: 2.127659574%; +} +.row-fluid > [class*="span"]:first-child { + margin-left: 0; +} +.row-fluid > .span1 { + width: 6.382978723%; +} +.row-fluid > .span2 { + width: 14.89361702%; +} +.row-fluid > .span3 { + width: 23.404255317%; +} +.row-fluid > .span4 { + width: 31.914893614%; +} +.row-fluid > .span5 { + width: 40.425531911%; +} +.row-fluid > .span6 { + width: 48.93617020799999%; +} +.row-fluid > .span7 { + width: 57.446808505%; +} +.row-fluid > .span8 { + width: 65.95744680199999%; +} +.row-fluid > .span9 { + width: 74.468085099%; +} +.row-fluid > .span10 { + width: 82.97872339599999%; +} +.row-fluid > .span11 { + width: 91.489361693%; +} +.row-fluid > .span12 { + width: 99.99999998999999%; +} +.container { + width: 940px; + margin-left: auto; + margin-right: auto; + *zoom: 1; +} +.container:before, +.container:after { + display: table; + content: ""; +} +.container:after { + clear: both; +} +.container-fluid { + padding-left: 20px; + padding-right: 20px; + *zoom: 1; +} +.container-fluid:before, +.container-fluid:after { + display: table; + content: ""; +} +.container-fluid:after { + clear: both; +} +p { + margin: 0 0 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; +} +p small { + font-size: 11px; + color: #999999; +} +.lead { + margin-bottom: 18px; + font-size: 20px; + font-weight: 200; + line-height: 27px; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + font-weight: bold; + color: #333333; + text-rendering: optimizelegibility; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + color: #999999; +} +h1 { + font-size: 30px; + line-height: 36px; +} +h1 small { + font-size: 18px; +} +h2 { + font-size: 24px; + line-height: 36px; +} +h2 small { + font-size: 18px; +} +h3 { + line-height: 27px; + font-size: 18px; +} +h3 small { + font-size: 14px; +} +h4, +h5, +h6 { + line-height: 18px; +} +h4 { + font-size: 14px; +} +h4 small { + font-size: 12px; +} +h5 { + font-size: 12px; +} +h6 { + font-size: 11px; + color: #999999; + text-transform: uppercase; +} +.page-header { + padding-bottom: 17px; + margin: 18px 0; + border-bottom: 1px solid #eeeeee; +} +.page-header h1 { + line-height: 1; +} +ul, +ol { + padding: 0; + margin: 0 0 9px 25px; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} +ul { + list-style: disc; +} +ol { + list-style: decimal; +} +li { + line-height: 18px; +} +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} +table ul { + margin: 0; + list-style-type: none; +} +dl { + margin-bottom: 18px; +} +dt, +dd { + line-height: 18px; +} +dt { + font-weight: bold; +} +dd { + margin-left: 9px; +} +hr { + margin: 18px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} +strong { + font-weight: bold; +} +em { + font-style: italic; +} +.muted { + color: #999999; +} +abbr { + font-size: 90%; + text-transform: uppercase; + border-bottom: 1px dotted #ddd; + cursor: help; +} +blockquote { + padding: 0 0 0 15px; + margin: 0 0 18px; + border-left: 5px solid #eeeeee; +} +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 22.5px; +} +blockquote small { + display: block; + line-height: 18px; + color: #999999; +} +blockquote small:before { + content: '\2014 \00A0'; +} +blockquote.pull-right { + float: right; + padding-left: 0; + padding-right: 15px; + border-left: 0; + border-right: 5px solid #eeeeee; +} +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} +address { + display: block; + margin-bottom: 18px; + line-height: 18px; + font-style: normal; +} +small { + font-size: 100%; +} +cite { + font-style: normal; +} +code, +pre { + padding: 0 3px 2px; + font-family: Menlo, Monaco, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +code { + padding: 3px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} +pre { + display: block; + padding: 8.5px; + margin: 0 0 9px; + font-size: 12px; + line-height: 18px; + 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; + white-space: pre; + white-space: pre-wrap; + word-break: break-all; + word-wrap: break-word; +} +pre.prettyprint { + margin-bottom: 18px; +} +pre code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +form { + margin: 0 0 18px; +} +fieldset { + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 27px; + font-size: 19.5px; + line-height: 36px; + color: #333333; + border: 0; + border-bottom: 1px solid #eee; +} +legend small { + font-size: 13.5px; + color: #999999; +} +label, +input, +button, +select, +textarea { + font-size: 13px; + font-weight: normal; + line-height: 18px; +} +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} +label { + display: block; + margin-bottom: 5px; + color: #333333; +} +input, +textarea, +select, +.uneditable-input { + display: inline-block; + width: 210px; + height: 18px; + padding: 4px; + margin-bottom: 9px; + font-size: 13px; + line-height: 18px; + color: #555555; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.uneditable-textarea { + width: auto; + height: auto; +} +label input, +label textarea, +label select { + display: block; +} +input[type="image"], +input[type="checkbox"], +input[type="radio"] { + width: auto; + height: auto; + padding: 0; + margin: 3px 0; + *margin-top: 0; + /* IE7 */ + + line-height: normal; + cursor: pointer; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + border: 0 \9; + /* IE9 and down */ + +} +input[type="image"] { + border: 0; +} +input[type="file"] { + width: auto; + padding: initial; + line-height: initial; + border: initial; + background-color: #ffffff; + background-color: initial; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +input[type="button"], +input[type="reset"], +input[type="submit"] { + width: auto; + height: auto; +} +select, +input[type="file"] { + height: 28px; + /* 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: 28px; +} +input[type="file"] { + line-height: 18px \9; +} +select { + width: 220px; + background-color: #ffffff; +} +select[multiple], +select[size] { + height: auto; +} +input[type="image"] { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +textarea { + height: auto; +} +input[type="hidden"] { + display: none; +} +.radio, +.checkbox { + 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, +textarea { + -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; + -ms-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; +} +input:focus, +textarea:focus { + border-color: rgba(82, 168, 236, 0.8); + -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); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus, +select:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.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 { + float: none; + margin-left: 0; +} +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 50px; +} +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 130px; +} +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 210px; +} +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 290px; +} +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 370px; +} +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 450px; +} +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 530px; +} +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 610px; +} +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 690px; +} +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 770px; +} +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 850px; +} +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 930px; +} +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + background-color: #f5f5f5; + border-color: #ddd; + cursor: not-allowed; +} +.control-group.warning > label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; + border-color: #c09853; +} +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: 0 0 6px #dbc59e; + -moz-box-shadow: 0 0 6px #dbc59e; + box-shadow: 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 input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; + border-color: #b94a48; +} +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: 0 0 6px #d59392; + -moz-box-shadow: 0 0 6px #d59392; + box-shadow: 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 input, +.control-group.success select, +.control-group.success textarea { + color: #468847; + border-color: #468847; +} +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: 0 0 6px #7aba7b; + -moz-box-shadow: 0 0 6px #7aba7b; + box-shadow: 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; +} +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: 17px 20px 18px; + margin-top: 18px; + margin-bottom: 18px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; +} +.uneditable-input { + display: block; + background-color: #ffffff; + border-color: #eee; + -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); + cursor: not-allowed; +} +:-moz-placeholder { + color: #999999; +} +::-webkit-input-placeholder { + color: #999999; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 0; + color: #999999; +} +.help-inline { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-bottom: 9px; + vertical-align: middle; + padding-left: 5px; +} +.input-prepend, +.input-append { + margin-bottom: 5px; + *zoom: 1; +} +.input-prepend:before, +.input-append:before, +.input-prepend:after, +.input-append:after { + display: table; + content: ""; +} +.input-prepend:after, +.input-append:after { + clear: both; +} +.input-prepend input, +.input-append input, +.input-prepend .uneditable-input, +.input-append .uneditable-input { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.input-prepend input:focus, +.input-append input:focus, +.input-prepend .uneditable-input:focus, +.input-append .uneditable-input:focus { + position: relative; + z-index: 2; +} +.input-prepend .uneditable-input, +.input-append .uneditable-input { + border-left-color: #ccc; +} +.input-prepend .add-on, +.input-append .add-on { + float: left; + display: block; + width: auto; + min-width: 16px; + height: 18px; + margin-right: -1px; + padding: 4px 5px; + font-weight: normal; + line-height: 18px; + color: #999999; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #f5f5f5; + border: 1px solid #ccc; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-prepend .active, +.input-append .active { + background-color: #a9dba9; + border-color: #46a546; +} +.input-prepend .add-on { + *margin-top: 1px; + /* IE6-7 */ + +} +.input-append input, +.input-append .uneditable-input { + float: left; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-append .uneditable-input { + border-left-color: #eee; + border-right-color: #ccc; +} +.input-append .add-on { + margin-right: 0; + margin-left: -1px; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.input-append input:first-child { + *margin-left: -160px; +} +.input-append input:first-child + .add-on { + *margin-left: -21px; +} +.search-query { + padding-left: 14px; + padding-right: 14px; + margin-bottom: 0; + -webkit-border-radius: 14px; + -moz-border-radius: 14px; + border-radius: 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 { + display: inline-block; + margin-bottom: 0; +} +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} +.form-search label, +.form-inline label, +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + display: inline-block; +} +.form-search .input-append .add-on, +.form-inline .input-prepend .add-on, +.form-search .input-append .add-on, +.form-inline .input-prepend .add-on { + vertical-align: middle; +} +.form-search .radio, +.form-inline .radio, +.form-search .checkbox, +.form-inline .checkbox { + margin-bottom: 0; + vertical-align: middle; +} +.control-group { + margin-bottom: 9px; +} +legend + .control-group { + margin-top: 18px; + -webkit-margin-top-collapse: separate; +} +.form-horizontal .control-group { + margin-bottom: 18px; + *zoom: 1; +} +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + content: ""; +} +.form-horizontal .control-group:after { + clear: both; +} +.form-horizontal .control-label { + float: left; + width: 140px; + padding-top: 5px; + text-align: right; +} +.form-horizontal .controls { + margin-left: 160px; +} +.form-horizontal .form-actions { + padding-left: 160px; +} +table { + max-width: 100%; + border-collapse: collapse; + border-spacing: 0; +} +.table { + width: 100%; + margin-bottom: 18px; +} +.table th, +.table td { + padding: 8px; + line-height: 18px; + text-align: left; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table th { + font-weight: bold; +} +.table thead th { + vertical-align: bottom; +} +.table thead:first-child tr th, +.table thead:first-child tr td { + border-top: 0; +} +.table tbody + tbody { + border-top: 2px solid #ddd; +} +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} +.table-bordered { + border: 1px solid #ddd; + border-collapse: separate; + *border-collapse: collapsed; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.table-bordered th + th, +.table-bordered td + td, +.table-bordered th + td, +.table-bordered td + th { + border-left: 1px solid #ddd; +} +.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-radius: 4px 0 0 0; + -moz-border-radius: 4px 0 0 0; + border-radius: 4px 0 0 0; +} +.table-bordered thead:first-child tr:first-child th:last-child, +.table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-radius: 0 4px 0 0; + -moz-border-radius: 0 4px 0 0; + border-radius: 0 4px 0 0; +} +.table-bordered thead:last-child tr:last-child th:first-child, +.table-bordered tbody: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; +} +.table-bordered thead:last-child tr:last-child th:last-child, +.table-bordered tbody:last-child tr:last-child td:last-child { + -webkit-border-radius: 0 0 4px 0; + -moz-border-radius: 0 0 4px 0; + border-radius: 0 0 4px 0; +} +.table-striped tbody tr:nth-child(odd) td, +.table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} +.table tbody tr:hover td, +.table tbody tr:hover th { + background-color: #f5f5f5; +} +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; +} +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + line-height: 14px; + vertical-align: text-top; + background-image: url("/static/bootstrap/img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; + *margin-right: .3em; +} +[class^="icon-"]:last-child, +[class*=" icon-"]:last-child { + *margin-left: 0; +} +.icon-white { + background-image: url("/static/bootstrap/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 { + 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 { + background-position: -408px -120px; +} +.icon-resize-vertical { + background-position: -432px -119px; +} +.icon-resize-horizontal { + background-position: -456px -118px; +} +.dropdown { + position: relative; +} +.dropdown-toggle { + *margin-bottom: -3px; +} +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} +.caret { + display: inline-block; + width: 0; + height: 0; + text-indent: -99999px; + *text-indent: 0; + vertical-align: top; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #000000; + opacity: 0.3; + filter: alpha(opacity=30); + content: "\2193"; +} +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} +.dropdown:hover .caret, +.open.dropdown .caret { + opacity: 1; + filter: alpha(opacity=100); +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + float: left; + display: none; + min-width: 160px; + _width: 160px; + padding: 4px 0; + margin: 0; + list-style: none; + background-color: #ffffff; + border-color: #ccc; + border-color: rgba(0, 0, 0, 0.2); + border-style: solid; + border-width: 1px; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + -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; + *border-right-width: 2px; + *border-bottom-width: 2px; +} +.dropdown-menu.bottom-up { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +.dropdown-menu .divider { + height: 1px; + margin: 5px 1px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; + *width: 100%; + *margin: -5px 0 5px; +} +.dropdown-menu a { + display: block; + padding: 3px 15px; + clear: both; + font-weight: normal; + line-height: 18px; + color: #555555; + word-wrap: break-word; +} +.dropdown-menu li > a:hover, +.dropdown-menu .active > a, +.dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #0088cc; +} +.dropdown.open { + *z-index: 1000; +} +.dropdown.open .dropdown-toggle { + color: #ffffff; + background: #ccc; + background: rgba(0, 0, 0, 0.3); +} +.dropdown.open .dropdown-menu { + display: block; +} +.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 #eee; + border: 1px solid rgba(0, 0, 0, 0.05); + -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); +} +.fade { + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -ms-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; + opacity: 0; +} +.fade.in { + opacity: 1; +} +.collapse { + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -ms-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; + position: relative; + overflow: hidden; + height: 0; +} +.collapse.in { + height: auto; +} +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover { + color: #000000; + text-decoration: none; + opacity: 0.4; + filter: alpha(opacity=40); + cursor: pointer; +} +.btn { + display: inline-block; + padding: 4px 10px 4px; + margin-bottom: 0; + font-size: 13px; + line-height: 18px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -ms-linear-gradient(top, #ffffff, #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(top, #ffffff, #e6e6e6); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border: 1px solid #ccc; + border-bottom-color: #bbb; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -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); + cursor: pointer; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + *margin-left: .3em; +} +.btn:hover, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + background-color: #e6e6e6; +} +.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-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -ms-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-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); + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + outline: 0; +} +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + background-color: #e6e6e6; + 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: 15px; + line-height: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.btn-large [class^="icon-"] { + margin-top: 1px; +} +.btn-small { + padding: 5px 9px; + font-size: 11px; + line-height: 16px; +} +.btn-small [class^="icon-"] { + margin-top: -1px; +} +.btn-mini { + padding: 2px 6px; + font-size: 11px; + line-height: 14px; +} +.btn-primary, +.btn-primary:hover, +.btn-warning, +.btn-warning:hover, +.btn-danger, +.btn-danger:hover, +.btn-success, +.btn-success:hover, +.btn-info, +.btn-info:hover, +.btn-inverse, +.btn-inverse:hover { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + color: #ffffff; +} +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-dark.active { + color: rgba(255, 255, 255, 0.75); +} +.btn-primary { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -ms-linear-gradient(top, #0088cc, #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(top, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + 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(enabled = false); +} +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + background-color: #0044cc; +} +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} +.btn-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-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(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); + 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(enabled = false); +} +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + background-color: #f89406; +} +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} +.btn-danger { + background-color: #da4f49; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(top, #ee5f5b, #bd362f); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); + 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(enabled = false); +} +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + background-color: #bd362f; +} +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} +.btn-success { + background-color: #5bb75b; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -ms-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(top, #62c462, #51a351); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); + 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(enabled = false); +} +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + background-color: #51a351; +} +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} +.btn-info { + background-color: #49afcd; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(top, #5bc0de, #2f96b4); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); + 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(enabled = false); +} +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + background-color: #2f96b4; +} +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} +.btn-inverse { + background-color: #393939; + background-image: -moz-linear-gradient(top, #454545, #262626); + background-image: -ms-linear-gradient(top, #454545, #262626); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#454545), to(#262626)); + background-image: -webkit-linear-gradient(top, #454545, #262626); + background-image: -o-linear-gradient(top, #454545, #262626); + background-image: linear-gradient(top, #454545, #262626); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#454545', endColorstr='#262626', GradientType=0); + border-color: #262626 #262626 #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(enabled = false); +} +.btn-inverse:hover, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + background-color: #262626; +} +.btn-inverse:active, +.btn-inverse.active { + background-color: #0c0c0c \9; +} +button.btn, +input[type="submit"].btn { + *padding-top: 2px; + *padding-bottom: 2px; +} +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} +button.btn.large, +input[type="submit"].btn.large { + *padding-top: 7px; + *padding-bottom: 7px; +} +button.btn.small, +input[type="submit"].btn.small { + *padding-top: 3px; + *padding-bottom: 3px; +} +.btn-group { + position: relative; + *zoom: 1; + *margin-left: .3em; +} +.btn-group:before, +.btn-group:after { + display: table; + content: ""; +} +.btn-group:after { + clear: both; +} +.btn-group:first-child { + *margin-left: 0; +} +.btn-group + .btn-group { + margin-left: 5px; +} +.btn-toolbar { + margin-top: 9px; + margin-bottom: 9px; +} +.btn-toolbar .btn-group { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} +.btn-group .btn { + position: relative; + float: left; + margin-left: -1px; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.btn-group .btn:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.btn-group .btn:last-child, +.btn-group .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} +.btn-group .btn.large:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} +.btn-group .btn.large:last-child, +.btn-group .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 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 .dropdown-toggle { + padding-left: 8px; + padding-right: 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); + *padding-top: 5px; + *padding-bottom: 5px; +} +.btn-group.open { + *z-index: 1000; +} +.btn-group.open .dropdown-menu { + display: block; + margin-top: 1px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} +.btn .caret { + margin-top: 7px; + margin-left: 0; +} +.btn:hover .caret, +.open.btn-group .caret { + opacity: 1; + filter: alpha(opacity=100); +} +.btn-primary .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + opacity: 0.75; + filter: alpha(opacity=75); +} +.btn-small .caret { + margin-top: 4px; +} +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 18px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.alert, +.alert-heading { + color: #c09853; +} +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 18px; +} +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success, +.alert-success .alert-heading { + color: #468847; +} +.alert-danger, +.alert-error { + background-color: #f2dede; + border-color: #eed3d7; +} +.alert-danger, +.alert-error, +.alert-danger .alert-heading, +.alert-error .alert-heading { + color: #b94a48; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info, +.alert-info .alert-heading { + color: #3a87ad; +} +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} +.alert-block p + p { + margin-top: 5px; +} +.nav { + margin-left: 0; + margin-bottom: 18px; + list-style: none; +} +.nav > li > a { + display: block; +} +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} +.nav .nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 18px; + 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-left: 14px; + padding-right: 14px; + margin-bottom: 0; +} +.nav-list > li > a, +.nav-list .nav-header { + margin-left: -15px; + margin-right: -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-tabs, +.nav-pills { + *zoom: 1; +} +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + 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: 9px; + padding-bottom: 9px; + 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; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} +.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-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.nav-tabs.nav-stacked > li > a:hover { + border-color: #ddd; + z-index: 2; +} +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} +.nav-tabs .dropdown-menu, +.nav-pills .dropdown-menu { + margin-top: 1px; + border-width: 1px; +} +.nav-pills .dropdown-menu { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.nav-tabs .dropdown-toggle .caret, +.nav-pills .dropdown-toggle .caret { + border-top-color: #0088cc; + margin-top: 6px; +} +.nav-tabs .dropdown-toggle:hover .caret, +.nav-pills .dropdown-toggle:hover .caret { + border-top-color: #005580; +} +.nav-tabs .active .dropdown-toggle .caret, +.nav-pills .active .dropdown-toggle .caret { + border-top-color: #333333; +} +.nav > .dropdown.active > a:hover { + color: #000000; + cursor: pointer; +} +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > .open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} +.nav .open .caret, +.nav .open.active .caret, +.nav .open a:hover .caret { + border-top-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; + content: ""; +} +.tabbable:after { + clear: both; +} +.tab-content { + overflow: hidden; +} +.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-bottom-color: transparent; + border-top-color: #ddd; +} +.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; +} +.navbar { + overflow: visible; + margin-bottom: 18px; +} +.navbar-inner { + padding-left: 20px; + padding-right: 20px; + background-color: #2c2c2c; + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} +.btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + background-color: #2c2c2c; + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + 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(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); +} +.btn-navbar:hover, +.btn-navbar:active, +.btn-navbar.active, +.btn-navbar.disabled, +.btn-navbar[disabled] { + background-color: #222222; +} +.btn-navbar:active, +.btn-navbar.active { + background-color: #080808 \9; +} +.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; +} +.nav-collapse.collapse { + height: auto; +} +.navbar .brand:hover { + text-decoration: none; +} +.navbar .brand { + float: left; + display: block; + padding: 8px 20px 12px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + line-height: 1; + color: #ffffff; +} +.navbar .navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #999999; +} +.navbar .navbar-text a:hover { + color: #ffffff; + background-color: transparent; +} +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} +.navbar .btn-group .btn { + margin-top: 0; +} +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} +.navbar-form:before, +.navbar-form:after { + display: table; + content: ""; +} +.navbar-form:after { + clear: both; +} +.navbar-form input, +.navbar-form select { + display: inline-block; + margin-top: 5px; + margin-bottom: 0; +} +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} +.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: 6px; + margin-bottom: 0; +} +.navbar-search .search-query { + padding: 4px 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + color: #ffffff; + color: rgba(255, 255, 255, 0.75); + background: #666; + background: rgba(255, 255, 255, 0.3); + border: 1px solid #111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} +.navbar-search .search-query :-moz-placeholder { + color: #eeeeee; +} +.navbar-search .search-query ::-webkit-input-placeholder { + color: #eeeeee; +} +.navbar-search .search-query:hover { + color: #ffffff; + background-color: #999999; + background-color: rgba(255, 255, 255, 0.5); +} +.navbar-search .search-query:focus, +.navbar-search .search-query.focused { + padding: 5px 10px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 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); + outline: 0; +} +.navbar-fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} +.navbar-fixed-top .navbar-inner { + padding-left: 0; + padding-right: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} +.navbar .nav.pull-right { + float: right; +} +.navbar .nav > li { + display: block; + float: left; +} +.navbar .nav > li > a { + float: none; + padding: 10px 10px 11px; + line-height: 19px; + color: #999999; + text-decoration: none; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.navbar .nav > li > a:hover { + background-color: #NaNbbaaNaN00NaN00NaN00NaN00NaN; + color: #ffffff; + text-decoration: none; +} +.navbar .nav .active > a, +.navbar .nav .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #222222; +} +.navbar .divider-vertical { + height: 40px; + width: 1px; + margin: 0 9px; + overflow: hidden; + background-color: #222222; + border-right: 1px solid #333333; +} +.navbar .nav.pull-right { + margin-left: 10px; + margin-right: 0; +} +.navbar .dropdown-menu { + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.navbar .dropdown-menu:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 9px; +} +.navbar .dropdown-menu:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 10px; +} +.navbar .nav .dropdown-toggle .caret, +.navbar .nav .open.dropdown .caret { + border-top-color: #ffffff; +} +.navbar .nav .active .caret { + opacity: 1; + filter: alpha(opacity=100); +} +.navbar .nav .open > .dropdown-toggle, +.navbar .nav .active > .dropdown-toggle, +.navbar .nav .open.active > .dropdown-toggle { + background-color: transparent; +} +.navbar .nav .active > .dropdown-toggle:hover { + color: #ffffff; +} +.navbar .nav.pull-right .dropdown-menu { + left: auto; + right: 0; +} +.navbar .nav.pull-right .dropdown-menu:before { + left: auto; + right: 12px; +} +.navbar .nav.pull-right .dropdown-menu:after { + left: auto; + right: 13px; +} +.breadcrumb { + padding: 7px 14px; + margin: 0 0 18px; + background-color: #fbfbfb; + background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); + background-image: linear-gradient(top, #ffffff, #f5f5f5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); + border: 1px solid #ddd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} +.breadcrumb li { + display: inline-block; + text-shadow: 0 1px 0 #ffffff; +} +.breadcrumb .divider { + padding: 0 5px; + color: #999999; +} +.breadcrumb .active a { + color: #333333; +} +.pagination { + height: 36px; + margin: 18px 0; +} +.pagination ul { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-left: 0; + margin-bottom: 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -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 li { + display: inline; +} +.pagination a { + float: left; + padding: 0 14px; + line-height: 34px; + text-decoration: none; + border: 1px solid #ddd; + border-left-width: 0; +} +.pagination a:hover, +.pagination .active a { + background-color: #f5f5f5; +} +.pagination .active a { + color: #999999; + cursor: default; +} +.pagination .disabled a, +.pagination .disabled a:hover { + color: #999999; + background-color: transparent; + cursor: default; +} +.pagination li:first-child a { + 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 li:last-child a { + -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-left: 0; + margin-bottom: 18px; + list-style: none; + text-align: center; + *zoom: 1; +} +.pager:before, +.pager:after { + display: table; + content: ""; +} +.pager:after { + clear: both; +} +.pager li { + display: inline; +} +.pager a { + 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 { + float: right; +} +.pager .previous a { + float: left; +} +.modal-open .dropdown-menu { + z-index: 2050; +} +.modal-open .dropdown.open { + *z-index: 2050; +} +.modal-open .popover { + z-index: 2060; +} +.modal-open .tooltip { + z-index: 2070; +} +.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; + max-height: 500px; + overflow: auto; + width: 560px; + margin: -250px 0 0 -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + /* IE6-7 */ + + -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 { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -ms-transition: opacity .3s linear, top .3s ease-out; + -o-transition: opacity .3s linear, top .3s ease-out; + transition: opacity .3s linear, top .3s ease-out; + top: -25%; +} +.modal.fade.in { + top: 50%; +} +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} +.modal-header .close { + margin-top: 2px; +} +.modal-body { + padding: 15px; +} +.modal-body .modal-form { + margin-bottom: 0; +} +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + 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; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + *zoom: 1; +} +.modal-footer:before, +.modal-footer:after { + display: table; + content: ""; +} +.modal-footer:after { + clear: both; +} +.modal-footer .btn { + float: right; + margin-left: 5px; + margin-bottom: 0; +} +.tooltip { + position: absolute; + z-index: 1020; + display: block; + visibility: visible; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.tooltip.top { + margin-top: -2px; +} +.tooltip.right { + margin-left: 2px; +} +.tooltip.bottom { + margin-top: 2px; +} +.tooltip.left { + margin-left: -2px; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-right: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-top: 5px solid #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-bottom: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-left: 5px solid #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-right: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-bottom: 5px solid #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-bottom: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-right: 5px solid #000000; +} +.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; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + padding: 5px; +} +.popover.top { + margin-top: -5px; +} +.popover.right { + margin-left: 5px; +} +.popover.bottom { + margin-top: 5px; +} +.popover.left { + margin-left: -5px; +} +.popover.top .arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-right: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-top: 5px solid #000000; +} +.popover.right .arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-bottom: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-right: 5px solid #000000; +} +.popover.bottom .arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-right: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-bottom: 5px solid #000000; +} +.popover.left .arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-bottom: 5px solid #NaNbbaaNaN00NaN00NaN00NaN00NaN; + border-left: 5px solid #000000; +} +.popover .arrow { + position: absolute; + width: 0; + height: 0; +} +.popover-inner { + padding: 3px; + width: 280px; + overflow: hidden; + background: #000000; + background: rgba(0, 0, 0, 0.8); + -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); +} +.popover-title { + padding: 9px 15px; + line-height: 1; + background-color: #f5f5f5; + border-bottom: 1px solid #eee; + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; +} +.popover-content { + padding: 14px; + background-color: #ffffff; + -webkit-border-radius: 0 0 3px 3px; + -moz-border-radius: 0 0 3px 3px; + border-radius: 0 0 3px 3px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} +.popover-content p, +.popover-content ul, +.popover-content ol { + margin-bottom: 0; +} +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} +.thumbnails:before, +.thumbnails:after { + display: table; + content: ""; +} +.thumbnails:after { + clear: both; +} +.thumbnails > li { + float: left; + margin: 0 0 18px 20px; +} +.thumbnail { + display: block; + padding: 4px; + line-height: 1; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); +} +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-left: auto; + margin-right: auto; +} +.thumbnail .caption { + padding: 9px; +} +.label { + padding: 2px 4px 3px; + font-size: 11.049999999999999px; + font-weight: bold; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #999999; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.label:hover { + color: #ffffff; + text-decoration: none; +} +.label-important { + background-color: #b94a48; +} +.label-important:hover { + background-color: #953b39; +} +.label-warning { + background-color: #f89406; +} +.label-warning:hover { + background-color: #c67605; +} +.label-success { + background-color: #468847; +} +.label-success:hover { + background-color: #356635; +} +.label-info { + background-color: #3a87ad; +} +.label-info:hover { + background-color: #2d6987; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +.progress { + overflow: hidden; + height: 18px; + margin-bottom: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-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(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', 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); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 18px; + color: #ffffff; + font-size: 12px; + 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: -ms-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(top, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', 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; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -ms-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .bar { + 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, #NaNbbaaNaN00NaN00NaN00NaN00NaN), color-stop(0.5, #NaNbbaaNaN00NaN00NaN00NaN00NaN), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, #NaNbbaaNaN00NaN00NaN00NaN00NaN), to(#NaNbbaaNaN00NaN00NaN00NaN00NaN)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + -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; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-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(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); +} +.progress-danger.progress-striped .bar { + 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, #NaNbbaaNaN00NaN00NaN00NaN00NaN), color-stop(0.5, #NaNbbaaNaN00NaN00NaN00NaN00NaN), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, #NaNbbaaNaN00NaN00NaN00NaN00NaN), to(#NaNbbaaNaN00NaN00NaN00NaN00NaN)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); +} +.progress-success .bar { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-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(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); +} +.progress-success.progress-striped .bar { + 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, #NaNbbaaNaN00NaN00NaN00NaN00NaN), color-stop(0.5, #NaNbbaaNaN00NaN00NaN00NaN00NaN), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, #NaNbbaaNaN00NaN00NaN00NaN00NaN), to(#NaNbbaaNaN00NaN00NaN00NaN00NaN)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); +} +.progress-info .bar { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-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(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); +} +.progress-info.progress-striped .bar { + 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, #NaNbbaaNaN00NaN00NaN00NaN00NaN), color-stop(0.5, #NaNbbaaNaN00NaN00NaN00NaN00NaN), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, #NaNbbaaNaN00NaN00NaN00NaN00NaN), to(#NaNbbaaNaN00NaN00NaN00NaN00NaN)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 25%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN 75%, #NaNbbaaNaN00NaN00NaN00NaN00NaN); +} +.accordion { + margin-bottom: 18px; +} +.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-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} +.carousel { + position: relative; + margin-bottom: 18px; + line-height: 1; +} +.carousel-inner { + overflow: hidden; + width: 100%; + position: relative; +} +.carousel .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -ms-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 { + left: auto; + right: 15px; +} +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-caption { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 10px 15px 5px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} +.carousel-caption h4, +.carousel-caption p { + color: #ffffff; +} +.hero-unit { + padding: 60px; + margin-bottom: 30px; + background-color: #f5f5f5; + -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; +} +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 27px; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.hide { + display: none; +} +.show { + display: block; +} +.invisible { + visibility: hidden; +} +/* new clearfix */ +.clearfix:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; +} +* html .clearfix { + zoom: 1; +} +/* IE6 */ +*:first-child + html .clearfix { + zoom: 1; +} +/* IE7 */ +@font-face { + font-family: 'anivers'; + src: url('/static/dashboard/fonts/Anivers_Regular-webfont.eot'); + src: url('/static/dashboard/fonts/Anivers_Regular-webfont.eot?iefix') format('eot'), url('/static/dashboard/fonts/Anivers_Regular-webfont.woff') format('woff'), url('/static/dashboard/fonts/Anivers_Regular-webfont.ttf') format('truetype'), url('/static/dashboard/fonts/Anivers_Regular-webfont.svg#webfont3JLVF59W') format('svg'); + font-weight: normal; + font-style: normal; +} +a { + color: #43a1d6; +} +ul { + list-style: none; + margin: 0; +} +dt { + font-weight: bold; +} +#main_content { + padding-left: 250px; + padding-right: 25px; +} +.topbar { + background: #f2f2f2; + border-bottom: 1px solid #e5e5e5; + padding: 10px 25px; + margin-top: 0; + margin-left: -25px; + margin-bottom: 20px; + margin-right: -25px; + min-width: 700px; +} +.topbar .switcher_bar { + display: inline-block; + height: auto; + width: 160px; + background-position: 140px center; + margin-bottom: 0; + font-size: 11px; + margin-left: 20px; + padding: 0; + background-image: url(/static/dashboard/img/drop_arrow.png); + border: 1px solid #c0d9e4; + background-color: #e9f5fa; + background-repeat: no-repeat; +} +.topbar .switcher_bar a { + padding: 2px 10px 1px; + margin-left: 0; + display: block; +} +.topbar .switcher_bar ul { + width: 130px; +} +#user_info { + color: #888; + margin: auto 0; +} +#user_info > a { + margin-left: 25px; + font-size: 11px !important; +} +.page-header { + margin: 0; + padding: 0; + border: 0; + font-family: anivers; +} +h2 { + color: #6a6a6a; + font-size: 30px; + font-weight: normal; +} +body { + background-color: #fff; + min-width: 890px; +} +/* Login Splash Page */ +#splash { + background: #fafafa; +} +#splash .login { + background: #ffffff url(/static/dashboard/img/logo-splash.png) no-repeat center 35px; + position: absolute; + top: 80px; + left: 50%; + margin: 0 0 0 -195px; + padding-top: 170px; + width: 390px; + border: 1px solid #e1e1e1; + max-height: none; + -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; +} +#splash .login form .error { + width: 100%; +} +#splash .login form input { + width: 350px; +} +#splash .login form select { + width: 360px; +} +#splash .help-block { + display: none; +} +#create_container_form .modal-footer { + margin-top: 190px; +} +.nav li a { + color: #8EACB7; + text-shadow: none; +} +.container-fluid { + padding-left: 0; +} +.sidebar { + background: #edf9ff; + border-right: 5px solid #e5e5e5; + border-bottom: 5px solid #e5e5e5; + float: left; +} +.sidebar h4 { + margin-left: 14px; + color: #999; +} +.sidebar .nav-tabs { + margin-top: -34px; +} +.sidebar .nav-tabs li.active a { + background-color: #edf9ff; +} +h1.brand { + width: 100%; + margin: 0; + background-color: #f5f5f5; + padding-bottom: 40px; +} +h1.brand a { + background: url(/static/dashboard/img/logo.png) top left no-repeat; + display: block; + float: left; + width: 116px; + height: 123px; + text-indent: -9999px; + margin-left: 56px; + margin-top: 15px; + margin-bottom: 25px; +} +/* Tenant Dropdown */ +a.current_item { + width: 163px; + float: left; +} +a.current_item:hover { + text-decoration: none; +} +a.current_item:hover h3, +a.current_item:hover h4 { + color: #39738c; +} +.sidebar .switcher_bar { + width: 190px; + height: 38px; + padding: 5px 0; + margin-left: 14px; + margin-bottom: 15px; +} +.sidebar .switcher_bar a.dropdown-toggle { + display: block; + padding: 5px 0; + background-image: url(/static/dashboard/img/drop_arrow.png); + border: 1px solid #c0d9e4; + background-color: #e9f5fa; + background-repeat: no-repeat; + background-position: 167px 23px; +} +.sidebar .switcher_bar a.dropdown-toggle:hover { + text-decoration: none; + background-color: #cde8f4; +} +.sidebar .switcher_bar:focus { + outline: none; +} +.sidebar .switcher_bar h3 { + color: #4790ae; + font-size: 16px; + margin: -6px 0 0 14px; + padding: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.sidebar .switcher_bar h3:hover { + white-space: normal; + overflow: visible; + text-overflow: none; + padding-right: 1em; + word-wrap: break-word; +} +.sidebar .switcher_bar h4 { + color: #6fabc4; + font-size: 10px; + text-transform: uppercase; + font-weight: normal; + padding: 0; +} +.sidebar .switcher_bar ul { + border: 1px solid #c0d9e4; + margin-left: -1px; + width: 190px; +} +.sidebar .switcher_bar li a:hover { + background: #92d6f1; +} +#usage { + margin-bottom: 25px; + height: 125px; +} +.usage_block { + background: #e8f8ff; + color: #84b6c5; + border: 1px solid #afe3fb; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + float: left; + width: 29%; + margin-right: 5%; + min-height: 125px; +} +.usage_block.last { + margin-right: 0; +} +.usage_block h3 { + background: #cef0ff; + color: #4fa5bf; + font-weight: normal; + padding: 0 0 0 10px; + border-bottom: 1px solid #c6e7f5; + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +.usage_block ul { + margin: 10px; +} +.usage_block .quantity { + font-size: 25px; +} +.usage_block li { + font-size: 11px; + margin: 0 0 15px 0; +} +.usage_block .unit { + font-size: 11px; + text-transform: uppercase; + padding: 0 0 0 1px; +} +.table-bordered { + border: none; +} +.table_header { + min-height: 35px; + padding: 5px 0; +} +.table_caption th { + background-color: transparent; + border: none; +} +.table-bordered tr.table_caption + tr th { + border-top: 1px solid #ddd; +} +.table-bordered tr.table_caption + tr th:first-child, +.table-bordered tr.table_caption + tr th.hide + th { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + border-left: 1px solid #ddd; +} +.table-bordered tr.table_caption + tr th:last-child { + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + border-right: 1px solid #ddd; +} +.table-bordered tbody tr td:first-child, +.table-bordered tfoot tr td:first-child { + border-left: 1px solid #ddd; +} +.table-bordered tbody tr td:last-child, +.table-bordered tfoot tr td:last-child { + border-right: 1px solid #ddd; +} +.table-bordered tfoot tr td:first-child { + border-bottom: 1px solid #ddd; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.table-bordered tfoot tr td:last-child { + border-bottom: 1px solid #ddd; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.table_title h3, +.table_header h3 { + font-family: anivers; + font-weight: normal; + font-size: 24px; + margin-bottom: 5px; + float: left; +} +.table th.header { + cursor: pointer; +} +.table th.header:hover { + background-color: #e8e8e8; + text-decoration: underline; +} +.table tbody td.anchor a { + display: block; + padding: 8px; +} +.table tr.table_caption th.header:hover { + background-color: transparent; + cursor: default; +} +.table th.headerSortUp:hover, +.table th.headerSortDown:hover { + background-color: #dfdfdf; +} +.table th.headerSortUp, +.table th.headerSortDown { + background-color: #dfdfdf; + background-repeat: no-repeat; + background-position: 98% center; +} +.table th.headerSortDown { + background-image: url(/static/dashboard/img/drop_arrow.png); +} +.table th.headerSortUp { + background-image: url(/static/dashboard/img/up_arrow.png); +} +.table tr.summation td:first-child, +.table tr.summation td:last-child { + border-radius: 0; + border-bottom: 0 none; +} +th { + background: #f1f1f1; +} +td.anchor { + padding: 0; +} +small { + font-size: 11px; +} +.main_nav { + list-style: none; + width: 222px; + margin: 10px 0 20px 0; +} +.main_nav a { + color: #999; + width: 185px; + padding: 10px; + display: block; + margin-left: 20px; +} +.main_nav a.active { + background: #fff; + border: 2px solid #d8d8d8; + border-right: 0; + border-bottom-color: #ccc; +} +table form { + margin-bottom: 0; + width: 1px; +} +.messages { + position: fixed; + z-index: 9999; + top: 20px; + right: 20px; + width: 300px; +} +.messages .alert-block { + -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); +} +.messages .alert-block.alert-error { + border: 1px solid #9d261d; +} +.messages .alert-block.alert-success { + border: 1px solid #46a546; +} +.alert-block .alert-actions { + margin-top: -23px; + margin-right: -23px; +} +.modal > form, +.login > form, +.alert-actions > form { + margin-bottom: 0; +} +.alert-block p { + overflow: hidden; + word-wrap: break-word; +} +.alert-block p:last-child { + margin-bottom: 0; +} +#actions.single { + width: 90px; +} +.table-striped tr td { + transition: background 0.2s; + -webkit-transition: background 0.2s; + -moz-transition: background 0.2s; + -o-transition: background 0.2s; +} +.inspect { + float: left; + display: block; + margin-top: 5px; + margin-right: 25px; +} +.table { + margin-bottom: 25px; +} +.table tr td { + vertical-align: middle; +} +.table tr.empty td { + text-align: center; +} +.table tfoot tr td { + border-top: 1px solid #DDD; + background-color: #F1F1F1; + font-size: 11px; + line-height: 14px; +} +.table_actions { + float: right; + min-width: 400px; +} +.table_actions .table_search, +.table_actions .table_filter { + display: inline-block; +} +.table_search input { + background: url(/static/dashboard/img/search.png) no-repeat 195px 5px; + display: inline-block; + margin-bottom: 0; +} +.table_actions a, +.table_actions button { + float: right; + margin-left: 10px; +} +.table_actions button.filter { + margin-left: 0; +} +.table_actions a.btn-create, +.table_actions a.btn-launch { + padding-left: 23px; + position: relative; +} +.table_actions a.btn-create:before, +.table_actions a.btn-launch:before { + display: inline-block; + content: ""; + width: 18px; + height: 20px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + background-image: url("/static/bootstrap/img/glyphicons-halflings.png"); + background-position: -403px -92px; + background-repeat: no-repeat; + position: absolute; + top: 0px; + left: 0px; +} +.table_actions a.btn-download { + padding-left: 23px; + position: relative; +} +.table_actions a.btn-download:before { + display: inline-block; + content: ""; + width: 18px; + height: 20px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + background-image: url("/static/bootstrap/img/glyphicons-halflings.png"); + background-position: -91px -19px; + background-repeat: no-repeat; + position: absolute; + top: 0px; + left: 0px; +} +.table_actions a.btn-upload { + padding-left: 23px; + position: relative; +} +.table_actions a.btn-upload:before { + display: inline-block; + content: ""; + width: 18px; + height: 20px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + background-image: url("/static/bootstrap/img/glyphicons-halflings.png"); + background-position: -283px -92px; + background-repeat: no-repeat; + position: absolute; + top: 0px; + left: 0px; +} +.table_actions button.btn-delete, +.table_actions button.btn-terminate { + padding-left: 23px; + position: relative; +} +.table_actions button.btn-delete:before, +.table_actions button.btn-terminate:before { + display: inline-block; + content: ""; + width: 18px; + height: 20px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + background-image: url("/static/bootstrap/img/glyphicons-halflings-white.png"); + background-position: -451px 5px; + background-repeat: no-repeat; + position: absolute; + top: 0px; + left: 0px; +} +.table_header .table_actions { + min-width: 0; +} +.table_header .table_actions a, +.table_header .table_actions > button, +.table_header .table_actions .table_search button { + display: inline-block; + float: none; +} +.table_header .table_filter { + vertical-align: bottom; + margin-right: 20px; +} +.table_header .table_filter i { + vertical-align: middle; +} +.table_actions form { + float: right; + margin-left: 10px; +} +.hidden { + display: none; +} +/* + * Bootstrap styles table backgrounds using nth-child(2n+1), which is + * oblivious to hidden elements. The styles below allow us to override + * the bootstrap style when neccessary by setting the odd/even classes. + */ +.table-striped.datatable tbody tr.odd td { + background-color: #f9f9f9; +} +.table-striped.datatable tbody tr.even td { + background-color: inherit; +} +.table-striped.datatable tbody tr.odd:hover td, +.table-striped.datatable tbody tr.even:hover td, +.table-striped.datatable tbody tr:hover th { + background-color: #f5f5f5; +} +.table-striped tbody tr.status_unknown:nth-child(odd) td { + background-color: #ffffb5; +} +.table-striped tbody tr.status_unknown:nth-child(even) td { + background-color: #ffffc6; +} +.nowrap-col { + white-space: nowrap; +} +.overview { + font-size: 24px; +} +#monitoring { + background: #f8f8f8; + font-size: 14px; + height: 20px; + margin: -18px 0 25px; + padding: 10px; + border: 1px solid #e1e1e1; + font-family: "anivers"; +} +#monitoring h3 { + font-size: 14px; + font-weight: normal; + float: left; + line-height: 18px; +} +#external_links, +#external_links li { + float: left; +} +#external_links li { + margin: 0 0 0 15px; +} +/* Forms */ +form label { + text-align: left; + color: #555; + font-weight: bold; +} +.modal { + width: 700px; + max-height: none; + /* Prevents large modals from scrolling unnecessarily */ + + top: 80px; + margin-top: 0; + position: absolute; +} +.modal.loading { + width: 150px; + height: 150px; + margin: 0 auto; + overflow: hidden; +} +.modal.loading p { + text-align: center; + position: absolute; + bottom: 0; + width: 150px; +} +form.horizontal .form-field { + float: left; +} +form.horizontal.split_half .form-field { + width: 334px; + /* Fits 2 fields to a row */ + +} +form.horizontal.split_quarter .form-field { + width: 167px; + /* Fits 4 fields to a row */ + +} +form.horizontal.split_five .form-field { + width: 133px; + /* Fits 5 fields to a row */ + +} +form.horizontal fieldset { + width: 100%; +} +.modal-body { + overflow-y: visible; + max-height: none; +} +.modal-body table { + margin-bottom: 30px; +} +.modal-body ~ hr { + margin-bottom: 0; +} +.static_page { + float: left; + width: 700px; + background-color: #FFF; + border: 1px solid #DDD; +} +.static_page > form { + margin-bottom: 0; +} +.left { + float: left; + width: 347px; + margin-right: 15px; +} +.left form { + margin: 0; +} +.right { + float: left; + width: 308px; +} +.workflow ul.nav-tabs { + padding: 0 10px; +} +.workflow td.actions { + vertical-align: top; + width: 308px; + padding-right: 10px; +} +.workflow td.help_text { + vertical-align: top; + width: 340px; + padding-left: 10px; + border-left: 1px solid #DDD; +} +.workflow fieldset > table { + margin-bottom: 0; +} +.clear { + clear: both; + width: 0; + height: 0; + padding: 0; + margin: 0; +} +.modal-body fieldset { + margin: 0; + padding: 0; +} +.modal-body fieldset ul { + width: 90%; +} +.modal-body fieldset .form-field input, +.modal-body fieldset .form-field textarea { + width: 298px; +} +.modal-body fieldset .form-field select { + width: 308px; +} +.modal-body fieldset .form-field textarea { + height: 36px; +} +.modal-footer input { + width: auto; +} +.modal-body .modal-footer { + width: 670px; + margin-left: -25px; + margin-right: -15px; +} +.modal-footer a.close { + margin-top: 0; + margin-right: 5px; + font-size: 12px; + color: #666; + font-weight: normal; + filter: alpha(opacity=100); + -khtml-opacity: 1; + -moz-opacity: 1; + opacity: 1; +} +.modal-footer a.close:hover { + color: #333; + text-decoration: underline; +} +.modal-body .help-block { + text-align: left; + float: left; + width: 100%; + margin-bottom: 10px; +} +#create_keypair_modal .clearfix { + margin-bottom: 115px; +} +#actions { + width: 90px; +} +#actions .btn { + margin-bottom: 5px; +} +#actions a.btn { + width: 70px; +} +#actions input.btn { + text-align: left; +} +#images #actions { + width: 100px; +} +/*New List Patches*/ +.details-modal .modal-body { + padding-bottom: 20px; +} +.form-inline { + display: inline; +} +.form-inline input, +.form-inline button, +.form-inline a.btn { + margin-left: 5px; +} +td.select { + width: 10px; +} +/* Actions dropdown */ +td.actions_column { + white-space: nowrap; + padding: 10px; + position: relative; + width: 200px; +} +td.actions_column .btn-group { + display: inline-block; +} +td.actions_column .row_actions a, +td.actions_column .row_actions input, +td.actions_column .row_actions button { + background: none; + float: none; + display: block; + padding: 5px 10px; + color: black; + text-align: left; + border-radius: 0; + border: 0 none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +td.actions_column .row_actions .hide { + display: none; +} +td.actions_column .btn-action-required { + font-weight: bold; +} +/* Makes size consistent across browsers when mixing "btn-group" and "small" */ +.btn.hide, +.btn-group .hide { + display: none; +} +.btn-group .dropdown-toggle:focus { + outline: none; +} +.dropdown-menu button { + line-height: 18px; + /* Matches rule for ".dropdown-menu a" in bootstrap */ + + width: 100%; +} +.btn-group .dropdown-menu .btn { + border-radius: 0; +} +.dropdown-menu .btn.btn-danger, +.dropdown-menu .btn.btn-danger:hover, +.dropdown-menu .btn.btn-success, +.dropdown-menu .btn.btn-success:hover, +.dropdown-menu .btn.btn-info, +.dropdown-menu .btn.btn-info:hover { + text-shadow: none; + /* remove default bootstrap shadowing from button text. */ + +} +.dropdown-menu li:hover { + background: none; +} +.dropdown-menu li.divider:hover { + background-color: #E5E5E5; +} +td.actions_column .dropdown-menu a:hover, +td.actions_column .dropdown-menu button:hover { + background-color: #CDCDCD; +} +.dropdown-menu .btn.btn-danger { + color: #C43C35; +} +.dropdown-menu .btn.btn-danger:hover { + background-color: #f6e0df; +} +/* Overrides for single-action rows (no dropdown) */ +tr td.actions_column ul.row_actions.single, +tr:hover td.actions_column ul.row_actions.single, +td.actions_column ul.row_actions.single, +td.actions_column ul.row_actions.single:hover { + border: none; +} +td.actions_column ul.row_actions.single li.action { + display: block; +} +td.actions_column ul.row_actions.single li.action:hover { + background-color: transparent; +} +td.actions_column ul.row_actions.single a, +td.actions_column ul.row_actions.single input, +td.actions_column ul.row_actions.single button { + color: #43a1d6; +} +td.actions_column ul.row_actions.single a:hover, +td.actions_column ul.row_actions.single input:hover, +td.actions_column ul.row_actions.single button:hover { + color: black; +} +th.multi_select_column, +td.multi_select_column { + width: 25px; +} +th.multi_select_column, +td.multi_select_column { + text-align: center; +} +.table-fixed { + table-layout: fixed; +} +.table input[type="checkbox"] { + display: inline; +} +div.input input[type="checkbox"] { + float: left; + width: 25px; +} +.table_title a { + font-size: 11px; + float: right; + margin-left: 10px; + margin-top: 10px; +} +tr.terminated { + color: #999999; +} +#instance_tabs { + float: left; + width: 100%; + border-bottom: 1px solid #e1e1e1; +} +#instance_tabs li a { + background: #f2f2f2; + display: block; + font-size: 14px; + float: left; + padding: 5px 10px; + margin-right: 10px; + border: 1px solid #e1e1e1; + border-bottom: none; +} +#instance_tabs li.active a { + background: #fff; + padding-bottom: 8px; + margin-bottom: -5px; +} +#main_content .nav-tabs { + margin-bottom: 0; +} +#main_content .tab-content { + border: 1px solid #ddd; + border-top: 0 none; + padding: 10px; +} +#main_content .workflow .modal-body { + padding-left: 0; + padding-right: 0; +} +#main_content .workflow .modal-body .tab-content { + border-left: 0 none; + border-right: 0 none; + border-bottom: 0 none; +} +.tab_wrapper { + padding-top: 50px; +} +/* Fix tooltip z-index to show above modals. Bootstrap bug 582*/ +.tooltip { + z-index: 12000; +} +.volume_boot_disclosure { + font-weight: bold; + color: #555; + cursor: pointer; + background-image: url(/static/dashboard/img/right_droparrow.png); + background-repeat: no-repeat; + background-position: 130px center; +} +.volume_boot_disclosure.on { + width: 334px; + margin-bottom: 10px; + border-bottom: solid 1px #E1E1E1; + background-image: url(/static/dashboard/img/drop_arrow.png); +} +form div.clearfix.error { + width: 308px; +} +.nav-tabs a { + cursor: pointer; +} +.nav-tabs li.error a { + color: #B94A48; +} +.nav-tabs li.error a:after { + content: "*"; +} +/* Region selector in header */ +#region_selector { + position: absolute; + z-index: 9999; + right: 0; + top: 24px; +} +#region_selector a { + margin-left: 0; +} +#region_selector ul { + float: left; + margin-left: 5px; + padding-right: 21px; + width: 125px; +} +#region_selector ul:hover a { + display: block; +} +#region_selector li a { + padding: 3px 3px 3px 5px; + display: none; + background: #E1E1E1; + margin-top: -10px; +} +#region_selector li:first-child p { + background: #ededed url(/static/dashboard/img/drop_arrow.png) no-repeat 106px 9px !important; + display: block; + border: 1px solid #e1e1e1; + padding: 5px; +} +iframe { + border: none; +} +.item_detail ul li label { + color: #000; + font-weight: bold; + display: block; + margin-top: 5px; +} +.progress_bar { + height: 100%; + width: 100%; + border: 1px solid #CCC; + background-color: #CCC; +} +.progress_bar_fill, +.progress_bar_selected { + height: 100%; + float: left; +} +.progress_bar_fill { + background-color: #666; +} +.progress_bar_selected { + background-color: #4790AE; + width: 0; +} +.progress_bar_over { + background-color: red; +} +.quota_title { + color: #999; + padding-bottom: 0; + margin-bottom: 8px; +} +.quota_title strong { + color: #000; +} +.quota_title strong span { + font-weight: normal; +} +.quota_title p { + float: right; + margin-bottom: 0; +} +.quota_bar { + height: 15px; + margin: -8px 0 8px; +} +div .flavor_table { + border: 1px solid #AAA; + width: 100%; + margin-bottom: 14px; +} +.flavor_table .flavor_name { + white-space: nowrap; + font-weight: bold; + text-align: left; + padding: 7px 12px 7px 7px; + width: 160px; +} +#main_content .row-fluid { + margin: 10px 0 20px; +} +#main_content .row-fluid:last-child { + margin-bottom: 0; +} +.header_rule { + margin: 0 0 10px; +} +.item_detail .detail_section { + margin-bottom: 25px; + float: left; + margin-right: 50px; +} +.error .help-inline, +.dynamic-error { + background: #efdfdf; + border: 1px solid #ead5d8; + padding: 10px; + display: block; +} +.dynamic-error { + color: #b94a48; + margin-bottom: 0.5em; +} +label.log-length { + line-height: 28px; + margin-right: 10px; +} +.progress-success.bar { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-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(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); +} +.progress_bar_fill.progress-warning.bar { + background-color: #898989; + background-image: -moz-linear-gradient(top, #999999, #333333); + background-image: -ms-linear-gradient(top, #999999, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#999999), to(#333333)); + background-image: -webkit-linear-gradient(top, #999999, #333333); + background-image: -o-linear-gradient(top, #999999, #333333); + background-image: linear-gradient(top, #999999, #333333); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#999999', endColorstr='#333333', GradientType=0); +} +.progress_bar_over.bar { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-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(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); +} +.split_five div.control-group input[type="text"], +.split_five div.control-group select { + width: 120px; +} +.warning { + background-color: #f2dede; + border-bottom: 1px solid #9d261d; + padding: 5px 10px; +} +.warning .warning-text { + text-align: center; +} +.warning .warning-text h3, +.warning .warning-text a { + display: inline-block; +} +.warning .warning-text h3 { + vertical-align: bottom; +} +#admin_warning_detail ul { + list-style: circle; + padding-left: 20px; + margin-bottom: 10px; +} +.no_split { + margin-top: -60px; +} +/* Project Membership UI */ +.project_membership { + min-height: 200px; + /* Buttons */ + + /* Header */ + + /* 'Fake table' body */ + + /* User lists */ + + /* List filtering */ + + /* Role dropdown menus */ + +} +.project_membership .btn-group { + margin-left: 0px; + padding: 2px 10px 0 0; + margin-bottom: 0px; + border: 1px solid #DDD; + border-bottom: none; +} +.project_membership .btn-group .active { + float: right; +} +.project_membership a.btn-primary:hover { + background-color: #04C; +} +.project_membership .help_text { + margin-left: 15px; + margin-bottom: 15px; +} +.project_membership .users_title { + color: #555; + font-weight: bold; + padding-left: 10px; + float: left; +} +.project_membership input { + background: url(/static/dashboard/img/search.png) no-repeat 105px 5px whiteSmoke; +} +.project_membership .fake_table_header { + background-color: #F1F1F1; + width: 306px; + height: 38px; + padding-top: 15px; + border: 1px solid #DDD; + border-bottom: none; +} +.project_membership .fake_table { + margin-left: 5px; + width: 315px; +} +.project_membership .fake_table ul.no_results { + width: 298px; +} +.project_membership .fake_table ul.btn-group:hover { + background-color: #DDD; +} +.project_membership .left .fake_table_header { + width: 318px; +} +.project_membership .right .fake_table_header { + width: 318px; + margin-left: -15px; +} +.project_membership .right .fake_table ul.no_results { + margin-left: -20px; +} +.project_membership .member { + padding: 10px; + text-align: left; +} +.project_membership .project_members { + margin-left: -20px; +} +.project_membership .project_members ul.btn-group, +.project_membership .available_users ul.btn-group { + width: 308px; +} +.project_membership .dark_stripe { + background-color: #F9F9F9; +} +.project_membership .light_stripe { + background-color: white; +} +.project_membership .last_stripe { + border-bottom: 1px solid #DDD; +} +.project_membership .filter { + width: 120px; + margin: -5px 13px 15px 0px; + float: right; +} +.project_membership .no_results { + border: 1px solid #DDD; + padding: 10px; + opacity: 0.5; +} +.project_membership .role_dropdown li { + cursor: pointer; + background: none; + float: none; + display: block; + padding: 5px 10px; + color: black; + text-align: left; + border-radius: 0; + border: 0 none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + z-index: 99999; +} +.project_membership .role_dropdown li i { + opacity: 0; +} +.project_membership .role_dropdown li:hover { + background-color: #CDCDCD; +} +.project_membership .role_dropdown li.selected i { + opacity: 1; +} +.project_membership .dropdown-menu.role_dropdown { + right: 0; + left: auto; +} +.project_membership .nav .role_options { + float: right; + padding-right: 5px; +} +/* Inline user creation */ +.add_user_btn { + display: inline; +} +#add_user { + clear: both; +} +.add_user { + float: right; + margin-top: 10px; + margin-right: 15px; +} +/* Fixes overflow on dropdowns in modal */ +.dropdown_fix { + overflow: visible; +} +/* Replaces CPU hungry spin.js with animated gif */ +.loading_gif { + width: 35px; + height: 13px; + padding-top: 2px; + padding-right: 5px; + float: left; +} +.action_required_img { + width: 35px; + height: 13px; + padding-top: 2px; + padding-right: 5px; + float: left; +} +/* ResourceBrowser style */ +#browser_wrapper { + width: 100%; + min-width: 1000px; + background-color: #eeeeee; + border: 1px solid #dddddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +#browser_wrapper .tfoot { + clear: both; + padding: 8px; + border-top: 1px solid #dddddd; + background-color: #F1F1F1; + font-size: 11px; + line-height: 14px; +} +#browser_wrapper .tfoot span { + display: inline-block; +} +#browser_wrapper .tfoot span.navigation_table_count { + width: 30%; +} +#browser_wrapper form, +#browser_wrapper table { + margin-bottom: 0; +} +#browser_wrapper .navigation_wrapper, +#browser_wrapper .content_wrapper { + position: relative; + float: left; +} +#browser_wrapper div.navigation_wrapper { + z-index: 10; + width: 30%; +} +#browser_wrapper div.navigation_wrapper div.table_wrapper, +#browser_wrapper div.navigation_wrapper thead th.table_header { + border-right: 0 none; + border-top-right-radius: 0; +} +#browser_wrapper div.navigation_wrapper td:first-child { + border-left: 0 none; +} +#browser_wrapper div.navigation_wrapper td.breadcrumb_td { + padding-right: 0px; + max-width: 200px; +} +#browser_wrapper div.navigation_wrapper tr.current_selected td { + background-color: #E9F5FA; +} +#browser_wrapper div.navigation_wrapper tfoot td { + border-right: 0 none; + border-bottom-right-radius: 0; +} +#browser_wrapper div.navigation_wrapper ul.breadcrumb { + padding-right: 0px; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + border-right: none; + white-space: nowrap; +} +#browser_wrapper div.navigation_wrapper tbody td { + border-right: 1px solid #dddddd; + background-color: #ffffff; +} +#browser_wrapper div.content_wrapper { + width: 70%; + /* FIXME(Ke Wu): for now there are two breadcrumb tr in both table + * and this one in the content table is hidden. This hack is made to + * fix the alignment of two table, needs a better solution in the + * future. + */ + +} +#browser_wrapper div.content_wrapper div.table_wrapper, +#browser_wrapper div.content_wrapper thead th.table_header { + border-left: 0 none; + border-top-left-radius: 0; +} +#browser_wrapper div.content_wrapper td { + border-bottom: 1px solid #dddddd; +} +#browser_wrapper div.content_wrapper td:last-child { + border-right: 0 none; +} +#browser_wrapper div.content_wrapper td.breadcrumb_td { + padding-left: 0px; +} +#browser_wrapper div.content_wrapper tfoot td { + border-left: 0 none; + border-bottom-left-radius: 0; +} +#browser_wrapper div.content_wrapper ul.breadcrumb { + padding-left: 0px; + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; + border-left: none; +} +#browser_wrapper div.content_wrapper ul.breadcrumb li { + visibility: hidden; +} +#browser_wrapper table { + border-collapse: collapse; +} +#browser_wrapper table thead tr th { + border-bottom: none; + background-color: #eeeeee; +} +#browser_wrapper table tbody tr:last-child td { + border-bottom: 1px solid #ddd; + border-radius: 0; +} +#browser_wrapper table tbody tr.empty td { + height: 28px; + padding: 10px; +} +#browser_wrapper table tbody td.actions_column { + position: static; +} +#browser_wrapper .breadcrumb { + padding: 6px; + margin: 0 0 1px 0; +} +/* Styling for inline object creation buttons */ +.btn-inline { + margin-bottom: 9px; +} +.modal-body fieldset .form-field select[data-add-item-url] { + width: 275px; + margin-right: 2px; +} +/* Styling for draged network object */ +#networkListSortContainer { + display: none; +} +.networklist { + padding: 6px; + background: #eee; + border: 1px solid #ccc; + min-height: 2em; + width: auto !important; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.networklist li { + width: 226px; + list-style-type: none; + margin: 6px auto; + padding: 3px; + background: #fff; + border: 1px solid #aaa; + line-height: 18px; + border-radius: 3px; + cursor: move; + padding-left: 23px; + background: #ffffff url(/static/dashboard/img/drag.png) no-repeat 11px 50%; +} +.networklist li em { + font-size: 0.5em; + line-height: 1em; + color: #999; + font-style: normal; + margin-left: 0.8em; +} +.networklist li i { + margin-right: 5px; + vertical-align: middle; +} +.networklist li a.btn { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + font-size: 11px; + line-height: 12px; + padding: 2px 5px 3px; + margin-right: 1px; + width: 18px; + text-align: center; + right: 5px; + vertical-align: middle; + float: right; +} +.networklist li a.btn:before { + content: "+"; +} +.networklist li.ui-sortable-helper { + background-color: #def; +} +.networklist li.ui-state-highlight { + border: 1px dotted #ccc; + background: #efefef; + height: 0.5em; +} +.networklist li:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; +} +#selected_network { + margin-bottom: 1.5em; + counter-reset: v1 0; + background: #edf9ff; + border: 1px solid #c0d9e4; +} +#selected_network li { + position: relative; +} +#selected_network li a.btn:before { + content: "-"; +} +#selected_network li:before { + content: "nic:" counter(v1); + counter-increment: v1; + display: inline-block; + margin-right: 5px; + background: #666; + color: #fff; + font-size: 90%; + padding: 0px 4px; + vertical-align: middle; + border-radius: 2px; + position: absolute; + left: -2em; +} +#selected_network.dragging li:before { + content: "nic:"; + background-color: rgba(102, 102, 102, 0.5); + padding-right: 10px; +} +#selected_network.dragging li.ui-state-highlight:before { + content: ""; + background: transparent; +} +/* Styling for network topology */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 20px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 20px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 20px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 20px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 20px 0; + } + to { + background-position: 0 0; + } +} +#topologyCanvas { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + height: 500px; + padding: 25px; + padding-left: 50px; + background: #efefef; +} +#topologyCanvas div.nodata { + font-size: 150%; + font-weight: bold; + text-align: center; + padding-top: 200px; + display: none; +} +div.networks { + height: 100%; +} +div.network { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + float: left; + width: 270px; + height: 100%; + position: relative; +} +div.network .nicname { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + height: 100%; + width: 17px; + border-radius: 17px; + z-index: 200; + color: #fff; + position: absolute; + left: -8px; + top: 0px; + cursor: pointer; +} +div.network .nicname:hover { + background-image: -webkit-linear-gradient(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.15)); + background-image: -moz-linear-gradient(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.15)); + background-image: -ms-linear-gradient(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.15)); + background-image: -o-linear-gradient(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.15)); + background-image: linear-gradient(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.15)); + background-size: 10px 10px; +} +div.network .nicname.nourl { + cursor: auto; +} +div.network .nicname.nourl:hover { + background-image: none; +} +div.network .nicname h3 { + font-size: 12px; + line-height: 1; + position: relative; + font-weight: normal; + top: 55%; + color: #fff; + left: -1px; + letter-spacing: 0.2em; + -webkit-transform: rotate(-90deg); + -moz-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + transform: rotate(-90deg); + white-space: nowrap; + text-shadow: 0px 0px 5px #000; +} +div.network .nicname span.ip { + position: absolute; + bottom: -10px; + left: 20px; + color: #000; + display: block; + font-weight: normal; + font-size: 90%; + letter-spacing: 0.2em; + -webkit-transform: rotate(-90deg); + -moz-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + transform: rotate(-90deg); + -webkit-transform-origin: 0% 0%; + -moz-transform-origin: 0% 0%; + -ms-transform-origin: 0% 0%; + -o-transform-origin: 0% 0%; + transform-origin: 0% 0%; + white-space: nowrap; + text-shadow: 0px 0px 2px #fff,0px 0px 2px #fff; +} +div.network .router, +div.network .server, +div.network .device { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + width: 90px; + border: 3px solid #444; + position: absolute; + top: 30px; + left: 90px; + color: #fff; + padding: 0 3px; + background: #666; + margin-bottom: 20px; + border-radius: 8px; +} +div.network .router:before, +div.network .server:before, +div.network .device:before { + content: ""; + width: 20px; + height: 20px; + border: 2px solid #444; + line-height: 1.2; + position: absolute; + border-radius: 20px; + top: -10px; + left: -10px; + background: #ffffff url(/static/dashboard/img/router.png) no-repeat center center; + background-size: 16px 16px; +} +div.network .router:after, +div.network .server:after, +div.network .device:after { + content: ""; + width: 100%; + line-height: 1.2; + position: absolute; + text-align: center; + border-radius: 0; + background: #444; + color: #fff; + font-size: 11px; + height: 1.5em; + bottom: 0px; + left: 0px; +} +div.network .router span.devicename, +div.network .server span.devicename, +div.network .device span.devicename { + position: absolute; + color: #fff; + bottom: 0px; + font-size: 12px; + line-height: 14px; + width: 100%; + text-align: center; + z-index: 300; + left: -2px; +} +div.network .router span.name, +div.network .server span.name, +div.network .device span.name { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + display: block; + font-size: 12px; + position: relative; + z-index: 10; + text-align: center; + top: 4px; + padding: 0 3px; +} +div.network .router div.port, +div.network .server div.port, +div.network .device div.port { + text-align: right; + min-width: 90px; + height: 10px; + font: 0px/0px sans-serif; + position: absolute; + left: -91px; + top: 8px; + background-color: #37a9e3; + background-image: none; + -webkit-background-size: 20px 20px; + -moz-background-size: 20px 20px; + -o-background-size: 20px 20px; + background-size: 20px 20px; + z-index: 100; +} +div.network .router div.port span.ip, +div.network .server div.port span.ip, +div.network .device div.port span.ip { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + color: #333; + font-size: 9px; + line-height: 1; + text-shadow: 0px -1px #ffffff; + position: relative; + top: -1em; + width: 90px; + display: inline-block; + padding-right: 8px; + padding-left: 8px; + word-wrap: break-word; + word-break: break-all; +} +div.network .router div.port.right, +div.network .server div.port.right, +div.network .device div.port.right { + left: auto; + right: -92px; + width: 92px; + text-align: left; +} +div.network .router:hover, +div.network .server:hover, +div.network .device:hover { + border-color: #222; +} +div.network .router:hover div.port, +div.network .server:hover div.port, +div.network .device:hover div.port { + cursor: pointer; + background-color: #2688c0; + -webkit-animation: progress-bar-stripes 1s linear infinite; + -moz-animation: progress-bar-stripes 1s linear infinite; + -ms-animation: progress-bar-stripes 1s linear infinite; + -o-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite; +} +div.network .router:hover div.port:hover, +div.network .server:hover div.port:hover, +div.network .device:hover div.port:hover { + -webkit-animation: progress-bar-stripes 0.3s linear infinite; + -moz-animation: progress-bar-stripes 0.3s linear infinite; + -ms-animation: progress-bar-stripes 0.3s linear infinite; + -o-animation: progress-bar-stripes 0.3s linear infinite; + animation: progress-bar-stripes 0.3s linear infinite; +} +div.network .router:hover div.port.nourl, +div.network .server:hover div.port.nourl, +div.network .device:hover div.port.nourl { + cursor: auto; + background-image: none; +} +div.network .router:hover div.port.nourl:hover, +div.network .server:hover div.port.nourl:hover, +div.network .device:hover div.port.nourl:hover { + background-image: none; +} +div.network .router:hover:after, +div.network .server:hover:after, +div.network .device:hover:after { + background-color: #222; + border-color: #222; +} +div.network .device { + border: none; + background: transparent; +} +div.network .server { + background: #fff; + color: #333; +} +div.network .server:before { + background: #ffffff url(/static/dashboard/img/server.png) no-repeat center center; + background-size: 14px 14px; +} +.launchButtons { + text-align: right; + margin: 10px 0px 15px 10px; +} +.launchButtons a.btn { + margin-left: 10px; +} diff --git a/debian/static/openstack-dashboard/js/967e5ade6890.js b/debian/static/openstack-dashboard/js/967e5ade6890.js new file mode 100755 index 0000000..cffbf1b --- /dev/null +++ b/debian/static/openstack-dashboard/js/967e5ade6890.js @@ -0,0 +1,2 @@ +var Horizon=function(){var horizon={},initFunctions=[];horizon.addInitFunction=function(fn){initFunctions.push(fn);};horizon.init=function(){for(var i=0;i").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof(r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);(function($){$.cookie=function(key,value,options){if(arguments.length>1&&(!/Object/.test(Object.prototype.toString.call(value))||value===null||value===undefined)){options=$.extend({},options);if(value===null||value===undefined){options.expires=-1;} +if(typeof options.expires==='number'){var days=options.expires,t=options.expires=new Date();t.setDate(t.getDate()+days);} +value=String(value);return(document.cookie=[encodeURIComponent(key),'=',options.raw?value:encodeURIComponent(value),options.expires?'; expires='+options.expires.toUTCString():'',options.path?'; path='+options.path:'',options.domain?'; domain='+options.domain:'',options.secure?'; secure':''].join(''));} +options=value||{};var decode=options.raw?function(s){return s;}:decodeURIComponent;var pairs=document.cookie.split('; ');for(var i=0,pair;pair=pairs[i]&&pairs[i].split('=');i++){if(decode(pair[0])===key)return decode(pair[1]||'');} +return null;};})(jQuery);(function($,window,document,undefined){$.fn.quicksearch=function(target,opt){var timeout,cache,rowcache,jq_results,val='',e=this,options=$.extend({delay:100,selector:null,stripeRows:null,loader:null,noResults:'',bind:'keyup',onBefore:function(){return;},onAfter:function(){return;},show:function(){this.style.display="";},hide:function(){this.style.display="none";},prepareQuery:function(val){return val.toLowerCase().split(' ');},testQuery:function(query,txt,_row){for(var i=0;i','g'),"");output=$.trim(output.toLowerCase());return output;};this.results=function(bool){if(typeof options.noResults==="string"&&options.noResults!==""){if(bool){$(options.noResults).hide();}else{$(options.noResults).show();}} +return this;};this.loader=function(bool){if(typeof options.loader==="string"&&options.loader!==""){(bool)?$(options.loader).show():$(options.loader).hide();} +return this;};this.cache=function(){jq_results=$(target);if(typeof options.noResults==="string"&&options.noResults!==""){jq_results=jq_results.not(options.noResults);} +var t=(typeof options.selector==="string")?jq_results.find(options.selector):$(target).not(options.noResults);cache=t.map(function(){return e.strip_html(this.innerHTML);});rowcache=jq_results.map(function(){return this;});return this.go();};this.trigger=function(){this.loader(true);options.onBefore();window.clearTimeout(timeout);timeout=window.setTimeout(function(){e.go();},options.delay);return this;};this.cache();this.results(true);this.stripe();this.loader(false);return this.each(function(){$(this).bind(options.bind,function(){val=$(this).val();e.trigger();});});};}(jQuery,this,document));(function($){$.extend({tablesorter:new +function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",cssChildRow:"expand-child",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,sortLocaleCompare:true,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'/\.|\,/g',onRenderHeader:null,selectorHeaders:'thead th',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");} +this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}} +function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";} +if(table.tBodies.length==0)return;var rows=table.tBodies[0].rows;if(rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}} +return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;} +function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;} +function checkHeaderOptionsSortingLocked(table,i){if((table.config.headers[i])&&(table.config.headers[i].lockedOrder))return table.config.headers[i].lockedOrder;return false;} +function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($('
').css('width',$(this).width()));});$(table).prepend(colgroup);};} +function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;i b["+i+"]) ? 1 : 0));";};function makeSortTextDesc(i){return"((b["+i+"] < a["+i+"]) ? -1 : ((b["+i+"] > a["+i+"]) ? 1 : 0));";};function makeSortNumeric(i){return"a["+i+"]-b["+i+"];";};function makeSortNumericDesc(i){return"b["+i+"]-a["+i+"];";};function sortText(a,b){if(table.config.sortLocaleCompare)return a.localeCompare(b);return((ab)?1:0));};function sortTextDesc(a,b){if(table.config.sortLocaleCompare)return b.localeCompare(a);return((ba)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$.data(this,"tablesorter",config);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){$this.trigger("sortStart");var $cell=$(this);var i=this.column;this.order=this.count++%2;if(this.lockedOrder)this.order=this.lockedOrder;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j0){$this.trigger("sorton",[config.sortList]);} +applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i>1):c.left+e)+"px",top:(c.top=="auto"?i.y-h.y+(a.offsetHeight>>1):c.top+e)+"px"})),d.setAttribute("aria-role","progressbar"),b.lines(d,b.opts);if(!f){var j=0,k=c.fps,m=k/c.speed,o=(1-c.opacity)/(m*c.trail/100),p=m/c.lines;!function q(){j++;for(var a=c.lines;a;a--){var e=Math.max(1-(j+a*p)%m*o,c.opacity);b.opacity(d,c.lines-a,e,c)}b.timeout=b.el&&setTimeout(q,~~(1e3/k))}()}return b},stop:function(){var a=this.el;return a&&(clearTimeout(this.timeout),a.parentNode&&a.parentNode.removeChild(a),this.el=c),this},lines:function(a,b){function e(a,d){return l(g(),{position:"absolute",width:b.length+b.width+"px",height:b.width+"px",background:a,boxShadow:d,transformOrigin:"left",transform:"rotate("+~~(360/b.lines*c+b.rotate)+"deg) translate("+b.radius+"px"+",0)",borderRadius:(b.width>>1)+"px"})}var c=0,d;for(;c',b)}var b=l(g("group"),{behavior:"url(#default#VML)"});!k(b,"transform")&&b.adj?(i.addRule(".spin-vml","behavior:url(#default#VML)"),p.prototype.lines=function(b,c){function f(){return l(a("group",{coordsize:e+" "+e,coordorigin:-d+" "+-d}),{width:e,height:e})}function k(b,e,g){h(i,h(l(f(),{rotation:360/c.lines*b+"deg",left:~~e}),h(l(a("roundrect",{arcsize:1}),{width:d,height:c.width,left:c.radius,top:-c.width>>1,filter:g}),a("fill",{color:c.color,opacity:c.opacity}),a("stroke",{opacity:0}))))}var d=c.length+c.width,e=2*d,g=-(c.width+c.length)*2+"px",i=l(f(),{position:"absolute",top:g,left:g}),j;if(c.shadow)for(j=1;j<=c.lines;j++)k(j,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(j=1;j<=c.lines;j++)k(j);return h(b,i)},p.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d2;a==null&&(a=[]);if(A&&a.reduce===A){e&&(c=b.bind(c,e));return f?a.reduce(c,d):a.reduce(c)}j(a,function(a,b,i){if(f)d=c.call(e,d,a,b,i);else{d=a;f=true}});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(B&&a.reduceRight===B){e&&(c=b.bind(c,e));return f?a.reduceRight(c,d):a.reduceRight(c)}var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=function(a,c,b){var e;G(a,function(a,g,h){if(c.call(b,a,g,h)){e=a;return true}});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(C&&a.filter===C)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(D&&a.every===D)return a.every(c,b);j(a,function(a,g,h){if(!(e=e&&c.call(b,a,g,h)))return o});return!!e};var G=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(E&&a.some===E)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return o});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;if(q&&a.indexOf===q)return a.indexOf(c)!=-1;return b=G(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a)&&a[0]===+a[0])return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a)&&a[0]===+a[0])return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1),true);return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}};b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=L||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.pick=function(a){var c={};j(b.flatten(i.call(arguments,1)),function(b){b in a&&(c[b]=a[b])});return c};b.defaults=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return r(a,b,[])};b.isEmpty=function(a){if(a==null)return true;if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=p||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};b.isArguments=function(a){return l.call(a)=="[object Arguments]"};b.isArguments(arguments)||(b.isArguments=function(a){return!(!a||!b.has(a,"callee"))});b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isFinite=function(a){return b.isNumber(a)&&isFinite(a)};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return K.call(a,b)};b.noConflict=function(){s._=I;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.result=function(a,c){if(a==null)return null;var d=a[c];return b.isFunction(d)?d.call(a):d};b.mixin=function(a){j(b.functions(a),function(c){M(c,b[c]=a[c])})};var N=0;b.uniqueId=function(a){var b=N++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var u=/.^/,n={"\\":"\\","'":"'",r:"\r",n:"\n",t:"\t",u2028:"\u2028",u2029:"\u2029"},v;for(v in n)n[n[v]]=v;var O=/\\|'|\r|\n|\t|\u2028|\u2029/g,P=/\\(\\|'|r|n|t|u2028|u2029)/g,w=function(a){return a.replace(P,function(a,b){return n[b]})};b.template=function(a,c,d){d=b.defaults(d||{},b.templateSettings);a="__p+='"+a.replace(O,function(a){return"\\"+n[a]}).replace(d.escape||u,function(a,b){return"'+\n_.escape("+w(b)+")+\n'"}).replace(d.interpolate||u,function(a,b){return"'+\n("+w(b)+")+\n'"}).replace(d.evaluate||u,function(a,b){return"';\n"+w(b)+"\n;__p+='"})+"';\n";d.variable||(a="with(obj||{}){\n"+a+"}\n");var a="var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};\n"+a+"return __p;\n",e=new Function(d.variable||"obj","_",a);if(c)return e(c,b);c=function(a){return e.call(this,a,b)};c.source="function("+(d.variable||"obj")+"){\n"+a+"}";return c};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var x=function(a,c){return c?b(a).chain():a},M=function(a,c){m.prototype[a]=function(){var a=i.call(arguments);J.call(a,this._wrapped);return x(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return x(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return x(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.9.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement("div"));n.offsetHeight,e.extend(n.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart="onselectstart"in n,t.removeChild(n).style.display="none"}),e("").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e("").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(n){return arguments.length?t.call(this,e.camelCase(n)):t.call(this)}}(e.fn.removeData)),function(){var t=/msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=parseFloat(t[1],10)===6}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})})(jQuery);(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("
"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};lr(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)a&&(v<0||v0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)10&&i<11,t.innerHTML="",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(" "),s=r.at.split(" ");return i.length===1&&(i[1]=i[0]),/^\d/.test(i[0])&&(i[0]="+"+i[0]),/^\d/.test(i[1])&&(i[1]="+"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]="center":(s[1]=s[0],s[0]="center")),n.call(this,e.extend(r,{at:s[0]+i[0]+" "+s[1]+i[1],offset:t}))}}(jQuery)})(jQuery);(function(e,t){e.widget("ui.draggable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var n=this.options;return this.helper||n.disabled||e(t.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(t),this.handle?(e(n.iframeFix===!0?"iframe":n.iframeFix).each(function(){e('
').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),n.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,n){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute");if(!n){var r=this._uiHash();if(this._trigger("drag",t,r)===!1)return this._mouseUp({}),!1;this.position=r.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";return e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n=!1;e.ui.ddmanager&&!this.options.dropBehaviour&&(n=e.ui.ddmanager.drop(this,t)),this.dropped&&(n=this.dropped,this.dropped=!1);var r=this.element[0],i=!1;while(r&&(r=r.parentNode))r==document&&(i=!0);if(!i&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!n||this.options.revert=="valid"&&n||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,n)){var s=this;e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){s._trigger("stop",t)!==!1&&s._clear()})}else this._trigger("stop",t)!==!1&&this._clear();return!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){var n=!this.options.handle||!e(this.options.handle,this.element).length?!0:!1;return e(this.options.handle,this.element).find("*").andSelf().each(function(){this==t.target&&(n=!0)}),n},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t])):n.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return r.parents("body").length||r.appendTo(n.appendTo=="parent"?this.element[0].parentNode:n.appendTo),r[0]!=this.element[0]&&!/(fixed|absolute)/.test(r.css("position"))&&r.css("position","absolute"),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[t.containment=="document"?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t.containment=="document"?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(t.containment=="document"?0:e(window).scrollLeft())+e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(t.containment=="document"?0:e(window).scrollTop())+(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)&&t.containment.constructor!=Array){var n=e(t.containment),r=n[0];if(!r)return;var i=n.offset(),s=e(r).css("overflow")!="hidden";this.containment=[(parseInt(e(r).css("borderLeftWidth"),10)||0)+(parseInt(e(r).css("paddingLeft"),10)||0),(parseInt(e(r).css("borderTopWidth"),10)||0)+(parseInt(e(r).css("paddingTop"),10)||0),(s?Math.max(r.scrollWidth,r.offsetWidth):r.offsetWidth)-(parseInt(e(r).css("borderLeftWidth"),10)||0)-(parseInt(e(r).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(s?Math.max(r.scrollHeight,r.offsetHeight):r.offsetHeight)-(parseInt(e(r).css("borderTopWidth"),10)||0)-(parseInt(e(r).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=n}else t.containment.constructor==Array&&(this.containment=t.containment)},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName),s=t.pageX,o=t.pageY;if(this.originalPosition){var u;if(this.containment){if(this.relative_container){var a=this.relative_container.offset();u=[this.containment[0]+a.left,this.containment[1]+a.top,this.containment[2]+a.left,this.containment[3]+a.top]}else u=this.containment;t.pageX-this.offset.click.leftu[2]&&(s=u[2]+this.offset.click.left),t.pageY-this.offset.click.top>u[3]&&(o=u[3]+this.offset.click.top)}if(n.grid){var f=n.grid[1]?this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1]:this.originalPageY;o=u?f-this.offset.click.topu[3]?f-this.offset.click.topu[2]?l-this.offset.click.left=0;l--){var c=r.snapElements[l].left,h=c+r.snapElements[l].width,p=r.snapElements[l].top,d=p+r.snapElements[l].height;if(!(c-s=l&&o<=c||u>=l&&u<=c||oc)&&(i>=a&&i<=f||s>=a&&s<=f||if);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,n){var r=e.ui.ddmanager.droppables[t.options.scope]||[],i=n?n.type:null,s=(t.currentItem||t.element).find(":data(droppable)").andSelf();e:for(var o=0;o")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var n=this;this.opos=[t.pageX,t.pageY];if(this.options.disabled)return;var r=this.options;this.selectees=e(r.filter,this.element[0]),this._trigger("start",t),e(r.appendTo).append(this.helper),this.helper.css({left:t.clientX,top:t.clientY,width:0,height:0}),r.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var r=e.data(this,"selectable-item");r.startselected=!0,!t.metaKey&&!t.ctrlKey&&(r.$element.removeClass("ui-selected"),r.selected=!1,r.$element.addClass("ui-unselecting"),r.unselecting=!0,n._trigger("unselecting",t,{unselecting:r.element}))}),e(t.target).parents().andSelf().each(function(){var r=e.data(this,"selectable-item");if(r){var i=!t.metaKey&&!t.ctrlKey||!r.$element.hasClass("ui-selected");return r.$element.removeClass(i?"ui-unselecting":"ui-selected").addClass(i?"ui-selecting":"ui-unselecting"),r.unselecting=!i,r.selecting=i,r.selected=i,i?n._trigger("selecting",t,{selecting:r.element}):n._trigger("unselecting",t,{unselecting:r.element}),!1}})},_mouseDrag:function(t){var n=this;this.dragged=!0;if(this.options.disabled)return;var r=this.options,i=this.opos[0],s=this.opos[1],o=t.pageX,u=t.pageY;if(i>o){var a=o;o=i,i=a}if(s>u){var a=u;u=s,s=a}return this.helper.css({left:i,top:s,width:o-i,height:u-s}),this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!a||a.element==n.element[0])return;var f=!1;r.tolerance=="touch"?f=!(a.left>o||a.rightu||a.bottomi&&a.rights&&a.bottom *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(t);var i=null,s=e(t.target).parents().each(function(){if(e.data(this,r.widgetName+"-item")==r)return i=e(this),!1});e.data(t.target,r.widgetName+"-item")==r&&(i=e(t.target));if(!i)return!1;if(this.options.handle&&!n){var o=!1;e(this.options.handle,i).find("*").andSelf().each(function(){this==t.target&&(o=!0)});if(!o)return!1}return this.currentItem=i,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),i.containment&&this._setContainment(),i.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",i.cursor)),i.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",i.opacity)),i.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",i.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(var s=this.containers.length-1;s>=0;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var n=this.options,r=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY=0;i--){var s=this.items[i],o=s.item[0],u=this._intersectsWithPointer(s);if(!u)continue;if(s.instance!==this.currentContainer)continue;if(o!=this.currentItem[0]&&this.placeholder[u==1?"next":"prev"]()[0]!=o&&!e.contains(this.placeholder[0],o)&&(this.options.type=="semi-dynamic"?!e.contains(this.element[0],o):!0)){this.direction=u==1?"down":"up";if(this.options.tolerance!="pointer"&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+fs&&t+le[this.floating?"width":"height"]?c:s0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!=0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor==String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n=[],r=[],i=this._connectWith();if(i&&t)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&r.push([e.isFunction(a.options.items)?a.options.items.call(a.element):e(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a])}}r.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var s=r.length-1;s>=0;s--)r[s][0].each(function(){n.push(this)});return e(n)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var n=0;n=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&(r.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a))}}for(var s=r.length-1;s>=0;s--){var f=r[s][1],l=r[s][0];for(var u=0,c=l.length;u=0;n--){var r=this.items[n];if(r.instance!=this.currentContainer&&this.currentContainer&&r.item[0]!=this.currentItem[0])continue;var i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item;t||(r.width=i.outerWidth(),r.height=i.outerHeight());var s=i.offset();r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var n=this.containers.length-1;n>=0;n--){var s=this.containers[n].element.offset();this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight()}return this},_createPlaceholder:function(t){t=t||this;var n=t.options;if(!n.placeholder||n.placeholder.constructor==String){var r=n.placeholder;n.placeholder={element:function(){var n=e(document.createElement(t.currentItem[0].nodeName)).addClass(r||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return r||(n.style.visibility="hidden"),n},update:function(e,i){if(r&&!n.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}}}t.placeholder=e(n.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),n.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n=null,r=null;for(var i=this.containers.length-1;i>=0;i--){if(e.contains(this.currentItem[0],this.containers[i].element[0]))continue;if(this._intersectsWith(this.containers[i].containerCache)){if(n&&e.contains(this.containers[i].element[0],n.element[0]))continue;n=this.containers[i],r=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0)}if(!n)return;if(this.containers.length===1)this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1;else{var s=1e4,o=null,u=this.containers[r].floating?"left":"top",a=this.containers[r].floating?"width":"height",f=this.positionAbs[u]+this.offset.click[u];for(var l=this.items.length-1;l>=0;l--){if(!e.contains(this.containers[r].element[0],this.items[l].item[0]))continue;if(this.items[l].item[0]==this.currentItem[0])continue;var c=this.items[l].item.offset()[u],h=!1;Math.abs(c-f)>Math.abs(c+this.items[l][a]-f)&&(h=!0,c+=this.items[l][a]),Math.abs(c-f)this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top));if(n.grid){var u=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1];o=this.containment?u-this.offset.click.topthis.containment[3]?u-this.offset.click.topthis.containment[2]?a-this.offset.click.left=0;i--)n||r.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(r.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(var i=0;id.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(){return clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;if(!e.length)return;return this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h](),!a.support.transition&&this.$element.hasClass("slide")?(this.$element.trigger("slide"),d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")):(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.trigger("slide"),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})),f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=typeof c=="object"&&c;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():e.cycle()})},a.fn.carousel.defaults={interval:5e3},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find(".in"),e;d&&d.length&&(e=d.data("collapse"),d.collapse("hide"),e||d.data("collapse",null)),this.$element[b](0),this.transition("addClass","show","shown"),this.$element[b](this.$element[0][c])},hide:function(){var a=this.dimension();this.reset(this.$element[a]()),this.transition("removeClass","hide","hidden"),this.$element[a](0)},reset:function(a){var b=this.dimension();this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element.addClass("collapse")},transition:function(b,c,d){var e=this,f=function(){c=="show"&&e.reset(),e.$element.trigger(d)};this.$element.trigger(c)[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('