From d3965a9f0ae6d6c648d772a9518ca85aeed9c13b Mon Sep 17 00:00:00 2001 From: Devin Carlen <devin.carlen@gmail.com> Date: Wed, 12 Jan 2011 13:43:31 -0800 Subject: [PATCH] Initial commit --- LICENSE | 176 +++ dashboard/__init__.py | 0 dashboard/manage.py | 11 + dashboard/settings.py | 88 ++ dashboard/templates/403.html | 35 + dashboard/templates/404.html | 34 + dashboard/templates/500.html | 34 + dashboard/templates/admin/index.html | 96 ++ dashboard/templates/base-root.html | 63 + dashboard/templates/base-sidebar.html | 15 + dashboard/templates/base.html | 5 + dashboard/templates/index.html | 56 + dashboard/templates/permission_denied.html | 11 + .../templates/registration/activate.html | 34 + .../registration/activation_email.txt | 21 + .../registration/activation_email_subject.txt | 1 + dashboard/templates/registration/login.html | 36 + dashboard/templates/registration/logout.html | 14 + .../registration/password_change_done.html | 18 + .../registration/password_change_form.html | 23 + .../registration/password_reset_complete.html | 19 + .../registration/password_reset_confirm.html | 26 + .../registration/password_reset_done.html | 17 + .../registration/password_reset_email.html | 13 + .../registration/password_reset_form.html | 23 + .../registration/registration_complete.html | 22 + .../registration/registration_form.html | 29 + dashboard/urls.py | 57 + dashboard/views.py | 39 + dashboard/wsgi/django.wsgi | 29 + local/__init__.py | 0 local/local_settings.py.example | 22 + .../ui-bg_diagonals-thick_90_eeeeee_40x40.png | Bin 0 -> 251 bytes .../images/ui-bg_flat_15_cd0a0a_40x100.png | Bin 0 -> 181 bytes .../images/ui-bg_glass_100_e4f1fb_1x400.png | Bin 0 -> 158 bytes .../images/ui-bg_glass_50_3baae3_1x400.png | Bin 0 -> 131 bytes .../images/ui-bg_glass_80_d7ebf9_1x400.png | Bin 0 -> 124 bytes .../ui-bg_highlight-hard_100_f2f5f7_1x100.png | Bin 0 -> 103 bytes .../ui-bg_highlight-hard_70_000000_1x100.png | Bin 0 -> 118 bytes .../ui-bg_highlight-soft_100_deedf7_1x100.png | Bin 0 -> 104 bytes .../ui-bg_highlight-soft_25_ffef8f_1x100.png | Bin 0 -> 119 bytes .../images/ui-icons_2694e8_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_3d80b3_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_72a7cf_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../css/cupertino/jquery-ui-1.7.2.custom.css | 406 ++++++ media/dashboard/css/dashboard.css | 749 +++++++++++ media/dashboard/css/dashboard_sub.css | 217 ++++ media/dashboard/css/django-admin-widgets.css | 541 ++++++++ media/dashboard/css/global.css | 18 + media/dashboard/css/home.css | 745 +++++++++++ media/dashboard/css/ie7.css | 85 ++ media/dashboard/css/jquery.tooltip.css | 9 + media/dashboard/css/new_dash.css | 1145 +++++++++++++++++ media/dashboard/css/openstack.css | 63 + media/dashboard/css/reset.css | 50 + media/dashboard/img/body_bg.gif | Bin 0 -> 12957 bytes media/dashboard/img/body_bg.png | Bin 0 -> 2217 bytes media/dashboard/img/book_icon.png | Bin 0 -> 741 bytes media/dashboard/img/bread_crumb.gif | Bin 0 -> 2027 bytes media/dashboard/img/btn_bg.png | Bin 0 -> 1043 bytes media/dashboard/img/chat_icon.png | Bin 0 -> 847 bytes media/dashboard/img/content_bg.gif | Bin 0 -> 105 bytes media/dashboard/img/content_shadow.png | Bin 0 -> 2836 bytes media/dashboard/img/dashboard_nav_bg.png | Bin 0 -> 255 bytes media/dashboard/img/foot_back.png | Bin 0 -> 2524 bytes media/dashboard/img/gears.png | Bin 0 -> 4701 bytes media/dashboard/img/header_bg.png | Bin 0 -> 966 bytes media/dashboard/img/home_head_back.png | Bin 0 -> 4459 bytes media/dashboard/img/image_detail.png | Bin 0 -> 47257 bytes media/dashboard/img/logged_in_box_bg.gif | Bin 0 -> 1100 bytes media/dashboard/img/login_bg.png | Bin 0 -> 476 bytes media/dashboard/img/login_btn.png | Bin 0 -> 282 bytes media/dashboard/img/logo.gif | Bin 0 -> 3098 bytes media/dashboard/img/nav_arrow.png | Bin 0 -> 471 bytes media/dashboard/img/nav_bg.png | Bin 0 -> 1554 bytes media/dashboard/img/nav_highlight.png | Bin 0 -> 598 bytes media/dashboard/img/page_header.png | Bin 0 -> 782 bytes media/dashboard/img/projects_bg.png | Bin 0 -> 408 bytes media/dashboard/img/server_icon.png | Bin 0 -> 433 bytes media/dashboard/img/spinner.gif | Bin 0 -> 2545 bytes media/dashboard/img/sub-head-back.png | Bin 0 -> 426 bytes media/dashboard/img/sub_head_back.png | Bin 0 -> 3104 bytes media/dashboard/img/table_header_bg.png | Bin 0 -> 157 bytes media/dashboard/img/table_heading_bg.png | Bin 0 -> 968 bytes .../dashboard/img/title-blank-short-foot.png | Bin 0 -> 435 bytes media/dashboard/js/dashboard.js | 4 + .../dashboard/js/django-admin.multiselect.js | 564 ++++++++ media/dashboard/js/jquery-ui.min.js | 9 + media/dashboard/js/jquery.form.js | 675 ++++++++++ media/dashboard/js/jquery.min.js | 154 +++ tools/install_venv.py | 139 ++ tools/pip-requires | 6 + tools/with_venv.sh | 5 + 95 files changed, 6651 insertions(+) create mode 100644 LICENSE create mode 100644 dashboard/__init__.py create mode 100755 dashboard/manage.py create mode 100644 dashboard/settings.py create mode 100644 dashboard/templates/403.html create mode 100644 dashboard/templates/404.html create mode 100644 dashboard/templates/500.html create mode 100644 dashboard/templates/admin/index.html create mode 100644 dashboard/templates/base-root.html create mode 100644 dashboard/templates/base-sidebar.html create mode 100644 dashboard/templates/base.html create mode 100644 dashboard/templates/index.html create mode 100644 dashboard/templates/permission_denied.html create mode 100644 dashboard/templates/registration/activate.html create mode 100644 dashboard/templates/registration/activation_email.txt create mode 100644 dashboard/templates/registration/activation_email_subject.txt create mode 100644 dashboard/templates/registration/login.html create mode 100644 dashboard/templates/registration/logout.html create mode 100644 dashboard/templates/registration/password_change_done.html create mode 100644 dashboard/templates/registration/password_change_form.html create mode 100644 dashboard/templates/registration/password_reset_complete.html create mode 100644 dashboard/templates/registration/password_reset_confirm.html create mode 100644 dashboard/templates/registration/password_reset_done.html create mode 100644 dashboard/templates/registration/password_reset_email.html create mode 100644 dashboard/templates/registration/password_reset_form.html create mode 100644 dashboard/templates/registration/registration_complete.html create mode 100644 dashboard/templates/registration/registration_form.html create mode 100644 dashboard/urls.py create mode 100644 dashboard/views.py create mode 100644 dashboard/wsgi/django.wsgi create mode 100644 local/__init__.py create mode 100644 local/local_settings.py.example create mode 100644 media/dashboard/css/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png create mode 100644 media/dashboard/css/cupertino/images/ui-bg_flat_15_cd0a0a_40x100.png create mode 100644 media/dashboard/css/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png create mode 100644 media/dashboard/css/cupertino/images/ui-bg_glass_50_3baae3_1x400.png create mode 100644 media/dashboard/css/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png create mode 100644 media/dashboard/css/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png create mode 100644 media/dashboard/css/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png create mode 100644 media/dashboard/css/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png create mode 100644 media/dashboard/css/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png create mode 100644 media/dashboard/css/cupertino/images/ui-icons_2694e8_256x240.png create mode 100644 media/dashboard/css/cupertino/images/ui-icons_2e83ff_256x240.png create mode 100644 media/dashboard/css/cupertino/images/ui-icons_3d80b3_256x240.png create mode 100644 media/dashboard/css/cupertino/images/ui-icons_72a7cf_256x240.png create mode 100644 media/dashboard/css/cupertino/images/ui-icons_ffffff_256x240.png create mode 100644 media/dashboard/css/cupertino/jquery-ui-1.7.2.custom.css create mode 100755 media/dashboard/css/dashboard.css create mode 100755 media/dashboard/css/dashboard_sub.css create mode 100644 media/dashboard/css/django-admin-widgets.css create mode 100644 media/dashboard/css/global.css create mode 100644 media/dashboard/css/home.css create mode 100755 media/dashboard/css/ie7.css create mode 100644 media/dashboard/css/jquery.tooltip.css create mode 100644 media/dashboard/css/new_dash.css create mode 100644 media/dashboard/css/openstack.css create mode 100644 media/dashboard/css/reset.css create mode 100644 media/dashboard/img/body_bg.gif create mode 100755 media/dashboard/img/body_bg.png create mode 100644 media/dashboard/img/book_icon.png create mode 100644 media/dashboard/img/bread_crumb.gif create mode 100644 media/dashboard/img/btn_bg.png create mode 100644 media/dashboard/img/chat_icon.png create mode 100644 media/dashboard/img/content_bg.gif create mode 100644 media/dashboard/img/content_shadow.png create mode 100644 media/dashboard/img/dashboard_nav_bg.png create mode 100644 media/dashboard/img/foot_back.png create mode 100644 media/dashboard/img/gears.png create mode 100755 media/dashboard/img/header_bg.png create mode 100644 media/dashboard/img/home_head_back.png create mode 100644 media/dashboard/img/image_detail.png create mode 100644 media/dashboard/img/logged_in_box_bg.gif create mode 100644 media/dashboard/img/login_bg.png create mode 100644 media/dashboard/img/login_btn.png create mode 100644 media/dashboard/img/logo.gif create mode 100644 media/dashboard/img/nav_arrow.png create mode 100644 media/dashboard/img/nav_bg.png create mode 100755 media/dashboard/img/nav_highlight.png create mode 100644 media/dashboard/img/page_header.png create mode 100644 media/dashboard/img/projects_bg.png create mode 100644 media/dashboard/img/server_icon.png create mode 100644 media/dashboard/img/spinner.gif create mode 100644 media/dashboard/img/sub-head-back.png create mode 100644 media/dashboard/img/sub_head_back.png create mode 100644 media/dashboard/img/table_header_bg.png create mode 100644 media/dashboard/img/table_heading_bg.png create mode 100644 media/dashboard/img/title-blank-short-foot.png create mode 100644 media/dashboard/js/dashboard.js create mode 100644 media/dashboard/js/django-admin.multiselect.js create mode 100755 media/dashboard/js/jquery-ui.min.js create mode 100644 media/dashboard/js/jquery.form.js create mode 100644 media/dashboard/js/jquery.min.js create mode 100644 tools/install_venv.py create mode 100644 tools/pip-requires create mode 100644 tools/with_venv.sh diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..68c771a09 --- /dev/null +++ b/LICENSE @@ -0,0 +1,176 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + diff --git a/dashboard/__init__.py b/dashboard/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/dashboard/manage.py b/dashboard/manage.py new file mode 100755 index 000000000..5e78ea979 --- /dev/null +++ b/dashboard/manage.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +from django.core.management import execute_manager +try: + import settings # Assumed to be in the same directory. +except ImportError: + import sys + sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__) + sys.exit(1) + +if __name__ == "__main__": + execute_manager(settings) diff --git a/dashboard/settings.py b/dashboard/settings.py new file mode 100644 index 000000000..0d5c213c3 --- /dev/null +++ b/dashboard/settings.py @@ -0,0 +1,88 @@ +import datetime +import logging +import os +import sys + +ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) + +sys.path.append(ROOT_PATH) + +DEBUG = False +TEMPLATE_DEBUG = DEBUG + +SITE_ID = 1 +SITE_NAME = 'openstack-dashboard' + +LOGIN_URL = '/accounts/login' +LOGIN_REDIRECT_URL = '/' + +MEDIA_ROOT = os.path.join(ROOT_PATH, '..', 'media') +MEDIA_URL = '/media/' +ADMIN_MEDIA_PREFIX = '/media/admin/' + +CREDENTIAL_AUTHORIZATION_DAYS = '5' + +ROOT_URLCONF = 'dashboard.urls' + +MIDDLEWARE_CLASSES = ( + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.middleware.doc.XViewMiddleware', +) + +TEMPLATE_CONTEXT_PROCESSORS = ( + 'django.core.context_processors.auth', + 'django.core.context_processors.debug', + 'django.core.context_processors.i18n', + 'django.core.context_processors.request', + 'django.core.context_processors.media', + 'django.contrib.messages.context_processors.messages', +) + +TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.load_template_source', + 'django.template.loaders.app_directories.load_template_source', +) + +TEMPLATE_DIRS = ( + os.path.join(ROOT_PATH, 'templates'), +) + +INSTALLED_APPS = ( + 'dashboard', + 'django.contrib.auth', + 'django.contrib.admin', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.comments', + 'django.contrib.sites', + 'django.contrib.markup', + 'django.contrib.syndication', + 'django_nose', + 'django_nova', + 'registration', +) + +TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' + +AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',) +MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage' + +SESSION_EXPIRE_AT_BROWSER_CLOSE = True +TIME_ZONE = 'PST+08PDT,M3.2.0,M11.1.0' +LANGUAGE_CODE = 'en-us' +USE_I18N = False + +ACCOUNT_ACTIVATION_DAYS = 7 + +try: + from local.local_settings import * +except Exception, e: + logging.exception(e) + +if DEBUG: + logging.basicConfig(level=logging.DEBUG) diff --git a/dashboard/templates/403.html b/dashboard/templates/403.html new file mode 100644 index 000000000..f57bcb94c --- /dev/null +++ b/dashboard/templates/403.html @@ -0,0 +1,35 @@ +{% extends "base.html" %} + +{% block title %} - Forbidden{% endblock %} + +{% block content %} + <div id="right_content"> + <div id="page_head"> + <h2 id="page_heading">Forbidden</h2> + <p id="page_description">You do not have the required privileges to access this content. If you believe this message to be in error, + please contact your project manager.</p> + </div> + </div> +{% endblock %} + +{% block sidebar %} + <div id="sidebar"> + <ul id="navigation"> + {% block nav_home %} + <li><h3><a href="/">Home</a></h3></li> + {% endblock %} + + {% block nav_projects %} + <li><h3><a href="/">Projects</a></h3></li> + {% endblock %} + + {% block nav_forum %} + <li><h3><a href="/forum">Forums</a></h3></li> + {% endblock %} + + {% block nav_kb %} + <li><h3><a href="/kb/show/Start/">Knowledge Base</a></h3></li> + {% endblock %} + </ul> + </div> <!-- end sidebar --> +{% endblock %} diff --git a/dashboard/templates/404.html b/dashboard/templates/404.html new file mode 100644 index 000000000..4ab04b347 --- /dev/null +++ b/dashboard/templates/404.html @@ -0,0 +1,34 @@ +{% extends "base.html" %} + +{% block title %} - Page Not Found{% endblock %} + +{% block content %} + <div id="right_content"> + <div id="page_head"> + <h2 id="page_heading">The page you were looking for doesn't exist</h2> + <p id="page_description">You may have mistyped the address or the page may have moved.</p> + </div> + </div> +{% endblock %} + +{% block sidebar %} + <div id="sidebar"> + <ul id="navigation"> + {% block nav_home %} + <li><h3><a href="/">Home</a></h3></li> + {% endblock %} + + {% block nav_projects %} + <li><h3><a href="/">Projects</a></h3></li> + {% endblock %} + + {% block nav_forum %} + <li><h3><a href="/forum">Forums</a></h3></li> + {% endblock %} + + {% block nav_kb %} + <li><h3><a href="/kb/show/Start/">Knowledge Base</a></h3></li> + {% endblock %} + </ul> + </div> <!-- end sidebar --> +{% endblock %} diff --git a/dashboard/templates/500.html b/dashboard/templates/500.html new file mode 100644 index 000000000..51cde48fd --- /dev/null +++ b/dashboard/templates/500.html @@ -0,0 +1,34 @@ +{% extends "base.html" %} + +{% block title %} - Internal Server Error{% endblock %} + +{% block content %} + <div id="right_content"> + <div id="page_head"> + <h2 id="page_heading">Internal Server Error</h2> + <p id="page_description">An unexpected error occurred while processing your request. Please try your request again.</p> + </div> + </div> +{% endblock %} + +{% block sidebar %} + <div id="sidebar"> + <ul id="navigation"> + {% block nav_home %} + <li><h3><a href="/">Home</a></h3></li> + {% endblock %} + + {% block nav_projects %} + <li><h3><a href="/">Projects</a></h3></li> + {% endblock %} + + {% block nav_forum %} + <li><h3><a href="/forum">Forums</a></h3></li> + {% endblock %} + + {% block nav_kb %} + <li><h3><a href="/kb/show/Start/">Knowledge Base</a></h3></li> + {% endblock %} + </ul> + </div> <!-- end sidebar --> +{% endblock %} diff --git a/dashboard/templates/admin/index.html b/dashboard/templates/admin/index.html new file mode 100644 index 000000000..7a7ee87da --- /dev/null +++ b/dashboard/templates/admin/index.html @@ -0,0 +1,96 @@ +{% extends "admin/base_site.html" %} +{% load i18n %} + +{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% load adminmedia %}{% admin_media_prefix %}css/dashboard.css" />{% endblock %} + +{% block coltype %}colMS{% endblock %} + +{% block bodyclass %}dashboard{% endblock %} + +{% block breadcrumbs %}{% endblock %} + +{% block content %} +<div id="content-main"> +{% if app_list %} + + <div class="module"> + <table summary="Models available in the OpenStack application."> + <caption><a href="{% url admin_projects %}" class="section">OpenStack</a></caption> + <tbody> + <tr> + <th scope="row"><a href="{% url admin_projects %}">Projects</a></th> + <td><a href="{% url add_project %}" class="addlink">Add</a></td> + </tr> + <tr> + <th scope="row"><a href="{% url admin_users_list %}">Global Roles</a></th> + </tr> + </tbody> + </table> + </div> + + {% for app in app_list %} + <div class="module"> + <table summary="{% blocktrans with app.name as name %}Models available in the {{ name }} application.{% endblocktrans %}"> + <caption><a href="{{ app.app_url }}" class="section">{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}</a></caption> + {% for model in app.models %} + <tr> + {% if model.perms.change %} + <th scope="row"><a href="{{ model.admin_url }}">{{ model.name }}</a></th> + {% else %} + <th scope="row">{{ model.name }}</th> + {% endif %} + + {% if model.perms.add %} + <td><a href="{{ model.admin_url }}add/" class="addlink">{% trans 'Add' %}</a></td> + {% else %} + <td> </td> + {% endif %} + + {% if model.perms.change %} + <td><a href="{{ model.admin_url }}" class="changelink">{% trans 'Change' %}</a></td> + {% else %} + <td> </td> + {% endif %} + </tr> + {% endfor %} + </table> + </div> + {% endfor %} +{% else %} + <p>{% trans "You don't have permission to edit anything." %}</p> +{% endif %} +</div> +{% endblock %} + +{% block sidebar %} +<div id="content-related"> + <div class="module" id="recent-actions-module"> + <h2>{% trans 'Recent Actions' %}</h2> + <h3>{% trans 'My Actions' %}</h3> + {% load log %} + {% get_admin_log 10 as admin_log for_user user %} + {% if not admin_log %} + <p>{% trans 'None available' %}</p> + {% else %} + <ul class="actionlist"> + {% for entry in admin_log %} + <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}"> + {% if entry.is_deletion %} + {{ entry.object_repr }} + {% else %} + <a href="{{ entry.get_admin_url }}">{{ entry.object_repr }}</a> + {% endif %} + <br/> + {% if entry.content_type %} + <span class="mini quiet">{% filter capfirst %}{% trans entry.content_type.name %}{% endfilter %}</span> + {% else %} + <span class="mini quiet">{% trans 'Unknown content' %}</span> + {% endif %} + </li> + {% endfor %} + </ul> + {% endif %} + </div> +</div> +{% endblock %} + diff --git a/dashboard/templates/base-root.html b/dashboard/templates/base-root.html new file mode 100644 index 000000000..86a58dd8d --- /dev/null +++ b/dashboard/templates/base-root.html @@ -0,0 +1,63 @@ +<!DOCTYPE html> +<html lang="en" xml:lang="en"> + <head> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> + <title>OpenStack Dashboard{% block title %}{% endblock %}{% block subtitle %}{% endblock %}</title> + <link rel="stylesheet" type="text/css" href="/media/dashboard/css/new_dash.css"/> + <link rel="stylesheet" type="text/css" href="/media/dashboard/css/cupertino/jquery-ui-1.7.2.custom.css"/> + <link rel="stylesheet" type="text/css" href="/media/dashboard/css/openstack.css"/> + {% block headercss %}{% endblock %} + <!--[if IE 7]><link rel="stylesheet" href="/media/dashboard/css/ie7.css" type="text/css" media="screen, projection"><![endif]--> + + <script type="text/javascript" src="/media/dashboard/js/jquery.min.js"></script> + <script type="text/javascript" src="/media/dashboard/js/jquery-ui.min.js"></script> + <script type="text/javascript" src="/media/dashboard/js/dashboard.js"></script> + + {% block headerjs %}{% endblock %} + </head> + <body> + <div id="wrapper"> + <div id="header"> + <h1><a href="/">OpenStack<span> Cloud Computing</span></a></h1> + {% if user.is_authenticated %} + <div id="user_info"> + <span class="user">Signed in as <strong>{{ request.user.username }}</strong>.</a></span> + <ul> + <li><a id="lnk_logout" href="{% url auth_logout %}">Sign Out</a></li> + <li><a id="lnk_change_password" href="{% url auth_password_change %}">Change Password</a></li> + </ul> + </div> + {% else %} + <div id="user_info"> + <a id="lnk_login" href="/accounts/login">Sign In</a> + </div> + {% endif %} + </div> + + <div id="content_wrap"> + {% block sidebar %}{% endblock %} + {% block region %}{% endblock %} + {% block forum_breadcrumbs %}{% endblock %} + <div id="content" class="{% block pageclass %}{% endblock %}"> + {% block rootcontent %}{% endblock %} + </div><!-- end content --> + </div> + + <div id="footer"> + <div id="foot"> + <div class="c7"> + <div class="ft_sitemap"> + <div class="sub"><a href="{% url index %}">Dashboard</a> + <ul> + <li><a href="{% url index %}">Home</a></li> + </ul> + </div> + </div> + </div> + <div class="clr"></div> + </div> + {% block footerjs %}{% endblock %} + </div> + </body> +</html> diff --git a/dashboard/templates/base-sidebar.html b/dashboard/templates/base-sidebar.html new file mode 100644 index 000000000..c6e1ba14d --- /dev/null +++ b/dashboard/templates/base-sidebar.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} + +{% block sidebar %} + <div id="sidebar"> + <ul id="navigation"> + {% block nav_home %} + <li><h3><a href="/">Home</a></h3></li> + {% endblock %} + + {% block nav_projects %} + <li><h3><a href="/">Projects</a></h3></li> + {% endblock %} + </ul> + </div> <!-- end sidebar --> +{% endblock %} diff --git a/dashboard/templates/base.html b/dashboard/templates/base.html new file mode 100644 index 000000000..cf37c0e46 --- /dev/null +++ b/dashboard/templates/base.html @@ -0,0 +1,5 @@ +{% extends "base-root.html" %} + +{% block rootcontent %} +{% block content %}{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/dashboard/templates/index.html b/dashboard/templates/index.html new file mode 100644 index 000000000..bc3e86ba6 --- /dev/null +++ b/dashboard/templates/index.html @@ -0,0 +1,56 @@ +{% extends "base.html" %} + +{% block headercss %} +{% endblock %} +{% block pageclass %}home{% endblock %} + +{% block title %} - Cloud Computing{% endblock %} + +{% block content %} + <div id="page_head"> + <h2>Welcome to the Openstack Dashboard</h2> + <p>Lorem ipsum oblique praesent theophrastus ut eos. No altera eirmod + graecis ius. Pri mucius salutandi at, usu admodum neglegentur ad. + In qui propriae fabellas comprehensam. + {% if not request.user.is_authenticated %} + <a id="lnk_register" href="{% url registration_register %}">Register</a> + {% endif %} + </p> + </div> + + {% if request.user.is_authenticated %} + <div id="projects" class="block"> + <h3>Your Projects</h3> + <ul> + {% for project in projects %} + <li class="project {% cycle 'odd' 'even' %}"> + <a id="lnk_project_{{ project.projectname }}" href="{% url nova_project project.projectname %}"> + {{ project.projectname|capfirst }} + <span class="data">{{ project.description|capfirst }}</span> + </a> + </li> + {% endfor %} + </ul> + </div> + {% else %} + <div id="home_login" class="block"> + <h3>Sign In</h3> + <form action="{% url auth_login %}" method="post"> + {% csrf_token %} + <fieldset> + {% if form.errors %} + <p class="error">Your username and password didn't match. Please try again.</p> + {% endif %} + <label for="username">Username:</label><input id="username" type="text" name="username" /> + <label for="password">Password:</label><input id="password" type="password" name="password" /> + <input type="hidden" name="next" value="/" /> + <div class="button"> + <input id="home_login_btn" type="submit" value="Sign In"> + <span id="forgot_password">or <a id="forgot_password_link" href="{% url auth_password_reset %}">Forgot Password?</a></span> + </div> + </fieldset> + </form> + </div> + {% endif %} +{% endblock %} + diff --git a/dashboard/templates/permission_denied.html b/dashboard/templates/permission_denied.html new file mode 100644 index 000000000..96b02dccb --- /dev/null +++ b/dashboard/templates/permission_denied.html @@ -0,0 +1,11 @@ +{% extends "dashboard/base.html" %} + +{% block title %} - Permission Denied{% endblock %} +{% block pageclass %}denied{% endblock %} + +{% block content %} + <div id="page_head"> + <h2 id="page_heading">Permission Denied</h2> + <p id="page_description">You do not have permission to view the requested page.</p> + </div> +{% endblock %} diff --git a/dashboard/templates/registration/activate.html b/dashboard/templates/registration/activate.html new file mode 100644 index 000000000..e6ffdc9e0 --- /dev/null +++ b/dashboard/templates/registration/activate.html @@ -0,0 +1,34 @@ +{% extends "base.html" %} +{% block region %}{% endblock %} + +{% block title %}Account Activation{% endblock %} + +{% block content %} +{% if account %} + <div id="page_head"> + <h2>Activation successful</h2> + </div> + + <div class="ui-state-highlight ui-corner-all success"> + <span class="close ui-icon ui-icon-circle-close" style="display:none;"></span> + <p> + <span class="ui-icon ui-icon-check"></span> + Your account has been successfully activated. + </p> + </div> + <p> + You may now <a id="lnk_login" href="{% url auth_login %}">log in</a> to your account. + </p> +{% else %} + <div id="page_head"> + <h2>Activation failed</h2> + </div> + + <p> + We are unable to activate your account at this time. It is possible that the activation + period for your account has expired. Please register your account again, or contact the + site administrator for help resolving this issue. + </p> +{% endif %} +{% endblock %} + diff --git a/dashboard/templates/registration/activation_email.txt b/dashboard/templates/registration/activation_email.txt new file mode 100644 index 000000000..1ab414ca5 --- /dev/null +++ b/dashboard/templates/registration/activation_email.txt @@ -0,0 +1,21 @@ +{% autoescape off %} +Welcome to the NASA Nebula Dashboard! + + +This message contains information about how to activate your NASA Nebula Dashboard account. + + +The NASA Nebula Dashboard is a web based management system that enables to easily manage your Nebula projects and instances. + + +PLEASE NOTE: Before you can access your Dashboard account, you must first be connected to your Nebula OpenVPN account. You should receive another message soon with instructions on how to connect to your VPN. + + +When you're ready, connect to your Nebula OpenVPN and visit the following link to activate your account: + + http://{{ site.domain }}/accounts/activate/{{ activation_key }} + +Please note that this invitation will expire in {{ expiration_days }} days. After that time, you will need to contact your Nebula account manager for another invitation. + +The Nebula Team +{% endautoescape %} diff --git a/dashboard/templates/registration/activation_email_subject.txt b/dashboard/templates/registration/activation_email_subject.txt new file mode 100644 index 000000000..0b195d46a --- /dev/null +++ b/dashboard/templates/registration/activation_email_subject.txt @@ -0,0 +1 @@ +Welcome to the NASA Nebula Dashboard! diff --git a/dashboard/templates/registration/login.html b/dashboard/templates/registration/login.html new file mode 100644 index 000000000..324358a58 --- /dev/null +++ b/dashboard/templates/registration/login.html @@ -0,0 +1,36 @@ +{% extends "base.html" %} +{% block region %}{% endblock %} + +{% block headerjs %} +{% endblock %} + +{% block sidebar %} +{% endblock %} + +{% block pageclass %}login{% endblock %} + +{% block content %} +<div id="page_head"> + <h2>Sign in to your Nebula Dashboard</h2> +</div> + +<div id="home_login" class="block"> + <h3>Sign In</h3> + + <form action="{% url auth_login %}" method="post"> + {% csrf_token %} + <fieldset> + {% if form.errors %} + <p class="error">Your username and password didn't match. Please try again.</p> + {% endif %} + <input type="hidden" name="next" value="{{ next }}" /> + {{ form.username.label_tag }}{{ form.username }} + {{ form.password.label_tag }}{{ form.password }} + <div class="button"> + <input type="submit" value="Sign In"> + <span id="forgot_password">or <a href="{% url auth_password_reset %}">Forgot Password?</a></span> + </div> + </fieldset> + </form> +</div> +{% endblock %} diff --git a/dashboard/templates/registration/logout.html b/dashboard/templates/registration/logout.html new file mode 100644 index 000000000..a97e38599 --- /dev/null +++ b/dashboard/templates/registration/logout.html @@ -0,0 +1,14 @@ +{% extends "base.html" %} +{% block region %}{% endblock %} + +{% block title %}Signed Out{% endblock %} + +{% block content %} + <div id="page_head"> + <h2>Signed out</h2> + </div> + + <p> + You have successfully signed out of your account. + </p> +{% endblock %} diff --git a/dashboard/templates/registration/password_change_done.html b/dashboard/templates/registration/password_change_done.html new file mode 100644 index 000000000..852ea5268 --- /dev/null +++ b/dashboard/templates/registration/password_change_done.html @@ -0,0 +1,18 @@ +{% extends "base.html" %} +{% block region %}{% endblock %} + +{% block title %}Change Password{% endblock %} + +{% block content %} + <div id="page_head"> + <h2>Change Password</h2> + </div> + + <div class="ui-state-highlight ui-corner-all success"> + <span class="close ui-icon ui-icon-circle-close" style="display:none;"></span> + <p> + <span class="ui-icon ui-icon-check"></span> + Your password has been successfully changed. + </p> + </div> +{% endblock %} diff --git a/dashboard/templates/registration/password_change_form.html b/dashboard/templates/registration/password_change_form.html new file mode 100644 index 000000000..70bf79c28 --- /dev/null +++ b/dashboard/templates/registration/password_change_form.html @@ -0,0 +1,23 @@ +{% extends "base.html" %} +{% block region %}{% endblock %} + +{% block title %}Change Password{% endblock %} + +{% block content %} + +<div id="page_head"> + <h1>Change Password</h1> + <p id="page_description">To change your password, complete the form below.</p> +</div> + +<div id="home_login" class="block reset"> + <h3>Change Password</h3> + <form action="" method="post"> + <fieldset> + {% csrf_token %} + {{ form.as_p }} + <input id="bnt_set_password" type="submit" value="Set my password" /> + </fieldset> + </form> +</div> +{% endblock %} diff --git a/dashboard/templates/registration/password_reset_complete.html b/dashboard/templates/registration/password_reset_complete.html new file mode 100644 index 000000000..dc972451f --- /dev/null +++ b/dashboard/templates/registration/password_reset_complete.html @@ -0,0 +1,19 @@ +{% extends "base.html" %} +{% block region %}{% endblock %} + +{% block title %}Reset Password{% endblock %} + +{% block content %} + <div id="page_head"> + <h2>Password reset complete</h2> + </div> + + <div class="ui-state-highlight ui-corner-all success"> + <span class="close ui-icon ui-icon-circle-close" style="display:none;"></span> + <p> + <span class="ui-icon ui-icon-check"></span> + Your password has been reset. You can now <a href="/accounts/login">login</a>. + </p> + </div> + +{% endblock %} diff --git a/dashboard/templates/registration/password_reset_confirm.html b/dashboard/templates/registration/password_reset_confirm.html new file mode 100644 index 000000000..acd9af6e5 --- /dev/null +++ b/dashboard/templates/registration/password_reset_confirm.html @@ -0,0 +1,26 @@ +{% extends "base.html" %} +{% block region %}{% endblock %} + +{% block title %}Reset Password{% endblock %} + +{% block content %} + <div id="page_head"> + <h2>Change your password below.</h2> + <p id="page_description">To complete the reset of your password, fill out the form below.</p> + </div> + + <div id="home_login" class="block reset"> + <h3>Reset Password</h3> + <form action="" method="post"> + <fieldset> + {% csrf_token %} + {{ form.new_password1.errors }} + <label for="id_new_password1">New Password:</label>{{form.new_password1 }} + + {{ form.new_password2.errors }} + <label for="id_new_password2">Confirm Password:</label>{{ form.new_password2 }} + <input id="bnt_set_password" type="submit" value="Set my password" /> + </fieldset> + </form> + </div> +{% endblock %} diff --git a/dashboard/templates/registration/password_reset_done.html b/dashboard/templates/registration/password_reset_done.html new file mode 100644 index 000000000..9aed573ab --- /dev/null +++ b/dashboard/templates/registration/password_reset_done.html @@ -0,0 +1,17 @@ +{% extends "base.html" %} +{% block region %}{% endblock %} + +{% block title %}Password Reset{% endblock %} + +{% block content %} + <div id="page_head"> + <h2>Password reset initiated</h2> + </div> + <div class="ui-state-highlight ui-corner-all success"> + <span class="close ui-icon ui-icon-circle-close" style="display:none;"></span> + <p> + <span class="ui-icon ui-icon-check"></span> + We've emailed you instructions for resetting your password. + </p> + </div> +{% endblock %} diff --git a/dashboard/templates/registration/password_reset_email.html b/dashboard/templates/registration/password_reset_email.html new file mode 100644 index 000000000..5f2b1bdcb --- /dev/null +++ b/dashboard/templates/registration/password_reset_email.html @@ -0,0 +1,13 @@ +{% load i18n %}{% autoescape off %} +You're receiving this e-mail because you requested a password reset for your user account at {{ site_name }}. + +Please sign in to your Nebula VPN and go to the following page and choose a new password: +{% block reset_link %} +{{ protocol }}://{{ domain }}{% url django.contrib.auth.views.password_reset_confirm uidb36=uid token=token %} +{% endblock %} +Your user name, in case you've forgotten: {{ user.username }} + +Thanks for using our site! + +The Nebula Team +{% endautoescape %} diff --git a/dashboard/templates/registration/password_reset_form.html b/dashboard/templates/registration/password_reset_form.html new file mode 100644 index 000000000..06461f1f5 --- /dev/null +++ b/dashboard/templates/registration/password_reset_form.html @@ -0,0 +1,23 @@ +{% extends "base.html" %} +{% block region %}{% endblock %} + +{% block title %}Reset Password{% endblock %} + +{% block content %} + +<div id="page_head"> + <h1>Reset Password</h1> + <p id="page_description">Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one.</p> +</div> + +<div id="home_login" class="block reset"> + <h3>Reset Password</h3> + <form action="" method="post"> + <fieldset> + {% csrf_token %} + {{ form.email.errors }} + <p><label for="id_email">E-mail address:</label> {{ form.email }} <input id="btn_reset_password" type="submit" value="Reset Password" /></p> + </fieldset> + </form> +</div> +{% endblock %} diff --git a/dashboard/templates/registration/registration_complete.html b/dashboard/templates/registration/registration_complete.html new file mode 100644 index 000000000..c5c0e97f7 --- /dev/null +++ b/dashboard/templates/registration/registration_complete.html @@ -0,0 +1,22 @@ +{% extends "base.html" %} +{% block region %}{% endblock %} + +{% block title %}Registration Complete{% endblock %} + +{% block content %} + <div id="page_head"> + <h2>Registration complete</h2> + </div> + + <div class="ui-state-highlight ui-corner-all success"> + <span class="close ui-icon ui-icon-circle-close" style="display:none;"></span> + <p> + <span class="ui-icon ui-icon-check"></span> + Your account has been created. + </p> + </div> + <p> + Soon you will receive instructions for activating your account in your inbox. + Please follow the activation link provided in the message to complete your registration. + </p> +{% endblock %} diff --git a/dashboard/templates/registration/registration_form.html b/dashboard/templates/registration/registration_form.html new file mode 100644 index 000000000..747d86844 --- /dev/null +++ b/dashboard/templates/registration/registration_form.html @@ -0,0 +1,29 @@ +{% extends "base.html" %} +{% block region %}{% endblock %} + +{% block title %}Register{% endblock %} + +{% block content %} +<div id="page_head"> + <h1>Create Your Account</h1> + <p id="page_description">Create your new account by providing the information blow.</p> +</div> + +<div id="home_login" class="block reset"> + <h3>Register</h3> + <form action="" method="post"> + <fieldset> + {% csrf_token %} + {{ form.username.errors }} + <label for="id_username">Username:</label> {{ form.username }} + {{ form.email.errors }} + <label for="id_email">E-mail address:</label> {{ form.email }} + {{ form.password1.errors }} + <label for="id_password1">Password:</label> {{ form.password1 }} + {{ form.password2.errors }} + <label for="id_password2">Confirm Password:</label> {{ form.password2 }} + <input id="btn_reset_password" type="submit" value="Reset Password" /> + </fieldset> + </form> +</div> +{% endblock %} diff --git a/dashboard/urls.py b/dashboard/urls.py new file mode 100644 index 000000000..a953a173c --- /dev/null +++ b/dashboard/urls.py @@ -0,0 +1,57 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2010 United States Government as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All Rights Reserved. +# +# 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. + +""" +URL patterns for the OpenStack Dashboard. +""" + +from django.conf.urls.defaults import * +from django.conf import settings +from django.contrib import admin +from registration import forms as reg_forms + + +admin.autodiscover() + +urlpatterns = patterns('', + url(r'^$', 'dashboard.views.index', name='index'), + url(r'^accounts/register/$', + 'registration.views.register', + { 'form_class': reg_forms.RegistrationFormUniqueEmail }, + name='registration_register'), + url(r'^accounts/', include('registration.urls')), + url(r'^project/', include('django_nova.urls.project')), + url(r'^region/', include('django_nova.urls.region')), + url(r'^admin/project/', include('django_nova.urls.admin_project')), + url(r'^admin/roles/', include('django_nova.urls.admin_roles')), + url(r'^admin/', include(admin.site.urls)), +) + +urlpatterns += patterns('django.views.generic.simple', + url(r'^denied/$', + 'direct_to_template', + {'template': 'permission_denied.html'}, + name='dashboard_permission_denied'), +) + +urlpatterns += patterns('', + (r'^%s(?P<path>.*)$' % settings.MEDIA_URL[1:], + 'django.views.static.serve', + {'document_root': settings.MEDIA_ROOT, + 'show_indexes': True}), + ) diff --git a/dashboard/views.py b/dashboard/views.py new file mode 100644 index 000000000..9420188d5 --- /dev/null +++ b/dashboard/views.py @@ -0,0 +1,39 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2010 United States Government as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All Rights Reserved. +# +# 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. + +""" +Views for home page. +""" + +from django import template +from django.shortcuts import render_to_response +from django.views.decorators.vary import vary_on_cookie +from django_nova.shortcuts import get_projects + + +@vary_on_cookie +def index(request): + projects = None + page_type = "home" + if request.user.is_authenticated(): + projects = get_projects(user=request.user) + + return render_to_response('index.html', { + 'projects': projects, + 'page_type': page_type, + }, context_instance = template.RequestContext(request)) diff --git a/dashboard/wsgi/django.wsgi b/dashboard/wsgi/django.wsgi new file mode 100644 index 000000000..9c821ecbe --- /dev/null +++ b/dashboard/wsgi/django.wsgi @@ -0,0 +1,29 @@ +import logging +import os +import sys +import django.core.handlers.wsgi +from django.conf import settings + +os.environ['DJANGO_SETTINGS_MODULE'] = 'dashboard.settings' +sys.stdout = sys.stderr + +DEBUG = False + +class WSGIRequest(django.core.handlers.wsgi.WSGIRequest): + def is_secure(self): + value = self.META.get('wsgi.url_scheme', '').lower() + if value == 'https': + return True + return False + +class WSGIHandler(django.core.handlers.wsgi.WSGIHandler): + request_class = WSGIRequest + +_application = WSGIHandler() + +def application(environ, start_response): + environ['PATH_INFO'] = environ['SCRIPT_NAME'] + environ['PATH_INFO'] + environ['wsgi.url_scheme'] = environ.get('HTTP_X_URL_SCHEME', 'http') + + return _application(environ, start_response) + diff --git a/local/__init__.py b/local/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/local/local_settings.py.example b/local/local_settings.py.example new file mode 100644 index 000000000..61bf0ca9e --- /dev/null +++ b/local/local_settings.py.example @@ -0,0 +1,22 @@ +import os + +DEBUG = True +TEMPLATE_DEBUG = DEBUG +PROD = False +USE_SSL = False + +LOCAL_PATH = os.path.dirname(os.path.abspath(__file__)) +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(LOCAL_PATH, 'dashboard_openstack'), + }, +} + +CACHE_BACKEND = 'dummy://' + +NOVA_DEFAULT_ENDPOINT = 'http://localhoat:8773/services/Cloud' +NOVA_DEFAULT_REGION = 'nova' +NOVA_ACCESS_KEY = 'admin' +NOVA_SECRET_KEY = 'admin' + diff --git a/media/dashboard/css/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png b/media/dashboard/css/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png new file mode 100644 index 0000000000000000000000000000000000000000..6348115e6be09c044cd20ead0202c3ab5b2f9c19 GIT binary patch literal 251 zcmV<X00jSuP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T70002ONkl<ZScUD^ z%?g7s7(~(AZ1VmOn?+W2V<AoRYm^M-o2AHb6g12$gzzRyj4{9T6YqWZo;&*7on@u0 z_I&}>aF75Mac}}vaR5#k2ZfJhrR<4^Z31`Wpz#J3a8LoN;Gh6h!a)X9!$AU6#K8$v z#Q`{F91Q%ZXUd*<*dgG~<FE_deO5PtyK&F}D&U|3RKbC565AwmWuMq4xmsqMWVNgn z+ax1prPwB!DNAFU<VqRXCRr;Rjct-zSucONNe(qV^e#)@zDWQ8002ovPDHLkV1nw$ BW;g%< literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-bg_flat_15_cd0a0a_40x100.png b/media/dashboard/css/cupertino/images/ui-bg_flat_15_cd0a0a_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..7680b5437cf820615e472dc4f9a18fd0ba8b7881 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsTxlg$B>N1x91EQ4=6AkFgVs( zAAQ+GrQnN%`yz$&yRVt+nf>RR!x7drH9<9kle(1jzSB%AGQwhbfbL-MboFyt=akR{ E099={B>(^b literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png b/media/dashboard/css/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..5ae77ce6788bafd368879013f1a44630b964374d GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAGVZ#9R3S1yVg-978O6-(E4~YIWdgd03wo zEC1;4`plh5zdCv=n9W<w<d<+cAKI`*nP-CIZD#+_AK_OjEmxl0UjJaHRP^5I&(-`> zZJENk`&n&ve7~Oh@zL!4)3+VJs_%N}=pE%7LSf&({j8WIyncz?-Z!2z{{byz@O1Ta JS?83{1OPvRKAivn literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-bg_glass_50_3baae3_1x400.png b/media/dashboard/css/cupertino/images/ui-bg_glass_50_3baae3_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..baabca6baaff94ade4ecd5ddad28e35f52ea3af7 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq`W*`978O6-=1H{+u$H^^ufM+ zvdx>+CU0QuV-!dbkTBu=d3O3OBmLW&4uK;3Q}6PdBzSM&<ZFH$cyJ}_?guFwq~AQ$ g`~1~CP-K0~^$(nmXKNamfu=Hey85}Sb4q9e0Q-9_P5=M^ literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png b/media/dashboard/css/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..d9387e9507ef5b48483315affdcf7e69a6a5cbd1 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq?|on978O6-=5#ddq6?J`C|V2 z{i$jWixw%ex&#<FwA``znPPrCILh3C<6%_RYh%t0EZg>77W)>Ku`PSi#4qjXP8{lS YyPtFZh>C0s1RBTS>FVdQ&MBb@0KGXW`v3p{ literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png b/media/dashboard/css/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..28b566c2c29cc0f849995be62c10d7c292697803 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l%A)HV~E7myQentGAQsIIS~9U zUP5CYm&Of+-c)b1XI_rZEUK1mr%ne<%>I8zSo#mI$dWz<>o-8144$rjF6*2UngI7o B9l-zq literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png b/media/dashboard/css/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..d58829780430e138704e956a850c2913039fd4d9 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l&z<WV~E7myB9WcG8hUlA9Q^h z_y0wT#fIkc52h9~69QFMWpO{yO=DZTRnK!m?v=aZxBpLjBCVXsyypk^0miu>)bCBa S8D#`Ch{4m<&t;ucLK6U&At$5& literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png b/media/dashboard/css/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..2289d3c7d7b8e0892f5921de1af87a44b7059eb2 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l)k5nV~E7m<R3r&ey>+!V`FPm zbot}H;osq%|NlEjau{m7wqGXUWVoyE{|q&Lb0!9pSk(^U8R0L0S{XcD{an^LB{Ts5 DibWrf literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png b/media/dashboard/css/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..0de3275beabe5ac461e277724f9821c0e2ce084b GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l%1!GV~E7mtNo5#3<?5F$N&CU z{*@$uLhrPY<93BzJY0)9s*4$FSd4=>Ic~SGF#2(;hg6(iIV-sGZbkhsIkkPOWu2dS S1f&8@V(@hJb6Mw<&;$V9M<Vb5 literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-icons_2694e8_256x240.png b/media/dashboard/css/cupertino/images/ui-icons_2694e8_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..bdc74718a648fd7d2965b0e43d1734bcc2e46cf7 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-icons_2e83ff_256x240.png b/media/dashboard/css/cupertino/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..45e8928e5284adacea3f9ec07b9b50667d2ac65f GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-icons_3d80b3_256x240.png b/media/dashboard/css/cupertino/images/ui-icons_3d80b3_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..76a020d93fbabac3c61c74bdc45e0350095333d4 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-icons_72a7cf_256x240.png b/media/dashboard/css/cupertino/images/ui-icons_72a7cf_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8f4d9dfc5dcae74090d38ca7e00237568a7bdc GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/images/ui-icons_ffffff_256x240.png b/media/dashboard/css/cupertino/images/ui-icons_ffffff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..bef5178a9054c16582876bac57017f783272e750 GIT binary patch literal 4369 zcmd^?`8yPD_s3@pGj_w+*U6H7%U0QjR77J*QjsAo%D!YBW@O1;scbQ1jjT!5jATuS zWGpjA6KRZ{!Pve&pXdAh70>I3`<(O3xvulR&VAkQJHZBdk&9iF9RL7uS(uyI0RX_` z6tKz)Iz9;&mv)cCl8u%9`J?|OmP*JO$AcpS?T}Xh!q8L9tTyeBv(%*ReGzw2qI};t z;Rb@H=9eUIoYb&WiPetBc0TAE>N#yD-qsXR@u4{7ZRLA~1Dxy%JD4f0(CuYGwdYLk z1tagsXZP=qm>&QDJh2vLCiWq(mz-1FrW$y`edgtJG0#=QJ!m&9&)(a3?)h-syE0q# z?P#FI_!jBN4~${<Gls*@*U3)pxLX=A$u1j7cIX3MyzKAoC4l&CXg6YW-v9^!;GYiF znENOAGl5q^TVgbLm_g@1YM{-V6jfIR$@7AN91k%|K1b8#mcBeMnE9Qg>;{MO;g}UQ zG3d+lNqVdW?d;i5#SBg*2mQ!Rn>(amT&5v4d`jyu6+_vuxMGMIKj9N32D$`#BPsq4 z&H!{>s%@KE0gW_Hv;f*;8lr><XO_d^FP{BNZBOHxxo?jj^cv#Jy7Vb|FmRO_HwBa8 zfr3mK3pa~p^D%IQJ$cNd*?dg>_pIAQ@fn70`iX)lM~b;0%IthmkCNRW;1#Bl3u4aW zZ~`YcG08^(#=g-XUjMP$u{=5}{br3p0j{%8ct}0%c5dfz|9@!Qi!6tI!`h+yA7E)Z zJn+pl(M`4lJ2yy^I6~pY>FjC#sdMh}^se$@VnMaaG{PQ>@Mt|4=5=FE@b}Yj#d>l( zp4jAXfV^PTNaR=hCeZIRtFSH37;3xmUxT-X7qRQqRDSDzcRwf+uMpKCYAcj@3xTC< zXz@=PF2DIJC>`r|^jk;L@f^Px;*!*}+|<T%@#RGfjQ!uL6(+sbD28s<e+2S#sXeUw zq0`Cv7NO$L)>Y8=w%lx^Lb1jkv=)(P{W_K(F~@F=ROKDZ>ObgXV=mn;e*Wv}!4hQs zrZ<8{umiRhWI1l~TX=zzh)D{-gb%X?7vTMf7sj=#h8iTkd{*Bet7n<|_atRUW)ZrB zA7eI!*kdd~5R_>D0mx{$y#<cA4<9R>+vl@{K^-vOyaIe((yk@a6=@v1a!}7`F@zfM zQG%>GcJ=D5&7V-ti$ajzvp|RpDi@Xi9F7T!erF$O`Ic9l6iF8EO6t6kPu$fJw{LAv zko)<NwiSY}!lm`~{sZCRG|kxwtVFY&z)R+Esf@%Yv5YL5#+7Spb4*%0T7HXQNeqo1 zy!W`N1FGx-yIiCo2-@=;{&YT%+d77UWruS*$nM!|nmTT60iOfi-l!%<7$e|6?rw~k z&N%v$>2mUjktP!+r)G=#*``Y>=s1k2>FwDKC$IziTEBlvM`<DJeT5O{K#N}5t#XkK z-U9S=PnU?#;CP7-=cg-LkJ+U43x~EL{aMgv+V>7O^fX_t^h^yKlqX|CG2Bh|SzC!9 zu((_57v*9wG?@4)`5#(R)?dx^GP%aTCb>zIRu$<hqxJ~j?AQw~cl>psmmUq5l`+lI zxjUr27D$!vE~|Fn-1Ro7x-W)9FxAyDUu$%kMvL{Cdug%i)#LPZS~3)6Wa-ar<Mf3t zSmVOnII(yuC|Of3eac#ZVIO_Du5v-G7Tv`BY87BBr8Un=UBfh}i6IH^A-^eTKn1UO zfnr<6su5<JW$*W)>aSodDkF`W;re(7n$aoPt{f05OTqjG_6JJD?_?-WBj342T{x!u z!1T_qm<PKI9<V5nH&QCGz`<KPd2C08x2eMfrnHsixb{nFum_|A7OsF48BI`ZlH$uR z&c{++IT{{ou}O|?L0Q7-KBiB&l1>`%Z@#d)$x-@+guJbmlvUZ;FzsO|+=&8EfVPMP z_vq>mT<qWCEXumnEGib8J@Kp}yi8CK$|;b1(*VxAa8Al2ut57X4}Mp>PZbRE#{)T2 z)0FYd19#sOXwPcF(WXx^=S<<kqu;@o&9Q7A{6#T1;muG0ClH+(H)VwH`{o}~w3a|T z_yY5d2;0#&#Z!9H1oUU!YJ;ki{F#yuaJQMtEU^tZhOl;EK3Ga@GYtPsQzGtSq<DVa z;S4V-H7$;i-MI^*T9W%<5o`l5j93_LQw4R^*0OlQ(JE~tl8L>+#78l)kf~V1H!O_3 z4Gj?Y0M{R60`^9EQTirk_@;@y{b{e$-e)^*-{qb(;X?%IHFxl>vPj}Gt)!^i&1nD< zT>M5pSY1sG-%_@Uq253J!{?B%#@`qy#5Kv)C5-H$oJn5OGF{*s5sUP3A&`LbC_F3R z7ZBzX6@yv!wN}mi%5|2h5n_K)aG9S?#7atkvqw)frHAN@qD@M{m}*R)V}8hCzUCO! zEGq>w+t;@(`(73Y;ND7V@R$?9V(62BoF(fYmj`cYKKUtc?YH3%lE<I2srXh<ULvUc zB}`l;(BhiBe8e4b?;nT%uDM~)`+IBab^~6p%$vydhAX>)+m_)ujFAMdI^rB5-61b< zPq(0NcBIZO3dQ*GeJ^{k0ZBNCo}!zwU7ZsV&Qe(SH`w&+#X5xg53~52C@HlQ3Dr<g z*gcT$sF_SoEgMV5tDKGR*KKl8RkY=$;@L;hLw^G>e+D993b|o>mpw^$+9QG*SqJ#{ zZQCVXW0lZ(%J#Sct~wBgk=|?<)xEpq$Z=a*SqaC9eCoN0L+<f2-@n~{A&@)X0I966 zie4ZjI|fd?l*JTx=HGgK-0M+lT#C}tOe9|ZJl=&|&CvM_rjBT)`>huQP=HD}JC-RF z$$IcPJ?{+f7Dy&UdrVyWGghqj%z{k*5=-m5p~D$+);05~v^d&`<myYtjRPW&qO%51 zBTCY@!yx~|Om2s0HnRMy&-L&b?Ge4)Xx*%yCQzmkek$W6xocM_o*~fCp7KKzC`YiB zmycqZp^h8B_MGe-Z+xkIvd};L;6Wqu8H`-lQpJ-$uf4CxIr+5{RfYuqNlM13wQ)?% zR6faPhVSk#_7wIU?N_}_o1W#)NH5)_Df+S1pAy6wZ`Z9Ic(-bqW88+t26j*@Xea@` zol*JuP!07;cx?+Tfn}tX(tQ1{Ywq1)a&g-m`??aet+#u4M;ZBT%jE)HD6WC1KsCeK z!yfOeaFaVpR@`Wil~tbq-maI8PEvD3Z7y%fLSivQGx>JxUSbH`%)~AK-(8VFJ%N;5 zR)7fAQuSKvhmq&aRw4}^IkCy9Z0<45WUB*XvvHliJDohM5_W%hNl}qt^;`If=|0c4 zSTS#33RmucUSOYCT28lyD7Om?+}KvZt1;FiTIdPW260HH;26D&F5n}2!Gc>EkA^_s z<!gf_4<@9%)~SmN!?h!QsW@>@_6YwwOca*Zc?wrzZv_-(s#+gkOFVoepysi#JD+0b zLkdC1u~QZECT5wR%E_Q0g~QSDb~@(-B!JE3B55Yft)~Kl8arZL+tL7JQPzO#p;|3} z3?I1O@rkln)Wb!tZ&j*^7WfK)Jx##GnZd_z*in4exkHLHU^?5aYNNcN%VB@nhUv=M z%-te?`b-_&)lxezhaG->^zF$a=+lSMq1A>8n{oH3(+M!&cSi=g##MyV1Ss+u1bUzp zvPE4O6IW{iebSvw(Y*-R#z<AtF3jE7Yr|4vyA+8;Sc&!DzCN}S`MaK7S5g8FMtO(t zzh77a%?AVk$;j0$-_w&QdDeO!4Z6AksQWOxs4$>#<?Rf5ja7{oG>_;hn+kZWH~6X4 zdJ5;T3^rphFs?edA=gw9z$3BgO=ohGNahw}^@o>c)(%ja2%_Rfv;e<54?-7oSEur~ zSd;RM5HmqK8bH29UcAj@z|nLU5UUei1kyC@UgR?@h4>!4fh%D@TRMPWii}iDN2iQY zFht4@vE{ZbQc9#s8<L{HaBT8FB_ktqTa|N-y6_%nCA2X*F<3ugL;|(0#NeE(_cpk7 zCe`wU190`9uLtyKu8<&iH9Gb8<)H&*0^kx@=JmsSe-m>)ho>XX2<?#Bc814LuICg| z%M9h*s8}EJseu7QiOM*V_v`f{%^kJ}uj3_6anF6q+OEh7dW-H-$TGRP0^hvS0Yp$H zKf}=DHC3YncDsLarBo<|*n2oULi9M(MMwYek+O)L;ASf$?pFCx?BlbY*8$h$)H><$ ztO^NV39<9eVN*`4A!+P)-%rq`oqcM?<%9T!e^-3S4NQC(j(?<YvIzKgPU~k}a2_VO z%q~jGMP|F!v4sc9Nm2+Y-5yC&_mgXY@h$9L6KmusJM3c3=@}54zVEyA<)MoO9q5?2 z+avE*+Q(48>nKP%th1D$d(=xG>n0;ZiL*Ut)#`zN!g4C`?*bQ@jOo`&d)HtE&|qf; zHoW^HK(+NCnX{yy(hnW6r&{|w6x1JoBTVC*Xh3as3feJc*CFqPht-F+GMxZqSTcpw zvA(I}{rHE)i)L&hrT~1jQ+RbGGP!2Zi^U4BfP(p`pYUEkf)v$w@i-=8RF6m71El6| z18;ufz`)&mg0Y5pZwlt$>%W(>6W|^!F&8DUAC~&lo2oFkE{V3T3QgsYto**gNnv=A zf$Ty#t1HHiS4sLR<fv>wtb@EVY>xwsiE_Z5ToJp}Xh$8t;XGSfDO7s4uy|-Z>>OAg zbTFzq69;R~BlaTZu%TRZ?bgc4ppA?}&XiJ=!&EvX7z(6Ud{30wJ_xfx*k*DejZUc_ z9fX%S`6#B+UjP<?qStnkb0S@_S|L{WV6L-5F1957WSXIG;?LFv_dwRtPD!R^C;8Lh z#^%<~#7Hgi*(-K7QxXM}y4@>VyP;9axa^^ST&$zm{x0UlfRJsaQuQRM*`NL2GUNMy z%X`DKo+4T5MNU_5eP|1slik?>O6>z*M|in)E;@L>8kt-V&gFD+Xq%IY*o`OA1<byF zOGG*#=jNe@q4C0aJwPsv`_1G8dGVov{_Aq}ujkRm=OvYn-``nlIHPPPaxZ1!-r;NY zGwt9iN!`r;d1~8T_S>;$XgSWr@q5g&Teiy|FXrjdeNr)s4DMzCuwdva=cNXz)u)+| zOdqi<kcu^e!KX3vNx)WNX&wKY9}CsbbK7cqCz2Vwl};XlFrU>KXJa6fgYEEhhe#cQ z#X3Dy-tw!2F}kh^eD+L&*G%`%wv;NR(%L1&T_WPa)iWtx@pX%FBNhE3|ADt2+nLfA z&O<)}jjl_`0)8<QGBVKgCHD)MUq_q1?cXEhPMEo0fHr<K$~xF<L0_a}!e=1U+bxKH z+~~0%EwP=>Glw^^^OcVYH4D;?KucQeFNcHJn09tQU8ehd1~s;Q?2n`ZABDD{3%msO zg2N05dRqc7SG=Wc&g}SiUwe48w1y2b%zs;56H!5P83%c{9W0Vq!f5U9(Fi8e;S>dA l!Q;r%?Y*7ztoF~2ao>D^xRgPV&GA<sU~wL4R%MEc{y)fm&hY>M literal 0 HcmV?d00001 diff --git a/media/dashboard/css/cupertino/jquery-ui-1.7.2.custom.css b/media/dashboard/css/cupertino/jquery-ui-1.7.2.custom.css new file mode 100644 index 000000000..6b3ee7a81 --- /dev/null +++ b/media/dashboard/css/cupertino/jquery-ui-1.7.2.custom.css @@ -0,0 +1,406 @@ +/* +* jQuery UI CSS Framework +* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +*/ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + + +/* +* jQuery UI CSS Framework +* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=deedf7&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=04_highlight_hard.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=02_glass.png&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=3baae3&bgTextureActive=02_glass.png&bgImgOpacityActive=50&borderColorActive=2694e8&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffef8f&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=01_flat.png&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=eeeeee&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=90&opacityOverlay=80&bgColorShadow=000000&bgTextureShadow=04_highlight_hard.png&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px +*/ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #dddddd; background: #f2f5f7 url(images/ui-bg_highlight-hard_100_f2f5f7_1x100.png) 50% top repeat-x; color: #362b36; } +.ui-widget-content a { color: #362b36; } +.ui-widget-header { border: 1px solid #aed0ea; background: #deedf7 url(images/ui-bg_highlight-soft_100_deedf7_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } +.ui-widget-header a { color: #222222; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #aed0ea; background: #d7ebf9 url(images/ui-bg_glass_80_d7ebf9_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2779aa; outline: none; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2779aa; text-decoration: none; outline: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #74b2e2; background: #e4f1fb url(images/ui-bg_glass_100_e4f1fb_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #0070a3; outline: none; } +.ui-state-hover a, .ui-state-hover a:hover { color: #0070a3; text-decoration: none; outline: none; } +.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #2694e8; background: #3baae3 url(images/ui-bg_glass_50_3baae3_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; outline: none; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; outline: none; text-decoration: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #f9dd34; background: #ffef8f url(images/ui-bg_highlight-soft_25_ffef8f_1x100.png) 50% top repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #cd0a0a url(images/ui-bg_flat_15_cd0a0a_40x100.png) 50% 50% repeat-x; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #ffffff; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_72a7cf_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_72a7cf_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_72a7cf_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_3d80b3_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_2694e8_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; } +.ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; } +.ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; } +.ui-corner-top { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; } +.ui-corner-right { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; } +.ui-corner-left { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; } +.ui-corner-all { -moz-border-radius: 6px; -webkit-border-radius: 6px; } + +/* Overlays */ +.ui-widget-overlay { background: #eeeeee url(images/ui-bg_diagonals-thick_90_eeeeee_40x40.png) 50% 50% repeat; opacity: .80;filter:Alpha(Opacity=80); } +.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #000000 url(images/ui-bg_highlight-hard_70_000000_1x100.png) 50% top repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Accordion +----------------------------------*/ +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; } +.ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker +----------------------------------*/ +.ui-datepicker { width: 17em; padding: .2em .2em 0; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; } +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/* Dialog +----------------------------------*/ +.ui-dialog { position: relative; padding: .2em; width: 300px; } +.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/* Progressbar +----------------------------------*/ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable +----------------------------------*/ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider +----------------------------------*/ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs +----------------------------------*/ +.ui-tabs { padding: .2em; zoom: 1; } +.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; } +.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } diff --git a/media/dashboard/css/dashboard.css b/media/dashboard/css/dashboard.css new file mode 100755 index 000000000..d37e39a43 --- /dev/null +++ b/media/dashboard/css/dashboard.css @@ -0,0 +1,749 @@ +#head{height:115px;margin-top:5px}.logo{background:url(/media/dashboard/img/home_head_logo.png) no-repeat left;float:left;height:85px;width:550px}.nav{float:right}.sub_nav {background:url(/media/dashboard/img/nav_highlight.png) no-repeat 6px bottom;float:right;height:30px;}.sub_nav a {display:block;float:left;height:20px;margin-top:4px;} +.nav { + padding-top:1px; +} +.nav a { + background:url(/media/dashboard/img/home-head-nav.png) no-repeat 0 0; + display:block; + float:left; + height:84px; + width:78px +} +.account a, .nav a { + color:#fff;font-weight:normal; +} +.account { + float:right;height:62px;width:390px; +} +.account a { + display:block;float:right;font-size:.9em;margin:12px 0;padding:8px; +} +#content { + padding:15px 0 10px; +} +.page_title { + padding-bottom:5px; +} + +table { + width: 100%; margin-bottom: 25px +} +th { + background: #333; color: white; padding: 4px 8px; font-size: 1.2em; +} +td { + padding: 4px 8px; +} +.odd { + background: #adf; +} +.section { + background: #333; color: white; padding: 4px 8px; font-size: 1.5em +} + +/* __ */ + +#bread_crumbs { + background: #2d2d2d; + float: left; + width: 920px; + color: #989898; + border-top: 1px solid #000; + margin-left: 10px; + padding: 0 5px 0 15px; +} + +#bread_crumbs ul { + float: left; + margin: 0; + padding: 0; +} +#bread_crumbs ul li { + float: left; + margin-right: 10px; + list-style: none; +} + +#bread_crumbs ul li a { + background: url(/media/dashboard/img/bread_crumb.gif) top right no-repeat; + display: block; + color: #ccc; + padding-top: 5px; + padding-bottom: 5px; + padding-right: 25px; +} + +#bread_crumbs ul li a:hover { + color: #fff; +} + +ul#links { + list-style: none; + margin: 0; + float: left; +} + +#home_login { + width: 445px; +} + +#home_login fieldset { + margin: 0; +} + +#home_login #error { + color: #fff; + font-size: 14px; + background: rgba(255,0,0,0.51); + padding: 5px; + display: block; + text-align: center; + border-top: 1px solid rgba(255,0,0,0.47); + border-bottom: 1px solid rgba(255,0,0,0.47); +} + + +#home_login label { + display: block; + float: none; + padding: 0; + margin: 0 0 5px; + width: auto; + text-align: left; +} + +#home_login fieldset { + background: 0; + padding: 20px; +} + +#home_login input { + height: 25px; + font-size: 20px; + margin-bottom: 20px; + width: 100%; +} +#home_login input[type="submit"] { + height: 31px; + background: url(/media/dashboard/img/login_btn.png) top left repeat-x; + border: 1px solid #206cb5; + float: left; + margin: 0 10px 0 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -border-radius: 3px; + color: #fff; + font-weight: bold; + width: 121px; + font-size: 18px; + text-shadow: #06416e -1px -1px 2px; + cursor: pointer; + clear: both; +} + +#home_login input[type="submit"]:hover { + background-position: center left; +} + +#home_login input[type="submit"]:active { + background-position: bottom left; +} + +#home_login div { + float: right; + width: 125px; + margin-right: 0; + margin-left: 0; + margin-bottom: 0; +} + +#home_login div a { + margin: 0; + padding: 0; + color: rgba(255,0,4,0.75) !important; + display: inline; +} +#home_login div a:hover { + color: rgba(255,0,4,1) !important; + +} + +#tab_content { + float: left; + margin-left: 25px; + width: 538px; +} + +.block { + float: left; + width: 254px; + margin-right: 30px; + background-color: #dff2ff; + border: 1px solid #b1e7ff; +} + +#last.block { + margin-right: 0; +} + +.block ul { + list-style: none; + padding: 0; + margin: 0; +} + +.block ul li.odd { + background: #d2edff; +} +.block ul li { + border-bottom: 1px solid #ccc; +} + +.block ul li.last { + border: navajowhite; +} + +.block a { + font-size: 12px; + display: block; + padding-bottom: 10px; + padding-top: 10px; + padding-left: 10px; + color: #0a4a7a !important; +} + +#tab_content.home { + margin-left: 0; + width: 888px; + float: left; +} +#projects { + float: left; + margin: 0 20px 0 0; + width: 456px; + +} +#projects li { + border-bottom: 1px solid #bce3ff; +} + +#projects a { + display: block; + background: url(/media/dashboard/img/server_icon.png) no-repeat 13px 9px; + font-size: 14px; + padding-left: 58px; + height: 35px; + padding-top: 5px; + padding-bottom: 5px; + z-index: 100; + text-shadow: #000000 0 0 0; +} + +#projects a:hover { + color: #fff; + background-color: #b8e1ff; + text-decoration: none; +} + +#projects a:active { + background-color: #30a9ff; +} + +span.data { + color: #0d66a9; + font-size: 11px; + display: block; +} + +#dashboard_nav { + float: left; + list-style: none; + margin: 0; + width: 154px; + height: 400px; +} + +#dashboard_nav a { + background: url(/media/dashboard/img/nav_bg.png) top left repeat-x; + display: block; + height: 16px; + color: #666; + padding: 7px; + width: 140px; + margin-bottom: 0; +} + +#dashboard_nav li.active { + width: 155px; +} + +#dashboard_nav li.active a { + background: #f2f5f7; + width: 141px; + border-bottom: 1px solid #333; +} + +#dashboard_nav a:hover{ + background-position: bottom left; +} + +#right_content { + float: left; + width: 743px; + padding: 20px; +} + +#welcome { + float: left; + width: 350px; + margin-right: 20px; +} + +ul#content_nav { + margin: 0 0 20px; + list-style: none; + float: left; +} + +ul#content_nav li { + background: #444 ; + float: left; + margin-right: 10px; + -webkit-border-radius: 5px; + -moz-border-radius: 3px; + -border-radius: 3px; + margin-bottom: 15px; + width: 847px; + padding: 1px 20px 0; +} + +ul#content_nav li:hover { + opacity: 0.9; +} + +ul#content_nav a { + font-weight: normal; + height: 50px; +} + +ul#content_nav a:hover { + color: #fff; +} + +ul#content_nav li a span { + font-size: 24px; + font-weight: bold; + display: block; +} + +a#lnk_board { + background: url(/media/dashboard/img/chat_icon.png) no-repeat 0 12px; + display: block; + height: 18px; + color: #e5e5e5; + text-shadow: #595959 0 1px 2px; + padding: 7px 7px 7px 51px; + text-decoration: none; + float: left; + width: 809px; +} + +a#lnk_wiki { + background: url(/media/dashboard/img/book_icon.png) no-repeat 0 12px; + display: block; + height: 18px; + width: 809px; + color: #e5e5e5; + padding: 7px 7px 7px 50px; + text-decoration: none; + text-shadow: #595959 0 1px 2px; + float: left; + +} + +#home_resources { + float: left; + width: 408px; + margin: 0; +} + +#right_content form { + float: left; +} + +#right_content .block { + width: 341px; +} + +#right_content label { + text-align: left; + margin: 10px 0 5px; + font-size: 14px; + text-shadow: #fff 0 1px 2px; +} + +#right_content fieldset { + padding: 20px; + margin: 0; +} + +#right_content .block h2 { + margin: 0 0 5px; +} + +#right_content form input { + width: 90%; + padding: 7px; + height: 15px; + margin-bottom: 10px; +} + + +.block.last { + margin-right: 0; +} + +.ui-widget-content{ + background-image: none !important; +} + +.dash-wrap { + background: url(/media/dashboard/img/content_bg.gif) repeat-y 0 0 !important; +} + +#right_content th, #radar th, fieldset h3, .block h3 { + background: #1b1b1b url(/media/dashboard/img/table_header_bg.png) repeat-x top left; + border: 1px solid #6e6e6e; + text-shadow: #4f4f4f 0 1px 2px; + color: #ebebeb; + font-size: 14px; + height: 22px; +} + +#tab_content.home .block h3 { + margin: 0; + height: 22px; +} + +.block h3 { + margin: 0; + padding-left: 10px; + padding-top: 5px; +} + +.block fieldset h3 { + padding-top: 5px; + padding-left: 10px; + margin: -20px -20px 10px; + height: 17px; +} + +fieldset h3 { + margin-top: -20px; + margin-left: -20px; + padding: 7px 0 5px 8px; + height: 17px; + margin-right: -20px; +} + + +#right_content tr.odd, #radar tr.odd { + background: #dff2ff; +} + +#right_content tr.even, #radar tr.even { + background: #f1f9ff; +} + +#right_content tr.even td.odd, #radar tr.even td.odd { + background: #e9f5ff; +} + +#right_content tr.odd td.odd, #radar tr.odd td.odd { + background: #cceaff; +} + +#right_content table form#instances { + margin-right: -27px; +} + +#right_content table form.volume { + margin-right: -50px; +} + +#right_content table form { + margin-right: -18px; +} + +#right_content input[type="submit"], a.ui-state-default { + height: 35px; + width: auto; + float: right; + cursor: pointer; + margin: 0 4px 0 0; +} + +#right_content input[type="submit"]:hover, a.ui-state-default:hover { + background: url(/media/dashboard/css/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png); + text-decoration: none; +} + +#right_content input[type="submit"]:active, a.ui-state-default:active { + background-color: #c2ecff; +} + +#right_content fieldset input { + margin-bottom: 10px; + margin-right: 0; + width: 279px; +} + +a.ui-state-default { + padding: 8px; + height: 18px; + margin-left: -23px; +} + +#page_head h2, .page_title h2{ + background: url(/media/dashboard/img/page_header.png) repeat-x top left; + color: #fff; + font-size: 24px; + padding: 8px 20px; + text-shadow: #00294d -1px 0 2px; + margin-top: -10px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -border-radius: 5px; +} + +#page_head p{ + color: #636363; +} + +.home #page_head h2{ + margin-top: 0px !important; +} + +#spinner { + background: url(/media/dashboard/img/spinner.gif) no-repeat; + float: right; + width: 24px; + height: 24px; + margin-top: 1px; + display: none; +} +.home #page_head p { + padding-left: 20px; + padding-right: 20px; +} + +#resources { + float: right; + margin-right: 0; +} + +#frm_launch label{ + display: block; + float: left; + margin-top: 10px; + margin-bottom: 5px; + text-shadow: none; +} + +#frm_launch select, #authorize select { + width: 150px; + float: left; + margin-top: 8px; +} + +#authorize label { + width: 100%; +} + +#frm_launch .odd, #frm_launch .even { + float: left; + width: 326px; + margin: 0 -20px; + padding: 10px; +} + +#frm_launch .odd { + background: #def5ff} + +#frm_launch .even { + background: #c0e5ff; +} + +#frm_launch textarea { + width: 98%; + margin-bottom: 5px; +} + +#frm_launch h3 { + margin-bottom: 0; +} + +span.image_location { + clear: both; + display: block; +} + +.volumes form label { + width: 100%; +} + +.volumes form select { + float: left; + width: 160px; +} + +#right_content .errorlist { + padding: 5px; + margin-top: 0; + height: 15px; + float: left; + width: 283px; + margin-bottom: 10px; +} + +#right_content .errorlist li { + display: block; + float: left; +} + +#frm_launch .errorlist { + margin: 0; +} + +.block fieldset li { + border: none; +} + +.ui-state-highlight.success { + background: #baffd4 !important; + border: 1px solid #72df9b !important; +} + +.ui-state-error { + background: #f99 !important; +} + +.ft_info { + margin-top: 0 !important; +} + +.c7 { + width: 650px; +} + +em { + font-style: italic; + font-size: 12px; +} + +#radar_service td{ + padding: 0 !important; + margin: 0 !important; +} + + +#dlg_launch { + padding: 0; +} + +#dlg_launch #frm_launch div { + width: 385px; +} + +#dlg_launch #frm_launch textarea { + width: 280px; + margin-left: 95px; +} + +#frm_launch input.ui-state-default { + margin-top: 20px !important; + margin-right: -5px !important; +} + +.ui-widget-header { + background: #1b1b1b url(/media/dashboard/img/table_header_bg.png) top left repeat-x!important; + border: none !important; + font-weight: bold !important; + color: #fff !important; +} + +.ui-dialog-buttonpane { + background: #c0e5ff !important; + margin: 0 !important; +} + +form.form-terminate input { + margin-right: 15px !important; +} + +form.form-key-delete input { + position: relative; + margin-left: 30px !important; +} + +#image_launch a { + margin-left: -38px; +} + +.ui-widget .close { + float: right; +} + +p.error { + background-color: #f99; + color: white; + border: 1px solid #ff7676; + font-size: 13px; + padding: 5px; + margin-bottom: 20px; +} + +#radar_service { + float: left; +} + +td.radar_name a{ + display: block; + height: 20px; + padding: 10px; +} + + +tr#heading { + margin-top: -20px !Important; +} + +#service_head { + margin-top: 10px ; +} +#service_stats tr td{ + height: 40px; +} + + +#radar_service th, #service_head th { + height: 20px !important; +} + +#id_community_advprofile_avatar { + width: 300px; +} + +code, pre { + background: #e1e1e1; + padding: 5px; + font-family: monospace; + font-size: 12px; + display: block; + margin-bottom: 20px; +} + +pre code { + background: 0; + margin: 0; +} \ No newline at end of file diff --git a/media/dashboard/css/dashboard_sub.css b/media/dashboard/css/dashboard_sub.css new file mode 100755 index 000000000..c18494f7c --- /dev/null +++ b/media/dashboard/css/dashboard_sub.css @@ -0,0 +1,217 @@ +#content {background:url(/media/dashboard/img/content_shadow.png) no-repeat center top;} +.sphboard_categories { +border-collapse:collapse; +width:100%; +} +.sphboard_categories td, .sphboard_categories th { +border:1px solid gray; +padding:5px; +} +.sphboard_categories th { +white-space:nowrap; +} +.sphboard_threadcount, .sphboard_postcount, .sphboard_threadcount, .sphboard_viewcount { +text-align:right; +width:5%; +} +.sphboard_latestpost { +width:40%; +} +.sphboard_postform { +border:1px solid black; +border-collapse:collapse; +width:80%; +} +.sphboard_postform td, .sphboard_postform th { +padding:3px; +} +.sphboard_postform input[type="text"], .sphboard_postform textarea { +width:80%; +} +.sph_captcha input[type="text"] { +width:100px; +} +.sphboard_post_list { +border-collapse:collapse; +width:100%; +} +.sphboard_post_list td, .sphboard_post_list th { +border:1px solid gray; +padding:5px; +} +.sphboard_post_list td.sphboard_post_subject { +height:10px; +} +.sphboard_post_list td.sphboard_post_body { +min-height:100px; +vertical-align:top; +} +.sphboard_post_list td.sphboard_post_authorinfo { +padding-top:2em; +vertical-align:top; +width:150px; +} +dl.sphboard_post_authorinfo_details dt { +font-weight:bold; +margin:0; +padding:0; +} +dl.sphboard_post_authorinfo_details dt:after { +content:": "; +} +dl.sphboard_post_authorinfo_details dd { +margin:0 0 0 1em; +padding:0; +} +.sphboard_thread_list { +border-collapse:collapse; +width:100%; +} +.sphboard_mainhead { +background-color:#0066CC; +color:white; +} +.sphboard_thread_list td, .sphboard_thread_list th { +border:1px solid gray; +padding:5px; +} +.sphboard_post_body .signature { +border-top:1px solid gray; +color:gray; +display:block; +font-size:smaller; +margin-top:20px; +padding-left:10px; +} +.sphboard_post_body .annotation_not_hidden { +border-bottom:1px solid gray; +font-size:smaller; +} +.sphboard_post_body .attachments { +border-top:1px solid black; +font-size:smaller; +margin-top:20px; +padding-left:10px; +} +.sphboard_post_body .attachments:before { +content:attr(title); +} +.sphboard { +width:100%; +} +.sphboard textarea { +width:100%; +} + +.sphboard label { +margin-left:20px; +width:auto; +float:none; +} + +.sphboard input { +width:100%; +} + +.board_previewarea { +border:2px solid gray; +display:none; +max-height:500px; +overflow:scroll; +padding:5px; +visibility:hidden; +} +.board_threadcount { +float:left; +} +.board_pagination { +display:block; +float:right; +} +.board_postdate { +float:left; +} +.board_controls { +float:right; +} +.polls_percent { +white-space:nowrap; +} +.polls_percentbar { +background-color:#CCCCCC; +font-size:5px; +height:10px; +} +.polls_choices { +list-style:none outside none; +} +ul.sphboard_post_summary { +display:block; +list-style-type:none; +margin:0; +padding:0; +} +.sphboard_post_summary li { +border-bottom:1px dotted gray; +display:block; +margin:0; +padding:1em; +} +.sphboard_post_summary li:hover { +background-color:#DDDDFF; +} +.sphboard_post_summary dt { +padding:0; +} +.sphboard_post_summary dd.category { +display:none; +} +.sphboard_post_summary .postdate { +font-size:x-small; +font-weight:bold; +margin-bottom:1em; +} +.sphboard_post_summary .subject { +} +.sphboard_post_summary .body { +max-height:4em; +overflow:hidden; +} +.sphboard_post_summary li:hover .body { +max-height:20em; +} +table.sphlist_threadlist { +border-collapse:collapse; +width:100%; +} +table.sphlist_threadlist th { +font-size:smaller; +} +table.sphlist_threadlist td, table.sphlist_threadlist th { +border:1px solid gray; +padding:5px; +} +.sphlist_threadlist_newpost { +width:20px; +} +td.sphlist_threadlist_views, td.sphlist_threadlist_posts { +text-align:right; +width:5%; +} +th.sphlist_threadlist_views { +white-space:nowrap; +} +div.sortorder_desc:after { +content:"↓"; +} +div.sortorder_asc:after { +content:"↑"; +} +.sphlist_threadlist_object_count { +float:left; +} +.sphlist_threadlist_pagination { +display:block; +float:right; +} + diff --git a/media/dashboard/css/django-admin-widgets.css b/media/dashboard/css/django-admin-widgets.css new file mode 100644 index 000000000..43521be0f --- /dev/null +++ b/media/dashboard/css/django-admin-widgets.css @@ -0,0 +1,541 @@ +/* +Copyright (c) Django Software Foundation and individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of Django nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* SELECTOR (FILTER INTERFACE) */ + +.selector { + width: 580px; + float: left; +} + +.selector select { + width: 270px; + height: 17.2em; +} + +.selector-available, .selector-chosen { + float: left; + width: 270px; + text-align: center; + margin-bottom: 5px; +} + +.selector-available h2, .selector-chosen h2 { + border: 1px solid #ccc; + background: #C9DBED url(/media/admin/img/admin/default-bg.gif) bottom left repeat-x; + color: #fff; +} + +.selector .selector-available h2 { + background: white url(/media/admin/img/admin/nav-bg.gif) bottom left repeat-x; + color: #666; +} + +.selector .selector-filter { + background: white; + border: 1px solid #ccc; + border-width: 0 1px; + padding: 3px; + color: #999; + font-size: 10px; + margin: 0; + text-align: left; +} + +.selector .selector-chosen .selector-filter { + padding: 4px 5px; +} + +.selector .selector-available input { + width: 230px; +} + +.selector ul.selector-chooser { + float: left; + width: 22px; + height: 50px; + background: url(/media/admin/img/admin/chooser-bg.gif) top center no-repeat; + margin: 8em 3px 0 3px; + padding: 0; +} + +.selector-chooser li { + margin: 0; + padding: 3px; + list-style-type: none; +} + +.selector select { + margin-bottom: 5px; + margin-top: 0; +} + +.selector-add, .selector-remove { + width: 16px; + height: 16px; + display: block; + text-indent: -3000px; +} + +.selector-add { + background: url(/media/admin/img/admin/selector-add.gif) top center no-repeat; + margin-bottom: 2px; +} + +.selector-remove { + background: url(/media/admin/img/admin/selector-remove.gif) top center no-repeat; +} + +a.selector-chooseall, a.selector-clearall { + display: block; + width: 6em; + text-align: left; + margin-left: auto; + margin-right: auto; + font-weight: bold; + color: #666; + padding: 3px 0 3px 18px; +} + +a.selector-chooseall:hover, a.selector-clearall:hover { + color: #036; +} + +a.selector-chooseall { + width: 7em; + background: url(/media/admin/img/admin/selector-addall.gif) left center no-repeat; +} + +a.selector-clearall { + background: url(/media/admin/img/admin/selector-removeall.gif) left center no-repeat; +} + + +/* STACKED SELECTORS */ + +.stacked { + float: left; + width: 500px; +} + +.stacked select { + width: 480px; + height: 10.1em; +} + +.stacked .selector-available, .stacked .selector-chosen { + width: 480px; +} + +.stacked .selector-available { + margin-bottom: 0; +} + +.stacked .selector-available input { + width: 442px; +} + +.stacked ul.selector-chooser { + height: 22px; + width: 50px; + margin: 0 0 3px 40%; + background: url(/media/admin/img/admin/chooser_stacked-bg.gif) top center no-repeat; +} + +.stacked .selector-chooser li { + float: left; + padding: 3px 3px 3px 5px; +} + +.stacked .selector-chooseall, .stacked .selector-clearall { + display: none; +} + +.stacked .selector-add { + background-image: url(/media/admin/img/admin/selector_stacked-add.gif); +} + +.stacked .selector-remove { + background-image: url(/media/admin/img/admin/selector_stacked-remove.gif); +} + + +/* DATE AND TIME */ + +p.datetime { + line-height: 20px; + margin: 0; + padding: 0; + color: #666; + font-size: 11px; + font-weight: bold; +} + +.datetime span { + font-size: 11px; + color: #ccc; + font-weight: normal; + white-space: nowrap; +} + +table p.datetime { + font-size: 10px; + margin-left: 0; + padding-left: 0; +} + +/* FILE UPLOADS */ + +p.file-upload { + line-height: 20px; + margin: 0; + padding: 0; + color: #666; + font-size: 11px; + font-weight: bold; +} + +.file-upload a { + font-weight: normal; +} + +.file-upload .deletelink { + margin-left: 5px; +} + +/* CALENDARS & CLOCKS */ + +.calendarbox, .clockbox { + margin: 5px auto; + font-size: 11px; + width: 16em; + text-align: center; + background: white; + position: relative; +} + +.clockbox { + width: auto; +} + +.calendar { + margin: 0; + padding: 0; +} + +.calendar table { + margin: 0; + padding: 0; + border-collapse: collapse; + background: white; + width: 99%; +} + +.calendar caption, .calendarbox h2 { + margin: 0; + font-size: 11px; + text-align: center; + border-top: none; +} + +.calendar th { + font-size: 10px; + color: #666; + padding: 2px 3px; + text-align: center; + background: #e1e1e1 url(/media/admin/img/admin/nav-bg.gif) 0 50% repeat-x; + border-bottom: 1px solid #ddd; +} + +.calendar td { + font-size: 11px; + text-align: center; + padding: 0; + border-top: 1px solid #eee; + border-bottom: none; +} + +.calendar td.selected a { + background: #C9DBED; +} + +.calendar td.nonday { + background: #efefef; +} + +.calendar td.today a { + background: #ffc; +} + +.calendar td a, .timelist a { + display: block; + font-weight: bold; + padding: 4px; + text-decoration: none; + color: #444; +} + +.calendar td a:hover, .timelist a:hover { + background: #5b80b2; + color: white; +} + +.calendar td a:active, .timelist a:active { + background: #036; + color: white; +} + +.calendarnav { + font-size: 10px; + text-align: center; + color: #ccc; + margin: 0; + padding: 1px 3px; +} + +.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover { + color: #999; +} + +.calendar-shortcuts { + background: white; + font-size: 10px; + line-height: 11px; + border-top: 1px solid #eee; + padding: 3px 0 4px; + color: #ccc; +} + +.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { + display: block; + position: absolute; + font-weight: bold; + font-size: 12px; + background: #C9DBED url(/media/admin/img/admin/default-bg.gif) bottom left repeat-x; + padding: 1px 4px 2px 4px; + color: white; +} + +.calendarnav-previous:hover, .calendarnav-next:hover { + background: #036; +} + +.calendarnav-previous { + top: 0; + left: 0; +} + +.calendarnav-next { + top: 0; + right: 0; +} + +.calendar-cancel { + margin: 0 !important; + padding: 0; + font-size: 10px; + background: #e1e1e1 url(/media/admin/img/admin/nav-bg.gif) 0 50% repeat-x; + border-top: 1px solid #ddd; +} + +.calendar-cancel a { + padding: 2px; + color: #999; +} + +ul.timelist, .timelist li { + list-style-type: none; + margin: 0; + padding: 0; +} + +.timelist a { + padding: 2px; +} + +/* INLINE ORDERER */ + +ul.orderer { + position: relative; + padding: 0 !important; + margin: 0 !important; + list-style-type: none; +} + +ul.orderer li { + list-style-type: none; + display: block; + padding: 0; + margin: 0; + border: 1px solid #bbb; + border-width: 0 1px 1px 0; + white-space: nowrap; + overflow: hidden; + background: #e2e2e2 url(/media/admin/img/admin/nav-bg-grabber.gif) repeat-y; +} + +ul.orderer li:hover { + cursor: move; + background-color: #ddd; +} + +ul.orderer li a.selector { + margin-left: 12px; + overflow: hidden; + width: 83%; + font-size: 10px !important; + padding: 0.6em 0; +} + +ul.orderer li a:link, ul.orderer li a:visited { + color: #333; +} + +ul.orderer li .inline-deletelink { + position: absolute; + right: 4px; + margin-top: 0.6em; +} + +ul.orderer li.selected { + background-color: #f8f8f8; + border-right-color: #f8f8f8; +} + +ul.orderer li.deleted { + background: #bbb url(/media/admin/img/admin/deleted-overlay.gif); +} + +ul.orderer li.deleted a:link, ul.orderer li.deleted a:visited { + color: #888; +} + +ul.orderer li.deleted .inline-deletelink { + background-image: url(/media/admin/img/admin/inline-restore.png); +} + +ul.orderer li.deleted:hover, ul.orderer li.deleted a.selector:hover { + cursor: default; +} + +/* EDIT INLINE */ + +.inline-deletelink { + display: block; + text-indent: -9999px; + background: transparent url(/media/admin/img/admin/inline-delete.png) no-repeat; + width: 15px; + height: 15px; + margin: 0.4em 0; + border: 0px none; +} + +.inline-deletelink:hover { + background-position: -15px 0; + cursor: pointer; +} + +.editinline button.addlink { + border: 0px none; + color: #5b80b2; + font-size: 100%; + cursor: pointer; +} + +.editinline button.addlink:hover { + color: #036; + cursor: pointer; +} + +.editinline table .help { + text-align: right; + float: right; + padding-left: 2em; +} + +.editinline tfoot .addlink { + white-space: nowrap; +} + +.editinline table thead th:last-child { + border-left: none; +} + +.editinline tr.deleted { + background: #ddd url(/media/admin/img/admin/deleted-overlay.gif); +} + +.editinline tr.deleted .inline-deletelink { + background-image: url(/media/admin/img/admin/inline-restore.png); +} + +.editinline tr.deleted td:hover { + cursor: default; +} + +.editinline tr.deleted td:first-child { + background-image: none !important; +} + +/* EDIT INLINE - STACKED */ + +.editinline-stacked { + min-width: 758px; +} + +.editinline-stacked .inline-object { + margin-left: 210px; + background: white; +} + +.editinline-stacked .inline-source { + float: left; + width: 200px; + background: #f8f8f8; +} + +.editinline-stacked .inline-splitter { + float: left; + width: 9px; + background: #f8f8f8 url(/media/admin/img/admin/inline-splitter-bg.gif) 50% 50% no-repeat; + border-right: 1px solid #ccc; +} + +.editinline-stacked .controls { + clear: both; + background: #e1e1e1 url(/media/admin/img/admin/nav-bg.gif) top left repeat-x; + padding: 3px 4px; + font-size: 11px; + border-top: 1px solid #ddd; +} + + +form#send_credentials { + clear: both; +} diff --git a/media/dashboard/css/global.css b/media/dashboard/css/global.css new file mode 100644 index 000000000..de269489c --- /dev/null +++ b/media/dashboard/css/global.css @@ -0,0 +1,18 @@ +html, body, div, span, img, h1, h2, h3, h4, h5, h6, p, big, small, a, del, em, strong, sub, sup, code, pre, dl, dt, dd, ol, ul, li, blockquote, q, form, label, legend, fieldset, input, select, textarea, table, tbody, tfoot, thead, caption, tr, th, td{font:normal normal normal 100%/1.22em 'Helvetica', Arial, sans-serif;margin:0;padding:0}p, h1, h2, h3, h4, h5, h6, ol, ul, table{margin-bottom:20px}body{background-color:#FBFEFF;background-position:50% top;background-repeat:repeat-x;color:#333;font-size:.875em}img, fieldset{border:0}h1, h2, h3, h4, h5, h6, strong{font-weight:bold}h1, h2, h3{margin-bottom:15px}h1{font-size:1.3em}h2{font-size:1.2em}h3, big{font-size:1.1em}h4{font-size:1em}h5, small{font-size:.9em}h6, .tiny{font-size:.8em}a{color:#06c;font-weight:bold}a:hover{cursor:pointer;text-decoration:underline}a, del{text-decoration:none}sup{vertical-align:text-top}sub{vertical-align:text-bottom}ol, ul{line-height:1.5em;margin-left:30px}ol ol, ol ul, ul ol, ul ul{margin-bottom:0}blockquote, q{quotes: none}blockquote:before, blockquote:after, q:before, q:after{content: '';content: none}table{border-collapse:collapse;border-spacing:0}caption, th{text-align:left}.right{float:right}.left{float:left}img.right{margin:0 0 5px 15px}img.left{margin:0 20px 5px 0}.clr{clear:both}#head, #content, #foot, .box{clear:both;margin:0 auto;width:960px}#content{padding:30px 0 10px} + +.page_title {padding-bottom:30px}.page_side p, .page_side ol, .page_side ul {margin-bottom:5px}.page_side_item{border-bottom:1px solid #adf;margin-bottom:17px;padding-bottom:5px} + +.title_blank {background:url(/media/dashboard/img/title-blank.png) no-repeat top left;color:#fff;display:block;height:74px;font-size:24px;font-weight:bold;line-height:73px;padding-left:25px;} + +.blog_post {border-bottom:1px solid #adf;margin-bottom:15px}.blog_post_last {margin-bottom:20px}.blog_post_info h3, .blog_post_info p {line-height:1.5em}.blog_post_info h3 {display:inline;margin:0}.blog_post_info p {color:#555;font-size:.9em;margin:-2px 0 10px}.blog_comment {margin-left:30px;}.blog_subs ul, .blog_archive ul {list-style:none;margin-left:10px}.blog_subs a {background:url(/media/dashboard/img/item-icon-rss.png) no-repeat;padding:0 0 0 25px;}.blog_subs a, .blog_archive a {display:block;margin:0;height:25px;width:170px;}.blog_archive div {margin-bottom:5px;} + +.pagi_bar {border-bottom:1px solid #adf;font-size:1.2em;margin-bottom:15px;}.pagi_bar span {font-weight:bold;}a.pagi_first, a.pagi_prev, a.pagi_next, a.pagi_last {background:url(/media/dashboard/img/item-icon-pagination.png) no-repeat 0 1px;display:block;height:15px;width:15px;}a.pagi_first, a.pagi_prev, .page_pages, a.pagi_next, a.pagi_last {float:left;}.pagi_pagination {float:right}a:hover.pagi_first {background-position:0 -14px}a.pagi_prev {background-position:-12px 1px}a.pagi_first, a.pagi_prev {margin-right:5px}a.pagi_next {background-position:-24px 1px}a.pagi_last {background-position:-40px 1px}a.pagi_next, a.pagi_last {margin-left:5px;} + +form h2 {background:url(/media/dashboard/img/title-blank-short.png) no-repeat top left;color:#fff;display:block;height:40px;font-size:18px;font-weight:bold;line-height:40px;padding-left:25px;margin:0} +form div, form p {margin:0 15px 5px} form label, form input {margin-right:10px;} form label {display:block;float:left;font-size:.9em;font-weight:bold;margin-left:10px;text-align:right;width:150px;} form input {width:150px;} .form_button {margin:-5px 0 30px 185px;} fieldset {background:#def5ff url(/media/dashboard/img/title-blank-short-foot.png) no-repeat bottom;margin-bottom:25px;padding: 20px 0 15px;} + +.errorlist {background:#fcc;border:1px solid #c66;color:#600;list-style:none;margin:5px 15px 15px 170px;padding:4px 8px 3px;} + +.foot{background:#D0F0FF url(/media/dashboard/img/foot_back.png) repeat-x 50% top}#foot{padding:40px 0 15px}#foot, #foot a{color:#fff}.ft_sitemap div{clear:both;height:20px;margin-bottom:15px}.ft_sitemap ul{list-style:none;margin-left:0}.ft_sitemap ul li{float:left;font-size:.8em;list-style:none;margin:3px 20px 0 0}.ft_sitemap .sub{padding-bottom:15px}.ft_social{float:right}.ft_social a{display:block;float:left;margin-left:10px;height:36px;width:36px}.ft_s_twitter{background:url(/media/dashboard/img/social_icon_twitter.png)}.ft_s_facebook{background:url(/media/dashboard/img/social_icon_facebook.png)}.ft_s_digg{background:url(/media/dashboard/img/social_icon_digg.png)}.ft_s_delicious{background:url(/media/dashboard/img/social_icon_delicious.png)}.ft_s_stumble{background:url(/media/dashboard/img/social_icon_stumble.png)}.ft_s_reddit{background:url(/media/dashboard/img/social_icon_reddit.png)}.ft_s_technorati{background:url(/media/dashboard/img/social_icon_technorati.png)}.ft_s_newsvine{background:url(/media/dashboard/img/social_icon_newsvine.png)}.ft_info{font-size:.9em;margin-top:60px;text-align:right} + +.c3, .c4, .c5, .c6, .c7, .c8, .c9, .c12{display: inline;float: left;position: relative;margin:0 10px 0}.first{margin-left:0}.last{margin-right:0}.c3{width: 220px}.c4{width: 300px}.c5{width: 380px}.c6{width: 460px}.c7{width: 540px}.c8{width: 620px}.c9{width: 700px}.c12{width: 940px}#content .c3 {width: 190px;padding:0 15px}#content .c4 {width: 270px;padding:0 15px}#content .c8 {width: 590px;padding:0 15px}#content .c9 {width: 670px;padding:0 15px} \ No newline at end of file diff --git a/media/dashboard/css/home.css b/media/dashboard/css/home.css new file mode 100644 index 000000000..447efa53c --- /dev/null +++ b/media/dashboard/css/home.css @@ -0,0 +1,745 @@ +.nav { + padding-top:1px; +} +.nav a { + background:url(/media/dashboard/img/home-head-nav.png) no-repeat 0 0; + display:block; + float:left; + height:84px; + width:78px +} +.account a, .nav a { + color:#fff;font-weight:normal; +} +.account { + float:right;height:62px;width:390px; +} +.account a { + display:block;float:right;font-size:.9em;margin:12px 0;padding:8px; +} +#content { + padding:15px 0 10px; +} +.page_title { + padding-bottom:5px; +} + +table { + width: 100%; margin-bottom: 25px +} +th { + background: #333; color: white; padding: 4px 8px; font-size: 1.2em; +} +td { + padding: 4px 8px; +} +.odd { + background: #adf; +} +.section { + background: #333; color: white; padding: 4px 8px; font-size: 1.5em +} + +/* __ */ + +#bread_crumbs { + background: #2d2d2d; + float: left; + width: 920px; + color: #989898; + border-top: 1px solid #000; + margin-left: 10px; + padding: 0 5px 0 15px; +} + +#bread_crumbs ul { + float: left; + margin: 0; + padding: 0; +} +#bread_crumbs ul li { + float: left; + margin-right: 10px; + list-style: none; +} + +#bread_crumbs ul li a { + background: url(/media/dashboard/img/bread_crumb.gif) top right no-repeat; + display: block; + color: #ccc; + padding-top: 5px; + padding-bottom: 5px; + padding-right: 25px; +} + +#bread_crumbs ul li a:hover { + color: #fff; +} + +ul#links { + list-style: none; + margin: 0; + float: left; +} + +#home_login { + width: 445px; +} + +#home_login fieldset { + margin: 0; +} + +#forgot_password { + width: 200px; + display: inline-block; +} +#home_login #error { + color: #fff; + font-size: 14px; + background: rgba(255,0,0,0.51); + padding: 5px; + display: block; + text-align: center; + border-top: 1px solid rgba(255,0,0,0.47); + border-bottom: 1px solid rgba(255,0,0,0.47); +} + + +#home_login label { + display: block; + float: none; + padding: 0; + margin: 0 0 5px; + width: auto; + text-align: left; +} + +#home_login fieldset { + background: 0; + padding: 20px; +} + +#home_login input { + height: 25px; + font-size: 20px; + margin-bottom: 20px; + width: 100%; +} +#home_login input[type="submit"] { + height: 31px; + background: url(/media/dashboard/img/login_btn.png) top left repeat-x; + border: 1px solid #206cb5; + float: left; + margin: 0 10px 0 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -border-radius: 3px; + color: #fff; + font-weight: bold; + width: 121px; + font-size: 18px; + text-shadow: #06416e -1px -1px 2px; + cursor: pointer; + clear: both; +} + +#home_login input[type="submit"]:hover { + background-position: center left; +} + +#home_login input[type="submit"]:active { + background-position: bottom left; +} + +#home_login div { + float: right; + width: 125px; + margin-right: 0; + margin-left: 0; + margin-bottom: 0; +} + +#home_login div a { + margin: 0; + padding: 0; + color: rgba(255,0,4,0.75) !important; + display: inline; +} +#home_login div a:hover { + color: rgba(255,0,4,1) !important; + +} + +#tab_content { + float: left; + margin-left: 25px; + width: 538px; +} + +.block { + float: left; + width: 254px; + margin-right: 30px; + background-color: #dff2ff; + border: 1px solid #b1e7ff; +} + +#last.block { + margin-right: 0; +} + +.block ul { + list-style: none; + padding: 0; + margin: 0; +} + +.block ul li.odd { + background: #d2edff; +} +.block ul li { + border-bottom: 1px solid #ccc; +} + +.block ul li.last { + border: navajowhite; +} + +.block a { + font-size: 12px; + display: block; + padding-bottom: 10px; + padding-top: 10px; + padding-left: 10px; + color: #0a4a7a !important; +} + +#tab_content.home { + margin-left: 30px; + width: 888px; + float: left; +} +#projects { + float: left; + margin: 0 20px 0 0; + width: 456px; + +} +#projects li { + border-bottom: 1px solid #bce3ff; +} + +#projects a { + display: block; + background: url(/media/dashboard/img/server_icon.png) no-repeat 13px 9px; + font-size: 14px; + padding-left: 58px; + height: 35px; + padding-top: 5px; + padding-bottom: 5px; + z-index: 100; + text-shadow: #000000 0 0 0; +} + +#projects a:hover { + color: #fff; + background-color: #b8e1ff; + text-decoration: none; +} + +#projects a:active { + background-color: #30a9ff; +} + +span.data { + color: #0d66a9; + font-size: 11px; + display: block; +} + +#dashboard_nav { + float: left; + list-style: none; + margin: 0; + width: 154px; + height: 400px; +} + +#dashboard_nav a { + background: url(/media/dashboard/img/nav_bg.png) top left repeat-x; + display: block; + height: 16px; + color: #666; + padding: 7px; + width: 140px; + margin-bottom: 0; +} + +#dashboard_nav li.active { + width: 155px; +} + +#dashboard_nav li.active a { + background: #f2f5f7; + width: 141px; + border-bottom: 1px solid #333; +} + +#dashboard_nav a:hover{ + background-position: bottom left; +} + +#right_content { + float: left; + width: 743px; + padding: 20px; +} + +#welcome { + float: left; + width: 350px; + margin-right: 20px; +} + +ul#content_nav { + margin: 0 0 20px; + list-style: none; + float: left; +} + +ul#content_nav li { + background: #444 ; + float: left; + margin-right: 10px; + -webkit-border-radius: 5px; + -moz-border-radius: 3px; + -border-radius: 3px; + margin-bottom: 15px; + width: 847px; + padding: 1px 20px 0; +} + +ul#content_nav li:hover { + opacity: 0.9; +} + +ul#content_nav a { + font-weight: normal; + height: 50px; +} + +ul#content_nav a:hover { + color: #fff; +} + +ul#content_nav li a span { + font-size: 24px; + font-weight: bold; + display: block; + margin-top: 5px; + margin-bottom: 5px; +} + +a#lnk_board { + background: url(/media/dashboard/img/chat_icon.png) no-repeat 0 12px; + display: block; + height: 18px; + color: #e5e5e5; + text-shadow: #595959 0 1px 2px; + padding: 7px 7px 7px 51px; + text-decoration: none; + float: left; + width: 809px; +} + +a#lnk_wiki { + background: url(/media/dashboard/img/book_icon.png) no-repeat 0 12px; + display: block; + height: 18px; + width: 809px; + color: #e5e5e5; + padding: 7px 7px 7px 50px; + text-decoration: none; + text-shadow: #595959 0 1px 2px; + float: left; + +} + +#home_resources { + float: left; + width: 408px; + margin: 0; +} + +#right_content form { + float: left; +} + +#right_content .block { + width: 341px; +} + +#right_content label { + text-align: left; + margin: 10px 0 5px; + font-size: 14px; + text-shadow: #fff 0 1px 2px; +} + +#right_content fieldset { + padding: 20px; + margin: 0; +} + +#right_content .block h2 { + margin: 0 0 5px; +} + +#right_content form input { + width: 90%; + padding: 7px; + height: 15px; + margin-bottom: 10px; +} + + +.block.last { + margin-right: 0; +} + +.ui-widget-content{ + background-image: none !important; +} + +.dash-wrap { + background: url(/media/dashboard/img/content_bg.gif) repeat-y 0 0 !important; +} + +#right_content th, #radar th, fieldset h3, .block h3 { + background: url(/media/dashboard/img/table_header_bg.png) top left repeat-x; + border: 1px solid #6e6e6e; + text-shadow: #4f4f4f 0 1px 2px; + color: #ebebeb; + font-size: 14px; + height: 22px; +} + +#tab_content.home .block h3 { + margin: 0; + height: 22px; +} + +.block h3 { + margin: 0; + padding-left: 10px; + padding-top: 5px; +} + +.block fieldset h3 { + padding-top: 5px; + padding-left: 10px; + margin: -20px -20px 10px; + height: 17px; +} + +fieldset h3 { + margin-top: -20px; + margin-left: -20px; + padding: 7px 0 5px 8px; + height: 17px; + margin-right: -20px; +} + + +#right_content tr.odd, #radar tr.odd { + background: #dff2ff; +} + +#right_content tr.even, #radar tr.even { + background: #f1f9ff; +} + +#right_content tr.even td.odd, #radar tr.even td.odd { + background: #e9f5ff; +} + +#right_content tr.odd td.odd, #radar tr.odd td.odd { + background: #cceaff; +} + +#right_content table form#instances { + margin-right: -27px; +} + +#right_content table form.volume { + margin-right: -50px; +} + +#right_content table form { + margin-right: -18px; +} + +#right_content input[type="submit"], a.ui-state-default { + height: 35px; + width: auto; + float: right; + cursor: pointer; + margin: 0 4px 0 0; +} + +#right_content input[type="submit"]:hover, a.ui-state-default:hover { + background: url(/media/dashboard/css/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png); + text-decoration: none; +} + +#right_content input[type="submit"]:active, a.ui-state-default:active { + background-color: #c2ecff; +} + +#right_content fieldset input { + margin-bottom: 10px; + margin-right: 0; + width: 279px; +} + +a.ui-state-default { + padding: 8px; + height: 18px; + margin-left: -23px; +} + +#page_head h2, .page_title h2{ + background: url(/media/dashboard/img/page_header.png) repeat-x top left; + color: #fff; + font-size: 24px; + padding: 20px; + text-shadow: #00294d -1px 0 2px; + margin-top: -10px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -border-radius: 5px; +} + +#page_head p{ + color: #636363; + margin-top: 14px; +} + +.home #page_head h2{ + margin-top: 0px !important; +} + +#spinner { + background: url(/media/dashboard/img/spinner.gif) no-repeat; + float: right; + width: 24px; + height: 24px; + margin-top: 1px; + display: none; +} +.home #page_head p { + padding-left: 20px; + padding-right: 20px; +} + +#resources { + float: right; + margin-right: 0; +} + +#frm_launch label{ + display: block; + float: left; + margin-top: 10px; + margin-bottom: 5px; + text-shadow: none; +} + +#frm_launch select, #authorize select { + width: 150px; + float: left; + margin-top: 8px; +} + +#authorize label { + width: 100%; +} + +#frm_launch .odd, #frm_launch .even { + float: left; + width: 326px; + margin: 0 -20px; + padding: 10px; +} + +#frm_launch .odd { + background: #def5ff} + +#frm_launch .even { + background: #c0e5ff; +} + +#frm_launch textarea { + width: 98%; + margin-bottom: 5px; +} + +#frm_launch h3 { + margin-bottom: 0; +} + +span.image_location { + clear: both; + display: block; +} + +.volumes form label { + width: 100%; +} + +.volumes form select { + float: left; + width: 160px; +} + +#right_content .errorlist { + padding: 5px; + margin-top: 0; + height: 15px; + float: left; + width: 283px; + margin-bottom: 10px; +} + +#right_content .errorlist li { + display: block; + float: left; +} + +#frm_launch .errorlist { + margin: 0; +} + +.block fieldset li { + border: none; +} + +.ui-state-highlight.success { + background: #baffd4 !important; + border: 1px solid #72df9b !important; +} + +.ui-state-error { + background: #f99 !important; +} + +.ft_info { + margin-top: 0 !important; +} + +.c7 { + width: 650px; +} + +em { + font-style: italic; + font-size: 12px; +} + +#radar_service td{ + padding: 0 !important; + margin: 0 !important; +} + +#service_head th{ + margin-top: 12px; + height: 22px; +} + +#dlg_launch { + padding: 0; +} + +#dlg_launch #frm_launch div { + width: 385px; +} + +#dlg_launch #frm_launch textarea { + width: 280px; + margin-left: 95px; +} + +#frm_launch input.ui-state-default { + margin-top: 20px !important; + margin-right: -5px !important; +} + +.ui-widget-header { + background: #1b1b1b url(/media/dashboard/img/table_header_bg.png) top left repeat-x!important; + border: none !important; + font-weight: bold !important; + color: #fff !important; +} + +.ui-dialog-buttonpane { + background: #c0e5ff !important; + margin: 0 !important; +} + +form.form-terminate input { + margin-right: 15px !important; +} + +form.form-key-delete input { + position: relative; + margin-left: 30px !important; +} + +#image_launch a { + margin-left: -38px; +} + +.ui-widget .close { + float: right; +} + +p.error { + background-color: #f99; + color: white; + border: 1px solid #ff7676; + font-size: 13px; + padding: 5px; + margin-bottom: 20px; +} + +td.radar_name a{ + display: block; + height: 25px; +} + +#service_head { + margin-bottom: 15px; +} + +#radar_service th, #service_head th { + height: 20px !important; +} + +#id_community_advprofile_avatar { + width: 300px; +} + +code, pre { + background: #e1e1e1; + padding: 5px; + font-family: monospace; + font-size: 12px; + display: block; + margin-bottom: 20px; +} + +pre code { + background: 0; + margin: 0; +} \ No newline at end of file diff --git a/media/dashboard/css/ie7.css b/media/dashboard/css/ie7.css new file mode 100755 index 000000000..3298abba3 --- /dev/null +++ b/media/dashboard/css/ie7.css @@ -0,0 +1,85 @@ +#home_login input[type="submit"] { border: none !important; } +#resources.block h3 { + width: 329px !important; +} + +#frm_launch input[type="submit"]{ + margin-right: -2px !important; +} + +input.create, input.attach { + margin-right: -11px !important; +} +.dash_block .errorlist { + width: 282px !important; + padding-left: 20px !important; +} + +#lnk_board, #lnk_wiki { + padding-top: 20px !important; +} + +h1 a{position:relative !important;} + +#preview { + margin-top: -13px !important; +} + +/*#projects .project.active { + height: 180px; + display: block; + filter: alpha(opacity=100); +} + +#projects .project.inactive { + height: 0; + filter: alpha(opacity=0); +}*/ + +.ft_info { + margin-top: 0; + float: right; +} + +#home_login .error, #home_login .errorlist { + background: #ef767d !important; + border-top: 1px solid #f63e42 !important; + border-bottom: 1px solid #f63e42 !important; + +} + +#radar_service {margin-bottom: 50px !important; float: left;} + +#header h1 a sup { + margin-right: 0px; +} + +#user_info ul li { + list-style: disc inside; + margin-bottom: 2px; +} + +.image_detail, .instance_detail { position: relative; } + +a.launch { + margin-left: 10px !important; + margin-top: 0px; +} + +.image_detail a.launch { + margin-left: 31px !important; +} + +a#edit_image_link, a#edit_instance_link { + margin-left: -40px; +} + +.image_detail .image_privacy input, .image_detail .delete input { + margin-left: -15px; + margin-top: -10px; +} + +.post_status { + width: 20px !important; +} + diff --git a/media/dashboard/css/jquery.tooltip.css b/media/dashboard/css/jquery.tooltip.css new file mode 100644 index 000000000..77d035710 --- /dev/null +++ b/media/dashboard/css/jquery.tooltip.css @@ -0,0 +1,9 @@ +#tooltip { + position: absolute; + z-index: 3000; + border: 1px solid #111; + background-color: #eee; + padding: 5px; + opacity: 0.85; +} +#tooltip h3, #tooltip div { margin: 0; } diff --git a/media/dashboard/css/new_dash.css b/media/dashboard/css/new_dash.css new file mode 100644 index 000000000..df361011c --- /dev/null +++ b/media/dashboard/css/new_dash.css @@ -0,0 +1,1145 @@ +@import url("reset.css"); + +/* Misc */ +body { + background: #bdd4f9 url(../img/body_bg.png) repeat-x top left; + font-family: "Lucida Grande", "Lucida Sans", sans-serif; + font-size: 14px; + line-height: 18px; + margin: 0 !important; +} + +p { + margin-bottom: 10px; +} +h1{font-size: 26px; color: #333;} +h2{font-size: 22px; color: #333;} +h3{font-size: 18px; color: #333;} +h4{font-size: 14px; color: #333;} + +#header h1 a { + background: url(../img/logo.png) no-repeat top left; + text-indent: 69px; + height: 50px; + display: block; + color: #fff; + font-weight: bold; + float: left; + padding: 18px 0 0; + width: 500px; +} + +#header h1 a span { + font-weight: normal; +} + +#header h1 a sup { + color: #ccc; + font-size: 12px; + float: right; + margin-top: -25px; + margin-right: -10px; +} + +a { + color:#06c; + font-weight:bold; + text-decoration: none; +} +a:hover{ cursor:pointer; text-decoration:underline } + +#wrapper { + width: 960px; + margin-right: auto; + margin-left: auto; + margin-bottom: 0; +} + +#content_wrap { + float: left; + width: 100%; + background: #fff; + border: 1px solid #ddd; +/* rounded corners */ + -webkit-border-bottom-right-radius: 10px; + -webkit-border-bottom-left-radius: 10px; + -moz-border-radius-bottomright: 10px; + -moz-border-radius-bottomleft: 10px; + border-bottom-right-radius: 10px; + border-bottom-left-radius: 10px; + margin-right: 0; + margin-left: 0; + margin-bottom: 25px; + position: relative; + border-top: 0; +} + +/* Header */ + +#header { + font-family: "Helvetica Neue", "Helvetica", Arial; + margin-top: 20px; + height: 69px; +} + +#login { + float: right; +} + +#login a { + color: #fff; + font-weight: normal; +} + +#user_info a { color: #fff; } +#user_info a:hover { color: #e1e1e1; } + +#user_info { + float: right; + color: #fff; + width: 180px; + height: 50px; + text-align: left; +} + +#login_link { + text-decoration: underline; + margin-top: 15px; + float: left; + margin-left: 115px; +} + +#user_info .user { + clear: both; + display: block; + margin-bottom: 5px; + font-size: 12px; +} + +#user_info .user a { + font-size: 14px; +} + +#user_info img { + float: left; + margin-top: 4px; +} + +#user_info ul { + float: left; + list-style-type: disc; + font-size: 11px; + margin-left: 30px; + line-height: 12px; +} +/* Sidebar */ + +#sidebar { + float: left; + width: 240px; + background-color: #b0cdeb; + margin-bottom: 25px; +} + +#navigation ol { + font-size: 12px; + margin-left: 15px; + margin-top: 10px; + margin-bottom: 10px; +} +#navigation li h3 a{ + background: url(../img/nav_bg.png) repeat-x top left; + text-align: center; + font-size: 14px; + height: 31px; + padding-top: 10px; + display: block; + color: #999 !important; + text-shadow: #252525 0 0 3px; +} + +#navigation li h3.active a{ + background-position: 0 -41px; + color: #fff !important; +} + +#navigation li h3 a { + color: #fff; +} + +#projects { + margin-bottom: 20px; +} +#projects a { + color: #416c82; +} + + +.project h4 a{ + background: #e6e6e6; + color: #747474 !important; + padding: 5px 0 5px 10px; + display: block; + text-transform: uppercase; + position: relative; + font-size: 13px; + border-top: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; + margin: 10px 0; +} + +.project h4 a:hover { + background: #eee; +} + +.project.active h4 a:hover { + background: #7fc1f8; +} +.project.active h4 a { + background: #689fce; + border-top: 1px solid #ccd4fa; + border-bottom: 1px solid #ccd4fa; + border-color: #4681b2; + color: #fff !important; +} + +.project ul { + line-height: 23px; + margin-left: 14px; + position: relative; +} + +.project ul li { + padding-left: 10px; +} +.project ul li a{ + padding: 5px 5px 5px 10px; + display: block; + position: relative; +} + +.project ul li a:hover { + background: #f7f7f7; +} + +.project ul li.active a { + background: #fff; + border-bottom: 1px solid #999; + border-left: 1px solid #e1e1e1; +} + +/* Content Area */ + +#content { + float: left; + padding: 25px; + width: 670px; +} + +#page_head { + background: #f1f1f1; + padding: 20px; + float: left; + width: 630px; +} + +#page_head p { + margin-top: 11px; + font-size: 16px; + line-height: 21px; + color: #777; +} + +#page_head em { + color: #444; +} +#page_description { + font-size: 13px; +} + +#page_head { + margin-bottom: 25px; +} + +#content table { + width: 100%; + font-size: 12px; + margin-bottom: 25px; +} +#content th { + background: url(../img/table_header_bg.png) repeat-x left; + padding: 5px; + border-right: 1px solid #ccc; + color: #fff; +} + +#content tr td { + background: #deeefc; + text-align: center; + height: 20px; + vertical-align: middle; + padding: 5px; +} + +#content tr td.odd { + background: #edf4ff; +} + +#content tr.even .radar_name { + background: #edf4ff; +} + +#content tr.odd td { + background: #c8deff; +} + +#content tr.odd td.odd { + background: #d2e5ff; +} + +#content tr td.image_location { + width: 60%; + text-align: left; +} + +td#actions { + width: 200px; + text-align: center; +} + +input[type="submit"], input[type="button"], a.launch, a.console, a.reply, .new_thread a, .edit_btns input { + background: url(../img/btn_bg.png) top left repeat-x; + border: 1px solid #95bfff; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + cursor: pointer; + color: #417aa6; + font-weight: bold; + height: 30px; + font-size: 12px; + margin: 5px; + float: left; + display: block; + padding: 5px; +} + +a.console, a.launch, a.reply, .new_thread a { + height: 18px !important; + width: 80% !important; +} + +input.delete, input.detach { + width: 95%; +} + +.dash_block input[type="text"] { + padding: 5px; + width: 264px; +} + +.dash_block input.create, .dash_block input.attach { + float: right; + width: 100px; + margin-right: 9px; +} + +.dash_block label { + font-weight: bold; + font-size: 14px; + clear: both; + display: block; + margin-top: 10px; +} + +.dash_block ul.errorlist, table.form .errorlist { + background: #fec6c6; + border: 1px solid #ff8e8e; + margin-left: -21px; + padding: 5px; + margin-bottom: 5px; +} + +table.form .errorlist { + width: 543px; + margin-left: -5px; + margin-right: -3px; +} + +input[type="submit"]:hover, input[type="button"]:hover, a.launch:hover, a.console:hover, a.reply:hover, .new_thread a:hover { + background: url(../img/btn_bg.png) repeat-x left -30px; +} + +input[type="submit"]:active, input[type="button"]:active, a.launch:active, a.console:active, a.reply:active, .new_thread a:active { + background: url(../img/btn_bg.png) repeat-x left -60px; +} + +.dash_block { + float: left; + width: 267px; + background-color: #dff2ff; + border: 1px solid #b1e7ff; + padding: 20px; + margin-left: 52px; + font-size: 12px; + line-height: 23px; +} + +.dash_block.first { + margin-left: 0; +} + +.dash_block h3 { + background: url(../img/table_header_bg.png) repeat-x 0; + font-size: 14px; + padding: 5px 0 5px 10px; + color: #fff; + text-shadow: #000 0 0 3px; + margin-top: -22px; + margin-left: -20px; + width: 297px; + margin-bottom: 11px; +} + +.overview #welcome { + width: 308px; + float: left; +} + +/* Footer */ + +#footer { + clear: both; + margin-bottom: 50px; +} + +.ft_sitemap div{clear:both;margin-bottom:15px; + width: 400px; + float: left; +}.ft_sitemap ul{list-style:none;margin-left:0}.ft_sitemap ul li{float:left;font-size:.8em;list-style:none;margin:3px 20px 0 0} + +.ft_info{ + font-size:.9em; + text-align:right; + float: right; + width: 250px; + margin-top: -65px !imporant; +} + +.c7 { + float: left; +} + + + +#home_login { + width: 445px; +} + +#home_login fieldset { + margin: 0; +} + +#forgot_password { + font-size: 11px; + width: 200px; + display: inline-block; +} +#home_login .error, #home_login .errorlist { + color: #fff; + font-size: 14px; + background: rgba(255,0,0,0.51); + padding: 5px; + display: block; + text-align: center; + border-top: 1px solid rgba(255,0,0,0.47); + border-bottom: 1px solid rgba(255,0,0,0.47); + margin-left: -20px; + width: 435px; +} +#home_login .errorlist { + margin-top: -10px; + margin-bottom: 25px; + text-align: left; +} + +#home_login fieldset { + width: 404px; +} + +#home_login label { + display: block; + float: none; + padding: 0; + margin: 0 0 5px; + width: auto; + text-align: left; +} + +#home_login fieldset { + background: 0; + padding: 20px; +} + +#home_login input { + height: 25px; + font-size: 20px; + margin-bottom: 20px; + width: 99%; +} +#home_login input[type="submit"] { + height: 31px; + background: url(/media/dashboard/img/login_btn.png) top left repeat-x; + border: 1px solid #206cb5; + float: left; + margin: 0 10px 0 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -border-radius: 3px; + color: #fff; + font-weight: bold; + width: 121px; + font-size: 18px; + text-shadow: #06416e -1px -1px 2px; + cursor: pointer; + clear: both; +} + +#home_login input[type="submit"]:hover { + background-position: center left; +} + +#home_login input[type="submit"]:active { + background-position: bottom left; +} + +#home_login.reset h3{ + padding-left: 10px; + padding-top: 6px; +} + +#home_login.reset input[type="submit"]{ + font-size: 12px; + float: right; + margin: 0; +} + +#home_login div { + float: right; + width: 125px; + margin-right: 0; + margin-left: 0; + margin-bottom: 0; +} + +#home_login div a { + margin: 0; + padding: 0; + color: rgba(255,0,4,0.75) !important; + display: inline; +} +#home_login div a:hover { + color: rgba(255,0,4,1) !important; + +} + +.login #home_login.block h3 { + padding-left: 10px; + padding-top: 6px; +} + + +#tab_content { + float: left; + margin-left: 25px; + width: 538px; +} + +.block { + float: left; + width: 254px; + margin-right: 30px; + background-color: #dff2ff; + border: 1px solid #b1e7ff; +} + +.block h3 { + background: url(/media/dashboard/img/table_header_bg.png) top left repeat-x; + text-shadow: #4f4f4f 0 1px 2px; + color: #ebebeb; + font-size: 14px; + height: 22px; + padding: 5px 3px 3px 10px; +} + +#content table { + float: left; +} + +#instances a.console, #instances .terminate { + width: 87px !important; + float: left; + margin-top: 0; + margin-left: 2px; + margin-bottom: 0; +} + +#frm_launch textarea { + width: 264px; +} + +#frm_launch input { + float: right; + margin-right: 17px; + width: 75px; +} + +#frm_launch select { + width: 270px; +} + +.ui-state-highlight { + background: #fcf8d7 !important; +} + +.ui-state-highlight.success { + background: #baffd4 !important; + border: 1px solid #72df9b !important; +} + +.ui-state-error { + background: #f99 !important; +} + +td.detail_wrapper { + padding: 0 !important; + text-align: left !important; + +} +div.image_detail, div.instance_detail { + background: url(/media/dashboard/img/image_detail.png) top left no-repeat; + height: 90px; + margin-left: -10px; + width: 674px; + margin-right: -9px; + padding: 8px 8px 16px; +} + +.image_detail_item, .instance_detail_item { + clear: both; +} +.image_detail .column, .instance_detail .column { + float: left; + width: 265px; +} + +.image_detail #last.column, .instance_detail #last.column { + width: 144px; + float: left; +} +.image_detail .label, .instance_detail .label { + font-weight: bold; + width: 85px; + float: left; +} + +.image_detail .data, .instance_detail .data{ + color: #666; + float: left; +} + +.instance_detail #last.column input, .instance_detail #last.column a { + width: 110px !important; + text-align: center; + margin-bottom: 5px; + font-size: 10px; + height: 25px !important; + display: block; +} + +.instance_detail #last.column { + width: 117px; + float: right; +} +.instance_detail #last.column a { + padding: 0; + padding-top: 2px; + height: 22px !important; +} + + +#edit_image_link, #edit_instance_link { + display: block; + float: left; + font-size: 10px; + margin-left: -50px; + border: 1px solid #e1e1e1; + padding: 0 5px; + color: #579aff; + margin-top: -30px; +} +#edit_image_link:hover { + border: 1px solid #ccc; + color: #1d77ff; +} + +.instance_detail #last.column #edit_instance_link { + width: 75px !important; + float: right; + border: 0; + margin-top: 6px; + margin-right: 20px; + margin-bottom: 0; +} +.privacy { + padding: 5px; + text-transform: uppercase; + text-align: center; + float: right; + width: 102px; + font-weight: bold; +} + +#public.privacy { + background: #c1e3d0; + border: 1px solid #78ca91; + color: #38a74f !important; +} + +#private.privacy { + background: #e3c1c1; + border: 1px solid #ca7878; + color: #a63737 !important; +} + +.image_detail .launch { + text-align: center; + margin-left: 31px; + margin-top: 15px; + width: 100px !important; +} + +#page_head h2 span { + text-transform: uppercase; +} + +#welcome span { + text-transform: uppercase; +} + +table.form tr td input, table.form tr td textarea { + width: 98% !important; +} + +.edit_btns { + float: right; + width: 235px; + margin-right: -5px; + margin-top: -15px; +} + +.edit_btns input{ + width: 100px; + float: right; +} + +#gov_banner { + background: #bfe5ff; + font-size: 10px; + line-height: 14px; + padding: 20px; + border-top: 1px solid; + border-bottom: 1px solid ; + margin-top: 10px; + border-color: #73c6ff; +} + +#content.search #page_head { + width: 630px; +} + +.image_detail .delete { + float: left; +} +.instance_detail .form-terminate input.terminate{ + float: left; + clear: both; + height: 20px; + margin-left: -20px !important; + margin-top: -20px !important; +} + +.image_detail .delete input, #user_edit .deletelink, #update_profile input[type="reset"], .image_detail .image_privacy input, .instance_detail .form-terminate input[type="submit"], .cancel a { + background: 0; + border: none; + color: #FF8885; + text-decoration: underline; + margin-top: -10px; + font-size: 9px; +} + +.image_detail .delete input:hover, #user_edit .deletelink:hover, #update_profile input[type="reset"]:hover, .instance_detail .form-terminate input[type="submit"]:hover, .cancel a:hover { + color: red; +} + +.cancel { + margin-top: 5px; + float: left; +} +.image_privacy input.public { color: #6fba6f; } +.image_privacy input.public:hover { color: green; } + +h3.image_list_heading { + margin-bottom: 10px; +} + +#ami_name { + font-weight:bold; +} + +#user_edit select { + width: 260px; +} + +#user_edit input[type="submit"] { + float: right; + width: 80px; +} + +#user_edit .deletelink { + margin-top: 37px; + display: block; + float: left; + margin-left: -15px; + margin-bottom: -19px; +} + +#user_edit { + width: 628px; +} + +#user_edit .form-row { + margin-bottom: 20px; + float: left; +} + +#user_edit #user_name { + float: left; + margin-top: 10px; +} + +#user_edit label { + float: left; + width: 60px; +} +#user_edit h2 { + font-size: 11px; + text-align: left; + padding-left: 10px; +} + +#user_edit h3 { + width: 658px; +} + +#user_edit input { + width: 219px; + height: 9px; + border: 1px solid #ccc; + margin-left: 7px; +} + +#user_edit select.filtered { + width: 270px; +} + +#user_edit input[type="submit"] { + height: 31px; + margin-right: 0; +} + +.project a.manage_link, .project.active a.manage_link { + width: 22px; + height: 20px; + background: #fff url(../img/gears.png) no-repeat center 4px; + text-indent: -9999px; + border-top: 0; + border-bottom: 0; + border-left: 1px solid #4681b2; + float: right; + margin-top: -40px; +} + +.project a.manage_link { + background-color: #c9c9c9; + border-left: 1px solid #b7b7b7; +} + +.project a.manage_link:hover { + background-color: #f1f1f1 !important; + border-left: 1px solid #b7b7b7; +} + +.project.active a.manage_link { + background-color: #5393c9; +} + +.project.active a.manage_link:hover { + background-color: #80afd6 !important; +} + +a.manage_link:hover { + background: url(../img/gears.png) no-repeat center -23px !important; + +} + +/* Start update profile form */ + +#update_profile { + float: left; +} + +#update_profile .form_section { + padding: 11px 10px 10px 20px; + float: left; + width: 640px; +} + +#update_profile .form_section.even { + background: #e2eaf8; +} + +#update_profile .form_section.odd { + background: #c4d8f8; +} + +#update_profile .form_section label { + font-weight: bold; + width: 190px; + display: block; + float: left; + color: #444; + margin-top: 7px; +} + +#update_profile input[type="text"], #update_profile input[type="password"], #update_profile textarea{ + width: 427px; + border: 1px solid #ccc; + height: 25px; + padding-left: 12px; +} + + #update_profile select { + width: 418px; + border: 1px solid #ccc; + margin-left: 27px; + height: 25px; +} + +#update_profile .separator { + font-size: 18px; + float: left; + background: #f1f1f1; + width: 630px; + padding: 20px; + color: #666; + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; + margin: 30px 0 0; +} + +#update_profile .separator .helper_text { + display: block; + font-style: italic; + color: #999; + font-size: 12px; + margin: 5px 0 0; +} + +#update_profile .form_section .helper_text { + display: block; + font-style: italic; + color: #575757; + font-size: 12px; + width: 180px; + margin: 5px 0 0; +} + +#update_profile .edit_btns { + margin-top: 5px; + margin-right: 2px; +} + +#update_profile input[type="reset"] { + margin-top: 6px; +} + +#update_profile .errorlist li { + color: red; +} +/* End update profile form */ + +/* regions */ + +#region_selector { + background: #f1f1f1; + padding: 10px; + float: left; + width: 700px; + -webkit-border-top-right-radius: 10px; + -moz-border-radius-topright: 10px; + border-top-right-radius: 10px; +} + +span#project_name { + float: left; +} + +#region_form { + float: right; + display: block; +} + +#region_form label { + font-weight: bold; +} +#region_form select { + min-width: 150px; + padding-left: 10px; + margin-left: 5px; +} +/* end regions */ + +/* start notification widgets */ + +.message { + float: left; +} +.ui-state-highlight, .ui-state-error { + font-size: 14px; + width: 625px; + float: left; + padding: 17px 20px; + min-height: 17px; + margin-bottom: 25px; +} +.ui-state-highlight p { + padding-bottom: 0; + margin: 0; +} + +.close { + float: right; + cursor: pointer; +} + + +p .ui-icon { + float: left; + margin-right: 10px; +} +/* end of notification widgets */ + + +.edit_image input[type="text"], .edit_instance input[type="text"] { + width: 254px !important; +} + +.edit_image input[type="submit"], .edit_instance input[type="submit"] { + float: right; + margin-right: 0; +} +.edit_image textarea, .edit_instance textarea{ + width: 262px; +} + +#desc.data { + width: 169px; + font-size: 10px; + line-height: 14px; + height: 50px; +} + +.toc { + border-bottom: 1px solid #e2e2e2; + border-top: 1px solid #86B5EA; +} + +#spinner { + background: url(/media/dashboard/img/spinner.gif) no-repeat; + float: right; + width: 24px; + height: 24px; + margin-top: -10px; + margin-right: -10px; + display: none; +} + +#radar_service table, #radar_service td { + margin: 0 !important; + padding: 0 !important; +} + +#radar #radar_service td { + margin: 0; +} + + #radar_service table td { + padding: 5px !important; +} + +#radar .radar_name { + padding: 10px !important; +} + +td.status img { + float: left; + margin-left: 10px; +} +td.status span.name { + display: block; + float: left; + font-size: 14px; + margin-left: 15px; + margin-top: 3px; +} + +.home #projects { + float: left; + margin: 0 20px 0 0; + width: 456px; + +} +.home #projects li { + border-bottom: 1px solid #bce3ff; +} + +.home #projects a { + display: block; + background: url(/media/dashboard/img/server_icon.png) no-repeat 13px 9px; + font-size: 14px; + padding-left: 58px; + height: 35px; + padding-top: 5px; + padding-bottom: 5px; + z-index: 100; + text-shadow: #000000 0 0 0; +} + +.home #projects a:hover { + background-color: #b8e1ff; + text-decoration: none; +} + +.home #projects a:active { + background-color: #30a9ff; +} + +.home span.data { + color: #0d66a9; + font-size: 11px; + display: block; +} + + + diff --git a/media/dashboard/css/openstack.css b/media/dashboard/css/openstack.css new file mode 100644 index 000000000..8bfd12106 --- /dev/null +++ b/media/dashboard/css/openstack.css @@ -0,0 +1,63 @@ +body { + background: #f1f4f6; + font-family: "Lucida Grande", "Lucida Sans", sans-serif; + font-size: 14px; + line-height: 18px; + margin: 0 !important; +} + +#header h1 a { + background: url(../img/logo.gif) no-repeat top left; + color: #6e6d6e; + margin-left: 30px; + margin-bottom: 20px; + padding: 24px 0 0 15px; +} + +#content_wrap { + float: left; + width: 100%; + background: #fff; + border: 1px solid #ddd; + -webkit-border-bottom-right-radius: 10px; + -webkit-border-bottom-left-radius: 10px; + -moz-border-radius-bottomright: 10px; + -moz-border-radius-bottomleft: 10px; + border-bottom-right-radius: 10px; + border-bottom-left-radius: 10px; + -webkit-border-top-right-radius: 10px; + -webkit-border-top-left-radius: 10px; + -moz-border-radius-topright: 10px; + -moz-border-radius-topleft: 10px; + border-top-right-radius: 10px; + border-top-left-radius: 10px; + margin-right: 0; + margin-left: 0; + margin-bottom: 25px; + position: relative; +} + +#tab_content.home { + margin: 0; +} + +#content.home, #content.login { + width: 909px; +} + +#content.home #page_head, #content.login #page_head { + width: 870px; +} + +#header a { color: #6e6d6e; } +#header a:hover { color: #989698; } + +#user_info { + float: right; + color: #6e6d6e; + width: 180px; + height: 50px; + text-align: left; +} + + diff --git a/media/dashboard/css/reset.css b/media/dashboard/css/reset.css new file mode 100644 index 000000000..26cd169c8 --- /dev/null +++ b/media/dashboard/css/reset.css @@ -0,0 +1,50 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; + vertical-align: baseline; + background: transparent; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} + +/* remember to define focus styles! */ +:focus { + outline: 0; +} + +/* remember to highlight inserts somehow! */ +ins { + text-decoration: none; +} +del { + text-decoration: line-through; +} + +/* tables still need 'cellspacing="0"' in the markup */ +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/media/dashboard/img/body_bg.gif b/media/dashboard/img/body_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..e45adc52b0c32040c87d5f2482e370b2c0515739 GIT binary patch literal 12957 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 T(rt4DJ?KI8gV2QrG#~&w`l##Y literal 0 HcmV?d00001 diff --git a/media/dashboard/img/body_bg.png b/media/dashboard/img/body_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..e4625ec052f884097d20485bdd653239339bcd60 GIT binary patch literal 2217 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 literal 0 HcmV?d00001 diff --git a/media/dashboard/img/book_icon.png b/media/dashboard/img/book_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bd41e7de4f3b93ad7f4090282417bb45781c1e4b GIT binary patch literal 741 zcmV<B0vi2^P)<h;3K|Lk000e1NJLTq001HY001Zm1^@s6o7^a*0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!he<?1RCwCN7~5@wKrC4I4<oQaGXmY9 zD|CX6kZjP7kZ#a!kPX5HO*bGDq`rznj`0hmv?rZ7ne+PzX>+G_xm>pRXejJ@y>6<i z>hd!$JeODJq#(9=kBF4eL%u^{BhHpHB#dWghM(6ljY6C_F^W)#<ekq{BQC7Mh~MpT z54gMXKA{jD5#kLme=<Tt(=`2^+;^P>AyPfpb$!_U@hVmV0&6$_u!{8)k!**i+GSVZ zxu@~L{a&=l_p*hhn2_)a99_NVup|Un&WbJ=cvC8JAvNL0wdXWJBE(@_OY0raq(V;< zuE0RjRx+oQ&QvgpBh?N`8Tt++2`vOqXrp$Rw7`pIi@};ym0)?p5~Qf0N`TH3xQP+o z7c}?Kdy=3U151IM7~w#ze@OSFY*}O7S+FiOzh?SK6ATBdrIDqf<z8c*ljK)VBV(?Z z31ih1!uuQeyrHGnLJh^hlyD1QurfokP{iMnjN!_HWNMxf(Rf)?<fb~Jm3U7Bsa9CD zykr24G1t@z=BR5l;bz@e8v(4rS;Eoc&a!ZdlwWJI*NU9hbu~p{X~DAkh!yyrRY1yd z?gnrE@G>W&7+Av)ANMTNS`(R8iRn9t7Avo;dyJ%Hpq_w88(-4ewJg%w$Yc>uBWYmb zf=e#tE}^vX`>CB3G%Kw<mq=+USy&Lb<vd}D$u&QFwMbKj!qrjHBI;<nYJukGXrQiX zba?Lt<K&CtByDKsXU%GnPAypXiDwZ=J;M5g^h&%nDkv8F$iJ?tVHmb}@wB9Nc!ewQ zk)D5NyyHGJO*8z$$Gpy_dc{kv^~n%r7?@Wc>$*PPxK{YD)p@Rpy2n^O3Nlc@j{pMz X1WAI*wjTuj00000NkvXXu0mjf$HrSe literal 0 HcmV?d00001 diff --git a/media/dashboard/img/bread_crumb.gif b/media/dashboard/img/bread_crumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..49d92810c331f733a24eb0164aaa8fb2a0680c30 GIT binary patch literal 2027 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 literal 0 HcmV?d00001 diff --git a/media/dashboard/img/btn_bg.png b/media/dashboard/img/btn_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..00227dba10c9ddf4811a2e68ed68ea96332cbfac GIT binary patch literal 1043 zcmaJ=TSyd97#<a*B;O)1B!-bNqMh5WyUgGy?v9tm#<q2#O)48_j=R%3mu8ObxFkp~ zA`wD8MbukFge8=ORQ8f|0VRS!Bq&G-3p0p(=tgJO-L;3dfivg-58wCwm-C;ASWjnd z&F&fu!)l{lVjS%iX!UKYME{MJTOZL@2iudd*Bpdd*#=mfY7PKAs>>-52eLYH`Z;LE zuqr}JBw<oI$SbB!${vPvbqldEthv>-WF-S2J^)ghArR{i9uv5x3dE5niI%JgNNZg= z8}#OS5=t(ka4ON-f;YQ763_vZaaSKQ9Nra(ye^My@0cR+JOpM0Vl%0v6vHE?4e%zC z_9=9b#)AyW_yeI(=m5^r3{BB2#jrjm#QRyErt!i@plG%_$j8NwLM-G7L>fYir>JZ; zOJ@C~X{RWL<2X-)Wqk<Yb4Cm(yFSBdC@P4+QEbhEnrYykqC8*@LxDh<ZkC{1C0WBM zv<Wqga%GERNZKo@2$ZD%Lv_7`c3>QA<@--zCoy6HDh?cT*jCWR4K{e8EIwib8Jc#& zG>3{^jHOLzI%(6wBfU+yBrBTX`FXq~@lnHpvY~*eC=f`2)HIc6gABujIe#d^AxrEC zhsB5(5QBks&d<?-P?0N|%CHU$Smdf(+(22bHwwCiB8$M*&H%N;Hg!B-GOv}-g(<67 z;Hu?wVaswUlnmuv>|YmMJVMjsnWeEsPHFIgfu`L?W6d1DZlfnL9u?aX?sDS7T1}YQ z5jphZ_vC8pVR2{M^vr5-T~${*Us-&=a4DP{Yamy|SiRD?XL;Yk%Db1(s>bh+!TOnd z^T$3<&dtAgefI0d)j1(BwfE<*iN%G>-5=P8KT|gsr*^%)Mm_!Vz52@R+PBKPcN+E4 rQ<>n>lSl7w96hmpdiGOYe?>KRv3qpsP2c|W-ZPE1_lUQ{C(r!>#f4nL literal 0 HcmV?d00001 diff --git a/media/dashboard/img/chat_icon.png b/media/dashboard/img/chat_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a905633f63d13626db2466870b4a714e3c03d885 GIT binary patch literal 847 zcmV-V1F-ywP)<h;3K|Lk000e1NJLTq001cf001Qj1^@s6-=e^c0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!@kvBMRCwCVSnY8dF%Ug5{?Da?P=Z}S zOa*Z|Fcl<JkVyqG75M1jTmhE~d>xonU{L{i%jg)fSxLJGiLDu-L!VFk@wAewE|hk= z-3$fgYQNua>$=`vYHnv8;JvR=+&bqzp}eN=!jK-Idz8O0rkhTu+kXZU;O<d;#zJ>e zJAhPZ)6^5-HF5*M{vsfuMgsSJP-O{})Sl=|09VKlC9p07j#T*=RC-*9FPQqD+XU-F z02ct-nm_{JHxxfpi<YD~^f@fR`o;CbcSsHL5)S8!AOVo1cVAk#Bw5R*qIPn!IS1+_ zfbl|H8X7ff?KZ^*$n)4vUF^M>@KI^>MO8~`PR%L&Zy?RZ3CKXi&uFZ35|nIA;TWPF zDs1`-fVMHn4Usb6ZEmuR1BhU>rV!N=>EDpr9n?HS<;z$#TGTvZZlb1Uf{(9U5>`4% z)miLWGA+V(XoITB7OzvP)sVB5t~5>*)qfz6dyDie?Ij}DY@T@Y08(Sru^P{zml5_l zpTq+skL18o-Yj{x)(%VkCpjwM;I+HgdNbcx$`Ow?nN#OEw3IUoZl8&CbA_K4o$gAf z%b0*6DVfN03asM6lReqw6Q7X&r%s*{H}b`$EX|iVwc3Fv>CQqYPCX{d9>bpoTBB&F zo6y;a#+BA1Ektg$U)DyKwk{4ZNQ#@`sxVe6DT$A8E+3@WpTv{lPP56W-2zrRS#nVk zbGQY<wC2c@!$&~9l7fVi3MI8k9;_tqhZx`q$S8FG>jWtUAF-r30BOUSF-r(*$=A6O z?!sn6*9HrjfZ7KYx5X=MaG+OfC}#0=p??!3=+*b`bB{>_zY@4Lq}Q3ASxAx?{F)2L zr1RIXk>MSvwLDyLkhg(`a`rX6;dFslKk~?)U8a7AzP<K=s^mDcjARZc6YAp!rmp%A z$+73XO?Z2Z)x5?3A3;UFdV}O7RR?e#z^&;@S-o*OdBF&E#8s=|+<Z5Qo|uCq-(~tE ZzyNhc%+DQmEMWiu002ovPDHLkV1f=9ix&U@ literal 0 HcmV?d00001 diff --git a/media/dashboard/img/content_bg.gif b/media/dashboard/img/content_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..e77a90c59ba7afb1b15dd3f3cdef736cbc2acef0 GIT binary patch literal 105 zcmZ?wbhEHbT*J)Bu!w=-)7S6s-@pI-_50nscX#aA!2km~AO=Vc1GAaM#ykHEPI<20 zYmv>g>wkg-S5oGrv{g+juCFW5IbV`{zhd2co7>aZ&leDrk?KFOr08UbXnQjYgEasS CR4hXP literal 0 HcmV?d00001 diff --git a/media/dashboard/img/content_shadow.png b/media/dashboard/img/content_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..658a725fe50146781ac68e599a3a20d79ef309cd GIT binary patch literal 2836 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 literal 0 HcmV?d00001 diff --git a/media/dashboard/img/dashboard_nav_bg.png b/media/dashboard/img/dashboard_nav_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..f0e21bd326b094327660c89cd4327480d9a7dedd GIT binary patch literal 255 zcmV<b0094qP)<h;3K|Lk000e1NJLTq00031003SH0ssI2ZLjJ40000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUyp-DtRRCwA%PTLW~FbKoS{%d87<};n3 z`A97)VRH4I4?Pfoec$7JpGYP$6HE#RLY3JXDQ+*sADxvk4*3k%f6tngE60h5z?47Y z@m(|S`-|-Cvp+h^$;F+WnxTyOWMl7>?!0eg-&8lYNAKg(XZbAsb6qtz^*2B`;Wq|q z9;}KC3;Kc49Hlwy7s4BsR-QWD`uLUa!QSQO<8}N57yuJ;rmQ`>Q|SNz002ovPDHLk FV1n+cZ7l!* literal 0 HcmV?d00001 diff --git a/media/dashboard/img/foot_back.png b/media/dashboard/img/foot_back.png new file mode 100644 index 0000000000000000000000000000000000000000..13f81049cb90d23831ba39149f8bfab82ab3eb35 GIT binary patch literal 2524 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 JWn{Og{{UZ$L-_yz literal 0 HcmV?d00001 diff --git a/media/dashboard/img/gears.png b/media/dashboard/img/gears.png new file mode 100644 index 0000000000000000000000000000000000000000..a25cadbe6194dbb2d90f99f723e7caab98c67705 GIT binary patch literal 4701 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 literal 0 HcmV?d00001 diff --git a/media/dashboard/img/header_bg.png b/media/dashboard/img/header_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..b1b926beb1007db55d20776ca5fb01f9c075796e GIT binary patch literal 966 zcmaJ=J#W)M7<MTGs?@!7;p9rdK<qm=AIhnwP3(k5s-q~0M8-PywXs_J%=ywd85kIl zSWqQ?L0H(B*cgyNLLea|2BeB^3}NICL@MVrNf`*1&Uf$Wd7k(4p4F-kR#(<nBuQGW z?3#74FNt+><C^$Ctp%^dc9WM{yg?6m&t^m_xU@|`#kUVho!D;w(Py$HNz1a=Z1I-0 zhaKuGc7jo2KNM_9+S-mo+c_c}w8^0t=<@Hk?_}V)y8JL>K`S&!$J-q+(il{m&fv(& zyYlvZuoYt=;1h0x*gp;;9P9E#7mIUpt;%2m;YYfB8C1)v0fRCEG73yNFbhEzDQGjD z%jNC?4I-#QO+{J?<?yD4Aq3M;7T%b9fa_*?>PuL<+~GXLs@m)Il-{O7*`bQ^`Fx_G zX(@q7Mg4%=aVm&5W(p>W9Oi}GqX9@1?KbUlT^5mErr?Kj*&v#hNfb<t?NCJuOj4Qw zE$jbK-=Cu+UME-a{!=(=_Cuo9NkqHM5sf?8NL+>3V8rH>H7PxwRk7BgoJJiQ0;7=u zmhE^!Vo&gvg)2eC?Z6=wQ<sH;;(0Dc>3jy6(9C9w5FxW%fa!E8Q#7@VfeL8@&A29Y zx;_c`jO$);OAEQlDEOi9Y!c?35Vy>z4<;#NZ*eTeg?dx2yEqnOAy*Z_s7Yi0YV_<% zOiyy0kF7A~gHHl6?M#gI>f^iT;z{6&S!l*T+WR}p!{PADcs$<QxxIFAadGQw`PYm0 wAMcc(uh%{H{q#e5bbfXQp{Bk3^lfSR`kHjAwaMt`n^E$zDy6FVy14)34-&O8{r~^~ literal 0 HcmV?d00001 diff --git a/media/dashboard/img/home_head_back.png b/media/dashboard/img/home_head_back.png new file mode 100644 index 0000000000000000000000000000000000000000..6ebaca18c7551a21ee2884244208eff73a0190b1 GIT binary patch literal 4459 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 literal 0 HcmV?d00001 diff --git a/media/dashboard/img/image_detail.png b/media/dashboard/img/image_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..054eeff76de459b0cebaea3712451a1773d70f14 GIT binary patch literal 47257 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∓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 literal 0 HcmV?d00001 diff --git a/media/dashboard/img/logged_in_box_bg.gif b/media/dashboard/img/logged_in_box_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ddd950d51e5223bbd63f4a11c8c8ba77034db9de GIT binary patch literal 1100 zcmZ?wbhEHbWMpt*XkcKFmzQT?U{L(e9pM|G;F4I92&8T7D+&^mvr|hHl2X$%^K6yg z@7}MZkeOnu6mIHk;9KCFnvv;IRg@ZB<rk7%m7Q#vqGWHUU{hgLkz0_PT9T+xk(-lO zY*k^al$esAlxhWJgM{^!6u?SKvTc<dK@tieJDu~3QWZ?~40MwX%nTIF4D}3+P0Y>B zbrg&Y3=Q-RjPwnSbPdg|jE$@e3>2V1320kUN}5%WiyPD~AkS7Qqokz3N?*Ucyj-u` zSTDaQUEk2s(h_8bk&!M?g>G?WUP)qwZeFo6%mkOz;^d;tf|AVqJOz-6iAnjTCALaH zmqNUdTL3pUuUHT49lhlIT>Xl~0)0b01CW<s3VnU?E6vS?t1d1HN=3LAtHH$~l?AE# zL8-<0rA5i9K;_CHs|u`~i&7Iy@{2<9^K)RK7?6=)l3$#WU!dR|Y^va!n4Fmh;)B)u z`dWGB6_+IDC8v72*eU@{(96tBu`;$aF*7%DGc$KGHZ(MJadUKbHnuP}GBR^^H8(dh zGlA)K$xklLP0cHT=}kfCHOHwJloWCcfHu3N7G;*DrnnX5=PH1`Y?X<{EzV}HCeD_Q zmgY`IuGrlI(VK$BEl|CVIQ8lS9itD5Sfq%C2?0|NhzU=&Kn^_Nr{)1udl4{MGyebg z_s{QNKYx7x_Vvr>Pai+LfA{vy>sK#dJb(7|$>T>4AKbrp_s;EGH*Z|OcJ<2TOBXMk zKX>-b=~E|996xsS$l*f=5A5H!chBx!J9li~wsp(qO&d3?U$=J6>QyUOEMK;C$>K!| z7tEhGch2ltGiOYnHg(G6NfRgZ_x1L4cXf8Ox3#u3H#IiY*VWckS5;P&mz9<j7Zn!d z=jG;PXJuxjr=_MOCnYAt$Hm4(M@2@2hlPd&2L%TB`}z8KdwF`eySchJJ2^Vo+u7P! zTUlC|o0*yz8v(PFp019zmZpZfnyQMjlA?mVoUDwrl%#~Xn5c-bke~oRA1@C#7bgch l8!HPl6C<!}_{jn+As85RKm@4NU|?cz>0f#JZ9W%+H2^Rae{KK( literal 0 HcmV?d00001 diff --git a/media/dashboard/img/login_bg.png b/media/dashboard/img/login_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..3928fb4218953ac16abac8319deaa357d925ab35 GIT binary patch literal 476 zcmV<20VDp2P)<h;3K|Lk000e1NJLTq0003100Bw}0ssI2Q=g*60000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzen~_@RCwBKRNGMmF$|MJ0klPvv_cvD z(n*A$iT7Y`ZZ>fo*^;%pKEHn6zTZEVqy=DsSQKi%ZNC;|PmkFdwif+o`wd&$9of^* zfy9XYuCv0!z?Tv?YS^EiV`tmqv;$Qv@@*~Dy6Xg{EZ_EItX1pof%e>6CpY@izzHtf zuvzQM1+Es}k6~VZ_ssDX{8`+rUc_@BdCTwdaG>)J4OlqJ-c#hb-<&Vs%S$gBvwHS8 zeO9g=P?$Iz<9_wT&bM9^@v2EZY6rf0Ry^9Dc=bnMXshR(X0MN&JCE>&)t2|Usvjkn ziI*HleLnj@c{cc!23MQX<7iQQhqu^uy7%(g-syqX^kDtRm%8<Yhp*(%ReT2qj~3l; zdB6Sk;s?iJ%;RreOf1Ldm`(8|re@_|=<)t*#GB`Czq(cN)UI)_9!M`w{5}(2a+6bX z$airm?~`}#j~<aa?(l%khTHn%olR?Y-ks~I^SwIXl+jE1slNeHKYXKK0R{lky<{Rh S$f%J30000<MNUMnLSTX|RO@j7 literal 0 HcmV?d00001 diff --git a/media/dashboard/img/login_btn.png b/media/dashboard/img/login_btn.png new file mode 100644 index 0000000000000000000000000000000000000000..fe5a1ac09a51956bf06e5dd0259812b548b374c7 GIT binary patch literal 282 zcmV+#0p<RQP)<h;3K|Lk000e1NJLTq00031004mq0ssI2j>ks^0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUyyh%hsRCwA<QOOa*FbD+XPLgL@NNp)H z?F7hj$?{kOdw4-(d40ZOX2L{buHx=OgoA1p*b=*%I9cN0LwEQM*i}pG8hN2PDz#^_ zf^+*-rd3{M?i_EfDn;M>Jf82K>%~V8jgJhP9$9&hnHzhk)*bg;c#d7GYTwT`m$}FO zsn4F>*X(=u=$RQBOFWJqZ=T}T#(~N<+yX|kuJWP=SH6{bh1(}rYD|(`&XDolGx?ZF g_}}?G(O-Z80H;;nRM0S!Z~y=R07*qoM6N<$g0zcyqW}N^ literal 0 HcmV?d00001 diff --git a/media/dashboard/img/logo.gif b/media/dashboard/img/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..8da127c33734ebf0d9eac629db3909bcdf284c9a GIT binary patch literal 3098 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 literal 0 HcmV?d00001 diff --git a/media/dashboard/img/nav_arrow.png b/media/dashboard/img/nav_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..46c113cdf36a86310108ac4b17ec68902998ee60 GIT binary patch literal 471 zcmV;|0Vw{7P)<h;3K|Lk000e1NJLTq000gE000{Z1^@s6OjEx30000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzc}YY;RCwBaRBdj9Fbqu$Ev40VjoqV1 z8b2#ln$+K%Z`ardpB-d&6t|8ESVDlw%X@jYvENN+oO4EpwbrD9*1n#~H{eBU3w0pq zI!*H@L@a6(sf3<ij)&_!yN_<X8&LX^vV%MiYKPIk!<r=e$jk`3NDu{RIX18|2;~vz z*7QT922u<fL`*s$Wq&Z@g6`d<Jjs}^SROMWz=_ShIsQfL<mEXfFO-NG={e^Q44P(? z*N>|XFQhV4H{7H1=&s^?9zgG2UOz^Ft^T#RFvI&_(+vh?F3z$h8GhP+!h2Qha%08L zHqm}E=j({zI?uDZEcT0<MPSLuIRsY(J{^kZq^Q~%AsskL7Y=omWl$f9nerQh4LV88 z1SaOK;f9pm3@-P(r%YuO@S$~(Y;RZq8!gp^2G$M|yEg36@cakhx}|EzvdJ*n@DLdw z>cmbb!Ll4C)G5{6l#^gD^&w6DHY6kGxX!**U%zd#nYWr8r|JAJzyKv8IgkIz;bs5; N002ovPDHLkV1hO6(UJfF literal 0 HcmV?d00001 diff --git a/media/dashboard/img/nav_bg.png b/media/dashboard/img/nav_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..90ae6dc0f5965428d52c46397d8ac96be02dfdf7 GIT binary patch literal 1554 zcmZ?wbhEHbWMl|tc*ejG9v;4V^X6&OrX?mO^6>C5F);}X3rkB&DJv_NSCmUgNGK>M znwXkoWo31Cb_N9a2L=ZA_4V1?+k1L?R#sJsiHc=rW^!?Im6VkB^z;-L7kPVoYwPGV zG&W3~HZ?dX*u}+V(xiz^O-(H=ElEkqhDL@HCrs$->aw)5WMpI%5D+joGjDHipFDXo zA0MB)n|pP2b$WWboSbZJZEb35YJPrxN^){qTAGHYrk=iDXh=w2Zl0g7FB>cC)G1R6 z3ky`$RHsay!otGJ!NFl;W1Ewc)8F4;R#p}o7TVg{R$pK5<mkjOh=JmN?g-xi1((E< zL?CTrUr~^loSj;tkd&I9nP;o?e)oPQh0GLNrEpVU1K$GY)Qn7zs-o23D!-8As_bOT z6eW8*1)B=1irj+S)RIJnirk#MVyg;UrNor{q*N;)8zii+qySb@l5MNx2$E0$+3B2L zl&WB=XP}#GU}m6TW~gUqY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6N<iC+Qqrt~ zT-=~`0eQAc86_nJR{Hwo<>h+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw z7AF^F7L;V>=P7_pOiaozEwNPsx)kDt+yc0<dBu8Q@8~7x=jvA^7U&!58GyV5Q|Rl9 zUukYGTy=3tP%6T`SPd=?sVqp<4@xc0FD*(=1u9ntSyf==T$Gwvl3x^(pPvH@#ej_b zlKkR~`~n5%U{eL(#N^C85Ff1G*VoE3uec;JFFDoI#a0Puf?j53ij|w8lZA<!i>ZZ~ zn~|ZRi<_l^xs!{5v$?UOnT4~Ng$qotOMY@`Zfaf$Om7N8uNh9gprnvn0JPa9wJ5VJ zHN~wcKUV?lWvfiwZZXDb9#n4%Znv1=)T<A4j6Nu0ks=x<1WY|3COp{!Iq-y^ng>kn zMZjdu`2XMEKfizd{PF$U*Ds$xef;qL-P<>>U%h<s{Mpkdj~_jJaR1)jJGXD$ym9^7 z)hm}TUA%Dq+}SgyPn|q*{MgYWhYuY*uz%m)J-c`9+_8Pz)-9ViZQQVa-P$#)SFK#J zeA&_^ix(|iFn`|MIkRWYoH2dc)G3oEO`Oo**W1(G)!EVB*4onC)Ywp8S6fqERasG9 zR$5YAR9KLomz$HFm6?&AmYR~Bl$a177aJ2D6&Vp878(*96d2&|=j-F`<>}$>=IY|? z<mg~;XKQ0^Wocn<W@=(=1k6%;x;olgni}eAsw&D#iVE^_vNF<Ak`m%#q9VdVf&%<} zygb}ooE+?ItSrn-j0_BlKUu&fmkx*omDddH!3~TI%^p_r0{k}8!ukr{LM|HGJgSy5 z77iTTM(kXoY+8CO;?A~CteT8WtL5w*brsdz1SQq^bUc-nWW9_HL^$0gr0h+tU3tX} O%}vZyn3)+H8LR;(cGcPd literal 0 HcmV?d00001 diff --git a/media/dashboard/img/nav_highlight.png b/media/dashboard/img/nav_highlight.png new file mode 100755 index 0000000000000000000000000000000000000000..b562b1c3d0b515e0863a039d1e58d66e9b872097 GIT binary patch literal 598 zcmV-c0;&CpP)<h;3K|Lk000e1NJLTq00IsG000390{{R3fvnc|0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy&rnQMMVXnIn3$MVRaKXlmsVC*m6erP zSXh&jlaY~;S65eBT3TOUUyF;2mX?;3l$3{uhlYlRjg5_7US3>WTw!5hf`WpHiHTiZ zU0GRKetv$0goJ>AfM;iCkB^UZbaZ25V_REWXlQ76cXx4dab#p<Yinz2YHDq5ZG3!u zd3kweW@c_~Ze?X<a&mHFVq$oBcxh>AZ*OmQc6MxRY<hZnaBy&YdwY(Kj*N_qU|?W# zb90iCl8TCokdTmleSLv}frEpCb#--!h=_%Sg@1p4SW!#X0003UNkl<Zc-m}|$AW@T z5Cq+vbB->ef(gtZDEa@tX{#UXZR-lm^i<Q@Z#b+u6UT;EI2S+g055P47h<#7Jc8$W zZRmEp<MDVn9DagjS<~sX-|zQ&y~SeTIL>G^n$2db)ylT*$z&2m(KqDzd_M1VI==4@ z27~2txn8eb*G-Z)sHzW0(<jKXcPPtSxPhX0hV6EH31JxCK@bFAu-olUMI6T`;u?+& zS8!0X*U<W(zsJqn`mi3MVP-1R%@($4DZ3ScBnm_>#VZO$Rphc%{4CQcX{xiTN+%`> z*K#wLb3Ybvfss6y92{W^Us%H(2JwhZoMINgSe9&@V;=vifi_eM-I$J4mP%83D$%s5 kTI+&M*G=!uU+^oy0Oi0qRgJqn0ssI207*qoM6N<$g6#we@c;k- literal 0 HcmV?d00001 diff --git a/media/dashboard/img/page_header.png b/media/dashboard/img/page_header.png new file mode 100644 index 0000000000000000000000000000000000000000..dac79491b6912465053ac671bf7b8341345b89bd GIT binary patch literal 782 zcmV+p1M&QcP)<h;3K|Lk000e1NJLTq000UA002q|0ssI24G2<(0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!ut`KgRCwBim0fb;Kn#Qx#RhBw0rrl2 z!aY`!-30uDA+X)jOnJmhc<Ab{%A;xb82d?n|B<f`sT;WrvONfX1*#0aZ1-|8g^#Fm z7y0~<&4CIZQRj8OC}Jh6R{DWkLgC$HRH>I-fk9CCh$?+Ao4rh?@DY_4;!dy=)Uy?+ zG7YlX*`ghN#7df02Fn6%+GH}SR0|e#zf<8OT5FhdwVB>pfyxV!;$=sLkEk5-Vz&f^ zk7%t8on`4#YX$xot?$xU&g>r0T06e8La4V^pha8Tx^<3LU?s~&hLdGE(YwiL(NF?r zUURepl{c_H*vtccL~HH%Mu2*21!}(VlomxqG_-cKEJu1b89mx)S;ib~MzuM(#gPgh z(WAW+pefpn9&N{+pefpnl`PhCP4H!Fi?z!0f;;g9NBW2==P&MbwUdC4Xwgn@(jKTD ztw7}vz<8v>N3>|;7qdV;T7igG7g_2D)HLUsXGXMVtw)w$RDaeARNg~_3qPsw5i6;S zXmyNMGuo0n-R%V7BWj*ArkN3~weC$;2dcMLAflZKs2U0%5v{c{eKHGl(I%5oMQg5L zmNR`s9OzM2dz-nZkBDeD7PQ(?;Unt2&KE^QYb^mkXx%20(Vn&MGfx8Q&su@@tYIhA z1odaFKx?gkw=DT@P@qS{g(q8de!xnqmcT40dN&#ES(~%e4~X|U{>QJJ35Abn(T2YS zs7EVM<$IFVt6WZ0_=t$s$YfcdRg+9cJ5a2^OsF4dfyz0{t=uLmd_;>j{*%R)>d^|c zXn?7sdb9#7`&8TOA6hrbWK?;o<}C0L?E{SxZWpS5pbPvlTDpfW-A}|yo>$DtnmT$n z8Lc&}zzN=RYXw@g8tq@G9<4xoc}&Q%q58|CK(!0EeA7bVBmNg)0EYNfOj7fI{Qv*} M07*qoM6N<$f-r+;vj6}9 literal 0 HcmV?d00001 diff --git a/media/dashboard/img/projects_bg.png b/media/dashboard/img/projects_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..cd52bf15e9bc9fc7816ee74de5685a9033601e62 GIT binary patch literal 408 zcmV;J0cZY+P)<h;3K|Lk000e1NJLTq0003100B=30ssI215z_~0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzI!Q!9RCwBiR6%k8AqXS(+xvD?RFq(y z>A`VVFhB_YeBam1tdZUK)-b+}&FDKgZASRMzK4xmb^u}bvx&iTMz^0k44hcQSK~}S zk3mzvfr*2?v6la~um6chyY6S)692w`Fly|L`==JE7tFK8AD;J3{q&5<ht^}8W5<Jk z_xQd!SUD$mykd>~2=OORkFq9>Tl46>H&;aXDvzF1cl?G^2cNlJ_qI+P*URz6gKgqt zuyVe&Wx&+U$ZOaz{SY}bH1Oa@dr0A%Rg=m6+7b5_hpDBd-4Qo>&YTNqkBi2w=;t{X z5}y&j^iq6H{x$cC!^6?qulbVMo1D+SAbA=(i8Gwqb57Y;ue8>~4P`!kHrl`{`N#Y6 z(4E1`{Ghxq`#rLvpL|n9OV`plt~uk`tAEz700RJqxkD%CBqPHB0000<MNUMnLSTa5 C*v0t( literal 0 HcmV?d00001 diff --git a/media/dashboard/img/server_icon.png b/media/dashboard/img/server_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..855e57ce5bfd928ea711454d25999642bbf48a56 GIT binary patch literal 433 zcmV;i0Z#sjP)<h;3K|Lk000e1NJLTq001BW000yS1^@s6?2$iD0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzQ%OWYRCwCFRI!nRFc3tT0?1*;4nOn< z5aaAacVL(B9sE;)Lx(QGB^alWxCFifI*|966T>jFCF_xI=0-Qi>2@V8CjyP-dA`PS zfyco-*1|vQy6&bQLJc^9o@WFnTXE08NC0-?4Rc$8!yTRyK*2ATtxI<)rA^H@F!tk| z7=dpeU6T#C5W=>$L+u87xD5n6h|XjLP9(aJMR$55IN6#pgGG`gN3372onE>A$-a*? zO+|$G4_>+wZ~-6hBLY9ZPy5UwUMu(&z5_@LkUr)Krs9<jT#<4mr{=&FiliCPgR6L) zcYO-ed=OcdNo;QU<fP7y0jF{7<0&FEswV%ZDYgRFk<{hF|El?wC(-3dgoRJFn|i4m zC?Ph%e?!?c%@9)_O)6h=LJ?SEBo{2SC4@P|lt+`;<>aPZe>(t>KCafbo;0v|#|VB@ be-~f?=*W`T!DA>e00000NkvXXu0mjfwfVKy literal 0 HcmV?d00001 diff --git a/media/dashboard/img/spinner.gif b/media/dashboard/img/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..42832024a28c4fc149b9ddbc0b684833b5e1e319 GIT binary patch literal 2545 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 OP>4HN<`|&fuYUs>EF5wG literal 0 HcmV?d00001 diff --git a/media/dashboard/img/sub-head-back.png b/media/dashboard/img/sub-head-back.png new file mode 100644 index 0000000000000000000000000000000000000000..b4aacbd55f5548c91dc73b29214774126211c161 GIT binary patch literal 426 zcmV;b0agBqP)<h;3K|Lk000e1NJLTq000UA00Dgn0ssI2vH)%;0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzOi4sRRCwC#SX&Z<APi(XoYhnGdi}H~ z=^f~3eE{Jxqixl&j2}25QP*VIV9ap?UDp-Nw(t9b`Bn~Yopam0_nCkC>{f%TeKmd< zz3EMFmOo!jaqxZ5u1QIAe;5u9j+2f`vsd$ez7AuiL(Rw%-bk9CnVav^!I24|7d4t` z-e3lXYne~N1Y!L|D~Q@AwO3%R$s0s1g_;?GOA@;+(7kS0z#7XI5yDL$^TZ;PM$j&) zW|mJ*Zb_EcPxls$a;jedF02O^!2(4Rnxxrwp8J2_MUAGaJoh<#_*NH4`K-EEn+~Yb zJ-E$XQ`X4*U6jpQ29ozz)x-a-QvAynAQt~<1r}fGOLcGk8@ZzKbB6|t2w~ZTRb#Ww z^EjapWitKQ3~|s?I_m*Z`v&GP$sQu;EaVD;dSWvQlFC0Og6yc0`@y9<s<!|G0PZk+ U9-Og^PXGV_07*qoM6N<$g5yKGQ2+n{ literal 0 HcmV?d00001 diff --git a/media/dashboard/img/sub_head_back.png b/media/dashboard/img/sub_head_back.png new file mode 100644 index 0000000000000000000000000000000000000000..3903dcec85281bcf48d0871426d489be61325b24 GIT binary patch literal 3104 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 literal 0 HcmV?d00001 diff --git a/media/dashboard/img/table_header_bg.png b/media/dashboard/img/table_header_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..06eb3deec5cbf3bb651782605cba69d50c46f245 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{M!2~3ezCWG-q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c71?{bIEGZ*vgta>$>6}l<QSCsOJ8x8X|-)jp~%e6cWq1N zmR0<0QFwb|KX1Ra^um|lN+WCLOUXamz`bw(78VHxMX~THd-d0U0vg5O>FVdQ&MBb@ E00WLR(f|Me literal 0 HcmV?d00001 diff --git a/media/dashboard/img/table_heading_bg.png b/media/dashboard/img/table_heading_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..6fcba877877f686158a90cdad7f6b18515e40812 GIT binary patch literal 968 zcmaJ=O^ee&7>=$7Deh5056hUI1e?#c*@niYo3w6V)2(g6;>AsqX&c&PVlp*pk9!j@ z9t8h@UPVw3DkA7buL>ewy?D}_qWCrGHeC<az+~nfp67W#=UStFel>F{Ls8VKzNIzE zeu%8Kqld}A`}M;OvYo`$4sM|yj?4g36&rOS&|R|+o6xi;S6;y~MXk_IyMsH%wrnAn zF%t|EyFOu4RCy!zO=}1-=)%6^DfH(j&uHM-3VpF)aE7nKfwMIYU~5`$ThpOcvgwU; zpd8CYz=hZZu{-iYIacVIu1wC!HA{mT1P>K@Kd6q;04fR~C@@^k;))z7@(eHLB}qC9 z1diuePGET<$4jy($Q%deA5FXkc290<wYe{1Df9qiUuM}TikL`bP|#=jQmK?^2ttk^ za^b|oW}NfFY^tEa&<Y$MJIDixqS-}btk5LV{S;h(A?t<nGLeF@vFWos!zC%DK*RVy z)O8o=5I5mLy#Evq+Y=wMO&FqaV3Ef4vWY8SRs(2a6toc<rB!SU5Juqu`9N(IfMHsW zm)JABVaU1{V$-vrt|>H8U>wJm#ZtZ~<!e=GQ{;JGt5sB0To(nQs8%IODCSeHhODs* zJ)Cmw18!|8HyH)jC!RGJI9H)v3y=$DDa+3CSk$F@bFRHS7Huh)CBd*sWB+P&dPSxu zIWESQ7>mJ&9+~!ljP;p_`<XlmU8}U?_uBPJh62Z4Jpc838}03U99?*K+P-)5;m+84 ye55-1o*g~C{NvK2ZztZ^EB6bxtxpfW9N(p0-qP-{Z(pw^Z%eP%wY!_Udw&2CJ~AKx literal 0 HcmV?d00001 diff --git a/media/dashboard/img/title-blank-short-foot.png b/media/dashboard/img/title-blank-short-foot.png new file mode 100644 index 0000000000000000000000000000000000000000..548ce4503d37377897f940269f0bde77b751b9cb GIT binary patch literal 435 zcmV;k0ZjghP)<h;3K|Lk000e1NJLTq00N!>000yS1^@s6B*Hxe0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzRY^oaRCwC#+%ZZ6Q4|HxWWYe0G};9W zxB;^PaS4)2Hz6XJO#~Zp6N;5f5I3N;wVi^UsKxjmL>Od*5c5Is9Jt9anKZAu{Li0m zUDq7|04S}icme>Rcme>Rcme=`;t2r2-z%PXFLf`z-;DwQfP#8ed<@J10D!^<Sv*JP z002N?qb#0da{vIKuyGd8i8%lOP}n377rn*BF!E#`000!Q5qZoN&pg$BXdVCn6p~%D zmn)w6BF}uC(pEN6a{&Ngg>q;8A=0nrH*(eU+*|+vSh4Jw{k*6eH}jCu)NB9%SdrsS z;~@LjR(sPy<kFk~0QiOd$VKx;)$&k2VC544fMrd;m(HJxXPQN>BAez00KkHV^TIi6 z`>}1Sz3DY_7CDVPn<W4ME!HC^k)zK1Aki|#v*{*s9l4EsMDEQP0N`KRj;uv?B72eD dMgH_DzyROIKV3?lFzEmQ002ovPDHLkV1nKvu?PSF literal 0 HcmV?d00001 diff --git a/media/dashboard/js/dashboard.js b/media/dashboard/js/dashboard.js new file mode 100644 index 000000000..4559d6c3d --- /dev/null +++ b/media/dashboard/js/dashboard.js @@ -0,0 +1,4 @@ +$(function() { + // Display notification message close boxes and wire up click handlers. + $('.message .close').show().click(function() { $(this).closest('.message').fadeOut(); }); +}); \ No newline at end of file diff --git a/media/dashboard/js/django-admin.multiselect.js b/media/dashboard/js/django-admin.multiselect.js new file mode 100644 index 000000000..f91cdb531 --- /dev/null +++ b/media/dashboard/js/django-admin.multiselect.js @@ -0,0 +1,564 @@ +/* +Copyright (c) Django Software Foundation and individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of Django nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// Handles related-objects functionality: lookup link for raw_id_fields +// and Add Another links. + +function html_unescape(text) { + // Unescape a string that was escaped using django.utils.html.escape. + text = text.replace(/</g, '<'); + text = text.replace(/>/g, '>'); + text = text.replace(/"/g, '"'); + text = text.replace(/'/g, "'"); + text = text.replace(/&/g, '&'); + return text; +} + +// IE doesn't accept periods or dashes in the window name, but the element IDs +// we use to generate popup window names may contain them, therefore we map them +// to allowed characters in a reversible way so that we can locate the correct +// element when the popup window is dismissed. +function id_to_windowname(text) { + text = text.replace(/\./g, '__dot__'); + text = text.replace(/\-/g, '__dash__'); + return text; +} + +function windowname_to_id(text) { + text = text.replace(/__dot__/g, '.'); + text = text.replace(/__dash__/g, '-'); + return text; +} + +function showRelatedObjectLookupPopup(triggeringLink) { + var name = triggeringLink.id.replace(/^lookup_/, ''); + name = id_to_windowname(name); + var href; + if (triggeringLink.href.search(/\?/) >= 0) { + href = triggeringLink.href + '&pop=1'; + } else { + href = triggeringLink.href + '?pop=1'; + } + var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); + win.focus(); + return false; +} + +function dismissRelatedLookupPopup(win, chosenId) { + var name = windowname_to_id(win.name); + var elem = document.getElementById(name); + if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) { + elem.value += ',' + chosenId; + } else { + document.getElementById(name).value = chosenId; + } + win.close(); +} + +function showAddAnotherPopup(triggeringLink) { + var name = triggeringLink.id.replace(/^add_/, ''); + name = id_to_windowname(name); + href = triggeringLink.href + if (href.indexOf('?') == -1) { + href += '?_popup=1'; + } else { + href += '&_popup=1'; + } + var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); + win.focus(); + return false; +} + +function dismissAddAnotherPopup(win, newId, newRepr) { + // newId and newRepr are expected to have previously been escaped by + // django.utils.html.escape. + newId = html_unescape(newId); + newRepr = html_unescape(newRepr); + var name = windowname_to_id(win.name); + var elem = document.getElementById(name); + if (elem) { + if (elem.nodeName == 'SELECT') { + var o = new Option(newRepr, newId); + elem.options[elem.options.length] = o; + o.selected = true; + } else if (elem.nodeName == 'INPUT') { + if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) { + elem.value += ',' + newId; + } else { + elem.value = newId; + } + } + } else { + var toId = name + "_to"; + elem = document.getElementById(toId); + var o = new Option(newRepr, newId); + SelectBox.add_to_cache(toId, o); + SelectBox.redisplay(toId); + } + win.close(); +} + +/* gettext library */ + +var catalog = new Array(); + +function pluralidx(count) { return (count == 1) ? 0 : 1; } + + +function gettext(msgid) { + var value = catalog[msgid]; + if (typeof(value) == 'undefined') { + return msgid; + } else { + return (typeof(value) == 'string') ? value : value[0]; + } +} + +function ngettext(singular, plural, count) { + value = catalog[singular]; + if (typeof(value) == 'undefined') { + return (count == 1) ? singular : plural; + } else { + return value[pluralidx(count)]; + } +} + +function gettext_noop(msgid) { return msgid; } + +function interpolate(fmt, obj, named) { + if (named) { + return fmt.replace(/%\(\w+\)s/g, function(match){return String(obj[match.slice(2,-2)])}); + } else { + return fmt.replace(/%s/g, function(match){return String(obj.shift())}); + } +} + +//Core javascript helper functions + +//basic browser identification & version +var isOpera = (navigator.userAgent.indexOf("Opera")>=0) && parseFloat(navigator.appVersion); +var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]); + +//Cross-browser event handlers. +function addEvent(obj, evType, fn) { + if (obj.addEventListener) { + obj.addEventListener(evType, fn, false); + return true; + } else if (obj.attachEvent) { + var r = obj.attachEvent("on" + evType, fn); + return r; + } else { + return false; + } +} + +function removeEvent(obj, evType, fn) { + if (obj.removeEventListener) { + obj.removeEventListener(evType, fn, false); + return true; + } else if (obj.detachEvent) { + obj.detachEvent("on" + evType, fn); + return true; + } else { + return false; + } +} + +//quickElement(tagType, parentReference, textInChildNode, [, attribute, attributeValue ...]); +function quickElement() { + var obj = document.createElement(arguments[0]); + if (arguments[2] != '' && arguments[2] != null) { + var textNode = document.createTextNode(arguments[2]); + obj.appendChild(textNode); + } + var len = arguments.length; + for (var i = 3; i < len; i += 2) { + obj.setAttribute(arguments[i], arguments[i+1]); + } + arguments[1].appendChild(obj); + return obj; +} + +//---------------------------------------------------------------------------- +//Cross-browser xmlhttp object +//from http://jibbering.com/2002/4/httprequest.html +//---------------------------------------------------------------------------- +var xmlhttp; +/*@cc_on @*/ +/*@if (@_jscript_version >= 5) + try { + xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + try { + xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); + } catch (E) { + xmlhttp = false; + } + } +@else + xmlhttp = false; +@end @*/ +if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { +xmlhttp = new XMLHttpRequest(); +} + +//---------------------------------------------------------------------------- +//Find-position functions by PPK +//See http://www.quirksmode.org/js/findpos.html +//---------------------------------------------------------------------------- +function findPosX(obj) { + var curleft = 0; + if (obj.offsetParent) { + while (obj.offsetParent) { + curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft); + obj = obj.offsetParent; + } + // IE offsetParent does not include the top-level + if (isIE && obj.parentElement){ + curleft += obj.offsetLeft - obj.scrollLeft; + } + } else if (obj.x) { + curleft += obj.x; + } + return curleft; +} + +function findPosY(obj) { + var curtop = 0; + if (obj.offsetParent) { + while (obj.offsetParent) { + curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop); + obj = obj.offsetParent; + } + // IE offsetParent does not include the top-level + if (isIE && obj.parentElement){ + curtop += obj.offsetTop - obj.scrollTop; + } + } else if (obj.y) { + curtop += obj.y; + } + return curtop; +} + +//----------------------------------------------------------------------------- +//Date object extensions +//---------------------------------------------------------------------------- +Date.prototype.getCorrectYear = function() { + // Date.getYear() is unreliable -- + // see http://www.quirksmode.org/js/introdate.html#year + var y = this.getYear() % 100; + return (y < 38) ? y + 2000 : y + 1900; +} + +Date.prototype.getTwoDigitMonth = function() { + return (this.getMonth() < 9) ? '0' + (this.getMonth()+1) : (this.getMonth()+1); +} + +Date.prototype.getTwoDigitDate = function() { + return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate(); +} + +Date.prototype.getTwoDigitHour = function() { + return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours(); +} + +Date.prototype.getTwoDigitMinute = function() { + return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes(); +} + +Date.prototype.getTwoDigitSecond = function() { + return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); +} + +Date.prototype.getISODate = function() { + return this.getCorrectYear() + '-' + this.getTwoDigitMonth() + '-' + this.getTwoDigitDate(); +} + +Date.prototype.getHourMinute = function() { + return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute(); +} + +Date.prototype.getHourMinuteSecond = function() { + return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond(); +} + +//---------------------------------------------------------------------------- +//String object extensions +//---------------------------------------------------------------------------- +String.prototype.pad_left = function(pad_length, pad_string) { + var new_string = this; + for (var i = 0; new_string.length < pad_length; i++) { + new_string = pad_string + new_string; + } + return new_string; +} + +//---------------------------------------------------------------------------- +//Get the computed style for and element +//---------------------------------------------------------------------------- +function getStyle(oElm, strCssRule){ + var strValue = ""; + if(document.defaultView && document.defaultView.getComputedStyle){ + strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); + } + else if(oElm.currentStyle){ + strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){ + return p1.toUpperCase(); + }); + strValue = oElm.currentStyle[strCssRule]; + } + return strValue; +} + +var SelectBox = { + cache: new Object(), + init: function(id) { + var box = document.getElementById(id); + var node; + SelectBox.cache[id] = new Array(); + var cache = SelectBox.cache[id]; + for (var i = 0; (node = box.options[i]); i++) { + cache.push({value: node.value, text: node.text, displayed: 1}); + } + }, + redisplay: function(id) { + // Repopulate HTML select box from cache + var box = document.getElementById(id); + box.options.length = 0; // clear all options + for (var i = 0, j = SelectBox.cache[id].length; i < j; i++) { + var node = SelectBox.cache[id][i]; + if (node.displayed) { + box.options[box.options.length] = new Option(node.text, node.value, false, false); + } + } + }, + filter: function(id, text) { + // Redisplay the HTML select box, displaying only the choices containing ALL + // the words in text. (It's an AND search.) + var tokens = text.toLowerCase().split(/\s+/); + var node, token; + for (var i = 0; (node = SelectBox.cache[id][i]); i++) { + node.displayed = 1; + for (var j = 0; (token = tokens[j]); j++) { + if (node.text.toLowerCase().indexOf(token) == -1) { + node.displayed = 0; + } + } + } + SelectBox.redisplay(id); + }, + delete_from_cache: function(id, value) { + var node, delete_index = null; + for (var i = 0; (node = SelectBox.cache[id][i]); i++) { + if (node.value == value) { + delete_index = i; + break; + } + } + var j = SelectBox.cache[id].length - 1; + for (var i = delete_index; i < j; i++) { + SelectBox.cache[id][i] = SelectBox.cache[id][i+1]; + } + SelectBox.cache[id].length--; + }, + add_to_cache: function(id, option) { + SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); + }, + cache_contains: function(id, value) { + // Check if an item is contained in the cache + var node; + for (var i = 0; (node = SelectBox.cache[id][i]); i++) { + if (node.value == value) { + return true; + } + } + return false; + }, + move: function(from, to) { + var from_box = document.getElementById(from); + var to_box = document.getElementById(to); + var option; + for (var i = 0; (option = from_box.options[i]); i++) { + if (option.selected && SelectBox.cache_contains(from, option.value)) { + SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1}); + SelectBox.delete_from_cache(from, option.value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + move_all: function(from, to) { + var from_box = document.getElementById(from); + var to_box = document.getElementById(to); + var option; + for (var i = 0; (option = from_box.options[i]); i++) { + if (SelectBox.cache_contains(from, option.value)) { + SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1}); + SelectBox.delete_from_cache(from, option.value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + sort: function(id) { + SelectBox.cache[id].sort( function(a, b) { + a = a.text.toLowerCase(); + b = b.text.toLowerCase(); + try { + if (a > b) return 1; + if (a < b) return -1; + } + catch (e) { + // silently fail on IE 'unknown' exception + } + return 0; + } ); + }, + select_all: function(id) { + var box = document.getElementById(id); + for (var i = 0; i < box.options.length; i++) { + box.options[i].selected = 'selected'; + } + } + } + +/* +SelectFilter2 - Turns a multiple-select box into a filter interface. + +Different than SelectFilter because this is coupled to the admin framework. + +Requires core.js, SelectBox.js and addevent.js. +*/ + +function findForm(node) { + // returns the node of the form containing the given node + if (node.tagName.toLowerCase() != 'form') { + return findForm(node.parentNode); + } + return node; +} + +var SelectFilter = { + init: function(field_id, field_name, is_stacked, admin_media_prefix) { + var from_box = document.getElementById(field_id); + from_box.id += '_from'; // change its ID + from_box.className = 'filtered'; + + // Remove <p class="info">, because it just gets in the way. + var ps = from_box.parentNode.getElementsByTagName('p'); + for (var i=0; i<ps.length; i++) { + from_box.parentNode.removeChild(ps[i]); + } + + // <div class="selector"> or <div class="selector stacked"> + var selector_div = quickElement('div', from_box.parentNode); + selector_div.className = is_stacked ? 'selector stacked' : 'selector'; + + // <div class="selector-available"> + var selector_available = quickElement('div', selector_div, ''); + selector_available.className = 'selector-available'; + quickElement('h2', selector_available, interpolate(gettext('Available %s'), [field_name])); + var filter_p = quickElement('p', selector_available, ''); + filter_p.className = 'selector-filter'; + quickElement('img', filter_p, '', 'src', admin_media_prefix + 'img/admin/selector-search.gif'); + filter_p.appendChild(document.createTextNode(' ')); + var filter_input = quickElement('input', filter_p, '', 'type', 'text'); + filter_input.id = field_id + '_input'; + selector_available.appendChild(from_box); + var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'href', 'javascript: (function(){ SelectBox.move_all("' + field_id + '_from", "' + field_id + '_to"); })()'); + choose_all.className = 'selector-chooseall'; + + // <ul class="selector-chooser"> + var selector_chooser = quickElement('ul', selector_div, ''); + selector_chooser.className = 'selector-chooser'; + var add_link = quickElement('a', quickElement('li', selector_chooser, ''), gettext('Add'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_from","' + field_id + '_to");})()'); + add_link.className = 'selector-add'; + var remove_link = quickElement('a', quickElement('li', selector_chooser, ''), gettext('Remove'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_to","' + field_id + '_from");})()'); + remove_link.className = 'selector-remove'; + + // <div class="selector-chosen"> + var selector_chosen = quickElement('div', selector_div, ''); + selector_chosen.className = 'selector-chosen'; + quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s'), [field_name])); + var selector_filter = quickElement('p', selector_chosen, gettext('Select your choice(s) and click ')); + selector_filter.className = 'selector-filter'; + quickElement('img', selector_filter, '', 'src', admin_media_prefix + (is_stacked ? 'img/admin/selector_stacked-add.gif':'img/admin/selector-add.gif'), 'alt', 'Add'); + var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name')); + to_box.className = 'filtered'; + var clear_all = quickElement('a', selector_chosen, gettext('Clear all'), 'href', 'javascript: (function() { SelectBox.move_all("' + field_id + '_to", "' + field_id + '_from");})()'); + clear_all.className = 'selector-clearall'; + + from_box.setAttribute('name', from_box.getAttribute('name') + '_old'); + + // Set up the JavaScript event handlers for the select box filter interface + addEvent(filter_input, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); }); + addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); }); + addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); }); + addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); }); + addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); }); + SelectBox.init(field_id + '_from'); + SelectBox.init(field_id + '_to'); + // Move selected from_box options to to_box + SelectBox.move(field_id + '_from', field_id + '_to'); + }, + filter_key_up: function(event, field_id) { + from = document.getElementById(field_id + '_from'); + // don't submit form if user pressed Enter + if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) { + from.selectedIndex = 0; + SelectBox.move(field_id + '_from', field_id + '_to'); + from.selectedIndex = 0; + return false; + } + var temp = from.selectedIndex; + SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value); + from.selectedIndex = temp; + return true; + }, + filter_key_down: function(event, field_id) { + from = document.getElementById(field_id + '_from'); + // right arrow -- move across + if ((event.which && event.which == 39) || (event.keyCode && event.keyCode == 39)) { + var old_index = from.selectedIndex; + SelectBox.move(field_id + '_from', field_id + '_to'); + from.selectedIndex = (old_index == from.length) ? from.length - 1 : old_index; + return false; + } + // down arrow -- wrap around + if ((event.which && event.which == 40) || (event.keyCode && event.keyCode == 40)) { + from.selectedIndex = (from.length == from.selectedIndex + 1) ? 0 : from.selectedIndex + 1; + } + // up arrow -- wrap around + if ((event.which && event.which == 38) || (event.keyCode && event.keyCode == 38)) { + from.selectedIndex = (from.selectedIndex == 0) ? from.length - 1 : from.selectedIndex - 1; + } + return true; + } +} diff --git a/media/dashboard/js/jquery-ui.min.js b/media/dashboard/js/jquery-ui.min.js new file mode 100755 index 000000000..3e168d108 --- /dev/null +++ b/media/dashboard/js/jquery-ui.min.js @@ -0,0 +1,9 @@ +/* + * jQuery UI 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m<n.length;m++){if(j.options[n[m][0]]){n[m][1].apply(j.element,k)}}}},contains:function(k,j){return document.compareDocumentPosition?k.compareDocumentPosition(j)&16:k!==j&&k.contains(j)},hasScroll:function(m,k){if(c(m).css("overflow")=="hidden"){return false}var j=(k&&k=="left")?"scrollLeft":"scrollTop",l=false;if(m[j]>0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,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,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);(function(a){a.widget("ui.draggable",a.extend({},a.ui.mouse,{_init:function(){if(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(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy()},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;if(c.cursorAt){this._adjustOffsetFromHelper(c.cursorAt)}if(c.containment){this._setContainment()}this._trigger("start",b);this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();this._trigger("drag",b,c);this.position=c.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"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){b._trigger("stop",c);b._clear()})}else{this._trigger("stop",c);this._clear()}return false},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(b.left!=undefined){this.offset.click.left=b.left+this.margins.left}if(b.right!=undefined){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if(b.top!=undefined){this.offset.click.top=b.top+this.margins.top}if(b.bottom!=undefined){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{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)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},_trigger:function(b,c,d){d=d||this._uiHash();a.ui.plugin.call(this,b,[c,d]);if(b=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return a.widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(b){return{helper:this.helper,position:this.position,absolutePosition:this.positionAbs,offset:this.positionAbs}}}));a.extend(a.ui.draggable,{version:"1.7.2",eventPrefix:"drag",defaults:{addClasses:true,appendTo:"parent",axis:false,cancel:":input,option",connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,delay:0,distance:1,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false}});a.ui.plugin.add("draggable","connectToSortable",{start:function(c,e){var d=a(this).data("draggable"),f=d.options,b=a.extend({},e,{item:d.element});d.sortables=[];a(f.connectToSortable).each(function(){var g=a.data(this,"sortable");if(g&&!g.options.disabled){d.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",c,b)}})},stop:function(c,e){var d=a(this).data("draggable"),b=a.extend({},e,{item:d.element});a.each(d.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;d.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(c);this.instance.options.helper=this.instance.options._helper;if(d.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",c,b)}})},drag:function(c,f){var e=a(this).data("draggable"),b=this;var d=function(i){var n=this.offset.click.top,m=this.offset.click.left;var g=this.positionAbs.top,k=this.positionAbs.left;var j=i.height,l=i.width;var p=i.top,h=i.left;return a.ui.isOver(g+n,k+m,p,h,j,l)};a.each(e.sortables,function(g){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(b).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;e._trigger("toSortable",c);e.dropped=this.instance.element;e.currentItem=e.element;this.instance.fromOutside=e}if(this.instance.currentItem){this.instance._mouseDrag(c)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",c,this.instance._uiHash(this.instance));this.instance._mouseStop(c,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}e._trigger("fromSortable",c);e.dropped=false}}})}});a.ui.plugin.add("draggable","cursor",{start:function(c,d){var b=a("body"),e=a(this).data("draggable").options;if(b.css("cursor")){e._cursor=b.css("cursor")}b.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._cursor){a("body").css("cursor",d._cursor)}}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){var d=a(this).data("draggable").options;a(d.iframeFix===true?"iframe":d.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop+f.scrollSpeed}else{if(d.pageY-c.overflowOffset.top<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop-f.scrollSpeed}}}if(!f.axis||f.axis!="y"){if((c.overflowOffset.left+c.scrollParent[0].offsetWidth)-d.pageX<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft+f.scrollSpeed}else{if(d.pageX-c.overflowOffset.left<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft-f.scrollSpeed}}}}else{if(!f.axis||f.axis!="x"){if(d.pageY-a(document).scrollTop()<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-f.scrollSpeed)}else{if(a(window).height()-(d.pageY-a(document).scrollTop())<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+f.scrollSpeed)}}}if(!f.axis||f.axis!="y"){if(d.pageX-a(document).scrollLeft()<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-f.scrollSpeed)}else{if(a(window).width()-(d.pageX-a(document).scrollLeft())<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+f.scrollSpeed)}}}}if(b!==false&&a.ui.ddmanager&&!f.dropBehaviour){a.ui.ddmanager.prepareOffsets(c,d)}}});a.ui.plugin.add("draggable","snap",{start:function(c,d){var b=a(this).data("draggable"),e=b.options;b.snapElements=[];a(e.snap.constructor!=String?(e.snap.items||":data(draggable)"):e.snap).each(function(){var g=a(this);var f=g.offset();if(this!=b.element[0]){b.snapElements.push({item:this,width:g.outerWidth(),height:g.outerHeight(),top:f.top,left:f.left})}})},drag:function(u,p){var g=a(this).data("draggable"),q=g.options;var y=q.snapTolerance;var x=p.offset.left,w=x+g.helperProportions.width,f=p.offset.top,e=f+g.helperProportions.height;for(var v=g.snapElements.length-1;v>=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y<x&&x<n+y&&m-y<f&&f<A+y)||(s-y<x&&x<n+y&&m-y<e&&e<A+y)||(s-y<w&&w<n+y&&m-y<f&&f<A+y)||(s-y<w&&w<n+y&&m-y<e&&e<A+y))){if(g.snapElements[v].snapping){(g.options.snap.release&&g.options.snap.release.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=false;continue}if(q.snapMode!="inner"){var c=Math.abs(m-e)<=y;var z=Math.abs(A-f)<=y;var j=Math.abs(s-w)<=y;var k=Math.abs(n-x)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s-g.helperProportions.width}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n}).left-g.margins.left}}var h=(c||z||j||k);if(q.snapMode!="outer"){var c=Math.abs(m-f)<=y;var z=Math.abs(A-e)<=y;var j=Math.abs(s-x)<=y;var k=Math.abs(n-w)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A-g.helperProportions.height,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n-g.helperProportions.width}).left-g.margins.left}}if(!g.snapElements[v].snapping&&(c||z||j||k||h)){(g.options.snap.snap&&g.options.snap.snap.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=(c||z||j||k||h)}}});a.ui.plugin.add("draggable","stack",{start:function(b,c){var e=a(this).data("draggable").options;var d=a.makeArray(a(e.stack.group)).sort(function(g,f){return(parseInt(a(g).css("zIndex"),10)||e.stack.min)-(parseInt(a(f).css("zIndex"),10)||e.stack.min)});a(d).each(function(f){this.style.zIndex=e.stack.min+f});this[0].style.zIndex=e.stack.min+d.length}});a.ui.plugin.add("draggable","zIndex",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("zIndex")){e._zIndex=b.css("zIndex")}b.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._zIndex){a(c.helper).css("zIndex",d._zIndex)}}})})(jQuery);(function(a){a.widget("ui.droppable",{_init:function(){var c=this.options,b=c.accept;this.isover=0;this.isout=1;this.options.accept=this.options.accept&&a.isFunction(this.options.accept)?this.options.accept:function(e){return e.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};a.ui.ddmanager.droppables[this.options.scope]=a.ui.ddmanager.droppables[this.options.scope]||[];a.ui.ddmanager.droppables[this.options.scope].push(this);(this.options.addClasses&&this.element.addClass("ui-droppable"))},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++){if(b[c]==this){b.splice(c,1)}}this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable")},_setData:function(b,c){if(b=="accept"){this.options.accept=c&&a.isFunction(c)?c:function(e){return e.is(c)}}else{a.widget.prototype._setData.apply(this,arguments)}},_activate:function(c){var b=a.ui.ddmanager.current;if(this.options.activeClass){this.element.addClass(this.options.activeClass)}(b&&this._trigger("activate",c,this.ui(b)))},_deactivate:function(c){var b=a.ui.ddmanager.current;if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}(b&&this._trigger("deactivate",c,this.ui(b)))},_over:function(c){var b=a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return}if(this.options.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.hoverClass){this.element.addClass(this.options.hoverClass)}this._trigger("over",c,this.ui(b))}},_out:function(c){var b=a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return}if(this.options.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}this._trigger("out",c,this.ui(b))}},_drop:function(c,d){var b=d||a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return false}var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var f=a.data(this,"droppable");if(f.options.greedy&&a.ui.intersect(b,a.extend(f,{offset:f.element.offset()}),f.options.tolerance)){e=true;return false}});if(e){return false}if(this.options.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}this._trigger("drop",c,this.ui(b));return this.element}return false},ui:function(b){return{draggable:(b.currentItem||b.element),helper:b.helper,position:b.position,absolutePosition:b.positionAbs,offset:b.positionAbs}}});a.extend(a.ui.droppable,{version:"1.7.2",eventPrefix:"drop",defaults:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"}});a.ui.intersect=function(q,j,o){if(!j.offset){return false}var e=(q.positionAbs||q.position.absolute).left,d=e+q.helperProportions.width,n=(q.positionAbs||q.position.absolute).top,m=n+q.helperProportions.height;var g=j.offset.left,c=g+j.proportions.width,p=j.offset.top,k=p+j.proportions.height;switch(o){case"fit":return(g<e&&d<c&&p<n&&m<k);break;case"intersect":return(g<e+(q.helperProportions.width/2)&&d-(q.helperProportions.width/2)<c&&p<n+(q.helperProportions.height/2)&&m-(q.helperProportions.height/2)<k);break;case"pointer":var h=((q.positionAbs||q.position.absolute).left+(q.clickOffset||q.offset.click).left),i=((q.positionAbs||q.position.absolute).top+(q.clickOffset||q.offset.click).top),f=a.ui.isOver(i,h,p,g,j.proportions.height,j.proportions.width);return f;break;case"touch":return((n>=p&&n<=k)||(m>=p&&m<=k)||(n<p&&m>k))&&((e>=g&&e<=c)||(d>=g&&d<=c)||(e<g&&d>c));break;default:return false;break}};a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,g){var b=a.ui.ddmanager.droppables[e.options.scope];var f=g?g.type:null;var h=(e.currentItem||e.element).find(":data(droppable)").andSelf();droppablesLoop:for(var d=0;d<b.length;d++){if(b[d].options.disabled||(e&&!b[d].options.accept.call(b[d].element[0],(e.currentItem||e.element)))){continue}for(var c=0;c<h.length;c++){if(h[c]==b[d].element[0]){b[d].proportions.height=0;continue droppablesLoop}}b[d].visible=b[d].element.css("display")!="none";if(!b[d].visible){continue}b[d].offset=b[d].element.offset();b[d].proportions={width:b[d].element[0].offsetWidth,height:b[d].element[0].offsetHeight};if(f=="mousedown"){b[d]._activate.call(b[d],g)}}},drop:function(b,c){var d=false;a.each(a.ui.ddmanager.droppables[b.options.scope],function(){if(!this.options){return}if(!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)){d=this._drop.call(this,c)}if(!this.options.disabled&&this.visible&&this.options.accept.call(this.element[0],(b.currentItem||b.element))){this.isout=1;this.isover=0;this._deactivate.call(this,c)}});return d},drag:function(b,c){if(b.options.refreshPositions){a.ui.ddmanager.prepareOffsets(b,c)}a.each(a.ui.ddmanager.droppables[b.options.scope],function(){if(this.options.disabled||this.greedyChild||!this.visible){return}var e=a.ui.intersect(b,this,this.options.tolerance);var g=!e&&this.isover==1?"isout":(e&&this.isover==0?"isover":null);if(!g){return}var f;if(this.options.greedy){var d=this.element.parents(":data(droppable):eq(0)");if(d.length){f=a.data(d[0],"droppable");f.greedyChild=(g=="isover"?1:0)}}if(f&&g=="isover"){f.isover=0;f.isout=1;f._out.call(f,c)}this[g]=1;this[g=="isout"?"isover":"isout"]=0;this[g=="isover"?"_over":"_out"].call(this,c);if(f&&g=="isout"){f.isout=0;f.isover=1;f._over.call(f,c)}})}}})(jQuery);(function(c){c.widget("ui.resizable",c.extend({},c.ui.mouse,{_init:function(){var e=this,j=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(j.aspectRatio),aspectRatio:j.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:j.helper||j.ghost||j.animate?j.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css("position"))&&c.browser.opera){this.element.css({position:"relative",top:"auto",left:"auto"})}this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f<k.length;f++){var h=c.trim(k[f]),d="ui-resizable-"+h;var g=c('<div class="ui-resizable-handle '+d+'"></div>');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.parent().append(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).end().remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement)},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return this.options.disabled||!!f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidth<k.width),l=a(k.height)&&h.maxHeight&&(h.maxHeight<k.height),g=a(k.width)&&h.minWidth&&(h.minWidth>k.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e<this._proportionallyResizeElements.length;e++){var g=this._proportionallyResizeElements[e];if(!this.borderDif){var d=[g.css("borderTopWidth"),g.css("borderRightWidth"),g.css("borderBottomWidth"),g.css("borderLeftWidth")],h=[g.css("paddingTop"),g.css("paddingRight"),g.css("paddingBottom"),g.css("paddingLeft")];this.borderDif=c.map(d,function(k,m){var l=parseInt(k,10)||0,n=parseInt(h[m],10)||0;return l+n})}if(c.browser.msie&&!(!(c(f).is(":hidden")||c(f).parents(":hidden").length))){continue}g.css({height:(f.height()-this.borderDif[0]-this.borderDif[2])||0,width:(f.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var e=this.element,h=this.options;this.elementOffset=e.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}));c.extend(c.ui.resizable,{version:"1.7.2",eventPrefix:"resize",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input,option",containment:false,delay:0,distance:1,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000}});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),g=d.options;_store=function(h){c(h).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(g.alsoResize)=="object"&&!g.alsoResize.parentNode){if(g.alsoResize.length){g.alsoResize=g.alsoResize[0];_store(g.alsoResize)}else{c.each(g.alsoResize,function(h,i){_store(h)})}}else{_store(g.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,u){var s=(q[u]||0)+(j[u]||0);if(s&&s>=0){o[u]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)){s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return !isNaN(parseInt(d,10))}})(jQuery);(function(a){a.widget("ui.selectable",a.extend({},a.ui.mouse,{_init:function(){var b=this;this.element.addClass("ui-selectable");this.dragged=false;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]);c.each(function(){var d=a(this);var e=d.offset();a.data(this,"selectable-item",{element:this,$element:d,left:e.left,top:e.top,right:e.left+d.outerWidth(),bottom:e.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=a(document.createElement("div")).css({border:"1px dotted black"}).addClass("ui-selectable-helper")},destroy:function(){this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy()},_mouseStart:function(d){var b=this;this.opos=[d.pageX,d.pageY];if(this.options.disabled){return}var c=this.options;this.selectees=a(c.filter,this.element[0]);this._trigger("start",d);a(c.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:d.clientX,top:d.clientY,width:0,height:0});if(c.autoRefresh){this.refresh()}this.selectees.filter(".ui-selected").each(function(){var e=a.data(this,"selectable-item");e.startselected=true;if(!d.metaKey){e.$element.removeClass("ui-selected");e.selected=false;e.$element.addClass("ui-unselecting");e.unselecting=true;b._trigger("unselecting",d,{unselecting:e.element})}});a(d.target).parents().andSelf().each(function(){var e=a.data(this,"selectable-item");if(e){e.$element.removeClass("ui-unselecting").addClass("ui-selecting");e.unselecting=false;e.selecting=true;e.selected=true;b._trigger("selecting",d,{selecting:e.element});return false}})},_mouseDrag:function(i){var c=this;this.dragged=true;if(this.options.disabled){return}var e=this.options;var d=this.opos[0],h=this.opos[1],b=i.pageX,g=i.pageY;if(d>b){var f=b;b=d;d=f}if(h>g){var f=g;g=h;h=f}this.helper.css({left:d,top:h,width:b-d,height:g-h});this.selectees.each(function(){var j=a.data(this,"selectable-item");if(!j||j.element==c.element[0]){return}var k=false;if(e.tolerance=="touch"){k=(!(j.left>b||j.right<d||j.top>g||j.bottom<h))}else{if(e.tolerance=="fit"){k=(j.left>d&&j.right<b&&j.top>h&&j.bottom<g)}}if(k){if(j.selected){j.$element.removeClass("ui-selected");j.selected=false}if(j.unselecting){j.$element.removeClass("ui-unselecting");j.unselecting=false}if(!j.selecting){j.$element.addClass("ui-selecting");j.selecting=true;c._trigger("selecting",i,{selecting:j.element})}}else{if(j.selecting){if(i.metaKey&&j.startselected){j.$element.removeClass("ui-selecting");j.selecting=false;j.$element.addClass("ui-selected");j.selected=true}else{j.$element.removeClass("ui-selecting");j.selecting=false;if(j.startselected){j.$element.addClass("ui-unselecting");j.unselecting=true}c._trigger("unselecting",i,{unselecting:j.element})}}if(j.selected){if(!i.metaKey&&!j.startselected){j.$element.removeClass("ui-selected");j.selected=false;j.$element.addClass("ui-unselecting");j.unselecting=true;c._trigger("unselecting",i,{unselecting:j.element})}}}});return false},_mouseStop:function(d){var b=this;this.dragged=false;var c=this.options;a(".ui-unselecting",this.element[0]).each(function(){var e=a.data(this,"selectable-item");e.$element.removeClass("ui-unselecting");e.unselecting=false;e.startselected=false;b._trigger("unselected",d,{unselected:e.element})});a(".ui-selecting",this.element[0]).each(function(){var e=a.data(this,"selectable-item");e.$element.removeClass("ui-selecting").addClass("ui-selected");e.selecting=false;e.selected=true;e.startselected=true;b._trigger("selected",d,{selected:e.element})});this._trigger("stop",d);this.helper.remove();return false}}));a.extend(a.ui.selectable,{version:"1.7.2",defaults:{appendTo:"body",autoRefresh:true,cancel:":input,option",delay:0,distance:0,filter:"*",tolerance:"touch"}})})(jQuery);(function(a){a.widget("ui.sortable",a.extend({},a.ui.mouse,{_init:function(){var b=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh();this.floating=this.items.length?(/left|right/).test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--){this.items[b].item.removeData("sortable-item")}},_mouseCapture:function(e,f){if(this.reverting){return false}if(this.options.disabled||this.options.type=="static"){return false}this._refreshItems(e);var d=null,c=this,b=a(e.target).parents().each(function(){if(a.data(this,"sortable-item")==c){d=a(this);return false}});if(a.data(e.target,"sortable-item")==c){d=a(e.target)}if(!d){return false}if(this.options.handle&&!f){var g=false;a(this.options.handle,d).find("*").andSelf().each(function(){if(this==e.target){g=true}});if(!g){return false}}this.currentItem=d;this._removeCurrentsFromItems();return true},_mouseStart:function(e,f,b){var g=this.options,c=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(e);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};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");a.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(e);this.originalPageX=e.pageX;this.originalPageY=e.pageY;if(g.cursorAt){this._adjustOffsetFromHelper(g.cursorAt)}this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};if(this.helper[0]!=this.currentItem[0]){this.currentItem.hide()}this._createPlaceholder();if(g.containment){this._setContainment()}if(g.cursor){if(a("body").css("cursor")){this._storedCursor=a("body").css("cursor")}a("body").css("cursor",g.cursor)}if(g.opacity){if(this.helper.css("opacity")){this._storedOpacity=this.helper.css("opacity")}this.helper.css("opacity",g.opacity)}if(g.zIndex){if(this.helper.css("zIndex")){this._storedZIndex=this.helper.css("zIndex")}this.helper.css("zIndex",g.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){this.overflowOffset=this.scrollParent.offset()}this._trigger("start",e,this._uiHash());if(!this._preserveHelperProportions){this._cacheHelperProportions()}if(!b){for(var d=this.containers.length-1;d>=0;d--){this.containers[d]._trigger("activate",e,c._uiHash(this))}}if(a.ui.ddmanager){a.ui.ddmanager.current=this}if(a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,e)}this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(e);return true},_mouseDrag:function(f){this.position=this._generatePosition(f);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs){this.lastPositionAbs=this.positionAbs}if(this.options.scroll){var g=this.options,b=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if((this.overflowOffset.top+this.scrollParent[0].offsetHeight)-f.pageY<g.scrollSensitivity){this.scrollParent[0].scrollTop=b=this.scrollParent[0].scrollTop+g.scrollSpeed}else{if(f.pageY-this.overflowOffset.top<g.scrollSensitivity){this.scrollParent[0].scrollTop=b=this.scrollParent[0].scrollTop-g.scrollSpeed}}if((this.overflowOffset.left+this.scrollParent[0].offsetWidth)-f.pageX<g.scrollSensitivity){this.scrollParent[0].scrollLeft=b=this.scrollParent[0].scrollLeft+g.scrollSpeed}else{if(f.pageX-this.overflowOffset.left<g.scrollSensitivity){this.scrollParent[0].scrollLeft=b=this.scrollParent[0].scrollLeft-g.scrollSpeed}}}else{if(f.pageY-a(document).scrollTop()<g.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-g.scrollSpeed)}else{if(a(window).height()-(f.pageY-a(document).scrollTop())<g.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+g.scrollSpeed)}}if(f.pageX-a(document).scrollLeft()<g.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-g.scrollSpeed)}else{if(a(window).width()-(f.pageX-a(document).scrollLeft())<g.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+g.scrollSpeed)}}}if(b!==false&&a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,f)}}this.positionAbs=this._convertPositionTo("absolute");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"}for(var d=this.items.length-1;d>=0;d--){var e=this.items[d],c=e.item[0],h=this._intersectsWithPointer(e);if(!h){continue}if(c!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=c&&!a.ui.contains(this.placeholder[0],c)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],c):true)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(e)){this._rearrange(f,e)}else{break}this._trigger("change",f,this._uiHash());break}}this._contactContainers(f);if(a.ui.ddmanager){a.ui.ddmanager.drag(this,f)}this._trigger("sort",f,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(c,d){if(!c){return}if(a.ui.ddmanager&&!this.options.dropBehaviour){a.ui.ddmanager.drop(this,c)}if(this.options.revert){var b=this;var e=b.placeholder.offset();b.reverting=true;a(this.helper).animate({left:e.left-this.offset.parent.left-b.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-b.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){b._clear(c)})}else{this._clear(c,d)}return false},cancel:function(){var b=this;if(this.dragging){this._mouseUp();if(this.options.helper=="original"){this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else{this.currentItem.show()}for(var c=this.containers.length-1;c>=0;c--){this.containers[c]._trigger("deactivate",null,b._uiHash(this));if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",null,b._uiHash(this));this.containers[c].containerCache.over=0}}}if(this.placeholder[0].parentNode){this.placeholder[0].parentNode.removeChild(this.placeholder[0])}if(this.options.helper!="original"&&this.helper&&this.helper[0].parentNode){this.helper.remove()}a.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});if(this.domPosition.prev){a(this.domPosition.prev).after(this.currentItem)}else{a(this.domPosition.parent).prepend(this.currentItem)}return true},serialize:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};a(b).each(function(){var e=(a(d.item||this).attr(d.attribute||"id")||"").match(d.expression||(/(.+)[-=_](.+)/));if(e){c.push((d.key||e[1]+"[]")+"="+(d.key&&d.expression?e[1]:e[2]))}});return c.join("&")},toArray:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};b.each(function(){c.push(a(d.item||this).attr(d.attribute||"id")||"")});return c},_intersectsWith:function(m){var e=this.positionAbs.left,d=e+this.helperProportions.width,k=this.positionAbs.top,j=k+this.helperProportions.height;var f=m.left,c=f+m.width,n=m.top,i=n+m.height;var o=this.offset.click.top,h=this.offset.click.left;var g=(k+o)>n&&(k+o)<i&&(e+h)>f&&(e+h)<c;if(this.options.tolerance=="pointer"||this.options.forcePointerForContainers||(this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>m[this.floating?"width":"height"])){return g}else{return(f<e+(this.helperProportions.width/2)&&d-(this.helperProportions.width/2)<c&&n<k+(this.helperProportions.height/2)&&j-(this.helperProportions.height/2)<i)}},_intersectsWithPointer:function(d){var e=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,d.top,d.height),c=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,d.left,d.width),g=e&&c,b=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();if(!g){return false}return this.floating?(((f&&f=="right")||b=="down")?2:1):(b&&(b=="down"?2:1))},_intersectsWithSides:function(e){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+(e.height/2),e.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+(e.width/2),e.width),b=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();if(this.floating&&f){return((f=="right"&&d)||(f=="left"&&!d))}else{return b&&((b=="down"&&c)||(b=="up"&&!c))}},_getDragVerticalDirection:function(){var b=this.positionAbs.top-this.lastPositionAbs.top;return b!=0&&(b>0?"down":"up")},_getDragHorizontalDirection:function(){var b=this.positionAbs.left-this.lastPositionAbs.left;return b!=0&&(b>0?"right":"left")},refresh:function(b){this._refreshItems(b);this.refreshPositions()},_connectWith:function(){var b=this.options;return b.connectWith.constructor==String?[b.connectWith]:b.connectWith},_getItemsAsjQuery:function(b){var l=this;var g=[];var e=[];var h=this._connectWith();if(h&&b){for(var d=h.length-1;d>=0;d--){var k=a(h[d]);for(var c=k.length-1;c>=0;c--){var f=a.data(k[c],"sortable");if(f&&f!=this&&!f.options.disabled){e.push([a.isFunction(f.options.items)?f.options.items.call(f.element):a(f.options.items,f.element).not(".ui-sortable-helper"),f])}}}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper"),this]);for(var d=e.length-1;d>=0;d--){e[d][0].each(function(){g.push(this)})}return a(g)},_removeCurrentsFromItems:function(){var d=this.currentItem.find(":data(sortable-item)");for(var c=0;c<this.items.length;c++){for(var b=0;b<d.length;b++){if(d[b]==this.items[c].item[0]){this.items.splice(c,1)}}}},_refreshItems:function(b){this.items=[];this.containers=[this];var h=this.items;var p=this;var f=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]];var l=this._connectWith();if(l){for(var e=l.length-1;e>=0;e--){var m=a(l[e]);for(var d=m.length-1;d>=0;d--){var g=a.data(m[d],"sortable");if(g&&g!=this&&!g.options.disabled){f.push([a.isFunction(g.options.items)?g.options.items.call(g.element[0],b,{item:this.currentItem}):a(g.options.items,g.element),g]);this.containers.push(g)}}}}for(var e=f.length-1;e>=0;e--){var k=f[e][1];var c=f[e][0];for(var d=0,n=c.length;d<n;d++){var o=a(c[d]);o.data("sortable-item",k);h.push({item:o,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){if(this.offsetParent&&this.helper){this.offset.parent=this._getParentOffset()}for(var d=this.items.length-1;d>=0;d--){var e=this.items[d];if(e.instance!=this.currentContainer&&this.currentContainer&&e.item[0]!=this.currentItem[0]){continue}var c=this.options.toleranceElement?a(this.options.toleranceElement,e.item):e.item;if(!b){e.width=c.outerWidth();e.height=c.outerHeight()}var f=c.offset();e.left=f.left;e.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers){this.options.custom.refreshContainers.call(this)}else{for(var d=this.containers.length-1;d>=0;d--){var f=this.containers[d].element.offset();this.containers[d].containerCache.left=f.left;this.containers[d].containerCache.top=f.top;this.containers[d].containerCache.width=this.containers[d].element.outerWidth();this.containers[d].containerCache.height=this.containers[d].element.outerHeight()}}},_createPlaceholder:function(d){var b=d||this,e=b.options;if(!e.placeholder||e.placeholder.constructor==String){var c=e.placeholder;e.placeholder={element:function(){var f=a(document.createElement(b.currentItem[0].nodeName)).addClass(c||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!c){f.style.visibility="hidden"}return f},update:function(f,g){if(c&&!e.forcePlaceholderSize){return}if(!g.height()){g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10))}if(!g.width()){g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=a(e.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);e.placeholder.update(b,b.placeholder)},_contactContainers:function(d){for(var c=this.containers.length-1;c>=0;c--){if(this._intersectsWith(this.containers[c].containerCache)){if(!this.containers[c].containerCache.over){if(this.currentContainer!=this.containers[c]){var h=10000;var g=null;var e=this.positionAbs[this.containers[c].floating?"left":"top"];for(var b=this.items.length-1;b>=0;b--){if(!a.ui.contains(this.containers[c].element[0],this.items[b].item[0])){continue}var f=this.items[b][this.containers[c].floating?"left":"top"];if(Math.abs(f-e)<h){h=Math.abs(f-e);g=this.items[b]}}if(!g&&!this.options.dropOnEmpty){continue}this.currentContainer=this.containers[c];g?this._rearrange(d,g,null,true):this._rearrange(d,null,this.containers[c].element,true);this._trigger("change",d,this._uiHash());this.containers[c]._trigger("change",d,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder)}this.containers[c]._trigger("over",d,this._uiHash(this));this.containers[c].containerCache.over=1}}else{if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",d,this._uiHash(this));this.containers[c].containerCache.over=0}}}},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c,this.currentItem])):(d.helper=="clone"?this.currentItem.clone():this.currentItem);if(!b.parents("body").length){a(d.appendTo!="parent"?d.appendTo:this.currentItem[0].parentNode)[0].appendChild(b[0])}if(b[0]==this.currentItem[0]){this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}}if(b[0].style.width==""||d.forceHelperSize){b.width(this.currentItem.width())}if(b[0].style.height==""||d.forceHelperSize){b.height(this.currentItem.height())}return b},_adjustOffsetFromHelper:function(b){if(b.left!=undefined){this.offset.click.left=b.left+this.margins.left}if(b.right!=undefined){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if(b.top!=undefined){this.offset.click.top=b.top+this.margins.top}if(b.bottom!=undefined){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.currentItem.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.currentItem.css("marginLeft"),10)||0),top:(parseInt(this.currentItem.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)){var c=a(e.containment)[0];var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_rearrange:function(g,f,c,e){c?c[0].appendChild(this.placeholder[0]):f.item[0].parentNode.insertBefore(this.placeholder[0],(this.direction=="down"?f.item[0]:f.item[0].nextSibling));this.counter=this.counter?++this.counter:1;var d=this,b=this.counter;window.setTimeout(function(){if(b==d.counter){d.refreshPositions(!e)}},0)},_clear:function(d,e){this.reverting=false;var f=[],b=this;if(!this._noFinalSort&&this.currentItem[0].parentNode){this.placeholder.before(this.currentItem)}this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var c in this._storedCSS){if(this._storedCSS[c]=="auto"||this._storedCSS[c]=="static"){this._storedCSS[c]=""}}this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else{this.currentItem.show()}if(this.fromOutside&&!e){f.push(function(g){this._trigger("receive",g,this._uiHash(this.fromOutside))})}if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!e){f.push(function(g){this._trigger("update",g,this._uiHash())})}if(!a.ui.contains(this.element[0],this.currentItem[0])){if(!e){f.push(function(g){this._trigger("remove",g,this._uiHash())})}for(var c=this.containers.length-1;c>=0;c--){if(a.ui.contains(this.containers[c].element[0],this.currentItem[0])&&!e){f.push((function(g){return function(h){g._trigger("receive",h,this._uiHash(this))}}).call(this,this.containers[c]));f.push((function(g){return function(h){g._trigger("update",h,this._uiHash(this))}}).call(this,this.containers[c]))}}}for(var c=this.containers.length-1;c>=0;c--){if(!e){f.push((function(g){return function(h){g._trigger("deactivate",h,this._uiHash(this))}}).call(this,this.containers[c]))}if(this.containers[c].containerCache.over){f.push((function(g){return function(h){g._trigger("out",h,this._uiHash(this))}}).call(this,this.containers[c]));this.containers[c].containerCache.over=0}}if(this._storedCursor){a("body").css("cursor",this._storedCursor)}if(this._storedOpacity){this.helper.css("opacity",this._storedOpacity)}if(this._storedZIndex){this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex)}this.dragging=false;if(this.cancelHelperRemoval){if(!e){this._trigger("beforeStop",d,this._uiHash());for(var c=0;c<f.length;c++){f[c].call(this,d)}this._trigger("stop",d,this._uiHash())}return false}if(!e){this._trigger("beforeStop",d,this._uiHash())}this.placeholder[0].parentNode.removeChild(this.placeholder[0]);if(this.helper[0]!=this.currentItem[0]){this.helper.remove()}this.helper=null;if(!e){for(var c=0;c<f.length;c++){f[c].call(this,d)}this._trigger("stop",d,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){if(a.widget.prototype._trigger.apply(this,arguments)===false){this.cancel()}},_uiHash:function(c){var b=c||this;return{helper:b.helper,placeholder:b.placeholder||a([]),position:b.position,absolutePosition:b.positionAbs,offset:b.positionAbs,item:b.currentItem,sender:c?c.element:null}}}));a.extend(a.ui.sortable,{getter:"serialize toArray",version:"1.7.2",eventPrefix:"sort",defaults:{appendTo:"parent",axis:false,cancel:":input,option",connectWith:false,containment:false,cursor:"auto",cursorAt:false,delay:0,distance:1,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1000}})})(jQuery);jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(var f=0;f<h.length;f++){if(h[f]!==null){g.data("ec.storage."+h[f],g[0].style[h[f]])}}},restore:function(g,h){for(var f=0;f<h.length;f++){if(h[f]!==null){g.css(h[f],g.data("ec.storage."+h[f]))}}},setMode:function(f,g){if(g=="toggle"){g=f.is(":hidden")?"show":"hide"}return g},getBaseline:function(g,h){var i,f;switch(g[0]){case"top":i=0;break;case"middle":i=0.5;break;case"bottom":i=1;break;default:i=g[0]/h.height}switch(g[1]){case"left":f=0;break;case"center":f=0.5;break;case"right":f=1;break;default:f=g[1]/h.width}return{x:f,y:i}},createWrapper:function(f){if(f.parent().is(".ui-effects-wrapper")){return f.parent()}var g={width:f.outerWidth(true),height:f.outerHeight(true),"float":f.css("float")};f.wrap('<div class="ui-effects-wrapper" style="font-size:100%;background:transparent;border:none;margin:0;padding:0"></div>');var j=f.parent();if(f.css("position")=="static"){j.css({position:"relative"});f.css({position:"relative"})}else{var i=f.css("top");if(isNaN(parseInt(i,10))){i="auto"}var h=f.css("left");if(isNaN(parseInt(h,10))){h="auto"}j.css({position:f.css("position"),top:i,left:h,zIndex:f.css("z-index")}).show();f.css({position:"relative",top:0,left:0})}j.css(g);return j},removeWrapper:function(f){if(f.parent().is(".ui-effects-wrapper")){return f.parent().replaceWith(f)}return f},setTransition:function(g,i,f,h){h=h||{};d.each(i,function(k,j){unit=g.cssUnit(j);if(unit[0]>0){h[j]=unit[0]*f+unit[1]}});return h},animateClass:function(h,i,k,j){var f=(typeof k=="function"?k:(j?j:null));var g=(typeof k=="string"?k:null);return this.each(function(){var q={};var o=d(this);var p=o.attr("style")||"";if(typeof p=="object"){p=p.cssText}if(h.toggle){o.hasClass(h.toggle)?h.remove=h.toggle:h.add=h.toggle}var l=d.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));if(h.add){o.addClass(h.add)}if(h.remove){o.removeClass(h.remove)}var m=d.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));if(h.add){o.removeClass(h.add)}if(h.remove){o.addClass(h.remove)}for(var r in m){if(typeof m[r]!="function"&&m[r]&&r.indexOf("Moz")==-1&&r.indexOf("length")==-1&&m[r]!=l[r]&&(r.match(/color/i)||(!r.match(/color/i)&&!isNaN(parseInt(m[r],10))))&&(l.position!="static"||(l.position=="static"&&!r.match(/left|top|bottom|right/)))){q[r]=m[r]}}o.animate(q,i,g,function(){if(typeof d(this).attr("style")=="object"){d(this).attr("style")["cssText"]="";d(this).attr("style")["cssText"]=p}else{d(this).attr("style",p)}if(h.add){d(this).addClass(h.add)}if(h.remove){d(this).removeClass(h.remove)}if(f){f.apply(this,arguments)}})})}};function c(g,f){var i=g[1]&&g[1].constructor==Object?g[1]:{};if(f){i.mode=f}var h=g[1]&&g[1].constructor!=Object?g[1]:(i.duration?i.duration:g[2]);h=d.fx.off?0:typeof h==="number"?h:d.fx.speeds[h]||d.fx.speeds._default;var j=i.callback||(d.isFunction(g[1])&&g[1])||(d.isFunction(g[2])&&g[2])||(d.isFunction(g[3])&&g[3]);return[g[0],i,h,j]}d.fn.extend({_show:d.fn.show,_hide:d.fn.hide,__toggle:d.fn.toggle,_addClass:d.fn.addClass,_removeClass:d.fn.removeClass,_toggleClass:d.fn.toggleClass,effect:function(g,f,h,i){return d.effects[g]?d.effects[g].call(this,{method:g,options:f||{},duration:h,callback:i}):null},show:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))){return this._show.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"show"))}},hide:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))){return this._hide.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"hide"))}},toggle:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))||(d.isFunction(arguments[0])||typeof arguments[0]=="boolean")){return this.__toggle.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"toggle"))}},addClass:function(g,f,i,h){return f?d.effects.animateClass.apply(this,[{add:g},f,i,h]):this._addClass(g)},removeClass:function(g,f,i,h){return f?d.effects.animateClass.apply(this,[{remove:g},f,i,h]):this._removeClass(g)},toggleClass:function(g,f,i,h){return((typeof f!=="boolean")&&f)?d.effects.animateClass.apply(this,[{toggle:g},f,i,h]):this._toggleClass(g,f)},morph:function(f,h,g,j,i){return d.effects.animateClass.apply(this,[{add:h,remove:f},g,j,i])},switchClass:function(){return this.morph.apply(this,arguments)},cssUnit:function(f){var g=this.css(f),h=[];d.each(["em","px","%","pt"],function(j,k){if(g.indexOf(k)>0){h=[parseFloat(g),k]}});return h}});d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(g,f){d.fx.step[f]=function(h){if(h.state==0){h.start=e(h.elem,f);h.end=b(h.end)}h.elem.style[f]="rgb("+[Math.max(Math.min(parseInt((h.pos*(h.end[0]-h.start[0]))+h.start[0],10),255),0),Math.max(Math.min(parseInt((h.pos*(h.end[1]-h.start[1]))+h.start[1],10),255),0),Math.max(Math.min(parseInt((h.pos*(h.end[2]-h.start[2]))+h.start[2],10),255),0)].join(",")+")"}});function b(g){var f;if(g&&g.constructor==Array&&g.length==3){return g}if(f=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(g)){return[parseInt(f[1],10),parseInt(f[2],10),parseInt(f[3],10)]}if(f=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(g)){return[parseFloat(f[1])*2.55,parseFloat(f[2])*2.55,parseFloat(f[3])*2.55]}if(f=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(g)){return[parseInt(f[1],16),parseInt(f[2],16),parseInt(f[3],16)]}if(f=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(g)){return[parseInt(f[1]+f[1],16),parseInt(f[2]+f[2],16),parseInt(f[3]+f[3],16)]}if(f=/rgba\(0, 0, 0, 0\)/.exec(g)){return a.transparent}return a[d.trim(g).toLowerCase()]}function e(h,f){var g;do{g=d.curCSS(h,f);if(g!=""&&g!="transparent"||d.nodeName(h,"body")){break}f="backgroundColor"}while(h=h.parentNode);return b(g)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]};d.easing.jswing=d.easing.swing;d.extend(d.easing,{def:"easeOutQuad",swing:function(g,h,f,j,i){return d.easing[d.easing.def](g,h,f,j,i)},easeInQuad:function(g,h,f,j,i){return j*(h/=i)*h+f},easeOutQuad:function(g,h,f,j,i){return -j*(h/=i)*(h-2)+f},easeInOutQuad:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h+f}return -j/2*((--h)*(h-2)-1)+f},easeInCubic:function(g,h,f,j,i){return j*(h/=i)*h*h+f},easeOutCubic:function(g,h,f,j,i){return j*((h=h/i-1)*h*h+1)+f},easeInOutCubic:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h+f}return j/2*((h-=2)*h*h+2)+f},easeInQuart:function(g,h,f,j,i){return j*(h/=i)*h*h*h+f},easeOutQuart:function(g,h,f,j,i){return -j*((h=h/i-1)*h*h*h-1)+f},easeInOutQuart:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h*h+f}return -j/2*((h-=2)*h*h*h-2)+f},easeInQuint:function(g,h,f,j,i){return j*(h/=i)*h*h*h*h+f},easeOutQuint:function(g,h,f,j,i){return j*((h=h/i-1)*h*h*h*h+1)+f},easeInOutQuint:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h*h*h+f}return j/2*((h-=2)*h*h*h*h+2)+f},easeInSine:function(g,h,f,j,i){return -j*Math.cos(h/i*(Math.PI/2))+j+f},easeOutSine:function(g,h,f,j,i){return j*Math.sin(h/i*(Math.PI/2))+f},easeInOutSine:function(g,h,f,j,i){return -j/2*(Math.cos(Math.PI*h/i)-1)+f},easeInExpo:function(g,h,f,j,i){return(h==0)?f:j*Math.pow(2,10*(h/i-1))+f},easeOutExpo:function(g,h,f,j,i){return(h==i)?f+j:j*(-Math.pow(2,-10*h/i)+1)+f},easeInOutExpo:function(g,h,f,j,i){if(h==0){return f}if(h==i){return f+j}if((h/=i/2)<1){return j/2*Math.pow(2,10*(h-1))+f}return j/2*(-Math.pow(2,-10*--h)+2)+f},easeInCirc:function(g,h,f,j,i){return -j*(Math.sqrt(1-(h/=i)*h)-1)+f},easeOutCirc:function(g,h,f,j,i){return j*Math.sqrt(1-(h=h/i-1)*h)+f},easeInOutCirc:function(g,h,f,j,i){if((h/=i/2)<1){return -j/2*(Math.sqrt(1-h*h)-1)+f}return j/2*(Math.sqrt(1-(h-=2)*h)+1)+f},easeInElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l)==1){return f+m}if(!k){k=l*0.3}if(h<Math.abs(m)){h=m;var j=k/4}else{var j=k/(2*Math.PI)*Math.asin(m/h)}return -(h*Math.pow(2,10*(i-=1))*Math.sin((i*l-j)*(2*Math.PI)/k))+f},easeOutElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l)==1){return f+m}if(!k){k=l*0.3}if(h<Math.abs(m)){h=m;var j=k/4}else{var j=k/(2*Math.PI)*Math.asin(m/h)}return h*Math.pow(2,-10*i)*Math.sin((i*l-j)*(2*Math.PI)/k)+m+f},easeInOutElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l/2)==2){return f+m}if(!k){k=l*(0.3*1.5)}if(h<Math.abs(m)){h=m;var j=k/4}else{var j=k/(2*Math.PI)*Math.asin(m/h)}if(i<1){return -0.5*(h*Math.pow(2,10*(i-=1))*Math.sin((i*l-j)*(2*Math.PI)/k))+f}return h*Math.pow(2,-10*(i-=1))*Math.sin((i*l-j)*(2*Math.PI)/k)*0.5+m+f},easeInBack:function(g,h,f,k,j,i){if(i==undefined){i=1.70158}return k*(h/=j)*h*((i+1)*h-i)+f},easeOutBack:function(g,h,f,k,j,i){if(i==undefined){i=1.70158}return k*((h=h/j-1)*h*((i+1)*h+i)+1)+f},easeInOutBack:function(g,h,f,k,j,i){if(i==undefined){i=1.70158}if((h/=j/2)<1){return k/2*(h*h*(((i*=(1.525))+1)*h-i))+f}return k/2*((h-=2)*h*(((i*=(1.525))+1)*h+i)+2)+f},easeInBounce:function(g,h,f,j,i){return j-d.easing.easeOutBounce(g,i-h,0,j,i)+f},easeOutBounce:function(g,h,f,j,i){if((h/=i)<(1/2.75)){return j*(7.5625*h*h)+f}else{if(h<(2/2.75)){return j*(7.5625*(h-=(1.5/2.75))*h+0.75)+f}else{if(h<(2.5/2.75)){return j*(7.5625*(h-=(2.25/2.75))*h+0.9375)+f}else{return j*(7.5625*(h-=(2.625/2.75))*h+0.984375)+f}}}},easeInOutBounce:function(g,h,f,j,i){if(h<i/2){return d.easing.easeInBounce(g,h*2,0,j,i)*0.5+f}return d.easing.easeOutBounce(g,h*2-i,0,j,i)*0.5+j*0.5+f}})})(jQuery);(function(a){a.effects.blind=function(b){return this.queue(function(){var d=a(this),c=["position","top","left"];var h=a.effects.setMode(d,b.options.mode||"hide");var g=b.options.direction||"vertical";a.effects.save(d,c);d.show();var j=a.effects.createWrapper(d).css({overflow:"hidden"});var e=(g=="vertical")?"height":"width";var i=(g=="vertical")?j.height():j.width();if(h=="show"){j.css(e,0)}var f={};f[e]=h=="show"?i:0;j.animate(f,b.duration,b.options.easing,function(){if(h=="hide"){d.hide()}a.effects.restore(d,c);a.effects.removeWrapper(d);if(b.callback){b.callback.apply(d[0],arguments)}d.dequeue()})})}})(jQuery);(function(a){a.effects.bounce=function(b){return this.queue(function(){var e=a(this),l=["position","top","left"];var k=a.effects.setMode(e,b.options.mode||"effect");var n=b.options.direction||"up";var c=b.options.distance||20;var d=b.options.times||5;var g=b.duration||250;if(/show|hide/.test(k)){l.push("opacity")}a.effects.save(e,l);e.show();a.effects.createWrapper(e);var f=(n=="up"||n=="down")?"top":"left";var p=(n=="up"||n=="left")?"pos":"neg";var c=b.options.distance||(f=="top"?e.outerHeight({margin:true})/3:e.outerWidth({margin:true})/3);if(k=="show"){e.css("opacity",0).css(f,p=="pos"?-c:c)}if(k=="hide"){c=c/(d*2)}if(k!="hide"){d--}if(k=="show"){var h={opacity:1};h[f]=(p=="pos"?"+=":"-=")+c;e.animate(h,g/2,b.options.easing);c=c/2;d--}for(var j=0;j<d;j++){var o={},m={};o[f]=(p=="pos"?"-=":"+=")+c;m[f]=(p=="pos"?"+=":"-=")+c;e.animate(o,g/2,b.options.easing).animate(m,g/2,b.options.easing);c=(k=="hide")?c*2:c/2}if(k=="hide"){var h={opacity:0};h[f]=(p=="pos"?"-=":"+=")+c;e.animate(h,g/2,b.options.easing,function(){e.hide();a.effects.restore(e,l);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}})}else{var o={},m={};o[f]=(p=="pos"?"-=":"+=")+c;m[f]=(p=="pos"?"+=":"-=")+c;e.animate(o,g/2,b.options.easing).animate(m,g/2,b.options.easing,function(){a.effects.restore(e,l);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}})}e.queue("fx",function(){e.dequeue()});e.dequeue()})}})(jQuery);(function(a){a.effects.clip=function(b){return this.queue(function(){var f=a(this),j=["position","top","left","height","width"];var i=a.effects.setMode(f,b.options.mode||"hide");var k=b.options.direction||"vertical";a.effects.save(f,j);f.show();var c=a.effects.createWrapper(f).css({overflow:"hidden"});var e=f[0].tagName=="IMG"?c:f;var g={size:(k=="vertical")?"height":"width",position:(k=="vertical")?"top":"left"};var d=(k=="vertical")?e.height():e.width();if(i=="show"){e.css(g.size,0);e.css(g.position,d/2)}var h={};h[g.size]=i=="show"?d:0;h[g.position]=i=="show"?0:d/2;e.animate(h,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(i=="hide"){f.hide()}a.effects.restore(f,j);a.effects.removeWrapper(f);if(b.callback){b.callback.apply(f[0],arguments)}f.dequeue()}})})}})(jQuery);(function(a){a.effects.drop=function(b){return this.queue(function(){var e=a(this),d=["position","top","left","opacity"];var i=a.effects.setMode(e,b.options.mode||"hide");var h=b.options.direction||"left";a.effects.save(e,d);e.show();a.effects.createWrapper(e);var f=(h=="up"||h=="down")?"top":"left";var c=(h=="up"||h=="left")?"pos":"neg";var j=b.options.distance||(f=="top"?e.outerHeight({margin:true})/2:e.outerWidth({margin:true})/2);if(i=="show"){e.css("opacity",0).css(f,c=="pos"?-j:j)}var g={opacity:i=="show"?1:0};g[f]=(i=="show"?(c=="pos"?"+=":"-="):(c=="pos"?"-=":"+="))+j;e.animate(g,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(i=="hide"){e.hide()}a.effects.restore(e,d);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}e.dequeue()}})})}})(jQuery);(function(a){a.effects.explode=function(b){return this.queue(function(){var k=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;var e=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;b.options.mode=b.options.mode=="toggle"?(a(this).is(":visible")?"hide":"show"):b.options.mode;var h=a(this).show().css("visibility","hidden");var l=h.offset();l.top-=parseInt(h.css("marginTop"),10)||0;l.left-=parseInt(h.css("marginLeft"),10)||0;var g=h.outerWidth(true);var c=h.outerHeight(true);for(var f=0;f<k;f++){for(var d=0;d<e;d++){h.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-d*(g/e),top:-f*(c/k)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/e,height:c/k,left:l.left+d*(g/e)+(b.options.mode=="show"?(d-Math.floor(e/2))*(g/e):0),top:l.top+f*(c/k)+(b.options.mode=="show"?(f-Math.floor(k/2))*(c/k):0),opacity:b.options.mode=="show"?0:1}).animate({left:l.left+d*(g/e)+(b.options.mode=="show"?0:(d-Math.floor(e/2))*(g/e)),top:l.top+f*(c/k)+(b.options.mode=="show"?0:(f-Math.floor(k/2))*(c/k)),opacity:b.options.mode=="show"?1:0},b.duration||500)}}setTimeout(function(){b.options.mode=="show"?h.css({visibility:"visible"}):h.css({visibility:"visible"}).hide();if(b.callback){b.callback.apply(h[0])}h.dequeue();a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);(function(a){a.effects.fold=function(b){return this.queue(function(){var e=a(this),k=["position","top","left"];var h=a.effects.setMode(e,b.options.mode||"hide");var o=b.options.size||15;var n=!(!b.options.horizFirst);var g=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(e,k);e.show();var d=a.effects.createWrapper(e).css({overflow:"hidden"});var i=((h=="show")!=n);var f=i?["width","height"]:["height","width"];var c=i?[d.width(),d.height()]:[d.height(),d.width()];var j=/([0-9]+)%/.exec(o);if(j){o=parseInt(j[1],10)/100*c[h=="hide"?0:1]}if(h=="show"){d.css(n?{height:0,width:o}:{height:o,width:0})}var m={},l={};m[f[0]]=h=="show"?c[0]:o;l[f[1]]=h=="show"?c[1]:0;d.animate(m,g,b.options.easing).animate(l,g,b.options.easing,function(){if(h=="hide"){e.hide()}a.effects.restore(e,k);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(e[0],arguments)}e.dequeue()})})}})(jQuery);(function(a){a.effects.highlight=function(b){return this.queue(function(){var e=a(this),d=["backgroundImage","backgroundColor","opacity"];var h=a.effects.setMode(e,b.options.mode||"show");var c=b.options.color||"#ffff99";var g=e.css("backgroundColor");a.effects.save(e,d);e.show();e.css({backgroundImage:"none",backgroundColor:c});var f={backgroundColor:g};if(h=="hide"){f.opacity=0}e.animate(f,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(h=="hide"){e.hide()}a.effects.restore(e,d);if(h=="show"&&a.browser.msie){this.style.removeAttribute("filter")}if(b.callback){b.callback.apply(this,arguments)}e.dequeue()}})})}})(jQuery);(function(a){a.effects.pulsate=function(b){return this.queue(function(){var d=a(this);var g=a.effects.setMode(d,b.options.mode||"show");var f=b.options.times||5;var e=b.duration?b.duration/2:a.fx.speeds._default/2;if(g=="hide"){f--}if(d.is(":hidden")){d.css("opacity",0);d.show();d.animate({opacity:1},e,b.options.easing);f=f-2}for(var c=0;c<f;c++){d.animate({opacity:0},e,b.options.easing).animate({opacity:1},e,b.options.easing)}if(g=="hide"){d.animate({opacity:0},e,b.options.easing,function(){d.hide();if(b.callback){b.callback.apply(this,arguments)}})}else{d.animate({opacity:0},e,b.options.easing).animate({opacity:1},e,b.options.easing,function(){if(b.callback){b.callback.apply(this,arguments)}})}d.queue("fx",function(){d.dequeue()});d.dequeue()})}})(jQuery);(function(a){a.effects.puff=function(b){return this.queue(function(){var f=a(this);var c=a.extend(true,{},b.options);var h=a.effects.setMode(f,b.options.mode||"hide");var g=parseInt(b.options.percent,10)||150;c.fade=true;var e={height:f.height(),width:f.width()};var d=g/100;f.from=(h=="hide")?e:{height:e.height*d,width:e.width*d};c.from=f.from;c.percent=(h=="hide")?g:100;c.mode=h;f.effect("scale",c,b.duration,b.callback);f.dequeue()})};a.effects.scale=function(b){return this.queue(function(){var g=a(this);var d=a.extend(true,{},b.options);var j=a.effects.setMode(g,b.options.mode||"effect");var h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:(j=="hide"?0:100));var i=b.options.direction||"both";var c=b.options.origin;if(j!="effect"){d.origin=c||["middle","center"];d.restore=true}var f={height:g.height(),width:g.width()};g.from=b.options.from||(j=="show"?{height:0,width:0}:f);var e={y:i!="horizontal"?(h/100):1,x:i!="vertical"?(h/100):1};g.to={height:f.height*e.y,width:f.width*e.x};if(b.options.fade){if(j=="show"){g.from.opacity=0;g.to.opacity=1}if(j=="hide"){g.from.opacity=1;g.to.opacity=0}}d.from=g.from;d.to=g.to;d.mode=j;g.effect("size",d,b.duration,b.callback);g.dequeue()})};a.effects.size=function(b){return this.queue(function(){var c=a(this),n=["position","top","left","width","height","overflow","opacity"];var m=["position","top","left","overflow","opacity"];var j=["width","height","overflow"];var p=["fontSize"];var k=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"];var f=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"];var g=a.effects.setMode(c,b.options.mode||"effect");var i=b.options.restore||false;var e=b.options.scale||"both";var o=b.options.origin;var d={height:c.height(),width:c.width()};c.from=b.options.from||d;c.to=b.options.to||d;if(o){var h=a.effects.getBaseline(o,d);c.from.top=(d.height-c.from.height)*h.y;c.from.left=(d.width-c.from.width)*h.x;c.to.top=(d.height-c.to.height)*h.y;c.to.left=(d.width-c.to.width)*h.x}var l={from:{y:c.from.height/d.height,x:c.from.width/d.width},to:{y:c.to.height/d.height,x:c.to.width/d.width}};if(e=="box"||e=="both"){if(l.from.y!=l.to.y){n=n.concat(k);c.from=a.effects.setTransition(c,k,l.from.y,c.from);c.to=a.effects.setTransition(c,k,l.to.y,c.to)}if(l.from.x!=l.to.x){n=n.concat(f);c.from=a.effects.setTransition(c,f,l.from.x,c.from);c.to=a.effects.setTransition(c,f,l.to.x,c.to)}}if(e=="content"||e=="both"){if(l.from.y!=l.to.y){n=n.concat(p);c.from=a.effects.setTransition(c,p,l.from.y,c.from);c.to=a.effects.setTransition(c,p,l.to.y,c.to)}}a.effects.save(c,i?n:m);c.show();a.effects.createWrapper(c);c.css("overflow","hidden").css(c.from);if(e=="content"||e=="both"){k=k.concat(["marginTop","marginBottom"]).concat(p);f=f.concat(["marginLeft","marginRight"]);j=n.concat(k).concat(f);c.find("*[width]").each(function(){child=a(this);if(i){a.effects.save(child,j)}var q={height:child.height(),width:child.width()};child.from={height:q.height*l.from.y,width:q.width*l.from.x};child.to={height:q.height*l.to.y,width:q.width*l.to.x};if(l.from.y!=l.to.y){child.from=a.effects.setTransition(child,k,l.from.y,child.from);child.to=a.effects.setTransition(child,k,l.to.y,child.to)}if(l.from.x!=l.to.x){child.from=a.effects.setTransition(child,f,l.from.x,child.from);child.to=a.effects.setTransition(child,f,l.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){if(i){a.effects.restore(child,j)}})})}c.animate(c.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(g=="hide"){c.hide()}a.effects.restore(c,i?n:m);a.effects.removeWrapper(c);if(b.callback){b.callback.apply(this,arguments)}c.dequeue()}})})}})(jQuery);(function(a){a.effects.shake=function(b){return this.queue(function(){var e=a(this),l=["position","top","left"];var k=a.effects.setMode(e,b.options.mode||"effect");var n=b.options.direction||"left";var c=b.options.distance||20;var d=b.options.times||3;var g=b.duration||b.options.duration||140;a.effects.save(e,l);e.show();a.effects.createWrapper(e);var f=(n=="up"||n=="down")?"top":"left";var p=(n=="up"||n=="left")?"pos":"neg";var h={},o={},m={};h[f]=(p=="pos"?"-=":"+=")+c;o[f]=(p=="pos"?"+=":"-=")+c*2;m[f]=(p=="pos"?"-=":"+=")+c*2;e.animate(h,g,b.options.easing);for(var j=1;j<d;j++){e.animate(o,g,b.options.easing).animate(m,g,b.options.easing)}e.animate(o,g,b.options.easing).animate(h,g/2,b.options.easing,function(){a.effects.restore(e,l);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}});e.queue("fx",function(){e.dequeue()});e.dequeue()})}})(jQuery);(function(a){a.effects.slide=function(b){return this.queue(function(){var e=a(this),d=["position","top","left"];var i=a.effects.setMode(e,b.options.mode||"show");var h=b.options.direction||"left";a.effects.save(e,d);e.show();a.effects.createWrapper(e).css({overflow:"hidden"});var f=(h=="up"||h=="down")?"top":"left";var c=(h=="up"||h=="left")?"pos":"neg";var j=b.options.distance||(f=="top"?e.outerHeight({margin:true}):e.outerWidth({margin:true}));if(i=="show"){e.css(f,c=="pos"?-j:j)}var g={};g[f]=(i=="show"?(c=="pos"?"+=":"-="):(c=="pos"?"-=":"+="))+j;e.animate(g,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(i=="hide"){e.hide()}a.effects.restore(e,d);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}e.dequeue()}})})}})(jQuery);(function(a){a.effects.transfer=function(b){return this.queue(function(){var f=a(this),h=a(b.options.to),e=h.offset(),g={top:e.top,left:e.left,height:h.innerHeight(),width:h.innerWidth()},d=f.offset(),c=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({top:d.top,left:d.left,height:f.innerHeight(),width:f.innerWidth(),position:"absolute"}).animate(g,b.duration,b.options.easing,function(){c.remove();(b.callback&&b.callback.apply(f[0],arguments));f.dequeue()})})}})(jQuery);(function(a){a.widget("ui.accordion",{_init:function(){var d=this.options,b=this;this.running=0;if(d.collapsible==a.ui.accordion.defaults.collapsible&&d.alwaysOpen!=a.ui.accordion.defaults.alwaysOpen){d.collapsible=!d.alwaysOpen}if(d.navigation){var c=this.element.find("a").filter(d.navigationFilter);if(c.length){if(c.filter(d.header).length){this.active=c}else{this.active=c.parent().parent().prev();c.addClass("ui-accordion-content-active")}}}this.element.addClass("ui-accordion ui-widget ui-helper-reset");if(this.element[0].nodeName=="UL"){this.element.children("li").addClass("ui-accordion-li-fix")}this.headers=this.element.find(d.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){a(this).removeClass("ui-state-focus")});this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");this.active=this._findActive(this.active||d.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");this.active.next().addClass("ui-accordion-content-active");a("<span/>").addClass("ui-icon "+d.icons.header).prependTo(this.headers);this.active.find(".ui-icon").toggleClass(d.icons.header).toggleClass(d.icons.headerSelected);if(a.browser.msie){this.element.find("a").css("zoom","1")}this.resize();this.element.attr("role","tablist");this.headers.attr("role","tab").bind("keydown",function(e){return b._keydown(e)}).next().attr("role","tabpanel");this.headers.not(this.active||"").attr("aria-expanded","false").attr("tabIndex","-1").next().hide();if(!this.active.length){this.headers.eq(0).attr("tabIndex","0")}else{this.active.attr("aria-expanded","true").attr("tabIndex","0")}if(!a.browser.safari){this.headers.find("a").attr("tabIndex","-1")}if(d.event){this.headers.bind((d.event)+".accordion",function(e){return b._clickHandler.call(b,e,this)})}},destroy:function(){var c=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role").unbind(".accordion").removeData("accordion");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex");this.headers.find("a").removeAttr("tabindex");this.headers.children(".ui-icon").remove();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");if(c.autoHeight||c.fillHeight){b.css("height","")}},_setData:function(b,c){if(b=="alwaysOpen"){b="collapsible";c=!c}a.widget.prototype._setData.apply(this,arguments)},_keydown:function(e){var g=this.options,f=a.ui.keyCode;if(g.disabled||e.altKey||e.ctrlKey){return}var d=this.headers.length;var b=this.headers.index(e.target);var c=false;switch(e.keyCode){case f.RIGHT:case f.DOWN:c=this.headers[(b+1)%d];break;case f.LEFT:case f.UP:c=this.headers[(b-1+d)%d];break;case f.SPACE:case f.ENTER:return this._clickHandler({target:e.target},e.target)}if(c){a(e.target).attr("tabIndex","-1");a(c).attr("tabIndex","0");c.focus();return false}return true},resize:function(){var e=this.options,d;if(e.fillSpace){if(a.browser.msie){var b=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}d=this.element.parent().height();if(a.browser.msie){this.element.parent().css("overflow",b)}this.headers.each(function(){d-=a(this).outerHeight()});var c=0;this.headers.next().each(function(){c=Math.max(c,a(this).innerHeight()-a(this).height())}).height(Math.max(0,d-c)).css("overflow","auto")}else{if(e.autoHeight){d=0;this.headers.next().each(function(){d=Math.max(d,a(this).outerHeight())}).height(d)}}},activate:function(b){var c=this._findActive(b)[0];this._clickHandler({target:c},c)},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===false?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(b,f){var d=this.options;if(d.disabled){return false}if(!b.target&&d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var h=this.active.next(),e={options:d,newHeader:a([]),oldHeader:d.active,newContent:a([]),oldContent:h},c=(this.active=a([]));this._toggle(c,h,e);return false}var g=a(b.currentTarget||f);var i=g[0]==this.active[0];if(this.running||(!d.collapsible&&i)){return false}this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");if(!i){g.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").find(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);g.next().addClass("ui-accordion-content-active")}var c=g.next(),h=this.active.next(),e={options:d,newHeader:i&&d.collapsible?a([]):g,oldHeader:this.active,newContent:i&&d.collapsible?a([]):c.find("> *"),oldContent:h.find("> *")},j=this.headers.index(this.active[0])>this.headers.index(g[0]);this.active=i?a([]):g;this._toggle(c,h,e,i,j);return false},_toggle:function(b,i,g,j,k){var d=this.options,m=this;this.toShow=b;this.toHide=i;this.data=g;var c=function(){if(!m){return}return m._completed.apply(m,arguments)};this._trigger("changestart",null,this.data);this.running=i.size()===0?b.size():i.size();if(d.animated){var f={};if(d.collapsible&&j){f={toShow:a([]),toHide:i,complete:c,down:k,autoHeight:d.autoHeight||d.fillSpace}}else{f={toShow:b,toHide:i,complete:c,down:k,autoHeight:d.autoHeight||d.fillSpace}}if(!d.proxied){d.proxied=d.animated}if(!d.proxiedDuration){d.proxiedDuration=d.duration}d.animated=a.isFunction(d.proxied)?d.proxied(f):d.proxied;d.duration=a.isFunction(d.proxiedDuration)?d.proxiedDuration(f):d.proxiedDuration;var l=a.ui.accordion.animations,e=d.duration,h=d.animated;if(!l[h]){l[h]=function(n){this.slide(n,{easing:h,duration:e||700})}}l[h](f)}else{if(d.collapsible&&j){b.toggle()}else{i.hide();b.show()}c(true)}i.prev().attr("aria-expanded","false").attr("tabIndex","-1").blur();b.prev().attr("aria-expanded","true").attr("tabIndex","0").focus()},_completed:function(b){var c=this.options;this.running=b?0:--this.running;if(this.running){return}if(c.clearStyle){this.toShow.add(this.toHide).css({height:"",overflow:""})}this._trigger("change",null,this.data)}});a.extend(a.ui.accordion,{version:"1.7.2",defaults:{active:null,alwaysOpen:true,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()==location.href.toLowerCase()}},animations:{slide:function(j,h){j=a.extend({easing:"swing",duration:300},j,h);if(!j.toHide.size()){j.toShow.animate({height:"show"},j);return}if(!j.toShow.size()){j.toHide.animate({height:"hide"},j);return}var c=j.toShow.css("overflow"),g,d={},f={},e=["height","paddingTop","paddingBottom"],b;var i=j.toShow;b=i[0].style.width;i.width(parseInt(i.parent().width(),10)-parseInt(i.css("paddingLeft"),10)-parseInt(i.css("paddingRight"),10)-(parseInt(i.css("borderLeftWidth"),10)||0)-(parseInt(i.css("borderRightWidth"),10)||0));a.each(e,function(k,m){f[m]="hide";var l=(""+a.css(j.toShow[0],m)).match(/^([\d+-.]+)(.*)$/);d[m]={value:l[1],unit:l[2]||"px"}});j.toShow.css({height:0,overflow:"hidden"}).show();j.toHide.filter(":hidden").each(j.complete).end().filter(":visible").animate(f,{step:function(k,l){if(l.prop=="height"){g=(l.now-l.start)/(l.end-l.start)}j.toShow[0].style[l.prop]=(g*d[l.prop].value)+d[l.prop].unit},duration:j.duration,easing:j.easing,complete:function(){if(!j.autoHeight){j.toShow.css("height","")}j.toShow.css("width",b);j.toShow.css({overflow:c});j.complete()}})},bounceslide:function(b){this.slide(b,{easing:b.down?"easeOutBounce":"swing",duration:b.down?1000:200})},easeslide:function(b){this.slide(b,{easing:"easeinout",duration:700})}}})})(jQuery);(function($){$.extend($.ui,{datepicker:{version:"1.7.2"}});var PROP_NAME="datepicker";function Datepicker(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._datepickerShowing=false;this._inDialog=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass="ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],dateFormat:"mm/dd/yy",firstDay:0,isRTL:false};this._defaults={showOn:"focus",showAnim:"show",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,showMonthAfterYear:false,yearRange:"-10:+10",showOtherMonths:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"normal",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false};$.extend(this._defaults,this.regional[""]);this.dpDiv=$('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>')}$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",log:function(){if(this.debug){console.log.apply("",arguments)}},setDefaults:function(settings){extendRemove(this._defaults,settings||{});return this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase();var inline=(nodeName=="div"||nodeName=="span");if(!target.id){target.id="dp"+(++this.uuid)}var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{});if(nodeName=="input"){this._connectDatepicker(target,inst)}else{if(inline){this._inlineDatepicker(target,inst)}}},_newInst:function(target,inline){var id=target[0].id.replace(/([:\[\]\.])/g,"\\\\$1");return{id:id,input:target,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:inline,dpDiv:(!inline?this.dpDiv:$('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(target,inst){var input=$(target);inst.append=$([]);inst.trigger=$([]);if(input.hasClass(this.markerClassName)){return}var appendText=this._get(inst,"appendText");var isRTL=this._get(inst,"isRTL");if(appendText){inst.append=$('<span class="'+this._appendClass+'">'+appendText+"</span>");input[isRTL?"before":"after"](inst.append)}var showOn=this._get(inst,"showOn");if(showOn=="focus"||showOn=="both"){input.focus(this._showDatepicker)}if(showOn=="button"||showOn=="both"){var buttonText=this._get(inst,"buttonText");var buttonImage=this._get(inst,"buttonImage");inst.trigger=$(this._get(inst,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:buttonImage,alt:buttonText,title:buttonText}):$('<button type="button"></button>').addClass(this._triggerClass).html(buttonImage==""?buttonText:$("<img/>").attr({src:buttonImage,alt:buttonText,title:buttonText})));input[isRTL?"before":"after"](inst.trigger);inst.trigger.click(function(){if($.datepicker._datepickerShowing&&$.datepicker._lastInput==target){$.datepicker._hideDatepicker()}else{$.datepicker._showDatepicker(target)}return false})}input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst)},_inlineDatepicker:function(target,inst){var divSpan=$(target);if(divSpan.hasClass(this.markerClassName)){return}divSpan.addClass(this.markerClassName).append(inst.dpDiv).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst);this._setDate(inst,this._getDefaultDate(inst));this._updateDatepicker(inst);this._updateAlternate(inst)},_dialogDatepicker:function(input,dateText,onSelect,settings,pos){var inst=this._dialogInst;if(!inst){var id="dp"+(++this.uuid);this._dialogInput=$('<input type="text" id="'+id+'" size="1" style="position: absolute; top: -100px;"/>');this._dialogInput.keydown(this._doKeyDown);$("body").append(this._dialogInput);inst=this._dialogInst=this._newInst(this._dialogInput,false);inst.settings={};$.data(this._dialogInput[0],PROP_NAME,inst)}extendRemove(inst.settings,settings||{});this._dialogInput.val(dateText);this._pos=(pos?(pos.length?pos:[pos.pageX,pos.pageY]):null);if(!this._pos){var browserWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;var browserHeight=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[(browserWidth/2)-100+scrollX,(browserHeight/2)-150+scrollY]}this._dialogInput.css("left",this._pos[0]+"px").css("top",this._pos[1]+"px");inst.settings.onSelect=onSelect;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);if($.blockUI){$.blockUI(this.dpDiv)}$.data(this._dialogInput[0],PROP_NAME,inst);return this},_destroyDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();$.removeData(target,PROP_NAME);if(nodeName=="input"){inst.append.remove();inst.trigger.remove();$target.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress)}else{if(nodeName=="div"||nodeName=="span"){$target.removeClass(this.markerClassName).empty()}}},_enableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=false;inst.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().removeClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)})},_disableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=true;inst.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().addClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)});this._disabledInputs[this._disabledInputs.length]=target},_isDisabledDatepicker:function(target){if(!target){return false}for(var i=0;i<this._disabledInputs.length;i++){if(this._disabledInputs[i]==target){return true}}return false},_getInst:function(target){try{return $.data(target,PROP_NAME)}catch(err){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(target,name,value){var inst=this._getInst(target);if(arguments.length==2&&typeof name=="string"){return(name=="defaults"?$.extend({},$.datepicker._defaults):(inst?(name=="all"?$.extend({},inst.settings):this._get(inst,name)):null))}var settings=name||{};if(typeof name=="string"){settings={};settings[name]=value}if(inst){if(this._curInst==inst){this._hideDatepicker(null)}var date=this._getDateDatepicker(target);extendRemove(inst.settings,settings);this._setDateDatepicker(target,date);this._updateDatepicker(inst)}},_changeDatepicker:function(target,name,value){this._optionDatepicker(target,name,value)},_refreshDatepicker:function(target){var inst=this._getInst(target);if(inst){this._updateDatepicker(inst)}},_setDateDatepicker:function(target,date,endDate){var inst=this._getInst(target);if(inst){this._setDate(inst,date,endDate);this._updateDatepicker(inst);this._updateAlternate(inst)}},_getDateDatepicker:function(target){var inst=this._getInst(target);if(inst&&!inst.inline){this._setDateFromField(inst)}return(inst?this._getDate(inst):null)},_doKeyDown:function(event){var inst=$.datepicker._getInst(event.target);var handled=true;var isRTL=inst.dpDiv.is(".ui-datepicker-rtl");inst._keyEvent=true;if($.datepicker._datepickerShowing){switch(event.keyCode){case 9:$.datepicker._hideDatepicker(null,"");break;case 13:var sel=$("td."+$.datepicker._dayOverClass+", td."+$.datepicker._currentClass,inst.dpDiv);if(sel[0]){$.datepicker._selectDay(event.target,inst.selectedMonth,inst.selectedYear,sel[0])}else{$.datepicker._hideDatepicker(null,$.datepicker._get(inst,"duration"))}return false;break;case 27:$.datepicker._hideDatepicker(null,$.datepicker._get(inst,"duration"));break;case 33:$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths")),"M");break;case 34:$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths")),"M");break;case 35:if(event.ctrlKey||event.metaKey){$.datepicker._clearDate(event.target)}handled=event.ctrlKey||event.metaKey;break;case 36:if(event.ctrlKey||event.metaKey){$.datepicker._gotoToday(event.target)}handled=event.ctrlKey||event.metaKey;break;case 37:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,(isRTL?+1:-1),"D")}handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey){$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths")),"M")}break;case 38:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,-7,"D")}handled=event.ctrlKey||event.metaKey;break;case 39:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,(isRTL?-1:+1),"D")}handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey){$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths")),"M")}break;case 40:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,+7,"D")}handled=event.ctrlKey||event.metaKey;break;default:handled=false}}else{if(event.keyCode==36&&event.ctrlKey){$.datepicker._showDatepicker(this)}else{handled=false}}if(handled){event.preventDefault();event.stopPropagation()}},_doKeyPress:function(event){var inst=$.datepicker._getInst(event.target);if($.datepicker._get(inst,"constrainInput")){var chars=$.datepicker._possibleChars($.datepicker._get(inst,"dateFormat"));var chr=String.fromCharCode(event.charCode==undefined?event.keyCode:event.charCode);return event.ctrlKey||(chr<" "||!chars||chars.indexOf(chr)>-1)}},_showDatepicker:function(input){input=input.target||input;if(input.nodeName.toLowerCase()!="input"){input=$("input",input.parentNode)[0]}if($.datepicker._isDisabledDatepicker(input)||$.datepicker._lastInput==input){return}var inst=$.datepicker._getInst(input);var beforeShow=$.datepicker._get(inst,"beforeShow");extendRemove(inst.settings,(beforeShow?beforeShow.apply(input,[input,inst]):{}));$.datepicker._hideDatepicker(null,"");$.datepicker._lastInput=input;$.datepicker._setDateFromField(inst);if($.datepicker._inDialog){input.value=""}if(!$.datepicker._pos){$.datepicker._pos=$.datepicker._findPos(input);$.datepicker._pos[1]+=input.offsetHeight}var isFixed=false;$(input).parents().each(function(){isFixed|=$(this).css("position")=="fixed";return !isFixed});if(isFixed&&$.browser.opera){$.datepicker._pos[0]-=document.documentElement.scrollLeft;$.datepicker._pos[1]-=document.documentElement.scrollTop}var offset={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null;inst.rangeStart=null;inst.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});$.datepicker._updateDatepicker(inst);offset=$.datepicker._checkOffset(inst,offset,isFixed);inst.dpDiv.css({position:($.datepicker._inDialog&&$.blockUI?"static":(isFixed?"fixed":"absolute")),display:"none",left:offset.left+"px",top:offset.top+"px"});if(!inst.inline){var showAnim=$.datepicker._get(inst,"showAnim")||"show";var duration=$.datepicker._get(inst,"duration");var postProcess=function(){$.datepicker._datepickerShowing=true;if($.browser.msie&&parseInt($.browser.version,10)<7){$("iframe.ui-datepicker-cover").css({width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4})}};if($.effects&&$.effects[showAnim]){inst.dpDiv.show(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[showAnim](duration,postProcess)}if(duration==""){postProcess()}if(inst.input[0].type!="hidden"){inst.input[0].focus()}$.datepicker._curInst=inst}},_updateDatepicker:function(inst){var dims={width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4};var self=this;inst.dpDiv.empty().append(this._generateHTML(inst)).find("iframe.ui-datepicker-cover").css({width:dims.width,height:dims.height}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){$(this).removeClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).removeClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).removeClass("ui-datepicker-next-hover")}}).bind("mouseover",function(){if(!self._isDisabledDatepicker(inst.inline?inst.dpDiv.parent()[0]:inst.input[0])){$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");$(this).addClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).addClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).addClass("ui-datepicker-next-hover")}}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();var numMonths=this._getNumberOfMonths(inst);var cols=numMonths[1];var width=17;if(cols>1){inst.dpDiv.addClass("ui-datepicker-multi-"+cols).css("width",(width*cols)+"em")}else{inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("")}inst.dpDiv[(numMonths[0]!=1||numMonths[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");inst.dpDiv[(this._get(inst,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");if(inst.input&&inst.input[0].type!="hidden"&&inst==$.datepicker._curInst){$(inst.input[0]).focus()}},_checkOffset:function(inst,offset,isFixed){var dpWidth=inst.dpDiv.outerWidth();var dpHeight=inst.dpDiv.outerHeight();var inputWidth=inst.input?inst.input.outerWidth():0;var inputHeight=inst.input?inst.input.outerHeight():0;var viewWidth=(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)+$(document).scrollLeft();var viewHeight=(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)+$(document).scrollTop();offset.left-=(this._get(inst,"isRTL")?(dpWidth-inputWidth):0);offset.left-=(isFixed&&offset.left==inst.input.offset().left)?$(document).scrollLeft():0;offset.top-=(isFixed&&offset.top==(inst.input.offset().top+inputHeight))?$(document).scrollTop():0;offset.left-=(offset.left+dpWidth>viewWidth&&viewWidth>dpWidth)?Math.abs(offset.left+dpWidth-viewWidth):0;offset.top-=(offset.top+dpHeight>viewHeight&&viewHeight>dpHeight)?Math.abs(offset.top+dpHeight+inputHeight*2-viewHeight):0;return offset},_findPos:function(obj){while(obj&&(obj.type=="hidden"||obj.nodeType!=1)){obj=obj.nextSibling}var position=$(obj).offset();return[position.left,position.top]},_hideDatepicker:function(input,duration){var inst=this._curInst;if(!inst||(input&&inst!=$.data(input,PROP_NAME))){return}if(inst.stayOpen){this._selectDate("#"+inst.id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear))}inst.stayOpen=false;if(this._datepickerShowing){duration=(duration!=null?duration:this._get(inst,"duration"));var showAnim=this._get(inst,"showAnim");var postProcess=function(){$.datepicker._tidyDialog(inst)};if(duration!=""&&$.effects&&$.effects[showAnim]){inst.dpDiv.hide(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[(duration==""?"hide":(showAnim=="slideDown"?"slideUp":(showAnim=="fadeIn"?"fadeOut":"hide")))](duration,postProcess)}if(duration==""){this._tidyDialog(inst)}var onClose=this._get(inst,"onClose");if(onClose){onClose.apply((inst.input?inst.input[0]:null),[(inst.input?inst.input.val():""),inst])}this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if($.blockUI){$.unblockUI();$("body").append(this.dpDiv)}}this._inDialog=false}this._curInst=null},_tidyDialog:function(inst){inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(event){if(!$.datepicker._curInst){return}var $target=$(event.target);if(($target.parents("#"+$.datepicker._mainDivId).length==0)&&!$target.hasClass($.datepicker.markerClassName)&&!$target.hasClass($.datepicker._triggerClass)&&$.datepicker._datepickerShowing&&!($.datepicker._inDialog&&$.blockUI)){$.datepicker._hideDatepicker(null,"")}},_adjustDate:function(id,offset,period){var target=$(id);var inst=this._getInst(target[0]);if(this._isDisabledDatepicker(target[0])){return}this._adjustInstDate(inst,offset+(period=="M"?this._get(inst,"showCurrentAtPos"):0),period);this._updateDatepicker(inst)},_gotoToday:function(id){var target=$(id);var inst=this._getInst(target[0]);if(this._get(inst,"gotoCurrent")&&inst.currentDay){inst.selectedDay=inst.currentDay;inst.drawMonth=inst.selectedMonth=inst.currentMonth;inst.drawYear=inst.selectedYear=inst.currentYear}else{var date=new Date();inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear()}this._notifyChange(inst);this._adjustDate(target)},_selectMonthYear:function(id,select,period){var target=$(id);var inst=this._getInst(target[0]);inst._selectingMonthYear=false;inst["selected"+(period=="M"?"Month":"Year")]=inst["draw"+(period=="M"?"Month":"Year")]=parseInt(select.options[select.selectedIndex].value,10);this._notifyChange(inst);this._adjustDate(target)},_clickMonthYear:function(id){var target=$(id);var inst=this._getInst(target[0]);if(inst.input&&inst._selectingMonthYear&&!$.browser.msie){inst.input[0].focus()}inst._selectingMonthYear=!inst._selectingMonthYear},_selectDay:function(id,month,year,td){var target=$(id);if($(td).hasClass(this._unselectableClass)||this._isDisabledDatepicker(target[0])){return}var inst=this._getInst(target[0]);inst.selectedDay=inst.currentDay=$("a",td).html();inst.selectedMonth=inst.currentMonth=month;inst.selectedYear=inst.currentYear=year;if(inst.stayOpen){inst.endDay=inst.endMonth=inst.endYear=null}this._selectDate(id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear));if(inst.stayOpen){inst.rangeStart=this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay));this._updateDatepicker(inst)}},_clearDate:function(id){var target=$(id);var inst=this._getInst(target[0]);inst.stayOpen=false;inst.endDay=inst.endMonth=inst.endYear=inst.rangeStart=null;this._selectDate(target,"")},_selectDate:function(id,dateStr){var target=$(id);var inst=this._getInst(target[0]);dateStr=(dateStr!=null?dateStr:this._formatDate(inst));if(inst.input){inst.input.val(dateStr)}this._updateAlternate(inst);var onSelect=this._get(inst,"onSelect");if(onSelect){onSelect.apply((inst.input?inst.input[0]:null),[dateStr,inst])}else{if(inst.input){inst.input.trigger("change")}}if(inst.inline){this._updateDatepicker(inst)}else{if(!inst.stayOpen){this._hideDatepicker(null,this._get(inst,"duration"));this._lastInput=inst.input[0];if(typeof(inst.input[0])!="object"){inst.input[0].focus()}this._lastInput=null}}},_updateAlternate:function(inst){var altField=this._get(inst,"altField");if(altField){var altFormat=this._get(inst,"altFormat")||this._get(inst,"dateFormat");var date=this._getDate(inst);dateStr=this.formatDate(altFormat,date,this._getFormatConfig(inst));$(altField).each(function(){$(this).val(dateStr)})}},noWeekends:function(date){var day=date.getDay();return[(day>0&&day<6),""]},iso8601Week:function(date){var checkDate=new Date(date.getFullYear(),date.getMonth(),date.getDate());var firstMon=new Date(checkDate.getFullYear(),1-1,4);var firstDay=firstMon.getDay()||7;firstMon.setDate(firstMon.getDate()+1-firstDay);if(firstDay<4&&checkDate<firstMon){checkDate.setDate(checkDate.getDate()-3);return $.datepicker.iso8601Week(checkDate)}else{if(checkDate>new Date(checkDate.getFullYear(),12-1,28)){firstDay=new Date(checkDate.getFullYear()+1,1-1,4).getDay()||7;if(firstDay>4&&(checkDate.getDay()||7)<firstDay-3){return 1}}}return Math.floor(((checkDate-firstMon)/86400000)/7)+1},parseDate:function(format,value,settings){if(format==null||value==null){throw"Invalid arguments"}value=(typeof value=="object"?value.toString():value+"");if(value==""){return null}var shortYearCutoff=(settings?settings.shortYearCutoff:null)||this._defaults.shortYearCutoff;var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var year=-1;var month=-1;var day=-1;var doy=-1;var literal=false;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};var getNumber=function(match){lookAhead(match);var origSize=(match=="@"?14:(match=="y"?4:(match=="o"?3:2)));var size=origSize;var num=0;while(size>0&&iValue<value.length&&value.charAt(iValue)>="0"&&value.charAt(iValue)<="9"){num=num*10+parseInt(value.charAt(iValue++),10);size--}if(size==origSize){throw"Missing number at position "+iValue}return num};var getName=function(match,shortNames,longNames){var names=(lookAhead(match)?longNames:shortNames);var size=0;for(var j=0;j<names.length;j++){size=Math.max(size,names[j].length)}var name="";var iInit=iValue;while(size>0&&iValue<value.length){name+=value.charAt(iValue++);for(var i=0;i<names.length;i++){if(name==names[i]){return i+1}}size--}throw"Unknown name at position "+iInit};var checkLiteral=function(){if(value.charAt(iValue)!=format.charAt(iFormat)){throw"Unexpected literal at position "+iValue}iValue++};var iValue=0;for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{checkLiteral()}}else{switch(format.charAt(iFormat)){case"d":day=getNumber("d");break;case"D":getName("D",dayNamesShort,dayNames);break;case"o":doy=getNumber("o");break;case"m":month=getNumber("m");break;case"M":month=getName("M",monthNamesShort,monthNames);break;case"y":year=getNumber("y");break;case"@":var date=new Date(getNumber("@"));year=date.getFullYear();month=date.getMonth()+1;day=date.getDate();break;case"'":if(lookAhead("'")){checkLiteral()}else{literal=true}break;default:checkLiteral()}}}if(year==-1){year=new Date().getFullYear()}else{if(year<100){year+=new Date().getFullYear()-new Date().getFullYear()%100+(year<=shortYearCutoff?0:-100)}}if(doy>-1){month=1;day=doy;do{var dim=this._getDaysInMonth(year,month-1);if(day<=dim){break}month++;day-=dim}while(true)}var date=this._daylightSavingAdjust(new Date(year,month-1,day));if(date.getFullYear()!=year||date.getMonth()+1!=month||date.getDate()!=day){throw"Invalid date"}return date},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TIMESTAMP:"@",W3C:"yy-mm-dd",formatDate:function(format,date,settings){if(!date){return""}var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};var formatNumber=function(match,value,len){var num=""+value;if(lookAhead(match)){while(num.length<len){num="0"+num}}return num};var formatName=function(match,value,shortNames,longNames){return(lookAhead(match)?longNames[value]:shortNames[value])};var output="";var literal=false;if(date){for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{output+=format.charAt(iFormat)}}else{switch(format.charAt(iFormat)){case"d":output+=formatNumber("d",date.getDate(),2);break;case"D":output+=formatName("D",date.getDay(),dayNamesShort,dayNames);break;case"o":var doy=date.getDate();for(var m=date.getMonth()-1;m>=0;m--){doy+=this._getDaysInMonth(date.getFullYear(),m)}output+=formatNumber("o",doy,3);break;case"m":output+=formatNumber("m",date.getMonth()+1,2);break;case"M":output+=formatName("M",date.getMonth(),monthNamesShort,monthNames);break;case"y":output+=(lookAhead("y")?date.getFullYear():(date.getYear()%100<10?"0":"")+date.getYear()%100);break;case"@":output+=date.getTime();break;case"'":if(lookAhead("'")){output+="'"}else{literal=true}break;default:output+=format.charAt(iFormat)}}}}return output},_possibleChars:function(format){var chars="";var literal=false;for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{chars+=format.charAt(iFormat)}}else{switch(format.charAt(iFormat)){case"d":case"m":case"y":case"@":chars+="0123456789";break;case"D":case"M":return null;case"'":if(lookAhead("'")){chars+="'"}else{literal=true}break;default:chars+=format.charAt(iFormat)}}}return chars},_get:function(inst,name){return inst.settings[name]!==undefined?inst.settings[name]:this._defaults[name]},_setDateFromField:function(inst){var dateFormat=this._get(inst,"dateFormat");var dates=inst.input?inst.input.val():null;inst.endDay=inst.endMonth=inst.endYear=null;var date=defaultDate=this._getDefaultDate(inst);var settings=this._getFormatConfig(inst);try{date=this.parseDate(dateFormat,dates,settings)||defaultDate}catch(event){this.log(event);date=defaultDate}inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();inst.currentDay=(dates?date.getDate():0);inst.currentMonth=(dates?date.getMonth():0);inst.currentYear=(dates?date.getFullYear():0);this._adjustInstDate(inst)},_getDefaultDate:function(inst){var date=this._determineDate(this._get(inst,"defaultDate"),new Date());var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);return date},_determineDate:function(date,defaultDate){var offsetNumeric=function(offset){var date=new Date();date.setDate(date.getDate()+offset);return date};var offsetString=function(offset,getDaysInMonth){var date=new Date();var year=date.getFullYear();var month=date.getMonth();var day=date.getDate();var pattern=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;var matches=pattern.exec(offset);while(matches){switch(matches[2]||"d"){case"d":case"D":day+=parseInt(matches[1],10);break;case"w":case"W":day+=parseInt(matches[1],10)*7;break;case"m":case"M":month+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break;case"y":case"Y":year+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break}matches=pattern.exec(offset)}return new Date(year,month,day)};date=(date==null?defaultDate:(typeof date=="string"?offsetString(date,this._getDaysInMonth):(typeof date=="number"?(isNaN(date)?defaultDate:offsetNumeric(date)):date)));date=(date&&date.toString()=="Invalid Date"?defaultDate:date);if(date){date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0)}return this._daylightSavingAdjust(date)},_daylightSavingAdjust:function(date){if(!date){return null}date.setHours(date.getHours()>12?date.getHours()+2:0);return date},_setDate:function(inst,date,endDate){var clear=!(date);var origMonth=inst.selectedMonth;var origYear=inst.selectedYear;date=this._determineDate(date,new Date());inst.selectedDay=inst.currentDay=date.getDate();inst.drawMonth=inst.selectedMonth=inst.currentMonth=date.getMonth();inst.drawYear=inst.selectedYear=inst.currentYear=date.getFullYear();if(origMonth!=inst.selectedMonth||origYear!=inst.selectedYear){this._notifyChange(inst)}this._adjustInstDate(inst);if(inst.input){inst.input.val(clear?"":this._formatDate(inst))}},_getDate:function(inst){var startDate=(!inst.currentYear||(inst.input&&inst.input.val()=="")?null:this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return startDate},_generateHTML:function(inst){var today=new Date();today=this._daylightSavingAdjust(new Date(today.getFullYear(),today.getMonth(),today.getDate()));var isRTL=this._get(inst,"isRTL");var showButtonPanel=this._get(inst,"showButtonPanel");var hideIfNoPrevNext=this._get(inst,"hideIfNoPrevNext");var navigationAsDateFormat=this._get(inst,"navigationAsDateFormat");var numMonths=this._getNumberOfMonths(inst);var showCurrentAtPos=this._get(inst,"showCurrentAtPos");var stepMonths=this._get(inst,"stepMonths");var stepBigMonths=this._get(inst,"stepBigMonths");var isMultiMonth=(numMonths[0]!=1||numMonths[1]!=1);var currentDate=this._daylightSavingAdjust((!inst.currentDay?new Date(9999,9,9):new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");var drawMonth=inst.drawMonth-showCurrentAtPos;var drawYear=inst.drawYear;if(drawMonth<0){drawMonth+=12;drawYear--}if(maxDate){var maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),maxDate.getMonth()-numMonths[1]+1,maxDate.getDate()));maxDraw=(minDate&&maxDraw<minDate?minDate:maxDraw);while(this._daylightSavingAdjust(new Date(drawYear,drawMonth,1))>maxDraw){drawMonth--;if(drawMonth<0){drawMonth=11;drawYear--}}}inst.drawMonth=drawMonth;inst.drawYear=drawYear;var prevText=this._get(inst,"prevText");prevText=(!navigationAsDateFormat?prevText:this.formatDate(prevText,this._daylightSavingAdjust(new Date(drawYear,drawMonth-stepMonths,1)),this._getFormatConfig(inst)));var prev=(this._canAdjustMonth(inst,-1,drawYear,drawMonth)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'+inst.id+"', -"+stepMonths+", 'M');\" title=\""+prevText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"e":"w")+'">'+prevText+"</span></a>":(hideIfNoPrevNext?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+prevText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"e":"w")+'">'+prevText+"</span></a>"));var nextText=this._get(inst,"nextText");nextText=(!navigationAsDateFormat?nextText:this.formatDate(nextText,this._daylightSavingAdjust(new Date(drawYear,drawMonth+stepMonths,1)),this._getFormatConfig(inst)));var next=(this._canAdjustMonth(inst,+1,drawYear,drawMonth)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'+inst.id+"', +"+stepMonths+", 'M');\" title=\""+nextText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"w":"e")+'">'+nextText+"</span></a>":(hideIfNoPrevNext?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+nextText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"w":"e")+'">'+nextText+"</span></a>"));var currentText=this._get(inst,"currentText");var gotoDate=(this._get(inst,"gotoCurrent")&&inst.currentDay?currentDate:today);currentText=(!navigationAsDateFormat?currentText:this.formatDate(currentText,gotoDate,this._getFormatConfig(inst)));var controls=(!inst.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery.datepicker._hideDatepicker();">'+this._get(inst,"closeText")+"</button>":"");var buttonPanel=(showButtonPanel)?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(isRTL?controls:"")+(this._isInRange(inst,gotoDate)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery.datepicker._gotoToday(\'#'+inst.id+"');\">"+currentText+"</button>":"")+(isRTL?"":controls)+"</div>":"";var firstDay=parseInt(this._get(inst,"firstDay"),10);firstDay=(isNaN(firstDay)?0:firstDay);var dayNames=this._get(inst,"dayNames");var dayNamesShort=this._get(inst,"dayNamesShort");var dayNamesMin=this._get(inst,"dayNamesMin");var monthNames=this._get(inst,"monthNames");var monthNamesShort=this._get(inst,"monthNamesShort");var beforeShowDay=this._get(inst,"beforeShowDay");var showOtherMonths=this._get(inst,"showOtherMonths");var calculateWeek=this._get(inst,"calculateWeek")||this.iso8601Week;var endDate=inst.endDay?this._daylightSavingAdjust(new Date(inst.endYear,inst.endMonth,inst.endDay)):currentDate;var defaultDate=this._getDefaultDate(inst);var html="";for(var row=0;row<numMonths[0];row++){var group="";for(var col=0;col<numMonths[1];col++){var selectedDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,inst.selectedDay));var cornerClass=" ui-corner-all";var calender="";if(isMultiMonth){calender+='<div class="ui-datepicker-group ui-datepicker-group-';switch(col){case 0:calender+="first";cornerClass=" ui-corner-"+(isRTL?"right":"left");break;case numMonths[1]-1:calender+="last";cornerClass=" ui-corner-"+(isRTL?"left":"right");break;default:calender+="middle";cornerClass="";break}calender+='">'}calender+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+cornerClass+'">'+(/all|left/.test(cornerClass)&&row==0?(isRTL?next:prev):"")+(/all|right/.test(cornerClass)&&row==0?(isRTL?prev:next):"")+this._generateMonthYearHeader(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,row>0||col>0,monthNames,monthNamesShort)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var thead="";for(var dow=0;dow<7;dow++){var day=(dow+firstDay)%7;thead+="<th"+((dow+firstDay+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+dayNames[day]+'">'+dayNamesMin[day]+"</span></th>"}calender+=thead+"</tr></thead><tbody>";var daysInMonth=this._getDaysInMonth(drawYear,drawMonth);if(drawYear==inst.selectedYear&&drawMonth==inst.selectedMonth){inst.selectedDay=Math.min(inst.selectedDay,daysInMonth)}var leadDays=(this._getFirstDayOfMonth(drawYear,drawMonth)-firstDay+7)%7;var numRows=(isMultiMonth?6:Math.ceil((leadDays+daysInMonth)/7));var printDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,1-leadDays));for(var dRow=0;dRow<numRows;dRow++){calender+="<tr>";var tbody="";for(var dow=0;dow<7;dow++){var daySettings=(beforeShowDay?beforeShowDay.apply((inst.input?inst.input[0]:null),[printDate]):[true,""]);var otherMonth=(printDate.getMonth()!=drawMonth);var unselectable=otherMonth||!daySettings[0]||(minDate&&printDate<minDate)||(maxDate&&printDate>maxDate);tbody+='<td class="'+((dow+firstDay+6)%7>=5?" ui-datepicker-week-end":"")+(otherMonth?" ui-datepicker-other-month":"")+((printDate.getTime()==selectedDate.getTime()&&drawMonth==inst.selectedMonth&&inst._keyEvent)||(defaultDate.getTime()==printDate.getTime()&&defaultDate.getTime()==selectedDate.getTime())?" "+this._dayOverClass:"")+(unselectable?" "+this._unselectableClass+" ui-state-disabled":"")+(otherMonth&&!showOtherMonths?"":" "+daySettings[1]+(printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" "+this._currentClass:"")+(printDate.getTime()==today.getTime()?" ui-datepicker-today":""))+'"'+((!otherMonth||showOtherMonths)&&daySettings[2]?' title="'+daySettings[2]+'"':"")+(unselectable?"":" onclick=\"DP_jQuery.datepicker._selectDay('#"+inst.id+"',"+drawMonth+","+drawYear+', this);return false;"')+">"+(otherMonth?(showOtherMonths?printDate.getDate():" "):(unselectable?'<span class="ui-state-default">'+printDate.getDate()+"</span>":'<a class="ui-state-default'+(printDate.getTime()==today.getTime()?" ui-state-highlight":"")+(printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" ui-state-active":"")+'" href="#">'+printDate.getDate()+"</a>"))+"</td>";printDate.setDate(printDate.getDate()+1);printDate=this._daylightSavingAdjust(printDate)}calender+=tbody+"</tr>"}drawMonth++;if(drawMonth>11){drawMonth=0;drawYear++}calender+="</tbody></table>"+(isMultiMonth?"</div>"+((numMonths[0]>0&&col==numMonths[1]-1)?'<div class="ui-datepicker-row-break"></div>':""):"");group+=calender}html+=group}html+=buttonPanel+($.browser.msie&&parseInt($.browser.version,10)<7&&!inst.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");inst._keyEvent=false;return html},_generateMonthYearHeader:function(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,secondary,monthNames,monthNamesShort){minDate=(inst.rangeStart&&minDate&&selectedDate<minDate?selectedDate:minDate);var changeMonth=this._get(inst,"changeMonth");var changeYear=this._get(inst,"changeYear");var showMonthAfterYear=this._get(inst,"showMonthAfterYear");var html='<div class="ui-datepicker-title">';var monthHtml="";if(secondary||!changeMonth){monthHtml+='<span class="ui-datepicker-month">'+monthNames[drawMonth]+"</span> "}else{var inMinYear=(minDate&&minDate.getFullYear()==drawYear);var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);monthHtml+='<select class="ui-datepicker-month" onchange="DP_jQuery.datepicker._selectMonthYear(\'#'+inst.id+"', this, 'M');\" onclick=\"DP_jQuery.datepicker._clickMonthYear('#"+inst.id+"');\">";for(var month=0;month<12;month++){if((!inMinYear||month>=minDate.getMonth())&&(!inMaxYear||month<=maxDate.getMonth())){monthHtml+='<option value="'+month+'"'+(month==drawMonth?' selected="selected"':"")+">"+monthNamesShort[month]+"</option>"}}monthHtml+="</select>"}if(!showMonthAfterYear){html+=monthHtml+((secondary||changeMonth||changeYear)&&(!(changeMonth&&changeYear))?" ":"")}if(secondary||!changeYear){html+='<span class="ui-datepicker-year">'+drawYear+"</span>"}else{var years=this._get(inst,"yearRange").split(":");var year=0;var endYear=0;if(years.length!=2){year=drawYear-10;endYear=drawYear+10}else{if(years[0].charAt(0)=="+"||years[0].charAt(0)=="-"){year=drawYear+parseInt(years[0],10);endYear=drawYear+parseInt(years[1],10)}else{year=parseInt(years[0],10);endYear=parseInt(years[1],10)}}year=(minDate?Math.max(year,minDate.getFullYear()):year);endYear=(maxDate?Math.min(endYear,maxDate.getFullYear()):endYear);html+='<select class="ui-datepicker-year" onchange="DP_jQuery.datepicker._selectMonthYear(\'#'+inst.id+"', this, 'Y');\" onclick=\"DP_jQuery.datepicker._clickMonthYear('#"+inst.id+"');\">";for(;year<=endYear;year++){html+='<option value="'+year+'"'+(year==drawYear?' selected="selected"':"")+">"+year+"</option>"}html+="</select>"}if(showMonthAfterYear){html+=(secondary||changeMonth||changeYear?" ":"")+monthHtml}html+="</div>";return html},_adjustInstDate:function(inst,offset,period){var year=inst.drawYear+(period=="Y"?offset:0);var month=inst.drawMonth+(period=="M"?offset:0);var day=Math.min(inst.selectedDay,this._getDaysInMonth(year,month))+(period=="D"?offset:0);var date=this._daylightSavingAdjust(new Date(year,month,day));var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();if(period=="M"||period=="Y"){this._notifyChange(inst)}},_notifyChange:function(inst){var onChange=this._get(inst,"onChangeMonthYear");if(onChange){onChange.apply((inst.input?inst.input[0]:null),[inst.selectedYear,inst.selectedMonth+1,inst])}},_getNumberOfMonths:function(inst){var numMonths=this._get(inst,"numberOfMonths");return(numMonths==null?[1,1]:(typeof numMonths=="number"?[1,numMonths]:numMonths))},_getMinMaxDate:function(inst,minMax,checkRange){var date=this._determineDate(this._get(inst,minMax+"Date"),null);return(!checkRange||!inst.rangeStart?date:(!date||inst.rangeStart>date?inst.rangeStart:date))},_getDaysInMonth:function(year,month){return 32-new Date(year,month,32).getDate()},_getFirstDayOfMonth:function(year,month){return new Date(year,month,1).getDay()},_canAdjustMonth:function(inst,offset,curYear,curMonth){var numMonths=this._getNumberOfMonths(inst);var date=this._daylightSavingAdjust(new Date(curYear,curMonth+(offset<0?offset:numMonths[1]),1));if(offset<0){date.setDate(this._getDaysInMonth(date.getFullYear(),date.getMonth()))}return this._isInRange(inst,date)},_isInRange:function(inst,date){var newMinDate=(!inst.rangeStart?null:this._daylightSavingAdjust(new Date(inst.selectedYear,inst.selectedMonth,inst.selectedDay)));newMinDate=(newMinDate&&inst.rangeStart<newMinDate?inst.rangeStart:newMinDate);var minDate=newMinDate||this._getMinMaxDate(inst,"min");var maxDate=this._getMinMaxDate(inst,"max");return((!minDate||date>=minDate)&&(!maxDate||date<=maxDate))},_getFormatConfig:function(inst){var shortYearCutoff=this._get(inst,"shortYearCutoff");shortYearCutoff=(typeof shortYearCutoff!="string"?shortYearCutoff:new Date().getFullYear()%100+parseInt(shortYearCutoff,10));return{shortYearCutoff:shortYearCutoff,dayNamesShort:this._get(inst,"dayNamesShort"),dayNames:this._get(inst,"dayNames"),monthNamesShort:this._get(inst,"monthNamesShort"),monthNames:this._get(inst,"monthNames")}},_formatDate:function(inst,day,month,year){if(!day){inst.currentDay=inst.selectedDay;inst.currentMonth=inst.selectedMonth;inst.currentYear=inst.selectedYear}var date=(day?(typeof day=="object"?day:this._daylightSavingAdjust(new Date(year,month,day))):this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return this.formatDate(this._get(inst,"dateFormat"),date,this._getFormatConfig(inst))}});function extendRemove(target,props){$.extend(target,props);for(var name in props){if(props[name]==null||props[name]==undefined){target[name]=props[name]}}return target}function isArray(a){return(a&&(($.browser.safari&&typeof a=="object"&&a.length)||(a.constructor&&a.constructor.toString().match(/\Array\(\)/))))}$.fn.datepicker=function(options){if(!$.datepicker.initialized){$(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv);$.datepicker.initialized=true}var otherArgs=Array.prototype.slice.call(arguments,1);if(typeof options=="string"&&(options=="isDisabled"||options=="getDate")){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}if(options=="option"&&arguments.length==2&&typeof arguments[1]=="string"){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}return this.each(function(){typeof options=="string"?$.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this].concat(otherArgs)):$.datepicker._attachDatepicker(this,options)})};$.datepicker=new Datepicker();$.datepicker.initialized=false;$.datepicker.uuid=new Date().getTime();$.datepicker.version="1.7.2";window.DP_jQuery=$})(jQuery);(function(c){var b={dragStart:"start.draggable",drag:"drag.draggable",dragStop:"stop.draggable",maxHeight:"maxHeight.resizable",minHeight:"minHeight.resizable",maxWidth:"maxWidth.resizable",minWidth:"minWidth.resizable",resizeStart:"start.resizable",resize:"drag.resizable",resizeStop:"stop.resizable"},a="ui-dialog ui-widget ui-widget-content ui-corner-all ";c.widget("ui.dialog",{_init:function(){this.originalTitle=this.element.attr("title");var l=this,m=this.options,j=m.title||this.originalTitle||" ",e=c.ui.dialog.getTitleId(this.element),k=(this.uiDialog=c("<div/>")).appendTo(document.body).hide().addClass(a+m.dialogClass).css({position:"absolute",overflow:"hidden",zIndex:m.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(n){(m.closeOnEscape&&n.keyCode&&n.keyCode==c.ui.keyCode.ESCAPE&&l.close(n))}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(n){l.moveToTop(false,n)}),g=this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(k),f=(this.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(k),i=c('<a href="#"/>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){i.addClass("ui-state-hover")},function(){i.removeClass("ui-state-hover")}).focus(function(){i.addClass("ui-state-focus")}).blur(function(){i.removeClass("ui-state-focus")}).mousedown(function(n){n.stopPropagation()}).click(function(n){l.close(n);return false}).appendTo(f),h=(this.uiDialogTitlebarCloseText=c("<span/>")).addClass("ui-icon ui-icon-closethick").text(m.closeText).appendTo(i),d=c("<span/>").addClass("ui-dialog-title").attr("id",e).html(j).prependTo(f);f.find("*").add(f).disableSelection();(m.draggable&&c.fn.draggable&&this._makeDraggable());(m.resizable&&c.fn.resizable&&this._makeResizable());this._createButtons(m.buttons);this._isOpen=false;(m.bgiframe&&c.fn.bgiframe&&k.bgiframe());(m.autoOpen&&this.open())},destroy:function(){(this.overlay&&this.overlay.destroy());this.uiDialog.hide();this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");this.uiDialog.remove();(this.originalTitle&&this.element.attr("title",this.originalTitle))},close:function(f){var d=this;if(false===d._trigger("beforeclose",f)){return}(d.overlay&&d.overlay.destroy());d.uiDialog.unbind("keypress.ui-dialog");(d.options.hide?d.uiDialog.hide(d.options.hide,function(){d._trigger("close",f)}):d.uiDialog.hide()&&d._trigger("close",f));c.ui.dialog.overlay.resize();d._isOpen=false;if(d.options.modal){var e=0;c(".ui-dialog").each(function(){if(this!=d.uiDialog[0]){e=Math.max(e,c(this).css("z-index"))}});c.ui.dialog.maxZ=e}},isOpen:function(){return this._isOpen},moveToTop:function(f,e){if((this.options.modal&&!f)||(!this.options.stack&&!this.options.modal)){return this._trigger("focus",e)}if(this.options.zIndex>c.ui.dialog.maxZ){c.ui.dialog.maxZ=this.options.zIndex}(this.overlay&&this.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=++c.ui.dialog.maxZ));var d={scrollTop:this.element.attr("scrollTop"),scrollLeft:this.element.attr("scrollLeft")};this.uiDialog.css("z-index",++c.ui.dialog.maxZ);this.element.attr(d);this._trigger("focus",e)},open:function(){if(this._isOpen){return}var e=this.options,d=this.uiDialog;this.overlay=e.modal?new c.ui.dialog.overlay(this):null;(d.next().length&&d.appendTo("body"));this._size();this._position(e.position);d.show(e.show);this.moveToTop(true);(e.modal&&d.bind("keypress.ui-dialog",function(h){if(h.keyCode!=c.ui.keyCode.TAB){return}var g=c(":tabbable",this),i=g.filter(":first")[0],f=g.filter(":last")[0];if(h.target==f&&!h.shiftKey){setTimeout(function(){i.focus()},1)}else{if(h.target==i&&h.shiftKey){setTimeout(function(){f.focus()},1)}}}));c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();this._trigger("open");this._isOpen=true},_createButtons:function(g){var f=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");this.uiDialog.find(".ui-dialog-buttonpane").remove();(typeof g=="object"&&g!==null&&c.each(g,function(){return !(d=true)}));if(d){c.each(g,function(h,i){c('<button type="button"></button>').addClass("ui-state-default ui-corner-all").text(h).click(function(){i.apply(f.element[0],arguments)}).hover(function(){c(this).addClass("ui-state-hover")},function(){c(this).removeClass("ui-state-hover")}).focus(function(){c(this).addClass("ui-state-focus")}).blur(function(){c(this).removeClass("ui-state-focus")}).appendTo(e)});e.appendTo(this.uiDialog)}},_makeDraggable:function(){var d=this,f=this.options,e;this.uiDialog.draggable({cancel:".ui-dialog-content",handle:".ui-dialog-titlebar",containment:"document",start:function(){e=f.height;c(this).height(c(this).height()).addClass("ui-dialog-dragging");(f.dragStart&&f.dragStart.apply(d.element[0],arguments))},drag:function(){(f.drag&&f.drag.apply(d.element[0],arguments))},stop:function(){c(this).removeClass("ui-dialog-dragging").height(e);(f.dragStop&&f.dragStop.apply(d.element[0],arguments));c.ui.dialog.overlay.resize()}})},_makeResizable:function(g){g=(g===undefined?this.options.resizable:g);var d=this,f=this.options,e=typeof g=="string"?g:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",alsoResize:this.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:f.minHeight,start:function(){c(this).addClass("ui-dialog-resizing");(f.resizeStart&&f.resizeStart.apply(d.element[0],arguments))},resize:function(){(f.resize&&f.resize.apply(d.element[0],arguments))},handles:e,stop:function(){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();(f.resizeStop&&f.resizeStop.apply(d.element[0],arguments));c.ui.dialog.overlay.resize()}}).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_position:function(i){var e=c(window),f=c(document),g=f.scrollTop(),d=f.scrollLeft(),h=g;if(c.inArray(i,["center","top","right","bottom","left"])>=0){i=[i=="right"||i=="left"?i:"center",i=="top"||i=="bottom"?i:"middle"]}if(i.constructor!=Array){i=["center","middle"]}if(i[0].constructor==Number){d+=i[0]}else{switch(i[0]){case"left":d+=0;break;case"right":d+=e.width()-this.uiDialog.outerWidth();break;default:case"center":d+=(e.width()-this.uiDialog.outerWidth())/2}}if(i[1].constructor==Number){g+=i[1]}else{switch(i[1]){case"top":g+=0;break;case"bottom":g+=e.height()-this.uiDialog.outerHeight();break;default:case"middle":g+=(e.height()-this.uiDialog.outerHeight())/2}}g=Math.max(g,h);this.uiDialog.css({top:g,left:d})},_setData:function(e,f){(b[e]&&this.uiDialog.data(b[e],f));switch(e){case"buttons":this._createButtons(f);break;case"closeText":this.uiDialogTitlebarCloseText.text(f);break;case"dialogClass":this.uiDialog.removeClass(this.options.dialogClass).addClass(a+f);break;case"draggable":(f?this._makeDraggable():this.uiDialog.draggable("destroy"));break;case"height":this.uiDialog.height(f);break;case"position":this._position(f);break;case"resizable":var d=this.uiDialog,g=this.uiDialog.is(":data(resizable)");(g&&!f&&d.resizable("destroy"));(g&&typeof f=="string"&&d.resizable("option","handles",f));(g||this._makeResizable(f));break;case"title":c(".ui-dialog-title",this.uiDialogTitlebar).html(f||" ");break;case"width":this.uiDialog.width(f);break}c.widget.prototype._setData.apply(this,arguments)},_size:function(){var e=this.options;this.element.css({height:0,minHeight:0,width:"auto"});var d=this.uiDialog.css({height:"auto",width:e.width}).height();this.element.css({minHeight:Math.max(e.minHeight-d,0),height:e.height=="auto"?"auto":Math.max(e.height-d,0)})}});c.extend(c.ui.dialog,{version:"1.7.2",defaults:{autoOpen:true,bgiframe:false,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1000},getter:"isOpen",uuid:0,maxZ:0,getTitleId:function(d){return"ui-dialog-title-"+(d.attr("id")||++this.uuid)},overlay:function(d){this.$el=c.ui.dialog.overlay.create(d)}});c.extend(c.ui.dialog.overlay,{instances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(d){return d+".dialog-overlay"}).join(" "),create:function(e){if(this.instances.length===0){setTimeout(function(){if(c.ui.dialog.overlay.instances.length){c(document).bind(c.ui.dialog.overlay.events,function(f){var g=c(f.target).parents(".ui-dialog").css("zIndex")||0;return(g>c.ui.dialog.overlay.maxZ)})}},1);c(document).bind("keydown.dialog-overlay",function(f){(e.options.closeOnEscape&&f.keyCode&&f.keyCode==c.ui.keyCode.ESCAPE&&e.close(f))});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var d=c("<div></div>").appendTo(document.body).addClass("ui-widget-overlay").css({width:this.width(),height:this.height()});(e.options.bgiframe&&c.fn.bgiframe&&d.bgiframe());this.instances.push(d);return d},destroy:function(d){this.instances.splice(c.inArray(this.instances,d),1);if(this.instances.length===0){c([document,window]).unbind(".dialog-overlay")}d.remove();var e=0;c.each(this.instances,function(){e=Math.max(e,this.css("z-index"))});this.maxZ=e},height:function(){if(c.browser.msie&&c.browser.version<7){var e=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);var d=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);if(e<d){return c(window).height()+"px"}else{return e+"px"}}else{return c(document).height()+"px"}},width:function(){if(c.browser.msie&&c.browser.version<7){var d=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);var e=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);if(d<e){return c(window).width()+"px"}else{return d+"px"}}else{return c(document).width()+"px"}},resize:function(){var d=c([]);c.each(c.ui.dialog.overlay.instances,function(){d=d.add(this)});d.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);(function(a){a.widget("ui.progressbar",{_init:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this._valueMin(),"aria-valuemax":this._valueMax(),"aria-valuenow":this._value()});this.valueDiv=a('<div class="ui-progressbar-value ui-widget-header ui-corner-left"></div>').appendTo(this.element);this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow").removeData("progressbar").unbind(".progressbar");this.valueDiv.remove();a.widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===undefined){return this._value()}this._setData("value",b);return this},_setData:function(b,c){switch(b){case"value":this.options.value=c;this._refreshValue();this._trigger("change",null,{});break}a.widget.prototype._setData.apply(this,arguments)},_value:function(){var b=this.options.value;if(b<this._valueMin()){b=this._valueMin()}if(b>this._valueMax()){b=this._valueMax()}return b},_valueMin:function(){var b=0;return b},_valueMax:function(){var b=100;return b},_refreshValue:function(){var b=this.value();this.valueDiv[b==this._valueMax()?"addClass":"removeClass"]("ui-corner-right");this.valueDiv.width(b+"%");this.element.attr("aria-valuenow",b)}});a.extend(a.ui.progressbar,{version:"1.7.2",defaults:{value:0}})})(jQuery);(function(a){a.widget("ui.slider",a.extend({},a.ui.mouse,{_init:function(){var b=this,c=this.options;this._keySliding=false;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");this.range=a([]);if(c.range){if(c.range===true){this.range=a("<div></div>");if(!c.values){c.values=[this._valueMin(),this._valueMin()]}if(c.values.length&&c.values.length!=2){c.values=[c.values[0],c.values[0]]}}else{this.range=a("<div></div>")}this.range.appendTo(this.element).addClass("ui-slider-range");if(c.range=="min"||c.range=="max"){this.range.addClass("ui-slider-range-"+c.range)}this.range.addClass("ui-widget-header")}if(a(".ui-slider-handle",this.element).length==0){a('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}if(c.values&&c.values.length){while(a(".ui-slider-handle",this.element).length<c.values.length){a('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}}this.handles=a(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(d){d.preventDefault()}).hover(function(){if(!c.disabled){a(this).addClass("ui-state-hover")}},function(){a(this).removeClass("ui-state-hover")}).focus(function(){if(!c.disabled){a(".ui-slider .ui-state-focus").removeClass("ui-state-focus");a(this).addClass("ui-state-focus")}else{a(this).blur()}}).blur(function(){a(this).removeClass("ui-state-focus")});this.handles.each(function(d){a(this).data("index.ui-slider-handle",d)});this.handles.keydown(function(i){var f=true;var e=a(this).data("index.ui-slider-handle");if(b.options.disabled){return}switch(i.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:f=false;if(!b._keySliding){b._keySliding=true;a(this).addClass("ui-state-active");b._start(i,e)}break}var g,d,h=b._step();if(b.options.values&&b.options.values.length){g=d=b.values(e)}else{g=d=b.value()}switch(i.keyCode){case a.ui.keyCode.HOME:d=b._valueMin();break;case a.ui.keyCode.END:d=b._valueMax();break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(g==b._valueMax()){return}d=g+h;break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(g==b._valueMin()){return}d=g-h;break}b._slide(i,e,d);return f}).keyup(function(e){var d=a(this).data("index.ui-slider-handle");if(b._keySliding){b._stop(e,d);b._change(e,d);b._keySliding=false;a(this).removeClass("ui-state-active")}});this._refreshValue()},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy()},_mouseCapture:function(d){var e=this.options;if(e.disabled){return false}this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();var h={x:d.pageX,y:d.pageY};var j=this._normValueFromMouse(h);var c=this._valueMax()-this._valueMin()+1,f;var k=this,i;this.handles.each(function(l){var m=Math.abs(j-k.values(l));if(c>m){c=m;f=a(this);i=l}});if(e.range==true&&this.values(1)==e.min){f=a(this.handles[++i])}this._start(d,i);k._handleIndex=i;f.addClass("ui-state-active").focus();var g=f.offset();var b=!a(d.target).parents().andSelf().is(".ui-slider-handle");this._clickOffset=b?{left:0,top:0}:{left:d.pageX-g.left-(f.width()/2),top:d.pageY-g.top-(f.height()/2)-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};j=this._normValueFromMouse(h);this._slide(d,i,j);return true},_mouseStart:function(b){return true},_mouseDrag:function(d){var b={x:d.pageX,y:d.pageY};var c=this._normValueFromMouse(b);this._slide(d,this._handleIndex,c);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._handleIndex=null;this._clickOffset=null;return false},_detectOrientation:function(){this.orientation=this.options.orientation=="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(d){var c,h;if("horizontal"==this.orientation){c=this.elementSize.width;h=d.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{c=this.elementSize.height;h=d.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}var f=(h/c);if(f>1){f=1}if(f<0){f=0}if("vertical"==this.orientation){f=1-f}var e=this._valueMax()-this._valueMin(),i=f*e,b=i%this.options.step,g=this._valueMin()+i-b;if(b>(this.options.step/2)){g+=this.options.step}return parseFloat(g.toFixed(5))},_start:function(d,c){var b={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){b.value=this.values(c);b.values=this.values()}this._trigger("start",d,b)},_slide:function(f,e,d){var g=this.handles[e];if(this.options.values&&this.options.values.length){var b=this.values(e?0:1);if((this.options.values.length==2&&this.options.range===true)&&((e==0&&d>b)||(e==1&&d<b))){d=b}if(d!=this.values(e)){var c=this.values();c[e]=d;var h=this._trigger("slide",f,{handle:this.handles[e],value:d,values:c});var b=this.values(e?0:1);if(h!==false){this.values(e,d,(f.type=="mousedown"&&this.options.animate),true)}}}else{if(d!=this.value()){var h=this._trigger("slide",f,{handle:this.handles[e],value:d});if(h!==false){this._setData("value",d,(f.type=="mousedown"&&this.options.animate))}}}},_stop:function(d,c){var b={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){b.value=this.values(c);b.values=this.values()}this._trigger("stop",d,b)},_change:function(d,c){var b={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){b.value=this.values(c);b.values=this.values()}this._trigger("change",d,b)},value:function(b){if(arguments.length){this._setData("value",b);this._change(null,0)}return this._value()},values:function(b,e,c,d){if(arguments.length>1){this.options.values[b]=e;this._refreshValue(c);if(!d){this._change(null,b)}}if(arguments.length){if(this.options.values&&this.options.values.length){return this._values(b)}else{return this.value()}}else{return this._values()}},_setData:function(b,d,c){a.widget.prototype._setData.apply(this,arguments);switch(b){case"disabled":if(d){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled")}else{this.handles.removeAttr("disabled")}case"orientation":this._detectOrientation();this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue(c);break;case"value":this._refreshValue(c);break}},_step:function(){var b=this.options.step;return b},_value:function(){var b=this.options.value;if(b<this._valueMin()){b=this._valueMin()}if(b>this._valueMax()){b=this._valueMax()}return b},_values:function(b){if(arguments.length){var c=this.options.values[b];if(c<this._valueMin()){c=this._valueMin()}if(c>this._valueMax()){c=this._valueMax()}return c}else{return this.options.values}},_valueMin:function(){var b=this.options.min;return b},_valueMax:function(){var b=this.options.max;return b},_refreshValue:function(c){var f=this.options.range,d=this.options,l=this;if(this.options.values&&this.options.values.length){var i,h;this.handles.each(function(p,n){var o=(l.values(p)-l._valueMin())/(l._valueMax()-l._valueMin())*100;var m={};m[l.orientation=="horizontal"?"left":"bottom"]=o+"%";a(this).stop(1,1)[c?"animate":"css"](m,d.animate);if(l.options.range===true){if(l.orientation=="horizontal"){(p==0)&&l.range.stop(1,1)[c?"animate":"css"]({left:o+"%"},d.animate);(p==1)&&l.range[c?"animate":"css"]({width:(o-lastValPercent)+"%"},{queue:false,duration:d.animate})}else{(p==0)&&l.range.stop(1,1)[c?"animate":"css"]({bottom:(o)+"%"},d.animate);(p==1)&&l.range[c?"animate":"css"]({height:(o-lastValPercent)+"%"},{queue:false,duration:d.animate})}}lastValPercent=o})}else{var j=this.value(),g=this._valueMin(),k=this._valueMax(),e=k!=g?(j-g)/(k-g)*100:0;var b={};b[l.orientation=="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[c?"animate":"css"](b,d.animate);(f=="min")&&(this.orientation=="horizontal")&&this.range.stop(1,1)[c?"animate":"css"]({width:e+"%"},d.animate);(f=="max")&&(this.orientation=="horizontal")&&this.range[c?"animate":"css"]({width:(100-e)+"%"},{queue:false,duration:d.animate});(f=="min")&&(this.orientation=="vertical")&&this.range.stop(1,1)[c?"animate":"css"]({height:e+"%"},d.animate);(f=="max")&&(this.orientation=="vertical")&&this.range[c?"animate":"css"]({height:(100-e)+"%"},{queue:false,duration:d.animate})}}}));a.extend(a.ui.slider,{getter:"value values",version:"1.7.2",eventPrefix:"slide",defaults:{animate:false,delay:0,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null}})})(jQuery);(function(a){a.widget("ui.tabs",{_init:function(){if(this.options.deselectable!==undefined){this.options.collapsible=this.options.deselectable}this._tabify(true)},_setData:function(b,c){if(b=="selected"){if(this.options.collapsible&&c==this.options.selected){return}this.select(c)}else{this.options[b]=c;if(b=="deselectable"){this.options.collapsible=c}this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+a.data(b)},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+a.data(this.list[0]));return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(c,b){return{tab:c,panel:b,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(n){this.list=this.element.children("ul:first");this.lis=a("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return a("a",this)[0]});this.panels=a([]);var p=this,d=this.options;var c=/^#.+/;this.anchors.each(function(r,o){var q=a(o).attr("href");var s=q.split("#")[0],u;if(s&&(s===location.toString().split("#")[0]||(u=a("base")[0])&&s===u.href)){q=o.hash;o.href=q}if(c.test(q)){p.panels=p.panels.add(p._sanitizeSelector(q))}else{if(q!="#"){a.data(o,"href.tabs",q);a.data(o,"load.tabs",q.replace(/#.*$/,""));var w=p._tabId(o);o.href="#"+w;var v=a("#"+w);if(!v.length){v=a(d.panelTemplate).attr("id",w).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(p.panels[r-1]||p.list);v.data("destroy.tabs",true)}p.panels=p.panels.add(v)}else{d.disabled.push(r)}}});if(n){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(d.selected===undefined){if(location.hash){this.anchors.each(function(q,o){if(o.hash==location.hash){d.selected=q;return false}})}if(typeof d.selected!="number"&&d.cookie){d.selected=parseInt(p._cookie(),10)}if(typeof d.selected!="number"&&this.lis.filter(".ui-tabs-selected").length){d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}d.selected=d.selected||0}else{if(d.selected===null){d.selected=-1}}d.selected=((d.selected>=0&&this.anchors[d.selected])||d.selected<0)?d.selected:0;d.disabled=a.unique(d.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(q,o){return p.lis.index(q)}))).sort();if(a.inArray(d.selected,d.disabled)!=-1){d.disabled.splice(a.inArray(d.selected,d.disabled),1)}this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");if(d.selected>=0&&this.anchors.length){this.panels.eq(d.selected).removeClass("ui-tabs-hide");this.lis.eq(d.selected).addClass("ui-tabs-selected ui-state-active");p.element.queue("tabs",function(){p._trigger("show",null,p._ui(p.anchors[d.selected],p.panels[d.selected]))});this.load(d.selected)}a(window).bind("unload",function(){p.lis.add(p.anchors).unbind(".tabs");p.lis=p.anchors=p.panels=null})}else{d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}this.element[d.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");if(d.cookie){this._cookie(d.selected,d.cookie)}for(var g=0,m;(m=this.lis[g]);g++){a(m)[a.inArray(g,d.disabled)!=-1&&!a(m).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled")}if(d.cache===false){this.anchors.removeData("cache.tabs")}this.lis.add(this.anchors).unbind(".tabs");if(d.event!="mouseover"){var f=function(o,i){if(i.is(":not(.ui-state-disabled)")){i.addClass("ui-state-"+o)}};var j=function(o,i){i.removeClass("ui-state-"+o)};this.lis.bind("mouseover.tabs",function(){f("hover",a(this))});this.lis.bind("mouseout.tabs",function(){j("hover",a(this))});this.anchors.bind("focus.tabs",function(){f("focus",a(this).closest("li"))});this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var b,h;if(d.fx){if(a.isArray(d.fx)){b=d.fx[0];h=d.fx[1]}else{b=h=d.fx}}function e(i,o){i.css({display:""});if(a.browser.msie&&o.opacity){i[0].style.removeAttribute("filter")}}var k=h?function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.hide().removeClass("ui-tabs-hide").animate(h,h.duration||"normal",function(){e(o,h);p._trigger("show",null,p._ui(i,o[0]))})}:function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");p._trigger("show",null,p._ui(i,o[0]))};var l=b?function(o,i){i.animate(b,b.duration||"normal",function(){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");e(i,b);p.element.dequeue("tabs")})}:function(o,i,q){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");p.element.dequeue("tabs")};this.anchors.bind(d.event+".tabs",function(){var o=this,r=a(this).closest("li"),i=p.panels.filter(":not(.ui-tabs-hide)"),q=a(p._sanitizeSelector(this.hash));if((r.hasClass("ui-tabs-selected")&&!d.collapsible)||r.hasClass("ui-state-disabled")||r.hasClass("ui-state-processing")||p._trigger("select",null,p._ui(this,q[0]))===false){this.blur();return false}d.selected=p.anchors.index(this);p.abort();if(d.collapsible){if(r.hasClass("ui-tabs-selected")){d.selected=-1;if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){l(o,i)}).dequeue("tabs");this.blur();return false}else{if(!i.length){if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this));this.blur();return false}}}if(d.cookie){p._cookie(d.selected,d.cookie)}if(q.length){if(i.length){p.element.queue("tabs",function(){l(o,i)})}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this))}else{throw"jQuery UI Tabs: Mismatching fragment identifier."}if(a.browser.msie){this.blur()}});this.anchors.bind("click.tabs",function(){return false})},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var c=a.data(this,"href.tabs");if(c){this.href=c}var d=a(this).unbind(".tabs");a.each(["href","load","cache"],function(e,f){d.removeData(f+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){if(a.data(this,"destroy.tabs")){a(this).remove()}else{a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}});if(b.cookie){this._cookie(null,b.cookie)}},add:function(e,d,c){if(c===undefined){c=this.anchors.length}var b=this,g=this.options,i=a(g.tabTemplate.replace(/#\{href\}/g,e).replace(/#\{label\}/g,d)),h=!e.indexOf("#")?e.replace("#",""):this._tabId(a("a",i)[0]);i.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var f=a("#"+h);if(!f.length){f=a(g.panelTemplate).attr("id",h).data("destroy.tabs",true)}f.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(c>=this.lis.length){i.appendTo(this.list);f.appendTo(this.list[0].parentNode)}else{i.insertBefore(this.lis[c]);f.insertBefore(this.panels[c])}g.disabled=a.map(g.disabled,function(k,j){return k>=c?++k:k});this._tabify();if(this.anchors.length==1){i.addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[c],this.panels[c]))},remove:function(b){var d=this.options,e=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();if(e.hasClass("ui-tabs-selected")&&this.anchors.length>1){this.select(b+(b+1<this.anchors.length?1:-1))}d.disabled=a.map(a.grep(d.disabled,function(g,f){return g!=b}),function(g,f){return g>=b?--g:g});this._tabify();this._trigger("remove",null,this._ui(e.find("a")[0],c[0]))},enable:function(b){var c=this.options;if(a.inArray(b,c.disabled)==-1){return}this.lis.eq(b).removeClass("ui-state-disabled");c.disabled=a.grep(c.disabled,function(e,d){return e!=b});this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]))},disable:function(c){var b=this,d=this.options;if(c!=d.selected){this.lis.eq(c).addClass("ui-state-disabled");d.disabled.push(c);d.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}},select:function(b){if(typeof b=="string"){b=this.anchors.index(this.anchors.filter("[href$="+b+"]"))}else{if(b===null){b=-1}}if(b==-1&&this.options.collapsible){b=this.options.selected}this.anchors.eq(b).trigger(this.options.event+".tabs")},load:function(e){var c=this,g=this.options,b=this.anchors.eq(e)[0],d=a.data(b,"load.tabs");this.abort();if(!d||this.element.queue("tabs").length!==0&&a.data(b,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(e).addClass("ui-state-processing");if(g.spinner){var f=a("span",b);f.data("label.tabs",f.html()).html(g.spinner)}this.xhr=a.ajax(a.extend({},g.ajaxOptions,{url:d,success:function(i,h){a(c._sanitizeSelector(b.hash)).html(i);c._cleanup();if(g.cache){a.data(b,"cache.tabs",true)}c._trigger("load",null,c._ui(c.anchors[e],c.panels[e]));try{g.ajaxOptions.success(i,h)}catch(j){}c.element.dequeue("tabs")}}))},abort:function(){this.element.queue([]);this.panels.stop(false,true);if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup()},url:function(c,b){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",b)},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.7.2",getter:"length",defaults:{ajaxOptions:null,cache:false,cookie:null,collapsible:false,disabled:[],event:"click",fx:null,idPrefix:"ui-tabs-",panelTemplate:"<div></div>",spinner:"<em>Loading…</em>",tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>'}});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(d,f){var b=this,g=this.options;var c=b._rotate||(b._rotate=function(h){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var i=g.selected;b.select(++i<b.anchors.length?i:0)},d);if(h){h.stopPropagation()}});var e=b._unrotate||(b._unrotate=!f?function(h){if(h.clientX){b.rotate(null)}}:function(h){t=g.selected;c()});if(d){this.element.bind("tabsshow",c);this.anchors.bind(g.event+".tabs",e);c()}else{clearTimeout(b.rotation);this.element.unbind("tabsshow",c);this.anchors.unbind(g.event+".tabs",e);delete this._rotate;delete this._unrotate}}})})(jQuery); \ No newline at end of file diff --git a/media/dashboard/js/jquery.form.js b/media/dashboard/js/jquery.form.js new file mode 100644 index 000000000..be8c0b6bf --- /dev/null +++ b/media/dashboard/js/jquery.form.js @@ -0,0 +1,675 @@ +/*! + * jQuery Form Plugin + * version: 2.43 (12-MAR-2010) + * @requires jQuery v1.3.2 or later + * + * Examples and documentation at: http://malsup.com/jquery/form/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ +;(function($) { + +/* + Usage Note: + ----------- + Do not use both ajaxSubmit and ajaxForm on the same form. These + functions are intended to be exclusive. Use ajaxSubmit if you want + to bind your own submit handler to the form. For example, + + $(document).ready(function() { + $('#myForm').bind('submit', function() { + $(this).ajaxSubmit({ + target: '#output' + }); + return false; // <-- important! + }); + }); + + Use ajaxForm when you want the plugin to manage all the event binding + for you. For example, + + $(document).ready(function() { + $('#myForm').ajaxForm({ + target: '#output' + }); + }); + + When using ajaxForm, the ajaxSubmit function will be invoked for you + at the appropriate time. +*/ + +/** + * ajaxSubmit() provides a mechanism for immediately submitting + * an HTML form using AJAX. + */ +$.fn.ajaxSubmit = function(options) { + // fast fail if nothing selected (http://dev.jquery.com/ticket/2752) + if (!this.length) { + log('ajaxSubmit: skipping submit process - no element selected'); + return this; + } + + if (typeof options == 'function') + options = { success: options }; + + var url = $.trim(this.attr('action')); + if (url) { + // clean url (don't include hash vaue) + url = (url.match(/^([^#]+)/)||[])[1]; + } + url = url || window.location.href || ''; + + options = $.extend({ + url: url, + type: this.attr('method') || 'GET', + iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' + }, options || {}); + + // hook for manipulating the form data before it is extracted; + // convenient for use with rich editors like tinyMCE or FCKEditor + var veto = {}; + this.trigger('form-pre-serialize', [this, options, veto]); + if (veto.veto) { + log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); + return this; + } + + // provide opportunity to alter form data before it is serialized + if (options.beforeSerialize && options.beforeSerialize(this, options) === false) { + log('ajaxSubmit: submit aborted via beforeSerialize callback'); + return this; + } + + var a = this.formToArray(options.semantic); + if (options.data) { + options.extraData = options.data; + for (var n in options.data) { + if(options.data[n] instanceof Array) { + for (var k in options.data[n]) + a.push( { name: n, value: options.data[n][k] } ); + } + else + a.push( { name: n, value: options.data[n] } ); + } + } + + // give pre-submit callback an opportunity to abort the submit + if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { + log('ajaxSubmit: submit aborted via beforeSubmit callback'); + return this; + } + + // fire vetoable 'validate' event + this.trigger('form-submit-validate', [a, this, options, veto]); + if (veto.veto) { + log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); + return this; + } + + var q = $.param(a); + + if (options.type.toUpperCase() == 'GET') { + options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; + options.data = null; // data is null for 'get' + } + else + options.data = q; // data is the query string for 'post' + + var $form = this, callbacks = []; + if (options.resetForm) callbacks.push(function() { $form.resetForm(); }); + if (options.clearForm) callbacks.push(function() { $form.clearForm(); }); + + // perform a load on the target only if dataType is not provided + if (!options.dataType && options.target) { + var oldSuccess = options.success || function(){}; + callbacks.push(function(data) { + var fn = options.replaceTarget ? 'replaceWith' : 'html'; + $(options.target)[fn](data).each(oldSuccess, arguments); + }); + } + else if (options.success) + callbacks.push(options.success); + + options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg + for (var i=0, max=callbacks.length; i < max; i++) + callbacks[i].apply(options, [data, status, xhr || $form, $form]); + }; + + // are there files to upload? + var files = $('input:file', this).fieldValue(); + var found = false; + for (var j=0; j < files.length; j++) + if (files[j]) + found = true; + + var multipart = false; +// var mp = 'multipart/form-data'; +// multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp); + + // options.iframe allows user to force iframe mode + // 06-NOV-09: now defaulting to iframe mode if file input is detected + if ((files.length && options.iframe !== false) || options.iframe || found || multipart) { + // hack to fix Safari hang (thanks to Tim Molendijk for this) + // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d + if (options.closeKeepAlive) + $.get(options.closeKeepAlive, fileUpload); + else + fileUpload(); + } + else + $.ajax(options); + + // fire 'notify' event + this.trigger('form-submit-notify', [this, options]); + return this; + + + // private function for handling file uploads (hat tip to YAHOO!) + function fileUpload() { + var form = $form[0]; + + if ($(':input[name=submit]', form).length) { + alert('Error: Form elements must not be named "submit".'); + return; + } + + var opts = $.extend({}, $.ajaxSettings, options); + var s = $.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts); + + var id = 'jqFormIO' + (new Date().getTime()); + var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ opts.iframeSrc +'" onload="(jQuery(this).data(\'form-plugin-onload\'))()" />'); + var io = $io[0]; + + $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' }); + + var xhr = { // mock object + aborted: 0, + responseText: null, + responseXML: null, + status: 0, + statusText: 'n/a', + getAllResponseHeaders: function() {}, + getResponseHeader: function() {}, + setRequestHeader: function() {}, + abort: function() { + this.aborted = 1; + $io.attr('src', opts.iframeSrc); // abort op in progress + } + }; + + var g = opts.global; + // trigger ajax global events so that activity/block indicators work like normal + if (g && ! $.active++) $.event.trigger("ajaxStart"); + if (g) $.event.trigger("ajaxSend", [xhr, opts]); + + if (s.beforeSend && s.beforeSend(xhr, s) === false) { + s.global && $.active--; + return; + } + if (xhr.aborted) + return; + + var cbInvoked = false; + var timedOut = 0; + + // add submitting element to data if we know it + var sub = form.clk; + if (sub) { + var n = sub.name; + if (n && !sub.disabled) { + opts.extraData = opts.extraData || {}; + opts.extraData[n] = sub.value; + if (sub.type == "image") { + opts.extraData[n+'.x'] = form.clk_x; + opts.extraData[n+'.y'] = form.clk_y; + } + } + } + + // take a breath so that pending repaints get some cpu time before the upload starts + function doSubmit() { + // make sure form attrs are set + var t = $form.attr('target'), a = $form.attr('action'); + + // update form attrs in IE friendly way + form.setAttribute('target',id); + if (form.getAttribute('method') != 'POST') + form.setAttribute('method', 'POST'); + if (form.getAttribute('action') != opts.url) + form.setAttribute('action', opts.url); + + // ie borks in some cases when setting encoding + if (! opts.skipEncodingOverride) { + $form.attr({ + encoding: 'multipart/form-data', + enctype: 'multipart/form-data' + }); + } + + // support timout + if (opts.timeout) + setTimeout(function() { timedOut = true; cb(); }, opts.timeout); + + // add "extra" data to form if provided in options + var extraInputs = []; + try { + if (opts.extraData) + for (var n in opts.extraData) + extraInputs.push( + $('<input type="hidden" name="'+n+'" value="'+opts.extraData[n]+'" />') + .appendTo(form)[0]); + + // add iframe to doc and submit the form + $io.appendTo('body'); + $io.data('form-plugin-onload', cb); + form.submit(); + } + finally { + // reset attrs and remove "extra" input elements + form.setAttribute('action',a); + t ? form.setAttribute('target', t) : $form.removeAttr('target'); + $(extraInputs).remove(); + } + }; + + if (opts.forceSync) + doSubmit(); + else + setTimeout(doSubmit, 10); // this lets dom updates render + + var domCheckCount = 100; + + function cb() { + if (cbInvoked) + return; + + var ok = true; + try { + if (timedOut) throw 'timeout'; + // extract the server response from the iframe + var data, doc; + + doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document; + + var isXml = opts.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc); + log('isXml='+isXml); + if (!isXml && (doc.body == null || doc.body.innerHTML == '')) { + if (--domCheckCount) { + // in some browsers (Opera) the iframe DOM is not always traversable when + // the onload callback fires, so we loop a bit to accommodate + log('requeing onLoad callback, DOM not available'); + setTimeout(cb, 250); + return; + } + log('Could not access iframe DOM after 100 tries.'); + return; + } + + log('response detected'); + cbInvoked = true; + xhr.responseText = doc.body ? doc.body.innerHTML : null; + xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc; + xhr.getResponseHeader = function(header){ + var headers = {'content-type': opts.dataType}; + return headers[header]; + }; + + if (opts.dataType == 'json' || opts.dataType == 'script') { + // see if user embedded response in textarea + var ta = doc.getElementsByTagName('textarea')[0]; + if (ta) + xhr.responseText = ta.value; + else { + // account for browsers injecting pre around json response + var pre = doc.getElementsByTagName('pre')[0]; + if (pre) + xhr.responseText = pre.innerHTML; + } + } + else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) { + xhr.responseXML = toXml(xhr.responseText); + } + data = $.httpData(xhr, opts.dataType); + } + catch(e){ + log('error caught:',e); + ok = false; + xhr.error = e; + $.handleError(opts, xhr, 'error', e); + } + + // ordering of these callbacks/triggers is odd, but that's how $.ajax does it + if (ok) { + opts.success(data, 'success'); + if (g) $.event.trigger("ajaxSuccess", [xhr, opts]); + } + if (g) $.event.trigger("ajaxComplete", [xhr, opts]); + if (g && ! --$.active) $.event.trigger("ajaxStop"); + if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error'); + + // clean up + setTimeout(function() { + $io.removeData('form-plugin-onload'); + $io.remove(); + xhr.responseXML = null; + }, 100); + }; + + function toXml(s, doc) { + if (window.ActiveXObject) { + doc = new ActiveXObject('Microsoft.XMLDOM'); + doc.async = 'false'; + doc.loadXML(s); + } + else + doc = (new DOMParser()).parseFromString(s, 'text/xml'); + return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null; + }; + }; +}; + +/** + * ajaxForm() provides a mechanism for fully automating form submission. + * + * The advantages of using this method instead of ajaxSubmit() are: + * + * 1: This method will include coordinates for <input type="image" /> elements (if the element + * is used to submit the form). + * 2. This method will include the submit element's name/value data (for the element that was + * used to submit the form). + * 3. This method binds the submit() method to the form for you. + * + * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely + * passes the options argument along after properly binding events for submit elements and + * the form itself. + */ +$.fn.ajaxForm = function(options) { + return this.ajaxFormUnbind().bind('submit.form-plugin', function(e) { + e.preventDefault(); + $(this).ajaxSubmit(options); + }).bind('click.form-plugin', function(e) { + var target = e.target; + var $el = $(target); + if (!($el.is(":submit,input:image"))) { + // is this a child element of the submit el? (ex: a span within a button) + var t = $el.closest(':submit'); + if (t.length == 0) + return; + target = t[0]; + } + var form = this; + form.clk = target; + if (target.type == 'image') { + if (e.offsetX != undefined) { + form.clk_x = e.offsetX; + form.clk_y = e.offsetY; + } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin + var offset = $el.offset(); + form.clk_x = e.pageX - offset.left; + form.clk_y = e.pageY - offset.top; + } else { + form.clk_x = e.pageX - target.offsetLeft; + form.clk_y = e.pageY - target.offsetTop; + } + } + // clear form vars + setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100); + }); +}; + +// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm +$.fn.ajaxFormUnbind = function() { + return this.unbind('submit.form-plugin click.form-plugin'); +}; + +/** + * formToArray() gathers form element data into an array of objects that can + * be passed to any of the following ajax functions: $.get, $.post, or load. + * Each object in the array has both a 'name' and 'value' property. An example of + * an array for a simple login form might be: + * + * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ] + * + * It is this array that is passed to pre-submit callback functions provided to the + * ajaxSubmit() and ajaxForm() methods. + */ +$.fn.formToArray = function(semantic) { + var a = []; + if (this.length == 0) return a; + + var form = this[0]; + var els = semantic ? form.getElementsByTagName('*') : form.elements; + if (!els) return a; + for(var i=0, max=els.length; i < max; i++) { + var el = els[i]; + var n = el.name; + if (!n) continue; + + if (semantic && form.clk && el.type == "image") { + // handle image inputs on the fly when semantic == true + if(!el.disabled && form.clk == el) { + a.push({name: n, value: $(el).val()}); + a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y}); + } + continue; + } + + var v = $.fieldValue(el, true); + if (v && v.constructor == Array) { + for(var j=0, jmax=v.length; j < jmax; j++) + a.push({name: n, value: v[j]}); + } + else if (v !== null && typeof v != 'undefined') + a.push({name: n, value: v}); + } + + if (!semantic && form.clk) { + // input type=='image' are not found in elements array! handle it here + var $input = $(form.clk), input = $input[0], n = input.name; + if (n && !input.disabled && input.type == 'image') { + a.push({name: n, value: $input.val()}); + a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y}); + } + } + return a; +}; + +/** + * Serializes form data into a 'submittable' string. This method will return a string + * in the format: name1=value1&name2=value2 + */ +$.fn.formSerialize = function(semantic) { + //hand off to jQuery.param for proper encoding + return $.param(this.formToArray(semantic)); +}; + +/** + * Serializes all field elements in the jQuery object into a query string. + * This method will return a string in the format: name1=value1&name2=value2 + */ +$.fn.fieldSerialize = function(successful) { + var a = []; + this.each(function() { + var n = this.name; + if (!n) return; + var v = $.fieldValue(this, successful); + if (v && v.constructor == Array) { + for (var i=0,max=v.length; i < max; i++) + a.push({name: n, value: v[i]}); + } + else if (v !== null && typeof v != 'undefined') + a.push({name: this.name, value: v}); + }); + //hand off to jQuery.param for proper encoding + return $.param(a); +}; + +/** + * Returns the value(s) of the element in the matched set. For example, consider the following form: + * + * <form><fieldset> + * <input name="A" type="text" /> + * <input name="A" type="text" /> + * <input name="B" type="checkbox" value="B1" /> + * <input name="B" type="checkbox" value="B2"/> + * <input name="C" type="radio" value="C1" /> + * <input name="C" type="radio" value="C2" /> + * </fieldset></form> + * + * var v = $(':text').fieldValue(); + * // if no values are entered into the text inputs + * v == ['',''] + * // if values entered into the text inputs are 'foo' and 'bar' + * v == ['foo','bar'] + * + * var v = $(':checkbox').fieldValue(); + * // if neither checkbox is checked + * v === undefined + * // if both checkboxes are checked + * v == ['B1', 'B2'] + * + * var v = $(':radio').fieldValue(); + * // if neither radio is checked + * v === undefined + * // if first radio is checked + * v == ['C1'] + * + * The successful argument controls whether or not the field element must be 'successful' + * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls). + * The default value of the successful argument is true. If this value is false the value(s) + * for each element is returned. + * + * Note: This method *always* returns an array. If no valid value can be determined the + * array will be empty, otherwise it will contain one or more values. + */ +$.fn.fieldValue = function(successful) { + for (var val=[], i=0, max=this.length; i < max; i++) { + var el = this[i]; + var v = $.fieldValue(el, successful); + if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) + continue; + v.constructor == Array ? $.merge(val, v) : val.push(v); + } + return val; +}; + +/** + * Returns the value of the field element. + */ +$.fieldValue = function(el, successful) { + var n = el.name, t = el.type, tag = el.tagName.toLowerCase(); + if (typeof successful == 'undefined') successful = true; + + if (successful && (!n || el.disabled || t == 'reset' || t == 'button' || + (t == 'checkbox' || t == 'radio') && !el.checked || + (t == 'submit' || t == 'image') && el.form && el.form.clk != el || + tag == 'select' && el.selectedIndex == -1)) + return null; + + if (tag == 'select') { + var index = el.selectedIndex; + if (index < 0) return null; + var a = [], ops = el.options; + var one = (t == 'select-one'); + var max = (one ? index+1 : ops.length); + for(var i=(one ? index : 0); i < max; i++) { + var op = ops[i]; + if (op.selected) { + var v = op.value; + if (!v) // extra pain for IE... + v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value; + if (one) return v; + a.push(v); + } + } + return a; + } + return el.value; +}; + +/** + * Clears the form data. Takes the following actions on the form's input fields: + * - input text fields will have their 'value' property set to the empty string + * - select elements will have their 'selectedIndex' property set to -1 + * - checkbox and radio inputs will have their 'checked' property set to false + * - inputs of type submit, button, reset, and hidden will *not* be effected + * - button elements will *not* be effected + */ +$.fn.clearForm = function() { + return this.each(function() { + $('input,select,textarea', this).clearFields(); + }); +}; + +/** + * Clears the selected form elements. + */ +$.fn.clearFields = $.fn.clearInputs = function() { + return this.each(function() { + var t = this.type, tag = this.tagName.toLowerCase(); + if (t == 'text' || t == 'password' || tag == 'textarea') + this.value = ''; + else if (t == 'checkbox' || t == 'radio') + this.checked = false; + else if (tag == 'select') + this.selectedIndex = -1; + }); +}; + +/** + * Resets the form data. Causes all form elements to be reset to their original value. + */ +$.fn.resetForm = function() { + return this.each(function() { + // guard against an input with the name of 'reset' + // note that IE reports the reset function as an 'object' + if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) + this.reset(); + }); +}; + +/** + * Enables or disables any matching elements. + */ +$.fn.enable = function(b) { + if (b == undefined) b = true; + return this.each(function() { + this.disabled = !b; + }); +}; + +/** + * Checks/unchecks any matching checkboxes or radio buttons and + * selects/deselects and matching option elements. + */ +$.fn.selected = function(select) { + if (select == undefined) select = true; + return this.each(function() { + var t = this.type; + if (t == 'checkbox' || t == 'radio') + this.checked = select; + else if (this.tagName.toLowerCase() == 'option') { + var $sel = $(this).parent('select'); + if (select && $sel[0] && $sel[0].type == 'select-one') { + // deselect all other options + $sel.find('option').selected(false); + } + this.selected = select; + } + }); +}; + +// helper fn for console logging +// set $.fn.ajaxSubmit.debug to true to enable debug logging +function log() { + if ($.fn.ajaxSubmit.debug) { + var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,''); + if (window.console && window.console.log) + window.console.log(msg); + else if (window.opera && window.opera.postError) + window.opera.postError(msg); + } +}; + +})(jQuery); diff --git a/media/dashboard/js/jquery.min.js b/media/dashboard/js/jquery.min.js new file mode 100644 index 000000000..7c2430802 --- /dev/null +++ b/media/dashboard/js/jquery.min.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i? +e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r= +j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g, +"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e= +true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)|| +c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded", +L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype, +"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+ +a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f], +d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]=== +a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&& +!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari= +true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ", +i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ", +" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className= +this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i= +e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!= +null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), +fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| +d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this, +"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent= +a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y, +isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit= +{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}}; +if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&& +!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}}, +toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector, +u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "), +function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q]; +if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[]; +for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length- +1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, +CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}}, +relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]= +l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[]; +h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m= +m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition|| +!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m= +h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>"; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/, +gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length; +c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)? +a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&& +this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]|| +u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length=== +1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay"); +this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a], +"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)}, +animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing= +j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]); +this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length|| +c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement? +function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b= +this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle; +k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&& +f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/tools/install_venv.py b/tools/install_venv.py new file mode 100644 index 000000000..987e8b88f --- /dev/null +++ b/tools/install_venv.py @@ -0,0 +1,139 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2010 United States Government as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All Rights Reserved. +# +# Copyright 2010 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. + +""" +Installation script for the OpenStack Dashboard development virtualenv. +""" + +import os +import subprocess +import sys + + +ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) +VENV = os.path.join(ROOT, '.dashboard-venv') +WITH_VENV = os.path.join(ROOT, 'tools', 'with_venv.sh') +PIP_REQUIRES = os.path.join(ROOT, 'tools', 'pip-requires') + +def die(message, *args): + print >>sys.stderr, message % args + sys.exit(1) + + +def run_command(cmd, redirect_output=True, check_exit_code=True, cwd=ROOT): + """ + Runs a command in an out-of-process shell, returning the + output of that command. Working directory is ROOT. + """ + if redirect_output: + stdout = subprocess.PIPE + else: + stdout = None + + proc = subprocess.Popen(cmd, cwd=cwd, stdout=stdout) + output = proc.communicate()[0] + if check_exit_code and proc.returncode != 0: + die('Command "%s" failed.\n%s', ' '.join(cmd), output) + return output + + +HAS_EASY_INSTALL = bool(run_command(['which', 'easy_install'], check_exit_code=False).strip()) +HAS_VIRTUALENV = bool(run_command(['which', 'virtualenv'], check_exit_code=False).strip()) + + +def check_dependencies(): + """Make sure virtualenv is in the path.""" + + if not HAS_VIRTUALENV: + print 'not found.' + # Try installing it via easy_install... + if HAS_EASY_INSTALL: + print 'Installing virtualenv via easy_install...', + if not run_command(['which', 'virtualenv']): + die('ERROR: virtualenv not found.\n\nevelopment requires virtualenv,' + ' please install it using your favorite package management tool') + print 'done.' + print 'done.' + + +def create_virtualenv(venv=VENV): + """Creates the virtual environment and installs PIP only into the + virtual environment + """ + print 'Creating venv...', + run_command(['virtualenv', '-q', '--no-site-packages', VENV]) + print 'done.' + print 'Installing pip in virtualenv...', + if not run_command([WITH_VENV, 'easy_install', 'pip']).strip(): + die("Failed to install pip.") + print 'done.' + + +def install_dependencies(venv=VENV): + print 'Installing dependencies with pip (this can take a while)...' + run_command([WITH_VENV, 'pip', 'install', '-E', venv, '-r', PIP_REQUIRES], + redirect_output=False) + + # Tell the virtual env how to "import dashboard" + pthfile = os.path.join(venv, "lib", "python2.6", "site-packages", "dashboard.pth") + f = open(pthfile, 'w') + f.write("%s\n" % ROOT) + + +def install_django_nova(path): + print 'Installing django_nova in development mode...' + run_command([WITH_VENV, 'python', 'setup.py', 'develop'], cwd=path) + +def print_usage(): + usage = """ + OpenStack Dashboard development uses virtualenv to track and manage Python + dependencies while in development and testing. + + It uses the OpenStack django_nova module. For more information on how to + obtian the django_nova module, please refer to the README file. + + usage: python install_venv.py <path to django_nova checkout> + """ + print usage + +def print_summary(): + summary = """ + OpenStack Dashboard development environment setup is complete. + + To activate the virtualenv for the extent of your current shell session you + can run: + + $ source .dashboard-venv/bin/activate + """ + print summary + + +def main(argv): + if len(argv) != 2: + print_usage() + sys.exit(1) + check_dependencies() + create_virtualenv() + install_dependencies() + install_django_nova(argv[1]) + print_summary() + +if __name__ == '__main__': + main(sys.argv) diff --git a/tools/pip-requires b/tools/pip-requires new file mode 100644 index 000000000..608447d1d --- /dev/null +++ b/tools/pip-requires @@ -0,0 +1,6 @@ +boto==1.9b +nose==1.0.0 +Django==1.2.3 +django-nose==0.1.2 +django-registration==0.7 + diff --git a/tools/with_venv.sh b/tools/with_venv.sh new file mode 100644 index 000000000..912996470 --- /dev/null +++ b/tools/with_venv.sh @@ -0,0 +1,5 @@ +#!/bin/bash +TOOLS=`dirname $0` +VENV=$TOOLS/../.dashboard-venv +source $VENV/bin/activate && $@ +