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>&nbsp;</td>
+            {% endif %}
+
+            {% if model.perms.change %}
+                <td><a href="{{ model.admin_url }}" class="changelink">{% trans 'Change' %}</a></td>
+            {% else %}
+                <td>&nbsp;</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
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

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
zcmV+v3+wcWP)<h;3K|Lk000e1NJLTq00RsF000^Y0{{R3EygQS0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz1yD>>MY`nwy5s-3<Nv?r|E}2fx#Iq{
z-~71Z{<PoxxZ(V=-TJTE_psaew&47u&+owI|FPWotk?Cr<Nmnf{ixIOv)%f);ry=I
z_O{>rsMPYb-utcB^`g%1tJd_n<NmGK_NmqLwBP%;;{CGR`Ks3Rrqc1C%<P=W>9^tj
zx8VGm$LOWe@U!0fsM7JB%IluX>!;H2v)=oo&+f6@`ku<`s@3$U)$^y)@ut!6w&DG*
z+V`2o=cUo{v)uW$;QXY}@SVx(vD^8n)%2^@^`Fe_n8oI=+xVf)?Ucggo5<;;(C?ST
z<)O^%m&E3l!{wRA=(61SmBZzt&F!(<_@B$`pUdi=%IcRT`tkq(38hIyK~#9!?3#;T
z6IT|;6T(9zI3yC(P$Cb@f{==?+eKE^(ps&Qb}iEW|9?vFxsUU@XC@Os#Qo%#naMDZ
zd(S!d_stywjj1bWPHKni71JWqe^GZVJxAR|{WIwV)lPbcI!bzgdYr3+`U&+frXNY)
zGd&VoR{FQ0Z)@mvwdyosb*;mb!Sl3Ow!8>b8Y-7jODZ(ho`wTQhz1SEk%pFr+jIk&
zg<FVQOL$KCacn;~rmiXlg0#POJu^CYI2oJ#oH-bMOHL(clK;R)Z@liIUO0W@_1<aQ
z>#ftXpqEbH1^oc}N6-har&0d{{U_;Xuir?&CjBn-2iGrGlW0qJgT1qeLWmf#k3S_7
zQj2-|oMZk_idYpWP$(4?EtC%mNo5UXCT@vDq7FeLwiHi<5z)i3$!QUIC@3z;!8O4!
zJ`olZ5{X(&jDVt)3Wi1Gf`j47NN5N)A{|c!9fFX=h{QzG!u5N(%<J=Ju}2mKM)p*g
zAM@bu_x4ZzX8?Et7y=axR6|gQf*b>zg3rgnb;4i~u_GUm>LPK{w&sZk*^`ch!lZ)D
z6&V(Mx)5M^G9((vMx=xANYe))A}|r42>o1FWeu=CMBg7iNaIKA|3E3c%<P~1&jC=A
z07rn$1119*1ReEgrRRe7$+#FSs%NAtb8zi2uwNr~#+@WaBcbOBHc{A6JX$s<i-<+W
zMFK;T5zs(3A{>m4h=%}#L1LhCRf(2WuPK=CwD-~c!To4|;eR~^Bmy`BY#La8R0=^p
z6|lLW1_t$~gPpnS0pWANP#=kMCJZRvDJb%%Cr$->fXcA2xDa3jG7ycx2Emc=AU+5Y
z0f`{R24*~|wscn*0}t%2vVJr_x<A-o_&))V5nv#|9)>sr`gw>$@Xm&yf`XgCAi~ge
zn`YDRH$m}uGj9CSj0c+WIG&|TrqXr3nQ&}wFmSOBAZ%FXb~YIjD~<_x0TZ)M$V4Aj
z`X0$`PfoTR6icpzZiQkVEgUT@Br2v|#i#uivFHRW*4*+WaIyaV`Z|Az0y2ifK*oV5
z<M8$CJ@0|Ny*KwxPpj~7e4M|B^=y0FE!$^j91`H<;u$Pr12+BhPq)5IdpSOT{S{WX
zdFd~OtKtoD`|RT4;@JguKo9zFx1;G}G-uxT=fe4!^?jPBZy<5E?m-m}lmCa}izyGl
zIusEIcoGm;TLT1Ky*sO`oz>3c>FLK|AR+@WNJmEt{<925&&iJ^{(9UC6!aMdvwmHa
z4@H}=oOLz>0PI_%=(}iPW?nSv6!U1a$&NIcf6=&&W?&$_p{C@HKAqoWU*R+ef;9Ye
zF}JztlG|K~iuuka`I7Ye{pW7&_nZI<kH*&4*2&gVl>dBLi1MX(LoprnczQL;!vTY~
z=JW)#9womd9Xc|G!-E4y#(~pe(4HeB=+xmM33>5CBjR-)<Xm`ueipQS#ua`_lgzf>
zk$UURt?nhAlisU1Qg{ODQ_x<>%58j(uMZEBTm_uu7qY2bKSJ%+qWmXLD)BT^L?Ec0
z006<zZKdy2VN`qlpyv?*KlHP+@slz*V`XI%^eWf}*5IT;u-lYnMSP#KoI1sC%pBWj
z-jD{!M3PSwnMhP*Pz3cN7KsX{DlC`;7o9YoPXrkXjpbnw+9c6&xW{ywbWiDp&^Mn$
zvI`vmM#jTUDNs@|%VpdC>!Cy(0GI)C0u%ymfdJ^P!9c$sAV}g6fPy*5EXh8f)uT5C
zgPtbFVxk0!y8;SHg@FZfp}>e_5E|?GAJ>K%A4G^`M1o@DawVy@v%V=T9_&zCAO9G)
zuI!KgR{%%?Bm$CwCBc9NL46A5Zi0d@1ViaO5uq553WbH@LV=;kAT%Ny1V>H>@}d6v
zJR}|DIyAI*Iay5^J+gT0ze4krwD+U=$^FXy!T$;XMSwzJOa=@H1~=%+F9gGAD9Wjb
zSd?;MgQ3aLXmB_Z9SjcyL?Xf{vHnjZBgRyfrA^u0@IX|I7&}j>lX-tNtH}e?|D^!f
z1P}sc418e-ZV3$IQIY+!UBX2M29c4Wk=V%LkbDp!0ujkcj!GFemr_OBJcKO1j^TU5
z`DA`_e`f#a{|tbU1TX|{83VTth6*TZQITPhbCH9AXfQUa>Ck|1Modo1n7NcHTNiQY
zAWL$|y^rp1^D<=sWCY|0)MMaQKyX`O$fy{FMdHE$gOQQY;A|u~OgbbV43SbuN?566
zr@lrtTOAYyud<?a4exXFC-*b^C;uA&Z~`h37~Cq)-C7t%%of#Pa55}3Y&ZxH!G~l-
zLn1+`gUhu`cW*@4wq4Jiza>jynBTNN`hO$<w`&&oT45M9Ul14)4Vw)c4x~f#!4b(J
zQJ|FKQlSTy#%m&rzzUOPk!489_eYxFcK-?ufepamD{xl>mb7U$8t&aM;SB6H8no{(
ziwE$+uq)YW&>GLhCer<QVd@e?i04?#7*iu%;MQ)pJAl<`X3o84eCcNZjQjUDVFN=n
zj~n>^kKNrxcmW&_-SQB&ZoLy<{r<*Af5W?A19tcO`}@89Ue9lmV}g17KN8&CIzIM`
z^VjilK;@%bKKccAKEihCW7vm7Zf&<extG@`+=KT|;T`t;iBIqz&-->#TT7vj*ik&{
zUNH&`rx!zosC!|@|F941ey_ie*+Sk<;V;2=pfnG??|p?9eaUvc{dZk8=UqYP=b@<c
zq0#`r%$y&D8UH>A<Ki}5X^rFn8usX=Cig@$d4YMe5sipqc5A5J*oSs{gNz%xk5)>N
zvBtk@bx|`~_fhjoyQGIo{DW}A(7sY{w2rSwHG0y)Sqbn2b@Hq(x@1($tj;t9jfrk0
z8r_+0IUG42oR6FkO-UIkmDpUHM)s^jwbBv!&X-$1H-DG8e`5cy6AokQkbLBTWRR3_
zQVLA2jqx<P!OD1a@MebhtDG-B_$TK7|AoV%BS)l+k}_Iqa&vi=cUT#xPO2>V?!^2P
zK1L#9P%;{oo0J({MK)RH6EjRymy&8wYG8AHsvU=w#AIkEx(Qe=iOx70-R)#(E}^2;
zDhjuOH@Bvr{1LZh$J`n&6xYBd1^isZtBZ7yZV%V_3tMz0KVPsbL>EQuJH^mSEfjR4
z?>`01Vy6(|)z~)Mw(uCnMt2pdDCrhinxZILx~U=+64Qyj7noFwhr#+}WlQBrxr$rq
zET*Y8MN4<d0~IAM)Zppt3hswg9Nse<30A?D9M~2erea}Nbib$#PZ=$P`4pnzqE!g@
mV9PAlf@duUKb-tqfB^u6{no&lYdC%Y0000<MNUMnLSTZc4uw7d

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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

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(/&lt;/g, '<');
+    text = text.replace(/&gt;/g, '>');
+    text = text.replace(/&quot;/g, '"');
+    text = text.replace(/&#39;/g, "'");
+    text = text.replace(/&amp;/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():"&#xa0;"):(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))?"&#xa0;":"")}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?"&#xa0;":"")+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||"&nbsp;",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||"&nbsp;");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&#8230;</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&amp;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&amp;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 && $@
+