First version of API with tests
authorwakimd
Sun, 14 Nov 2010 20:25:22 +0100
changeset 1 3a30d255c235
parent 0 40eddcc3d063
child 2 59311c28454f
First version of API with tests
.hgignore
.project
.pydevproject
.settings/org.eclipse.core.resources.prefs
sbin/.DS_Store
sbin/build/client.xml
sbin/build/compil.bat
sbin/res/compiler.jar
sbin/res/jquery-1.3.2.externs.js
sbin/sync/sync_ldt_platform
sbin/sync/sync_ldt_platform_venv
sbin/virtualenv/create_python_env.py
sbin/virtualenv/res/lib/patch.py
sbin/virtualenv/res/patch/pyxml.patch
sbin/virtualenv/res/src/4Suite-XML-1.0.2.tar.bz2
sbin/virtualenv/res/src/Django-1.2.3.tar.gz
sbin/virtualenv/res/src/Imaging-1.1.7.tar.gz
sbin/virtualenv/res/src/MySQL-python-1.2.3c1.tar.gz
sbin/virtualenv/res/src/PyXML-0.8.4.tar.gz
sbin/virtualenv/res/src/distribute-0.6.13.tar.gz
sbin/virtualenv/res/src/django-extensions-0.4.1.tar.gz
sbin/virtualenv/res/src/django-registration.tar.gz
sbin/virtualenv/res/src/django-tagging-0.3.1.tar.gz
sbin/virtualenv/res/src/jogging-0.2.2.tar.gz
sbin/virtualenv/res/src/lxml-2.2.7.tar.gz
sbin/virtualenv/res/src/psycopg2-2.2.1.tar.gz
sbin/virtualenv/res/src/pylucene-3.0.1-1-src.tar.gz
web/.htaccess.tmpl
web/ldt/.htaccess
web/ldt/.htaccess.tmpl
web/ldt/__init__.py
web/ldt/admin.py
web/ldt/auth/__init__.py
web/ldt/core/__init__.py
web/ldt/core/handlers/__init__.py
web/ldt/core/handlers/modpython.py
web/ldt/core/handlers/modwsgi.py
web/ldt/core/models.py
web/ldt/core/tests.py
web/ldt/core/views.py
web/ldt/forms/__init__.py
web/ldt/forms/widgets.py
web/ldt/ldt_utils/__init__.py
web/ldt/ldt_utils/admin.py
web/ldt/ldt_utils/contentindexer.py
web/ldt/ldt_utils/fileimport.py
web/ldt/ldt_utils/forms.py
web/ldt/ldt_utils/models.py
web/ldt/ldt_utils/projectindexer.py
web/ldt/ldt_utils/projectserializer.py
web/ldt/ldt_utils/templates/admin/ldt_utils/app_action.html
web/ldt/ldt_utils/templates/admin/ldt_utils/app_index.html
web/ldt/ldt_utils/templates/admin/ldt_utils/content/reindex_form.html
web/ldt/ldt_utils/templates/admin/ldt_utils/content/upload_form.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/content_list.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/copy_ldt.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/embed_popup.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/error_confirm.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/init_ldt.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/ldt_list.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/loading.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_links.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_player.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_seo_body.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_seo_meta.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/save_done.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/search_form.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/workspace.html
web/ldt/ldt_utils/templates/ldt/ldt_utils/workspace_base.html
web/ldt/ldt_utils/tests.py
web/ldt/ldt_utils/urls.py
web/ldt/ldt_utils/utils.py
web/ldt/ldt_utils/views.py
web/ldt/locale/en/LC_MESSAGES/django.mo
web/ldt/locale/en/LC_MESSAGES/django.po
web/ldt/locale/fr/LC_MESSAGES/django.mo
web/ldt/locale/fr/LC_MESSAGES/django.po
web/ldt/management/__init__.py
web/ldt/media/css/LdtPlayer.css
web/ldt/media/css/blueprint/ie.css
web/ldt/media/css/blueprint/plugins/buttons/icons/cross.png
web/ldt/media/css/blueprint/plugins/buttons/icons/key.png
web/ldt/media/css/blueprint/plugins/buttons/icons/tick.png
web/ldt/media/css/blueprint/plugins/buttons/readme.txt
web/ldt/media/css/blueprint/plugins/buttons/screen.css
web/ldt/media/css/blueprint/plugins/fancy-type/readme.txt
web/ldt/media/css/blueprint/plugins/fancy-type/screen.css
web/ldt/media/css/blueprint/plugins/link-icons/icons/doc.png
web/ldt/media/css/blueprint/plugins/link-icons/icons/email.png
web/ldt/media/css/blueprint/plugins/link-icons/icons/external.png
web/ldt/media/css/blueprint/plugins/link-icons/icons/feed.png
web/ldt/media/css/blueprint/plugins/link-icons/icons/im.png
web/ldt/media/css/blueprint/plugins/link-icons/icons/pdf.png
web/ldt/media/css/blueprint/plugins/link-icons/icons/visited.png
web/ldt/media/css/blueprint/plugins/link-icons/icons/xls.png
web/ldt/media/css/blueprint/plugins/link-icons/readme.txt
web/ldt/media/css/blueprint/plugins/link-icons/screen.css
web/ldt/media/css/blueprint/plugins/rtl/readme.txt
web/ldt/media/css/blueprint/plugins/rtl/screen.css
web/ldt/media/css/blueprint/print.css
web/ldt/media/css/blueprint/screen.css
web/ldt/media/css/border-radius.htc
web/ldt/media/css/custom_player.css
web/ldt/media/css/dashboard.css
web/ldt/media/css/embed_popup.css
web/ldt/media/css/imgs/black.png
web/ldt/media/css/imgs/black_arrow.png
web/ldt/media/css/imgs/black_arrow_big.png
web/ldt/media/css/imgs/black_big.png
web/ldt/media/css/imgs/delicious.png
web/ldt/media/css/imgs/facebook.png
web/ldt/media/css/imgs/grey_arrow_Show.png
web/ldt/media/css/imgs/linkedin.png
web/ldt/media/css/imgs/loader.gif
web/ldt/media/css/imgs/loader_fc.gif
web/ldt/media/css/imgs/transBlack.png
web/ldt/media/css/imgs/twitter.png
web/ldt/media/css/imgs/white.png
web/ldt/media/css/imgs/white_arrow.png
web/ldt/media/css/imgs/white_arrow_big.png
web/ldt/media/css/imgs/white_arrow_mini.png
web/ldt/media/css/imgs/white_big.png
web/ldt/media/css/imgs/widget20.png
web/ldt/media/css/jq-css/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png
web/ldt/media/css/jq-css/themes/base/images/ui-bg_flat_75_ffffff_40x100.png
web/ldt/media/css/jq-css/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png
web/ldt/media/css/jq-css/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
web/ldt/media/css/jq-css/themes/base/images/ui-bg_glass_75_dadada_1x400.png
web/ldt/media/css/jq-css/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png
web/ldt/media/css/jq-css/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png
web/ldt/media/css/jq-css/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png
web/ldt/media/css/jq-css/themes/base/images/ui-icons_222222_256x240.png
web/ldt/media/css/jq-css/themes/base/images/ui-icons_2e83ff_256x240.png
web/ldt/media/css/jq-css/themes/base/images/ui-icons_454545_256x240.png
web/ldt/media/css/jq-css/themes/base/images/ui-icons_888888_256x240.png
web/ldt/media/css/jq-css/themes/base/images/ui-icons_cd0a0a_256x240.png
web/ldt/media/css/jq-css/themes/base/jquery-ui.css
web/ldt/media/css/jquery.qtip.css
web/ldt/media/css/ldt.css
web/ldt/media/css/ldtform.css
web/ldt/media/css/nyroModal.css
web/ldt/media/css/registration.css
web/ldt/media/css/style.css
web/ldt/media/css/style_base.css
web/ldt/media/css/tabs.css
web/ldt/media/css/workspace.css
web/ldt/media/img/ajax-loader-16x16.gif
web/ldt/media/img/ajax-loader-220x19.gif
web/ldt/media/img/ajax-loader-43x43.gif
web/ldt/media/img/clear-left.png
web/ldt/media/img/close.png
web/ldt/media/img/control_play.gif
web/ldt/media/img/document_add.gif
web/ldt/media/img/document_edit.gif
web/ldt/media/img/documents_duplicate.gif
web/ldt/media/img/favicon.ico
web/ldt/media/img/loadingAnimation.gif
web/ldt/media/img/logo_IRI_footer.png
web/ldt/media/img/plugin.gif
web/ldt/media/img/search.gif
web/ldt/media/img/tabsright_active.png
web/ldt/media/img/tabsright_normal.png
web/ldt/media/js/LdtPlayer.min.js
web/ldt/media/js/embed_popup.js
web/ldt/media/js/jquery-ui.min.js
web/ldt/media/js/jquery.DOMWindow.js
web/ldt/media/js/jquery.js
web/ldt/media/js/jquery.min.js
web/ldt/media/js/jquery.nyroModal.min.js
web/ldt/media/js/jquery.qtip.min.js
web/ldt/media/js/jquery.tools.min.js
web/ldt/media/js/jquery.validate.js
web/ldt/media/js/login_ajax/jquery.login.js
web/ldt/media/js/login_ajax/login_ajax.css
web/ldt/media/js/projectscontents.js
web/ldt/media/js/swfobject.js
web/ldt/media/swf/expressInstall.swf
web/ldt/media/swf/ldt/LignesDeTempsFlex.swf
web/ldt/media/swf/ldt/pkg/SkinBoutABout.swf
web/ldt/media/swf/ldt/pkg/SkinUnderPlaySeekMuteVol.swf
web/ldt/media/swf/ldt/pkg/color.xml
web/ldt/media/swf/ldt/pkg/i18n/en/messages.mo
web/ldt/media/swf/ldt/pkg/i18n/es/messages.mo
web/ldt/media/swf/ldt/pkg/i18n/es/messages.po
web/ldt/media/swf/ldt/pkg/i18n/eu/messages.mo
web/ldt/media/swf/ldt/pkg/i18n/eu/messages.po
web/ldt/media/swf/ldt/pkg/i18n/fr/messages.mo
web/ldt/media/swf/ldt/pkg/i18n/fr/messages.po
web/ldt/media/swf/ldt/pkg/i18n/ja/messages.mo
web/ldt/media/swf/ldt/pkg/i18n/ja/messages.po
web/ldt/media/swf/ldt/pkg/i18n/lang.xml
web/ldt/media/swf/ldt/pkg/i18n/messages.po
web/ldt/media/swf/ldt/pkg/init.xml
web/ldt/media/swf/player.swf
web/ldt/settings.py
web/ldt/templatetags/__init__.py
web/ldt/templatetags/ldtmedia.py
web/ldt/templatetags/navigation.py
web/ldt/user/__init__.py
web/ldt/user/admin.py
web/ldt/user/forms.py
web/ldt/user/models.py
web/ldt/user/templates/ldt/user/change_email.html
web/ldt/user/templates/ldt/user/change_email_done.html
web/ldt/user/templates/ldt/user/home.html
web/ldt/user/templates/ldt/user/login_form.html
web/ldt/user/templates/ldt/user/profile.html
web/ldt/user/templates/ldt/user/space.html
web/ldt/user/templates/ldt/user/user_base.html
web/ldt/user/templates/registration/activate.html
web/ldt/user/templates/registration/activation_complete.html
web/ldt/user/templates/registration/activation_email.txt
web/ldt/user/templates/registration/activation_email_subject.txt
web/ldt/user/templates/registration/base.html
web/ldt/user/templates/registration/logged_out.html
web/ldt/user/templates/registration/login.html
web/ldt/user/templates/registration/logout.html
web/ldt/user/templates/registration/password_change_done.html
web/ldt/user/templates/registration/password_change_form.html
web/ldt/user/templates/registration/password_reset_complete.html
web/ldt/user/templates/registration/password_reset_confirm.html
web/ldt/user/templates/registration/password_reset_done.html
web/ldt/user/templates/registration/password_reset_email.html
web/ldt/user/templates/registration/password_reset_form.html
web/ldt/user/templates/registration/registration_active.html
web/ldt/user/templates/registration/registration_complete.html
web/ldt/user/templates/registration/registration_form.html
web/ldt/user/templatetags/__init__.py
web/ldt/user/templatetags/logintag.py
web/ldt/user/tests.py
web/ldt/user/urls.py
web/ldt/user/views.py
web/ldt/utils/__init__.py
web/ldt/utils/context_processors.py
web/ldt/utils/path.py
web/ldt/utils/xml.py
web/ldt/utils/zipfileext.py
web/leezam/.htaccess.mod_python.tmpl
web/leezam/.htaccess.mod_wsgi.tmpl
web/leezam/__init__.py
web/leezam/locale/fr/LC_MESSAGES/django.mo
web/leezam/locale/fr/LC_MESSAGES/django.po
web/leezam/localsettings.py
web/leezam/manage.py
web/leezam/settings.py
web/leezam/urls.py
web/leezam/utils/__init__.py
web/leezam/utils/context_processors.py
web/log/.keepme
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgignore	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,18 @@
+
+syntax: regexp
+^sbin/virtualenv/project-boot\.py$
+^sbin/virtualenv/env
+^web/\.htaccess$
+^web/leezam/\.htaccess$
+^web/leezam/config\.py$
+^web/static/media/
+^sbin/virtualenv/distribute.*\.tar\.gz$
+^.*\.pyc$
+^.*\.old$
+^.*\.orig$
+
+syntax: regexp
+^web/leezam/modwsgi\.wsgi$
+syntax: regexp
+^web/log/log\.txt$
+^web/index/.*$
--- a/.project	Fri Oct 29 15:11:09 2010 +0200
+++ b/.project	Sun Nov 14 20:25:22 2010 +0100
@@ -5,7 +5,14 @@
 	<projects>
 	</projects>
 	<buildSpec>
+		<buildCommand>
+			<name>org.python.pydev.PyDevBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
+		<nature>org.python.pydev.pythonNature</nature>
+		<nature>org.python.pydev.django.djangoNature</nature>
 	</natures>
 </projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.pydevproject	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse-pydev version="1.0"?>
+
+<pydev_project>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Leezam-venv</pydev_property>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.6</pydev_property>
+</pydev_project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.settings/org.eclipse.core.resources.prefs	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,3 @@
+#Sat Nov 13 17:35:26 CET 2010
+eclipse.preferences.version=1
+encoding//web/ldt/ldt_utils/tests.py=UTF-8
Binary file sbin/.DS_Store has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/build/client.xml	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project basedir="." default="compile">
+  <taskdef name="jscomp" classname="com.google.javascript.jscomp.ant.CompileTask">
+    <classpath>
+      <pathelement location="../res/compiler.jar"/>
+    </classpath>
+  </taskdef>
+  <target name="compile">
+    <jscomp compilationLevel="simple" warning="quiet" 
+            debug="false" output="${basedir}/../../client/player/src/js/LdtPlayer.min.raw.js">
+      <externs dir="${basedir}/../../client/player/res/">
+      	<file name="js/jquery.min.js"/>
+      	<file name="js/jquery.tools.min.js"/>
+      	<file name="js/jquery-ui.min.js"/>
+      	<file name="js/swfobject.js"/>      		
+      </externs>
+      <sources dir="${basedir}/../../client/player/src/js">
+          <file name="LdtPlayer.js"/>
+      </sources>
+    </jscomp>
+  	<concat destfile="${basedir}/../../client/player/src/js/LdtPlayer.min.js"
+  	   append="false">
+  	   <filelist dir="${basedir}/../../client/player/src/js/" files="header.js,LdtPlayer.min.raw.js" />
+  	</concat>
+  	<delete file="${basedir}/../../client/player/src/js/LdtPlayer.min.raw.js"/>
+  </target>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/build/compil.bat	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,1 @@
+ant -f client.xml
\ No newline at end of file
Binary file sbin/res/compiler.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/res/jquery-1.3.2.externs.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,715 @@
+/*
+ * Copyright 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview Externs for jQuery 1.3.2.
+ * The externs defined here are in the order of the jQuery documentation pages.
+ * Note that some functions use different return types depending on the number
+ * of parameters passed in. In this cases, you may need to annotate the type
+ * of the result in your code, so the JSCompiler understands which type you're
+ * expecting. For example:
+ *    <code>var elt = /** @type {Element} * / (foo.get(0));</code>
+ * @see http://docs.jquery.com/
+*
+ */
+
+/**
+ * @param {string|Node|Element|Array.<Element>|Function} arg
+ * @param {(jQueryObject|Document)=} opt_arg
+ * @return {jQueryObject}
+ */
+var $ = function(arg, opt_arg) {};
+
+var jQuery = {};
+
+/** @constructor */
+function jQueryObject() {};
+
+
+// http://docs.jquery.com/Core - Object accessors
+
+/**
+ * @param {Function} callback
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.each = function(callback) {};
+
+/** @return {number} */
+jQueryObject.prototype.size = function() {};
+
+/** @type {number} */
+jQueryObject.prototype.length;
+
+/** @return {string} */
+jQueryObject.prototype.selector = function() {};
+
+/** @return {Element} */
+jQueryObject.prototype.context = function() {};
+
+/**
+ * @param {number=} opt_index
+ * @return {Element|Array.<Element>}
+ */
+jQueryObject.prototype.get = function(opt_index) {};
+
+/**
+ * @param {Element|jQueryObject} subject
+ * @return {number}
+ */
+jQueryObject.prototype.index = function(subject) {};
+
+
+// http://docs.jquery.com/Core - Data
+
+/**
+ * @param {string} name
+ * @param {string=} opt_value
+ * @return {*}
+ */
+jQueryObject.prototype.data = function(name, opt_value) {};
+
+/**
+ * @param {string} name
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.removeData = function(name) {};
+
+/**
+ * @param {(string|Function|Array.<Function>)=} opt_arg1
+ * @param {(Function|Array.<Function>)=} opt_arg2
+ * @return {Array.<Function>|jQueryObject}
+ */
+jQueryObject.prototype.queue = function(opt_arg1, opt_arg2) {};
+
+/**
+ * @param {string=} opt_name
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.dequeue = function(opt_name) {};
+
+
+// http://docs.jquery.com/Attributes - Attr
+
+/**
+ * @param {string|Object} nameOrProperties
+ * @param {*=} opt_value
+ * @return {Object|jQueryObject}
+ */
+jQueryObject.prototype.attr = function(nameOrProperties, opt_value) {};
+
+/**
+ * @param {string} name
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.removeAttr = function(name) {};
+
+
+// http://docs.jquery.com/Attributes - Class
+
+/**
+ * @param {string} klass
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.addClass = function(klass) {};
+
+/**
+ * @param {string} klass
+ * @return {boolean}
+ */
+jQueryObject.prototype.hasClass = function(klass) {};
+
+/**
+ * @param {string=} opt_klass
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.removeClass = function(opt_klass) {};
+
+/**
+ * @param {string} klass
+ * @param {boolean=} opt_switch
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.toggleClass = function(klass, opt_switch) {};
+
+
+// http://docs.jquery.com/Attributes - HTML, Text, Value
+
+/**
+ * @param {string} opt_val
+ * @return {string|jQueryObject}
+ */
+jQueryObject.prototype.html = function(opt_val) {};
+
+/**
+ * @param {string=} opt_val
+ * @return {string|jQueryObject}
+ */
+jQueryObject.prototype.text = function(opt_val) {};
+
+/**
+ * @param {string|Array.<string>} opt_val
+ * @return {string|Array|jQueryObject}
+ */
+jQueryObject.prototype.val = function(opt_val) {};
+
+
+// http://docs.jquery.com/Traversing - Filtering
+
+/**
+ * @param {number} index
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.eq = function(index) {};
+
+/**
+ * @param {string|Function} arg
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.filter = function(arg) {};
+
+/**
+ * @param {string} expr
+ * @return {boolean}
+ */
+jQueryObject.prototype.is = function(expr) {};
+
+/**
+ * @param {Function} callback
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.map = function(callback) {};
+
+/**
+ * @param {string} expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.not = function(expr) {};
+
+/**
+ * @param {number} start
+ * @param {number=} opt_end
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.slice = function(start, opt_end) {};
+
+
+// http://docs.jquery.com/Traversing - Finding, Chaining
+
+/**
+ * @param {string|Element|Array.<Element>} expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.add = function(expr) {};
+
+/**
+ * @param {string=} opt_expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.children = function(opt_expr) {};
+
+/**
+ * @param {string} expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.closest = function(expr) {};
+
+/**
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.contents = function() {};
+
+/**
+ * @param {string} expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.find = function(expr) {};
+
+/**
+ * @param {string=} opt_expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.next = function(opt_expr) {};
+
+/**
+ * @param {string=} opt_expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.nextAll = function(opt_expr) {};
+
+/**
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.offsetParent = function() {};
+
+/**
+ * @param {string=} opt_expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.parent = function(opt_expr) {};
+
+/**
+ * @param {string=} opt_expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.parents = function(opt_expr) {};
+
+/**
+ * @param {string=} opt_expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.prev = function(opt_expr) {};
+
+/**
+ * @param {string=} opt_expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.prevAll = function(opt_expr) {};
+
+/**
+ * @param {string=} opt_expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.siblings = function(opt_expr) {};
+
+/**
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.andSelf = function() {};
+
+/**
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.end = function() {};
+
+
+// http://docs.jquery.com/Manipulation
+
+/**
+ * @param {string|Node|Element|jQueryObject} content
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.append = function(content) {};
+
+/**
+ * @param {string} selector
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.appendTo = function(selector) {};
+
+/**
+ * @param {string|Node|Element|jQueryObject} content
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.prepend = function(content) {};
+
+/**
+ * @param {string} selector
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.prependTo = function(selector) {};
+
+/**
+ * @param {string|Node|Element|jQueryObject} content
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.after = function(content) {};
+
+/**
+ * @param {string|Node|Element|jQueryObject} content
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.before = function(content) {};
+
+/**
+ * @param {string} selector
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.insertAfter = function(selector) {};
+
+/**
+ * @param {string} selector
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.insertBefore = function(selector) {};
+
+/**
+ * @param {string|Element} arg
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.wrap = function(arg) {};
+
+/**
+ * @param {string|Element} arg
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.wrapAll = function(arg) {};
+
+/**
+ * @param {string|Element} arg
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.wrapInner = function(arg) {};
+
+/**
+ * @param {string|Node|Element|jQueryObject} content
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.replaceWith = function(content) {};
+
+/**
+ * @param {string} selector
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.replaceAll = function(selector) {};
+
+/**
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.empty = function() {};
+
+/**
+ * @param {string=} opt_expr
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.remove = function(opt_expr) {};
+
+/**
+ * @param {boolean=} opt_cloneEvents
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.clone = function(opt_cloneEvents) {};
+
+
+// http://docs.jquery.com/CSS
+
+/**
+ * @param {string|Object} nameOrProperties
+ * @param {(string|number|Function)=} opt_value
+ * @return {Object|jQueryObject|string}
+ */
+jQueryObject.prototype.css = function(nameOrProperties, opt_value) {};
+
+/**
+ * @return {Object}
+ */
+jQueryObject.prototype.offset = function() {};
+
+/**
+ * @return {Object}
+ */
+jQueryObject.prototype.position = function() {};
+
+/**
+ * @param {number=} opt_val
+ * @return {number|jQueryObject}
+ */
+jQueryObject.prototype.scrollTop = function(opt_val) {};
+
+/**
+ * @param {number=} opt_val
+ * @return {number|jQueryObject}
+ */
+jQueryObject.prototype.scrollLeft = function(opt_val) {};
+
+/**
+ * @param {number=} opt_val
+ * @return {number|jQueryObject}
+ */
+jQueryObject.prototype.height = function(opt_val) {};
+
+/**
+ * @param {number=} opt_val
+ * @return {number|jQueryObject}
+ */
+jQueryObject.prototype.width = function(opt_val) {};
+
+/**
+ * @return {number}
+ */
+jQueryObject.prototype.innerHeight = function() {};
+
+/**
+ * @return {number}
+ */
+jQueryObject.prototype.innerWidth = function() {};
+
+/**
+ * @param {boolean=} opt_margin
+ * @return {number}
+ */
+jQueryObject.prototype.outerHeight = function(opt_margin) {};
+
+/**
+ * @param {boolean=} opt_margin
+ * @return {number}
+ */
+jQueryObject.prototype.outerWidth = function(opt_margin) {};
+
+
+// http://docs.jquery.com/Events
+
+/**
+ * @param {string} type
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.live = function(type, fn) {};
+
+/**
+ * @param {string=} opt_type
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.die = function(opt_type, opt_fn) {};
+
+/**
+ * @param {Function} over
+ * @param {Function} out
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.hover = function(over, out) {};
+
+/**
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.blur = function(opt_fn) {};
+
+/**
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.change = function(opt_fn) {};
+
+/**
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.click = function(opt_fn) {};
+
+/**
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.dblclick = function(opt_fn) {};
+
+/**
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.error = function(opt_fn) {};
+
+/**
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.focus = function(opt_fn) {};
+
+/**
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.keydown = function(opt_fn) {};
+
+/**
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.keypress = function(opt_fn) {};
+
+/**
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.keyup = function(fn) {};
+
+/**
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.load = function(fn) {};
+
+/**
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.mousedown = function(fn) {};
+
+/**
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.mouseenter = function(fn) {};
+
+/**
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.mouseleave = function(fn) {};
+
+/**
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.mousemove = function(fn) {};
+
+/**
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.mouseout = function(fn) {};
+
+/**
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.mouseover = function(fn) {};
+
+/**
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.mouseup = function(fn) {};
+
+/**
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.resize = function(fn) {};
+
+/**
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.scroll = function(fn) {};
+
+/**
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.select = function(opt_fn) {};
+
+/**
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.submit = function(opt_fn) {};
+
+/**
+ * @param {Function} fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.unload = function(fn) {};
+
+
+// http://docs.jquery.com/Effects
+
+/**
+ * @param {(number|string)=} opt_speed
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.show = function(opt_speed, opt_fn) {};
+
+/**
+ * @param {(number|string)=} opt_speed
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.hide = function(opt_speed, opt_fn) {};
+
+/**
+ * toggle() is defined as both an event and an effect... sigh.
+ * @param {(Function|boolean|number|string)=} opt_arg1
+ * @param {Function=} opt_fn2
+ * @param {...Function} var_args
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.toggle = function(opt_arg1, opt_fn2, var_args) {};
+
+/**
+ * @param {(number|string)=} opt_speed
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.slideDown = function(opt_speed, opt_fn) {};
+
+/**
+ * @param {(number|string)=} opt_speed
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.slideUp = function(opt_speed, opt_fn) {};
+
+/**
+ * @param {(number|string)=} opt_speed
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.slideToggle = function(opt_speed, opt_fn) {};
+
+/**
+ * @param {(number|string)=} opt_speed
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.fadeIn = function(opt_speed, opt_fn) {};
+
+/**
+ * @param {(number|string)=} opt_speed
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.fadeOut = function(opt_speed, opt_fn) {};
+
+/**
+ * @param {(number|string)=} opt_speed
+ * @param {number=} opt_opacity
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.fadeTo = function(opt_speed, opt_opacity, opt_fn) {};
+
+/**
+ * @param {Object} params
+ * @param {(number|string|Object)=} opt_durationOrOptions
+ * @param {string=} opt_easing
+ * @param {Function=} opt_fn
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.animate = function(
+    params, opt_durationOrOptions, opt_easing, opt_fn) {};
+
+/**
+ * @param {boolean} opt_clearQueue
+ * @param {boolean} opt_gotoEnd
+ * @return {jQueryObject}
+ */
+jQueryObject.prototype.stop = function(opt_clearQueue, opt_gotoEnd) {};
+
+jQuery.fx = {};
+
+/** @type {boolean} */
+jQuery.fx.off;
+
+// http://docs.jquery.com/Utilities
+
+/**
+ * @param {number|string|Object} value
+ * @param {Array} array
+ * @return {number}
+ */
+jQueryObject.prototype.inArray = function(value, array) {};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/sync/sync_ldt_platform	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+set -e
+if [ -d ~/tmp/leezam_V$1 ]; then
+    rm -fr ~/tmp/leezam_V$1;
+fi
+
+hg archive -r V$1 ~/tmp/leezam_V$1
+
+#text2unix ~/tmp/leezam_V$1
+
+if [ -d ~/tmp/leezam_V$1 ]; then
+    cat <<EOT | rsync -Cvrlz --delete --filter=". -" ~/tmp/leezam_V$1/web/ iri@web.iri.centrepompidou.fr:/iridata/www/exp/leezam/
++ core
+P .htpasswd
+P .htaccess
+P leezam/.htaccess
+P leezam/config.py
+P leezam/modwsgi.wsgi
+P robots.txt
+P env/***
+P log/***
+P index/***
+P static/media/***
+EOT
+fi
+
+if [ -d ~/tmp/leezam_V$1 ]; then
+    echo "Deleting temp export"
+    rm -fr ~/tmp/leezam_V$1;
+fi
+
+ssh iri@web.iri.centrepompidou.fr sudo apache2ctl restart
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/sync/sync_ldt_platform_venv	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+set -e
+if [ -d ~/tmp/leezam_V$1 ]; then
+    rm -fr ~/tmp/leezam_V$1;
+fi
+
+hg archive -r V$1 ~/tmp/leezam_V$1
+
+#text2unix ~/tmp/leezam_V$1
+
+if [ -d ~/tmp/leezam_V$1 ]; then
+    cat <<EOT | rsync -Cvrlz --delete --filter=". -" ~/tmp/leezam_V$1/sbin/ web.iri.centrepompidou.fr:projects/leezam/sbin
++ core
+EOT
+fi
+
+if [ -d ~/tmp/leezam_V$1 ]; then
+    echo "Deleting temp export"
+    rm -fr ~/tmp/leezam_V$1;
+fi
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/virtualenv/create_python_env.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,329 @@
+"""
+Call this like ``python create_python_env.py``; it will
+refresh the project-boot.py script
+
+-prerequisite:
+
+- virtualenv
+- distribute
+- psycopg2 requires the PostgreSQL libpq libraries and the pg_config utility
+
+- python project-boot.py --distribute --no-site-packages --index-url=http://pypi.websushi.org/ --clear --type-install=local <path_to_venv>
+- For Linux :
+python project-boot.py --unzip-setuptools --no-site-packages --index-url=http://pypi.websushi.org/ --clear --type-install=local <path_to_venv>
+
+"""
+
+import os
+import subprocess
+import re
+import sys
+
+
+here = os.path.dirname(os.path.abspath(__file__))
+base_dir = here
+script_name = os.path.join(base_dir, 'project-boot.py')
+
+import virtualenv
+
+# things to install
+# - psycopg2 -> pip
+# - PIL -> pip
+# - pyxml -> pip
+# - 4Suite-xml - easy_install ftp://ftp.4suite.org/pub/4Suite/4Suite-XML-1.0.2.tar.bz2
+# - pylucene  - script
+
+src_base = os.path.join(here,"res","src")
+lib_path = os.path.abspath(os.path.join(here,"res","lib"))
+patch_path = os.path.abspath(os.path.join(here,"res","patch"))
+
+EXTRA_TEXT  = "URLS = { \n"
+
+EXTRA_TEXT += "    'DISTRIBUTE' : { 'setup': 'distribute', 'url': 'http://pypi.python.org/packages/source/d/distribute/distribute-0.6.13.tar.gz', 'local': '"+ os.path.abspath(os.path.join(src_base,"distribute-0.6.13.tar.gz"))+"'},\n"
+EXTRA_TEXT += "    'PSYCOPG2' : { 'setup': 'psycopg2','url': 'http://initd.org/pub/software/psycopg/psycopg2-2.2.1.tar.gz', 'local': '"+ os.path.abspath(os.path.join(src_base,"psycopg2-2.2.1.tar.gz"))+"'},\n"
+EXTRA_TEXT += "    'MYSQL' : { 'setup': 'mysql-python', 'url': 'http://sourceforge.net/projects/mysql-python/files/mysql-python-test/1.2.3c1/MySQL-python-1.2.3c1.tar.gz/download', 'local' : '"+ os.path.abspath(os.path.join(src_base,"MySQL-python-1.2.3c1.tar.gz"))+"'},\n"
+EXTRA_TEXT += "    'FOURSUITE_XML' : { 'setup': '4Suite-XML', 'url': 'ftp://ftp.4suite.org/pub/4Suite/4Suite-XML-1.0.2.tar.bz2', 'local': '"+ os.path.abspath(os.path.join(src_base,"4Suite-XML-1.0.2.tar.bz2"))+"'},\n"
+EXTRA_TEXT += "    'PYLUCENE' : { 'setup': 'http://apache.crihan.fr/dist/lucene/pylucene/pylucene-3.0.1-1-src.tar.gz', 'url': 'http://apache.crihan.fr/dist/lucene/pylucene/pylucene-3.0.1-1-src.tar.gz', 'local': '"+ os.path.abspath(os.path.join(src_base,"pylucene-3.0.1-1-src.tar.gz"))+"'},\n"
+EXTRA_TEXT += "    'PIL' : { 'setup': 'pil', 'url': 'http://effbot.org/downloads/Imaging-1.1.7.tar.gz', 'local': '"+ os.path.abspath(os.path.join(src_base,"Imaging-1.1.7.tar.gz"))+"'},\n"
+EXTRA_TEXT += "    'PYXML' : { 'setup': 'http://sourceforge.net/projects/pyxml/files/pyxml/0.8.4/PyXML-0.8.4.tar.gz/download', 'url': 'http://sourceforge.net/projects/pyxml/files/pyxml/0.8.4/PyXML-0.8.4.tar.gz/download', 'local': '"+ os.path.abspath(os.path.join(src_base,"PyXML-0.8.4.tar.gz"))+"', 'patch': '"+os.path.join(patch_path,"pyxml.patch")+"'},\n"
+EXTRA_TEXT += "    'DJANGO' : { 'setup': 'django', 'url': 'http://www.djangoproject.com/download/1.2.3/tarball/', 'local': '"+ os.path.abspath(os.path.join(src_base,"Django-1.2.3.tar.gz"))+"'},\n"
+EXTRA_TEXT += "    'JOGGING' : { 'setup': 'jogging', 'url': 'http://github.com/zain/jogging/tarball/v0.2.2', 'local': '"+ os.path.abspath(os.path.join(src_base,"jogging-0.2.2.tar.gz"))+"'},\n"
+EXTRA_TEXT += "    'DJANGO-EXTENSIONS' : { 'setup': 'django-extensions', 'url':'http://django-command-extensions.googlecode.com/files/django-extensions-0.4.1.tar.gz', 'local':'"+ os.path.abspath(os.path.join(src_base,"django-extensions-0.4.1.tar.gz"))+"' },\n"
+EXTRA_TEXT += "    'DJANGO-REGISTRATION' : { 'setup': 'django-registration', 'url':'http://bitbucket.org/ubernostrum/django-registration/get/tip.tar.gz', 'local':'"+ os.path.abspath(os.path.join(src_base,"django-registration.tar.gz"))+"' },\n"
+EXTRA_TEXT += "    'DJANGO-TAGGING' : { 'setup': 'django-tagging', 'url':'http://django-tagging.googlecode.com/files/django-tagging-0.3.1.tar.gz', 'local':'"+ os.path.abspath(os.path.join(src_base,"django-tagging-0.3.1.tar.gz"))+"' },\n"
+EXTRA_TEXT += "    'LXML' : { 'setup': 'lxml', 'url': '"+ os.path.abspath(os.path.join(src_base,"lxml_2.2.7.tar.gz"))+"', 'local': '"+ os.path.abspath(os.path.join(src_base,"lxml-2.2.7.tar.gz"))+"'},\n"
+EXTRA_TEXT += "}\n"
+
+EXTRA_TEXT += "import sys\n"
+EXTRA_TEXT += "sys.path.append('"+lib_path+"')\n"
+
+EXTRA_TEXT += """
+
+import shutil
+import tarfile
+import urllib
+import platform
+import patch
+
+
+INDEX_URL = 'http://pypi.python.org/simple/'
+
+
+def extend_parser(parser):
+    parser.add_option(
+        '--index-url',
+        metavar='INDEX_URL',
+        dest='index_url',
+        default='',
+        help='base URL of Python Package Index')
+    parser.add_option(
+        '--type-install',
+        metavar='type_install',
+        dest='type_install',
+        default='local',
+        help='type install : local, url, setup')
+    parser.add_option(
+        '--ignore-packages',
+        metavar='ignore_packages',
+        dest='ignore_packages',
+        default=None,
+        help='list of comma separated keys for package to ignore')
+
+
+
+def adjust_options(options, args):
+    pass
+
+
+def after_install(options, home_dir):
+    home_dir, lib_dir, inc_dir, bin_dir = path_locations(home_dir)
+    base_dir = os.path.dirname(home_dir)
+    src_dir = join(home_dir, 'src')
+    tmp_dir = join(home_dir, 'tmp')
+    ensure_dir(src_dir)
+    ensure_dir(tmp_dir)
+    system_str = platform.system()
+    
+    res_source_key = options.type_install
+    
+    ignore_packages = []
+    
+    if options.ignore_packages :
+        ignore_packages = options.ignore_packages.split(",")
+    
+    logger.indent += 2
+    try:
+        
+        if 'PYLUCENE' not in ignore_packages:
+            #get pylucene
+            logger.notify("Get Pylucene from %s " % URLS['PYLUCENE'][res_source_key])
+            pylucene_src = os.path.join(src_dir,"pylucene.tar.gz")
+            urllib.urlretrieve(URLS['PYLUCENE'][res_source_key], pylucene_src)
+            tf = tarfile.open(pylucene_src,'r:gz')
+            pylucene_base_path = os.path.join(src_dir,"pylucene") 
+            logger.notify("Extract Pylucene to %s " % pylucene_base_path)
+            tf.extractall(pylucene_base_path)
+            tf.close()
+            
+            pylucene_src_path = os.path.join(pylucene_base_path, os.listdir(pylucene_base_path)[0])
+            jcc_src_path = os.path.abspath(os.path.join(pylucene_src_path,"jcc"))
+            
+            #install jcc
+    
+            #patch for linux
+            if system_str == 'Linux' :
+                olddir = os.getcwd()
+                patch_dest_path = os.path.join(lib_dir,'site-packages','setuptools-0.6c11-py'+'%s.%s' % (sys.version_info[0], sys.version_info[1])+'.egg')
+                if os.path.isfile(patch_dest_path):
+                    # must unzip egg
+                    # rename file and etract all
+                    shutil.move(patch_dest_path, patch_dest_path + ".zip")
+                    zf = zipfile.ZipFile(patch_dest_path + ".zip",'r')
+                    zf.extractall(patch_dest_path)
+                    os.remove(patch_dest_path + ".zip")
+                logger.notify("Patch jcc : %s " % (patch_dest_path))
+                os.chdir(patch_dest_path)
+                p = patch.fromfile(os.path.join(jcc_src_path,"jcc","patches","patch.43.0.6c11"))
+                p.apply()
+                os.chdir(olddir)
+    
+            logger.notify("Install jcc")
+            call_subprocess([os.path.abspath(os.path.join(home_dir, 'bin', 'python')), 'setup.py', 'install'],
+                            cwd=jcc_src_path,
+                            filter_stdout=filter_python_develop,
+                            show_stdout=True)
+            #install pylucene
+            
+            logger.notify("Install pylucene")
+            #modify makefile
+            makefile_path = os.path.join(pylucene_src_path,"Makefile")
+            logger.notify("Modify makefile %s " % makefile_path)
+            shutil.move( makefile_path, makefile_path+"~" )
+    
+            destination= open( makefile_path, "w" )
+            source= open( makefile_path+"~", "r" )
+            destination.write("PREFIX_PYTHON="+os.path.abspath(home_dir)+"\\n")
+            destination.write("ANT=ant\\n")
+            destination.write("PYTHON=$(PREFIX_PYTHON)/bin/python\\n")
+            
+            if system_str == "Darwin":
+                if sys.version_info >= (2,6):
+                    destination.write("JCC=$(PYTHON) -m jcc.__main__ --shared --arch x86_64 --arch i386\\n")
+                else:
+                    destination.write("JCC=$(PYTHON) -m jcc --shared --arch x86_64 --arch i386\\n")
+                destination.write("NUM_FILES=2\\n")
+            elif system_str == "Windows":
+                destination.write("JCC=$(PYTHON) -m jcc.__main__ --shared --arch x86_64 --arch i386\\n")
+                destination.write("NUM_FILES=2\\n")
+            else:
+                if sys.version_info >= (2,6) and sys.version_info < (2,7):
+                    destination.write("JCC=$(PYTHON) -m jcc.__main__ --shared\\n")
+                else:
+                    destination.write("JCC=$(PYTHON) -m jcc --shared\\n")
+                destination.write("NUM_FILES=2\\n")
+            for line in source:
+                destination.write( line )
+            source.close()
+            destination.close()
+            os.remove(makefile_path+"~" )
+    
+            logger.notify("pylucene make")
+            call_subprocess(['make'],
+                            cwd=os.path.abspath(pylucene_src_path),
+                            filter_stdout=filter_python_develop,
+                            show_stdout=True)
+    
+            logger.notify("pylucene make install")
+            call_subprocess(['make', 'install'],
+                            cwd=os.path.abspath(pylucene_src_path),
+                            filter_stdout=filter_python_develop,
+                            show_stdout=True)
+
+        if system_str == 'Linux'  and 'DISTRIBUTE' not in ignore_packages:
+            normal_install('DISTRIBUTE', 'pip', None, None, res_source_key, home_dir, tmp_dir)
+
+        if 'PYXML' not in ignore_packages:
+            logger.notify("PyXML install : %s " % URLS['PYXML'][res_source_key])
+            if sys.version_info >= (2,6):
+                logger.notify("PyXML -> python version >= 2.6 : patching")
+                pyxml_src = os.path.join(src_dir,"pyxml.tar.gz")
+                urllib.urlretrieve(URLS['PYXML'][res_source_key], pyxml_src)
+                logger.notify("PyXML -> python version >= 2.6 : extract archive")
+                tf = tarfile.open(pyxml_src,'r:gz')
+                pyxml_base_path = os.path.join(src_dir,"pyxml") 
+                tf.extractall(pyxml_base_path)
+                tf.close()
+    
+                #patch
+                pyxml_version = os.listdir(pyxml_base_path)[0]            
+                pyxml_path = os.path.join(pyxml_base_path, pyxml_version)
+                olddir = os.getcwd()
+                os.chdir(pyxml_path)
+                logger.notify("PyXML -> python version >= 2.6 : do patch %s : %s " % (pyxml_path, URLS['PYXML']['patch']))
+                p = patch.fromfile(URLS['PYXML']['patch'])
+                p.apply()
+                os.chdir(olddir)
+                logger.notify("PyXML -> python version >= 2.6 : install")
+                call_subprocess([os.path.abspath(os.path.join(home_dir, 'bin', 'pip')), 'install', '-E', os.path.abspath(home_dir), '--build='+os.path.abspath(pyxml_base_path), '--no-download', pyxml_version],
+                        cwd=os.path.abspath(tmp_dir),
+                        filter_stdout=filter_python_develop,
+                        show_stdout=True)
+            else:
+                call_subprocess([os.path.abspath(os.path.join(home_dir, 'bin', 'pip')), 'install', '-E', os.path.abspath(home_dir), URLS['PYXML'][res_source_key]],
+                        cwd=os.path.abspath(tmp_dir),
+                        filter_stdout=filter_python_develop,
+                        show_stdout=True)
+        
+        
+        NORMAL_INSTALL = [ #(key,method, option_str, extra_env)
+            #('LXML', 'easy_install', None, {'STATIC_DEPS': 'true'}),
+            ('PSYCOPG2', 'pip', None, None),
+            ('MYSQL', 'pip', None, None),
+            ('PIL', 'pip', None, None), 
+            ('FOURSUITE_XML','easy_install', None, None), 
+            ('DJANGO','pip', None, None),
+            ('JOGGING','pip', None, None),
+            ('DJANGO-EXTENSIONS', 'pip', None, None),
+            ('DJANGO-REGISTRATION', 'easy_install', '-Z', None),
+            ('DJANGO-TAGGING', 'pip', None, None),
+            ]
+            
+        if system_str == "Darwin":
+            NORMAL_INSTALL.append(('LXML', 'easy_install', None, {'STATIC_DEPS': 'true'}))
+        else:
+            NORMAL_INSTALL.append(('LXML', 'easy_install', None, None))
+        
+            
+        for key, method, option_str, extra_env in NORMAL_INSTALL:
+            if key not in ignore_packages:
+                normal_install(key, method, option_str, extra_env, res_source_key, home_dir, tmp_dir)
+                        
+        logger.notify("Clear source dir")
+        shutil.rmtree(src_dir)
+
+    finally:
+        logger.indent -= 2
+    script_dir = join(base_dir, 'bin')
+    logger.notify('Run "%s Package" to install new packages that provide builds'
+                  % join(script_dir, 'easy_install'))
+
+
+def normal_install(key, method, option_str, extra_env, res_source_key, home_dir, tmp_dir):
+    logger.notify("Install %s from %s with %s" % (key,URLS[key][res_source_key],method))
+    if method == 'pip':
+        args = [os.path.abspath(os.path.join(home_dir, 'bin', 'pip')), 'install', '-E', os.path.abspath(home_dir), URLS[key][res_source_key]]
+        if option_str :
+            args.insert(4,option_str)
+        call_subprocess(args,
+                cwd=os.path.abspath(tmp_dir),
+                filter_stdout=filter_python_develop,
+                show_stdout=True,
+                extra_env=extra_env)
+    else:
+        args = [os.path.abspath(os.path.join(home_dir, 'bin', 'easy_install')), URLS[key][res_source_key]]
+        if option_str :
+            args.insert(1,option_str)
+        call_subprocess(args,
+                cwd=os.path.abspath(tmp_dir),
+                filter_stdout=filter_python_develop,
+                show_stdout=True,
+                extra_env=extra_env)
+    
+
+def ensure_dir(dir):
+    if not os.path.exists(dir):
+        logger.notify('Creating directory %s' % dir)
+        os.makedirs(dir)
+
+def filter_python_develop(line):
+    if not line.strip():
+        return Logger.DEBUG
+    for prefix in ['Searching for', 'Reading ', 'Best match: ', 'Processing ',
+                   'Moving ', 'Adding ', 'running ', 'writing ', 'Creating ',
+                   'creating ', 'Copying ']:
+        if line.startswith(prefix):
+            return Logger.DEBUG
+    return Logger.NOTIFY
+"""
+
+def main():
+    python_version = ".".join(map(str,sys.version_info[0:2]))
+    text = virtualenv.create_bootstrap_script(EXTRA_TEXT, python_version=python_version)
+    if os.path.exists(script_name):
+        f = open(script_name)
+        cur_text = f.read()
+        f.close()
+    else:
+        cur_text = ''
+    print 'Updating %s' % script_name
+    if cur_text == 'text':
+        print 'No update'
+    else:
+        print 'Script changed; updating...'
+        f = open(script_name, 'w')
+        f.write(text)
+        f.close()
+
+if __name__ == '__main__':
+    main()
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/virtualenv/res/lib/patch.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,589 @@
+""" Patch utility to apply unified diffs
+
+    Brute-force line-by-line non-recursive parsing 
+
+    Copyright (c) 2008-2010 anatoly techtonik
+    Available under the terms of MIT license
+
+    Project home: http://code.google.com/p/python-patch/
+
+
+    $Id: patch.py 76 2010-04-08 19:10:21Z techtonik $
+    $HeadURL: https://python-patch.googlecode.com/svn/trunk/patch.py $
+"""
+
+__author__ = "techtonik.rainforce.org"
+__version__ = "10.04"
+
+import copy
+import logging
+import re
+# cStringIO doesn't support unicode in 2.5
+from StringIO import StringIO
+from logging import debug, info, warning
+
+from os.path import exists, isfile, abspath
+from os import unlink
+
+
+#------------------------------------------------
+# Logging is controlled by "python_patch" logger
+
+debugmode = False
+
+logger = logging.getLogger("python_patch")
+loghandler = logging.StreamHandler()
+logger.addHandler(loghandler)
+
+debug = logger.debug
+info = logger.info
+warning = logger.warning
+
+#: disable library logging by default
+logger.setLevel(logging.CRITICAL)
+
+#------------------------------------------------
+
+
+def fromfile(filename):
+  """ Parse patch file and return Patch() object
+  """
+
+  info("reading patch from file %s" % filename)
+  fp = open(filename, "rb")
+  patch = Patch(fp)
+  fp.close()
+  return patch
+
+
+def fromstring(s):
+  """ Parse text string and return Patch() object
+  """
+
+  return Patch(
+           StringIO.StringIO(s)    
+         )
+
+
+
+class HunkInfo(object):
+  """ Parsed hunk data container (hunk starts with @@ -R +R @@) """
+
+  def __init__(self):
+    self.startsrc=None #: line count starts with 1
+    self.linessrc=None
+    self.starttgt=None
+    self.linestgt=None
+    self.invalid=False
+    self.text=[]
+
+  def copy(self):
+    return copy.copy(self)
+
+#  def apply(self, estream):
+#    """ write hunk data into enumerable stream
+#        return strings one by one until hunk is
+#        over
+#
+#        enumerable stream are tuples (lineno, line)
+#        where lineno starts with 0
+#    """
+#    pass
+
+
+
+class Patch(object):
+
+  def __init__(self, stream=None):
+
+    # define Patch data members
+    # table with a row for every source file
+
+    #: list of source filenames
+    self.source=None
+    self.target=None
+    #: list of lists of hunks
+    self.hunks=None
+    #: file endings statistics for every hunk
+    self.hunkends=None
+
+    if stream:
+      self.parse(stream)
+
+  def copy(self):
+    return copy.copy(self)
+
+  def parse(self, stream):
+    """ parse unified diff """
+    self.source = []
+    self.target = []
+    self.hunks = []
+    self.hunkends = []
+
+    # define possible file regions that will direct the parser flow
+    header = False    # comments before the patch body
+    filenames = False # lines starting with --- and +++
+
+    hunkhead = False  # @@ -R +R @@ sequence
+    hunkbody = False  #
+    hunkskip = False  # skipping invalid hunk mode
+
+    header = True
+    lineends = dict(lf=0, crlf=0, cr=0)
+    nextfileno = 0
+    nexthunkno = 0    #: even if index starts with 0 user messages number hunks from 1
+
+    # hunkinfo holds parsed values, hunkactual - calculated
+    hunkinfo = HunkInfo()
+    hunkactual = dict(linessrc=None, linestgt=None)
+
+    fe = enumerate(stream)
+    for lineno, line in fe:
+
+      # analyze state
+      if header and line.startswith("--- "):
+        header = False
+        # switch to filenames state
+        filenames = True
+      #: skip hunkskip and hunkbody code until you read definition of hunkhead
+      if hunkbody:
+        # process line first
+        if re.match(r"^[- \+\\]", line):
+            # gather stats about line endings
+            if line.endswith("\r\n"):
+              self.hunkends[nextfileno-1]["crlf"] += 1
+            elif line.endswith("\n"):
+              self.hunkends[nextfileno-1]["lf"] += 1
+            elif line.endswith("\r"):
+              self.hunkends[nextfileno-1]["cr"] += 1
+              
+            if line.startswith("-"):
+              hunkactual["linessrc"] += 1
+            elif line.startswith("+"):
+              hunkactual["linestgt"] += 1
+            elif not line.startswith("\\"):
+              hunkactual["linessrc"] += 1
+              hunkactual["linestgt"] += 1
+            hunkinfo.text.append(line)
+            # todo: handle \ No newline cases
+        else:
+            warning("invalid hunk no.%d at %d for target file %s" % (nexthunkno, lineno+1, self.target[nextfileno-1]))
+            # add hunk status node
+            self.hunks[nextfileno-1].append(hunkinfo.copy())
+            self.hunks[nextfileno-1][nexthunkno-1]["invalid"] = True
+            # switch to hunkskip state
+            hunkbody = False
+            hunkskip = True
+
+        # check exit conditions
+        if hunkactual["linessrc"] > hunkinfo.linessrc or hunkactual["linestgt"] > hunkinfo.linestgt:
+            warning("extra hunk no.%d lines at %d for target %s" % (nexthunkno, lineno+1, self.target[nextfileno-1]))
+            # add hunk status node
+            self.hunks[nextfileno-1].append(hunkinfo.copy())
+            self.hunks[nextfileno-1][nexthunkno-1]["invalid"] = True
+            # switch to hunkskip state
+            hunkbody = False
+            hunkskip = True
+        elif hunkinfo.linessrc == hunkactual["linessrc"] and hunkinfo.linestgt == hunkactual["linestgt"]:
+            self.hunks[nextfileno-1].append(hunkinfo.copy())
+            # switch to hunkskip state
+            hunkbody = False
+            hunkskip = True
+
+            # detect mixed window/unix line ends
+            ends = self.hunkends[nextfileno-1]
+            if ((ends["cr"]!=0) + (ends["crlf"]!=0) + (ends["lf"]!=0)) > 1:
+              warning("inconsistent line ends in patch hunks for %s" % self.source[nextfileno-1])
+            if debugmode:
+              debuglines = dict(ends)
+              debuglines.update(file=self.target[nextfileno-1], hunk=nexthunkno)
+              debug("crlf: %(crlf)d  lf: %(lf)d  cr: %(cr)d\t - file: %(file)s hunk: %(hunk)d" % debuglines)
+
+      if hunkskip:
+        match = re.match("^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))?", line)
+        if match:
+          # switch to hunkhead state
+          hunkskip = False
+          hunkhead = True
+        elif line.startswith("--- "):
+          # switch to filenames state
+          hunkskip = False
+          filenames = True
+          if debugmode and len(self.source) > 0:
+            debug("- %2d hunks for %s" % (len(self.hunks[nextfileno-1]), self.source[nextfileno-1]))
+
+      if filenames:
+        if line.startswith("--- "):
+          if nextfileno in self.source:
+            warning("skipping invalid patch for %s" % self.source[nextfileno])
+            del self.source[nextfileno]
+            # double source filename line is encountered
+            # attempt to restart from this second line
+          re_filename = "^--- ([^\t]+)"
+          match = re.match(re_filename, line)
+          # todo: support spaces in filenames
+          if match:
+            self.source.append(match.group(1).strip())
+          else:
+            warning("skipping invalid filename at line %d" % lineno)
+            # switch back to header state
+            filenames = False
+            header = True
+        elif not line.startswith("+++ "):
+          if nextfileno in self.source:
+            warning("skipping invalid patch with no target for %s" % self.source[nextfileno])
+            del self.source[nextfileno]
+          else:
+            # this should be unreachable
+            warning("skipping invalid target patch")
+          filenames = False
+          header = True
+        else:
+          if nextfileno in self.target:
+            warning("skipping invalid patch - double target at line %d" % lineno)
+            del self.source[nextfileno]
+            del self.target[nextfileno]
+            nextfileno -= 1
+            # double target filename line is encountered
+            # switch back to header state
+            filenames = False
+            header = True
+          else:
+            re_filename = "^\+\+\+ ([^\t]+)"
+            match = re.match(re_filename, line)
+            if not match:
+              warning("skipping invalid patch - no target filename at line %d" % lineno)
+              # switch back to header state
+              filenames = False
+              header = True
+            else:
+              self.target.append(match.group(1).strip())
+              nextfileno += 1
+              # switch to hunkhead state
+              filenames = False
+              hunkhead = True
+              nexthunkno = 0
+              self.hunks.append([])
+              self.hunkends.append(lineends.copy())
+              continue
+
+      if hunkhead:
+        match = re.match("^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))?", line)
+        if not match:
+          if nextfileno-1 not in self.hunks:
+            warning("skipping invalid patch with no hunks for file %s" % self.target[nextfileno-1])
+            # switch to header state
+            hunkhead = False
+            header = True
+            continue
+          else:
+            # switch to header state
+            hunkhead = False
+            header = True
+        else:
+          hunkinfo.startsrc = int(match.group(1))
+          hunkinfo.linessrc = 1
+          if match.group(3): hunkinfo.linessrc = int(match.group(3))
+          hunkinfo.starttgt = int(match.group(4))
+          hunkinfo.linestgt = 1
+          if match.group(6): hunkinfo.linestgt = int(match.group(6))
+          hunkinfo.invalid = False
+          hunkinfo.text = []
+
+          hunkactual["linessrc"] = hunkactual["linestgt"] = 0
+
+          # switch to hunkbody state
+          hunkhead = False
+          hunkbody = True
+          nexthunkno += 1
+          continue
+    else:
+      if not hunkskip:
+        warning("patch file incomplete - %s" % filename)
+        # sys.exit(?)
+      else:
+        # duplicated message when an eof is reached
+        if debugmode and len(self.source) > 0:
+            debug("- %2d hunks for %s" % (len(self.hunks[nextfileno-1]), self.source[nextfileno-1]))
+
+    info("total files: %d  total hunks: %d" % (len(self.source), sum(len(hset) for hset in self.hunks)))
+
+
+  def apply(self):
+    """ apply parsed patch """
+
+    total = len(self.source)
+    for fileno, filename in enumerate(self.source):
+
+      f2patch = filename
+      if not exists(f2patch):
+        f2patch = self.target[fileno]
+        if not exists(f2patch):
+          warning("source/target file does not exist\n--- %s\n+++ %s" % (filename, f2patch))
+          continue
+      if not isfile(f2patch):
+        warning("not a file - %s" % f2patch)
+        continue
+      filename = f2patch
+
+      info("processing %d/%d:\t %s" % (fileno+1, total, filename))
+
+      # validate before patching
+      f2fp = open(filename)
+      hunkno = 0
+      hunk = self.hunks[fileno][hunkno]
+      hunkfind = []
+      hunkreplace = []
+      validhunks = 0
+      canpatch = False
+      for lineno, line in enumerate(f2fp):
+        if lineno+1 < hunk.startsrc:
+          continue
+        elif lineno+1 == hunk.startsrc:
+          hunkfind = [x[1:].rstrip("\r\n") for x in hunk.text if x[0] in " -"]
+          hunkreplace = [x[1:].rstrip("\r\n") for x in hunk.text if x[0] in " +"]
+          #pprint(hunkreplace)
+          hunklineno = 0
+
+          # todo \ No newline at end of file
+
+        # check hunks in source file
+        if lineno+1 < hunk.startsrc+len(hunkfind)-1:
+          if line.rstrip("\r\n") == hunkfind[hunklineno]:
+            hunklineno+=1
+          else:
+            debug("hunk no.%d doesn't match source file %s" % (hunkno+1, filename))
+            # file may be already patched, but we will check other hunks anyway
+            hunkno += 1
+            if hunkno < len(self.hunks[fileno]):
+              hunk = self.hunks[fileno][hunkno]
+              continue
+            else:
+              break
+
+        # check if processed line is the last line
+        if lineno+1 == hunk.startsrc+len(hunkfind)-1:
+          debug("file %s hunk no.%d -- is ready to be patched" % (filename, hunkno+1))
+          hunkno+=1
+          validhunks+=1
+          if hunkno < len(self.hunks[fileno]):
+            hunk = self.hunks[fileno][hunkno]
+          else:
+            if validhunks == len(self.hunks[fileno]):
+              # patch file
+              canpatch = True
+              break
+      else:
+        if hunkno < len(self.hunks[fileno]):
+          warning("premature end of source file %s at hunk %d" % (filename, hunkno+1))
+
+      f2fp.close()
+
+      if validhunks < len(self.hunks[fileno]):
+        if self._match_file_hunks(filename, self.hunks[fileno]):
+          warning("already patched  %s" % filename)
+        else:
+          warning("source file is different - %s" % filename)
+      if canpatch:
+        backupname = filename+".orig"
+        if exists(backupname):
+          warning("can't backup original file to %s - aborting" % backupname)
+        else:
+          import shutil
+          shutil.move(filename, backupname)
+          if self.write_hunks(backupname, filename, self.hunks[fileno]):
+            warning("successfully patched %s" % filename)
+            unlink(backupname)
+          else:
+            warning("error patching file %s" % filename)
+            shutil.copy(filename, filename+".invalid")
+            warning("invalid version is saved to %s" % filename+".invalid")
+            # todo: proper rejects
+            shutil.move(backupname, filename)
+
+    # todo: check for premature eof
+
+
+  def can_patch(self, filename):
+    """ Check if specified filename can be patched. Returns None if file can
+    not be found among source filenames. False if patch can not be applied
+    clearly. True otherwise.
+
+    :returns: True, False or None
+    """
+    idx = self._get_file_idx(filename, source=True)
+    if idx == None:
+      return None
+    return self._match_file_hunks(filename, self.hunks[idx])
+    
+
+  def _match_file_hunks(self, filepath, hunks):
+    matched = True
+    fp = open(abspath(filepath))
+
+    class NoMatch(Exception):
+      pass
+
+    lineno = 1
+    line = fp.readline()
+    hno = None
+    try:
+      for hno, h in enumerate(hunks):
+        # skip to first line of the hunk
+        while lineno < h.starttgt:
+          if not len(line): # eof
+            debug("check failed - premature eof before hunk: %d" % (hno+1))
+            raise NoMatch
+          line = fp.readline()
+          lineno += 1
+        for hline in h.text:
+          if hline.startswith("-"):
+            continue
+          if not len(line):
+            debug("check failed - premature eof on hunk: %d" % (hno+1))
+            # todo: \ No newline at the end of file
+            raise NoMatch
+          if line.rstrip("\r\n") != hline[1:].rstrip("\r\n"):
+            debug("file is not patched - failed hunk: %d" % (hno+1))
+            raise NoMatch
+          line = fp.readline()
+          lineno += 1
+
+    except NoMatch:
+      matched = False
+      # todo: display failed hunk, i.e. expected/found
+
+    fp.close()
+    return matched
+
+
+  def patch_stream(self, instream, hunks):
+    """ Generator that yields stream patched with hunks iterable
+    
+        Converts lineends in hunk lines to the best suitable format
+        autodetected from input
+    """
+
+    # todo: At the moment substituted lineends may not be the same
+    #       at the start and at the end of patching. Also issue a
+    #       warning/throw about mixed lineends (is it really needed?)
+
+    hunks = iter(hunks)
+
+    srclineno = 1
+
+    lineends = {'\n':0, '\r\n':0, '\r':0}
+    def get_line():
+      """
+      local utility function - return line from source stream
+      collecting line end statistics on the way
+      """
+      line = instream.readline()
+        # 'U' mode works only with text files
+      if line.endswith("\r\n"):
+        lineends["\r\n"] += 1
+      elif line.endswith("\n"):
+        lineends["\n"] += 1
+      elif line.endswith("\r"):
+        lineends["\r"] += 1
+      return line
+
+    for hno, h in enumerate(hunks):
+      debug("hunk %d" % (hno+1))
+      # skip to line just before hunk starts
+      while srclineno < h.startsrc:
+        yield get_line()
+        srclineno += 1
+
+      for hline in h.text:
+        # todo: check \ No newline at the end of file
+        if hline.startswith("-") or hline.startswith("\\"):
+          get_line()
+          srclineno += 1
+          continue
+        else:
+          if not hline.startswith("+"):
+            get_line()
+            srclineno += 1
+          line2write = hline[1:]
+          # detect if line ends are consistent in source file
+          if sum([bool(lineends[x]) for x in lineends]) == 1:
+            newline = [x for x in lineends if lineends[x] != 0][0]
+            yield line2write.rstrip("\r\n")+newline
+          else: # newlines are mixed
+            yield line2write
+     
+    for line in instream:
+      yield line
+
+
+  def write_hunks(self, srcname, tgtname, hunks):
+    src = open(srcname, "rb")
+    tgt = open(tgtname, "wb")
+
+    debug("processing target file %s" % tgtname)
+
+    tgt.writelines(self.patch_stream(src, hunks))
+
+    tgt.close()
+    src.close()
+    return True
+  
+
+  def _get_file_idx(self, filename, source=None):
+    """ Detect index of given filename within patch.
+
+        :param filename:
+        :param source: search filename among sources (True),
+                       targets (False), or both (None)
+        :returns: int or None
+    """
+    filename = abspath(filename)
+    if source == True or source == None:
+      for i,fnm in enumerate(self.source):
+        if filename == abspath(fnm):
+          return i  
+    if source == False or source == None:
+      for i,fnm in enumerate(self.target):
+        if filename == abspath(fnm):
+          return i  
+
+
+
+
+from optparse import OptionParser
+from os.path import exists
+import sys
+
+if __name__ == "__main__":
+  opt = OptionParser(usage="%prog [options] unipatch-file", version="python-patch %s" % __version__)
+  opt.add_option("--debug", action="store_true", dest="debugmode", help="debug mode")
+  (options, args) = opt.parse_args()
+
+  if not args:
+    opt.print_version()
+    opt.print_help()
+    sys.exit()
+  debugmode = options.debugmode
+  patchfile = args[0]
+  if not exists(patchfile) or not isfile(patchfile):
+    sys.exit("patch file does not exist - %s" % patchfile)
+
+
+  if debugmode:
+    loglevel = logging.DEBUG
+    logformat = "%(levelname)8s %(message)s"
+  else:
+    loglevel = logging.INFO
+    logformat = "%(message)s"
+  logger.setLevel(loglevel)
+  loghandler.setFormatter(logging.Formatter(logformat))
+
+
+
+  patch = fromfile(patchfile)
+  #pprint(patch)
+  patch.apply()
+
+  # todo: document and test line ends handling logic - patch.py detects proper line-endings
+  #       for inserted hunks and issues a warning if patched file has incosistent line ends
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/virtualenv/res/patch/pyxml.patch	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,28 @@
+diff -ur xml/xpath/ParsedAbbreviatedAbsoluteLocationPath.py b/xml/xpath/ParsedAbbreviatedAbsoluteLocationPath.py
+--- xml/xpath/ParsedAbbreviatedAbsoluteLocationPath.py	2003-03-11 15:01:34.000000000 +0100
++++ xml/xpath/ParsedAbbreviatedAbsoluteLocationPath.py	2009-05-25 16:32:26.000000000 +0200
+@@ -24,8 +24,8 @@
+         self._rel = rel
+         nt = ParsedNodeTest.ParsedNodeTest('node', '')
+         ppl = ParsedPredicateList.ParsedPredicateList([])
+-        as = ParsedAxisSpecifier.ParsedAxisSpecifier('descendant-or-self')
+-        self._step = ParsedStep.ParsedStep(as, nt, ppl)
++        asp = ParsedAxisSpecifier.ParsedAxisSpecifier('descendant-or-self')
++        self._step = ParsedStep.ParsedStep(asp, nt, ppl)
+         return
+ 
+     def evaluate(self, context):
+diff -ur a/xml/xpath/ParsedAbbreviatedRelativeLocationPath.py b/xml/xpath/ParsedAbbreviatedRelativeLocationPath.py
+--- xml/xpath/ParsedAbbreviatedRelativeLocationPath.py	2003-03-11 15:01:34.000000000 +0100
++++ xml/xpath/ParsedAbbreviatedRelativeLocationPath.py	2009-05-25 16:27:55.000000000 +0200
+@@ -28,8 +28,8 @@
+         self._right = right
+         nt = ParsedNodeTest.ParsedNodeTest('node','')
+         ppl = ParsedPredicateList.ParsedPredicateList([])
+-        as = ParsedAxisSpecifier.ParsedAxisSpecifier('descendant-or-self')
+-        self._middle = ParsedStep.ParsedStep(as, nt, ppl)
++        asp = ParsedAxisSpecifier.ParsedAxisSpecifier('descendant-or-self')
++        self._middle = ParsedStep.ParsedStep(asp, nt, ppl)
+ 
+     def evaluate(self, context):
+         res = []
Binary file sbin/virtualenv/res/src/4Suite-XML-1.0.2.tar.bz2 has changed
Binary file sbin/virtualenv/res/src/Django-1.2.3.tar.gz has changed
Binary file sbin/virtualenv/res/src/Imaging-1.1.7.tar.gz has changed
Binary file sbin/virtualenv/res/src/MySQL-python-1.2.3c1.tar.gz has changed
Binary file sbin/virtualenv/res/src/PyXML-0.8.4.tar.gz has changed
Binary file sbin/virtualenv/res/src/distribute-0.6.13.tar.gz has changed
Binary file sbin/virtualenv/res/src/django-extensions-0.4.1.tar.gz has changed
Binary file sbin/virtualenv/res/src/django-registration.tar.gz has changed
Binary file sbin/virtualenv/res/src/django-tagging-0.3.1.tar.gz has changed
Binary file sbin/virtualenv/res/src/jogging-0.2.2.tar.gz has changed
Binary file sbin/virtualenv/res/src/lxml-2.2.7.tar.gz has changed
Binary file sbin/virtualenv/res/src/psycopg2-2.2.1.tar.gz has changed
Binary file sbin/virtualenv/res/src/pylucene-3.0.1-1-src.tar.gz has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/.htaccess.tmpl	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,1 @@
+RedirectMatch permanent /~ymh/leezam/?$ /~ymh/leezam/leezam
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/.htaccess	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,16 @@
+SetEnv DJANGO_SETTINGS_MODULE ldt.settings
+SetEnv PY_USE_XMLPLUS true
+SetEnv PROJECT_PATH /iridata/users/wakimd/hg/leezam/web
+SetEnv PYTHON_PATH /iridata/users/wakimd/Env/Efculture/lib/python2.6/site-packages
+
+Options ExecCGI FollowSymLinks
+SetHandler wsgi-script
+
+RewriteEngine On
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteRule ^(.*)$ /dev/~wakimd/leezam/leezam/modwsgi.wsgi/$1 [QSA,PT,L]
+
+Header set Pragma "no-cache"
+Header set Cache-Control "no-cache"
+Header set Expires "-1"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/.htaccess.tmpl	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,11 @@
+SetHandler python-program
+PythonPath "['D:/wuj/dev/ldt', 'D:/wuj/dev/ldt/lib'] + sys.path"
+PythonHandler django.core.handlers.modpython
+SetEnv DJANGO_SETTINGS_MODULE ldt.settings
+SetEnv PY_USE_XMLPLUS true
+PythonInterpreter ldt
+PythonOption django.root /dev/ldt/ldt
+PythonDebug on
+Header set Pragma "no-cache"
+Header set Cache-Control "no-cache"
+Header set Expires "-1"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/__init__.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,16 @@
+VERSION = (0, 2, 0, "final", 0)
+
+
+def get_version():
+    version = '%s.%s' % (VERSION[0], VERSION[1])
+    if VERSION[2]:
+        version = '%s.%s' % (version, VERSION[2])
+    if VERSION[3:] == ('alpha', 0):
+        version = '%s pre-alpha' % version
+    else:
+        if VERSION[3] != 'final':
+            version = '%s %s %s' % (version, VERSION[3], VERSION[4])
+    return version
+
+
+__version__ = get_version()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/admin.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,30 @@
+from django.contrib import admin
+from ldt.management import test_cms
+
+"""
+site admin pour cms page
+"""
+if test_cms():
+    class AdminSite(admin.AdminSite):
+        index_template = 'admin/page_index.html'
+        login_template = 'admin/page_login.html'
+        app_index_template = 'admin/page_app_index.html'    
+        
+    admin_site = AdminSite()
+
+    from cms.models import Page
+    from cms.admin import pageadmin
+
+    class CmsPageAdmin(pageadmin.PageAdmin):
+        change_list_template = "admin/cms_change_list.html"
+        change_form_template = "admin/cms_change_form.html"
+
+    admin_site.register(Page, CmsPageAdmin)
+
+    from cms.plugins.snippet.models import Snippet
+    from cms.plugins.snippet.admin import SnippetAdmin
+
+    class CmsSnippetAdmin(SnippetAdmin):
+          change_form_template = "admin/page_change_form.html"
+          change_list_template = "admin/page_change_list.html"
+    admin_site.register(Snippet, CmsSnippetAdmin)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/auth/__init__.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,7 @@
+
+def checkAccess(user, obj):
+    check_meth = getattr(obj, 'checkAccess', False)
+    if check_meth:
+        return check_meth(user)
+    else:
+        return user.is_staff
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/core/handlers/modpython.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,8 @@
+
+def handler(req):
+    activate_this = req.get_options().get("virtualenv.activate_path")
+    execfile(activate_this, dict(__file__=activate_this))    
+
+    import django.core.handlers.modpython
+
+    return django.core.handlers.modpython.handler(req)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/core/handlers/modwsgi.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,24 @@
+import os, sys, site
+
+def application(environ, start_response):
+    os.environ['DJANGO_SETTINGS_MODULE'] = environ['DJANGO_SETTINGS_MODULE']
+    os.environ['PY_USE_XMLPLUS'] = environ['PY_USE_XMLPLUS']
+
+    prev_sys_path = list(sys.path)
+
+    sys.path.append(environ['PROJECT_PATH'])
+    site.addsitedir(environ['PYTHON_PATH'])
+
+    new_sys_path = [] 
+    for item in list(sys.path): 
+        if item not in prev_sys_path: 
+            new_sys_path.append(item) 
+            sys.path.remove(item) 
+    sys.path[:0] = new_sys_path 
+
+    import django.core.handlers.wsgi
+
+    _application = django.core.handlers.wsgi.WSGIHandler()
+
+    return _application(environ, start_response)
+        
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/core/models.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,22 @@
+from django.db import models
+from django.contrib.auth.models import *
+
+
+class Owner(models.Model):
+    user = models.ForeignKey(User,  blank=True, null=True)
+    group = models.ForeignKey(Group,  blank=True, null=True)
+
+    def __unicode__(self):
+        if self.user:
+            return self.user.username
+        else:
+            return self.group.name
+
+
+class Document(models.Model):
+    owner= models.ForeignKey(Owner, blank = True, null=True)
+
+    class Meta:
+        abstract = True
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/core/tests.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,23 @@
+"""
+This file demonstrates two different styles of tests (one doctest and one
+unittest). These will both pass when you run "manage.py test".
+
+Replace these with more appropriate tests for your application.
+"""
+
+from django.test import TestCase
+
+class SimpleTest(TestCase):
+    def test_basic_addition(self):
+        """
+        Tests that 1 + 1 always equals 2.
+        """
+        self.failUnlessEqual(1 + 1, 2)
+
+__test__ = {"doctest": """
+Another way to test that 1 + 1 is equal to 2.
+
+>>> 1 + 1 == 2
+True
+"""}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/core/views.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,1 @@
+# Create your views here.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/forms/widgets.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,17 @@
+"""
+Some useful form widgets
+"""
+
+from django.contrib.admin.widgets import AdminSplitDateTime
+from django.utils.safestring import mark_safe
+from django.utils.translation import ugettext as _
+
+
+class LdtSplitDateTime(AdminSplitDateTime):
+    """
+    A widget that extend the AdminSplitDateTime to improve the html outputted
+    """
+    
+    def format_output(self, rendered_widgets):
+        return mark_safe(u'<div class="ldtdatetime"><div class="ldtdate"><div class="ldtdatetitle">%s</div> <div class="ldtdatefield">%s</div></div><div class="ldttime"><div class="ldttimetitle">%s</div> <div class="ldttimefield">%s</div></div></div>' % \
+            (_('Date'), rendered_widgets[0],  _('Time'), rendered_widgets[1]))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/__init__.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,15 @@
+import lucene
+from django.conf import settings
+
+lucene.initVM(lucene.CLASSPATH)
+
+STORE = lucene.SimpleFSDirectory(lucene.File(settings.INDEX_PATH))
+ANALYZER = lucene.PerFieldAnalyzerWrapper(lucene.StandardAnalyzer(lucene.Version.LUCENE_CURRENT))
+ANALYZER.addAnalyzer("tags",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
+ANALYZER.addAnalyzer("title",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
+ANALYZER.addAnalyzer("abstract",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
+ANALYZER.addAnalyzer("all",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
+
+
+VERSION  = (0,1)
+VERSION_STR = unicode(".".join(map(lambda i:"%02d" % (i,), VERSION)))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/admin.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,82 @@
+from django.contrib import admin
+from django.conf.urls.defaults import *
+from django.shortcuts import render_to_response
+from django.template import RequestContext
+from django.conf import settings
+from models import *
+from forms import *
+from fileimport import *
+from ldt.ldt_utils import STORE
+from ldt.ldt_utils import ANALYZER
+
+import lucene
+
+admin.site.register(Project)
+
+class ContentAdmin(admin.ModelAdmin):
+    
+    def import_file(self, request):
+        if request.method =='POST':
+            form = LdtImportForm(request.POST, request.FILES)
+            if form.is_valid():
+                filetoprocess =form.cleaned_data['importFile']
+                flatten = form.cleaned_data['flatten']
+                videoPath = form.cleaned_data['videoPath']
+                # fi = None
+                fi = FileImport(filetoprocess, videoPath, flatten)
+                try:
+                    fi.processFile()
+                    args = {'message': "File imported"}
+                except FileImportError:
+                    non_field_errors = form.non_field_errors()
+                    non_field_errors.append("Error when importing : unknown file type")
+                    form._errors["__all__"] = non_field_errors
+                    args = {'message': "Can not import file, unknown file type", 'form': form}
+                    
+            else:
+                non_field_errors = form.non_field_errors()
+                non_field_errors.append("Error when importing : invalid form")
+                form._errors["__all__"] = non_field_errors
+                args = {'message': "Error when importing : invalid form", 'form': form}
+        else:
+            form = LdtImportForm()
+            args = {'form': form, 'current_app': self.admin_site.name, 'current_action' : 'import_file'}
+        return render_to_response('admin/ldt_utils/content/upload_form.html', args, context_instance=RequestContext(request))
+
+    def reindex(self, request):
+        message = None
+        if request.method == "POST":
+            form = ReindexForm(request.POST)
+            if form.is_valid():    
+                # try:
+                writer = lucene.IndexWriter(STORE, ANALYZER, True, lucene.IndexWriter.MaxFieldLength.UNLIMITED)
+                contentList = form.cleaned_data["contents"]
+                indexer = ContentIndexer(contentList,writer)
+                indexer.index_all()
+
+                writer.close()
+                message = "Indexation ok : " + repr(form.cleaned_data["contents"]) 
+                form = ReindexForm()
+                # except Exception, inst:
+                    # non_field_errors = form.non_field_errors()
+                    # non_field_errors.append("Error when reindexing : " + cgi.escape(repr(inst)))
+                    # form._errors["__all__"] = non_field_errors
+                    #message = "ERROR : " + repr(non_field_errors)
+        else:
+            form = ReindexForm()
+    
+        return render_to_response('admin/ldt_utils/content/reindex_form.html', {'form': form, 'message':message, 'current_app': self.admin_site.name, 'current_action' : 'reindex' }, context_instance=RequestContext(request))
+
+    def get_urls(self):
+        urls = super(ContentAdmin, self).get_urls()
+        content_urls = patterns('',
+            url(r'^reindex/$', self.admin_site.admin_view(self.reindex), name="ldt_content_reindex"),
+    # (r'^admin/ldt/content/import/upload/$', 'ldt.ldt_utils.views.uploadFile'),                                
+            url(r'^import/$', self.admin_site.admin_view(self.import_file), name="ldt_content_import_file")
+        )
+        return content_urls + urls
+
+
+admin.site.register(Content, ContentAdmin)
+admin.site.register(Media)
+admin.site.register(Author)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/contentindexer.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,231 @@
+import tempfile
+import os
+import os.path
+import shutil
+from ldt.utils import zipfileext
+import urllib
+# import ldt.utils.log
+import ldt.utils.xml
+from django.conf import settings
+from models import Content
+import fnmatch
+import uuid
+import shutil
+import lucene
+from ldt.ldt_utils import STORE
+from ldt.ldt_utils import ANALYZER
+import lxml.etree
+
+def Property(func):
+    return property(**func()) 
+
+
+class ContentIndexer(object):
+        
+        def __init__(self, contentList, writer, decoupage_blackList = settings.DECOUPAGE_BLACKLIST):
+                self.__contentList = contentList
+                self.__decoupage_blacklist = decoupage_blackList
+                self.__writer = writer
+                    
+        @Property
+        def decoupage_blacklist(): #@NoSelf
+            doc = """get blacklist""" #@UnusedVariable
+           
+            def fget(self):
+                if self.__decoupage_blacklist is None:
+                    self.__decoupage_blacklist = ()
+                return self.__decoupage_blacklist
+               
+            def fset(self, value):
+                self.__decoupage_blacklist = value
+               
+            def fdel(self):
+                del self.__decoupage_blacklist
+               
+            return locals()
+                   
+        def index_all(self):
+            for content in self.__contentList:
+                self.index_content(content)
+                
+        def index_content(self, content):
+            url =content.iri_url()
+            filepath = urllib.urlopen(url)
+            doc = lxml.etree.fromstring(filepath) 
+           
+            self.__writer.deleteDocuments(lucene.Term("iri_id", content.iri_id))
+            
+            res = doc.xpath("/iri/body/ensembles/ensemble")
+
+            for ensemble in res:
+                ensembleId = ensemble.get(None,u"id")
+                
+                for decoupageNode in ensemble.getchildren():
+                    if decoupageNode.tag != "decoupage"  or decoupageNode.get(None,u"id") in self.decoupage_blacklist:
+
+                        continue
+                    
+                    decoupId = decoupageNode.get(None,u"id")
+                    res = decoupageNode.xpath("elements/element")
+                    for elementNode in res:
+                        doc = lucene.Document()
+                        elementId = elementNode.get(None,u"id")
+                        tags = elementNode.get(None,u"tags")
+                        
+                        if tags is not None:                            
+                            tags.replace(",", ";")
+                        
+                        if tags is None or len(tags) == 0:
+                            tags = ""
+                            restagnode = elementNode.xpath("tag/text()")
+                            for tagnode in restagnode:
+                                tags = tags + " ; " + tagnode.text()
+                                
+                        if tags is None or len(tags) == 0:
+                            tags = ""
+                            restagnode = elementNode.xpath("tags/tag/text()")
+
+                            for tagnode in restagnode:
+                                tags = tags + " ; " + tagnode.text()
+    
+                        title = ""
+                        for txtRes in elementNode.xpath("title/text()"): 
+                            title = title + txtRes.text()
+                
+                        abstract = ""
+                        for txtRes in elementNode.xpath("abstract/text()"): 
+                            abstract = abstract + txtRes.text()
+                
+                        doc.add(lucene.Field("iri_id", content.iri_id, lucene.Field.Store.YES, lucene.Field.Index.NOT_ANALYZED))
+                        doc.add(lucene.Field("ensemble_id", ensembleId, lucene.Field.Store.YES, lucene.Field.Index.NO))
+                        doc.add(lucene.Field("decoupage_id", decoupId, lucene.Field.Store.YES, lucene.Field.Index.NO))
+                        doc.add(lucene.Field("element_id", elementId, lucene.Field.Store.YES, lucene.Field.Index.NO))                        
+                        doc.add(lucene.Field("tags", tags, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED))
+                        doc.add(lucene.Field("title", title, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED))
+                        doc.add(lucene.Field("abstract", abstract, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED))
+                        doc.add(lucene.Field("all", " ".join([tags, title, abstract]), lucene.Field.Store.NO, lucene.Field.Index.ANALYZED))
+
+                        seg = Segment(content=content,
+                                      iri_id=content.iri_id,
+                                      ensemble_id=ensembleId,
+                                      cutting_id=decoupId,
+                                      element_id=elementId,
+                                      tags=tags,
+                                      title=title,
+                                      abstract=abstract,
+                                      duration=duration,
+                                      author=author,
+                                      start_ts=start_ts,
+                                      date=date_str)
+                        seg.save()
+
+            
+                        self.__writer.addDocument(doc)
+            
+            self.__writer.commit()
+            
+            
+class ProjectIndexer(object):
+        
+        def __init__(self, projectList, writer, decoupage_blackList = settings.DECOUPAGE_BLACKLIST):
+                self.__projectList = projectList
+                self.__decoupage_blacklist = decoupage_blackList
+                self.__writer = writer
+                
+        @Property
+        def decoupage_blacklist(): #@NoSelf
+            doc = """get blacklist""" #@UnusedVariable
+           
+            def fget(self):
+                if self.__decoupage_blacklist is None:
+                    self.__decoupage_blacklist = ()
+                return self.__decoupage_blacklist
+               
+            def fset(self, value):
+                self.__decoupage_blacklist = value
+               
+            def fdel(self):
+                del self.__decoupage_blacklist
+               
+            return locals()
+                   
+        def index_all(self):
+            for project in self.__projectList:
+                self.index_project(project)
+ 
+        def index_project(self, project):
+            
+            # pocketfilms.utils.log.debug("Indexing project : "+str(project.iri_id))
+            doc = lxml.etree.fromstring(project.ldt)
+
+            self.__writer.deleteDocuments(lucene.Term("iri_id", project.iri_id))
+            
+            res = doc.xpath("/iri/annotations/content")
+
+            for content in res:
+                contentId = content.get(None,u"id")
+ 
+                ensembleId = "ens_perso"
+                
+                for decoupageNode in content.getchildren():
+                    # pocketfilms.utils.log.debug("Indexing content decoupage : "+ repr(decoupageNode.nodeType) + " in " + repr(self.decoupage_blacklist))
+                    if decoupageNode.tag != "decoupage"  or decoupageNode.get(None,"id") in self.decoupage_blacklist:
+                        continue
+                    
+                    decoupId = decoupageNode.get(None,u"id")
+                    res = decoupageNode.xpath("elements/element")
+                    for elementNode in res:
+                        doc = lucene.Document()
+                        elementId = elementNode.get(None,u"id")
+                        tags = elementNode.get(None,u"tags")
+                        
+                        if tags is not None:                            
+                            tags.replace(",", ";")
+                        
+                        if tags is None or len(tags) == 0:
+                            tags = ""
+                            restagnode = elementNode.xpath("tag/text()")
+                            for tagnode in restagnode:
+                                tags = tags + " ; " + tagnode.text()
+                                
+                        if tags is None or len(tags) == 0:
+                            tags = ""
+                            restagnode = elementNode.xpath("tags/tag/text()")
+                            for tagnode in restagnode:
+                                tags = tags + " ; " + tagnode.text()                  
+    
+                        title = ""
+                        for txtRes in elementNode.xpath("title/text()"): 
+                            title = title + txtRes.text()
+                
+                        abstract = ""
+                        for txtRes in elementNode.xpath("abstract/text()"): 
+                            abstract = abstract + txtRes.text()
+                
+                        doc.add(lucene.Field("project_id", project.iri_id, lucene.Field.Store.YES, lucene.Field.Index.NOT_ANALYZED))              
+                        doc.add(lucene.Field("iri_id", contentId, lucene.Field.Store.YES, lucene.Field.Index.NOT_ANALYZED))
+                        doc.add(lucene.Field("ensemble_id", ensembleId, lucene.Field.Store.YES, lucene.Field.Index.NO))
+                        doc.add(lucene.Field("decoupage_id", decoupId, lucene.Field.Store.YES, lucene.Field.Index.NO))
+                        doc.add(lucene.Field("element_id", elementId, lucene.Field.Store.YES, lucene.Field.Index.NO))
+                        doc.add(lucene.Field("tags", tags, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED))
+                        doc.add(lucene.Field("title", title, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED))
+                        doc.add(lucene.Field("abstract", abstract, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED))
+                        doc.add(lucene.Field("all", " ".join([tags, title, abstract]), lucene.Field.Store.NO, lucene.Field.Index.ANALYZED))
+                        
+                        seg = Segment(content=content,
+                                      iri_id=content.iri_id,
+                                      ensemble_id=ensembleId,
+                                      cutting_id=decoupId,
+                                      element_id=elementId,
+                                      tags=tags,
+                                      title=title,
+                                      abstract=abstract,
+                                      duration=duration,
+                                      author=author,
+                                      start_ts=start_ts,
+                                      date=date_str)
+                        seg.save()
+                                    
+                        self.__writer.addDocument(doc)
+            
+            self.__writer.commit()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/fileimport.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,398 @@
+from copy import deepcopy
+from django.conf import settings
+from django.core.exceptions import ObjectDoesNotExist
+from ldt.utils import zipfileext
+from models import Content, Media
+import fnmatch
+import lxml.etree
+import os.path
+import shutil
+import tempfile
+import urllib
+import uuid
+
+class FileImportError(Exception):
+    def __init__(self, value):
+        self.value = value
+    def __str__(self):
+        return repr(self.value)
+
+
+def Property(func):
+    return property(**func()) 
+
+class IriInfo(object):
+
+    
+    def __init__(self, id, order, titledesc, basepath="", videopath=settings.STREAM_URL, decoupage_blacklist = settings.DECOUPAGE_BLACKLIST, flatten = True):
+        self.id = id
+        self.basepath = basepath
+        self.order = order
+        self.src = ""
+        self.annotations = None
+        self.videopath = videopath
+        self.videourl = ""
+        self.title = None
+        self.desc = None
+        self.duration = None
+        self.created = False
+        self.content = None
+        self.decoupage_blacklist = decoupage_blacklist
+        if self.decoupage_blacklist is None:
+            self.decoupage_blacklist = ()
+        self.flatten = flatten
+        
+        
+    
+    def processIri(self):
+        # for just import a file ldt and get the title for every media
+        if 'http' in self.src:
+            #url = urllib.urlopen(self.src)
+            path = url
+            #doc = xml.dom.minidom.parse(url)
+        #for import a zip, get title and copy file .iri in the media directory
+        else:
+            path = os.path.join(self.basepath, self.src)
+            #doc = xml.dom.minidom.parse(path)
+            
+        doc = lxml.etree.parse(path)
+        
+        
+        #doc = Ft.Xml.Domlette.ConvertDocument(doc) 
+        #con = xml.xpath.Context.Context(doc, 1, 1, None)
+        
+        res = doc.xpath("/iri/head/meta[@name='title']/@content")
+        #res = xml.xpath.Evaluate("/iri/head/meta[@name='title']/@content", context=con)
+        #self.title = res[0].value
+        self.title = res[0]
+
+            
+        #res = xml.xpath.Evaluate("/iri/body/ensembles",context=con)
+        res = doc.xpath("/iri/body/ensembles")
+        ensemblesnode = res[0]
+
+        ensembleids = []
+
+        for node in ensemblesnode: #ensemblesnode.childNodes:
+            #if node.nodeType == xml.dom.Node.ELEMENT_NODE and node.tagName == "ensemble":
+            if node.tag == "ensemble":
+                #id = node.getAttributeNS(None,u"id")
+                id = node.attrib["id"]
+                if id not in ensembleids:
+                    ensembleids.append(id)
+
+        if self.annotations is not None:
+            newEnsemble = None
+            #for cnode in self.annotations.childNodes:
+            for cnode in self.annotations:
+                #if cnode.nodeType == xml.dom.Node.ELEMENT_NODE and cnode.tagName == "decoupage":
+                if cnode.tag == "decoupage":
+                    if newEnsemble is None:
+                        #newensemble = doc.createElementNS(None,'ensemble')
+                        ensembleid = self.id+"_"+str(uuid.uuid1())
+                        newensemble = lxml.etree.SubElement(ensemblesnode,
+                                                            'ensemble',
+                                                            {'id' : ensembleid,
+                                                             'title' : self.annotations.get('title') or "",
+                                                             'author' : self.annotations.get('author') or "",
+                                                             'date' : self.annotations.get('date') or "",
+                                                             'abstract' : self.annotations.get('abstract') or ""
+                                                             }
+                                                            )                        
+                        ensembleids.append(ensembleid)
+                    newDecoupageNode = deepcopy(cnode)
+                    newensemble.append(newDecoupageNode)
+                #elif cnode.nodeType == xml.dom.Node.ELEMENT_NODE and cnode.tagName == "ensemble":
+                elif cnode.tag == "ensemble":
+                    #ensembleid = cnode.getAttribute(u"id")
+                    ensembleid = cnode.attrib['id']
+                    cloneNode = deepcopy(cnode)
+                    if ensembleid in ensembleids:
+                        ensembleid = self.id+"_"+str(uuid.uuid1())
+                        cloneNode.set(u"id", ensembleid)
+                    ensembleids.append(ensembleid)
+                    ensemblesnode.append(cloneNode)
+
+        res = doc.xpath("/iri/body/medias/media[@id='video']/video")
+        if self.flatten:
+            src_video = res[0].get('src')
+            self.videourl = os.path.basename(src_video)
+            res[0].set('src', self.videourl)
+        self.duration = res[0].get(u'dur')
+            
+        f = open(path, "w")
+        try:
+            #etree = lxml.etree.ElementTree(doc)
+            doc.write(f, encoding="UTF-8", pretty_print=True, xml_declaration=True)
+#            xml.dom.ext.Print(doc, stream=f)
+        finally:
+            f.close()
+        
+        
+        destPath = os.path.join(os.path.join(os.path.join(settings.MEDIA_ROOT, "media"), "ldt"), self.id);
+        if not os.path.exists(destPath):
+            os.makedirs(destPath)
+        shutil.move(os.path.join(self.basepath, self.src), os.path.join(destPath, os.path.basename(self.src)))
+        self.src = self.id + u"/" + os.path.basename(self.src)
+
+
+
+    def saveContent(self):
+
+        defaults_media = {'src':unicode(self.videourl), 'title':unicode(self.title), 'description':unicode(self.desc), 'videopath': unicode(self.videopath.rstrip("/") + "/")}
+        media, media_created = Media.objects.get_or_create(src=unicode(self.videourl), defaults = defaults_media)
+        if not media_created:
+            for key, value in defaults_media.items():
+                setattr(media, key, value)
+
+        media.save()
+
+        defaults_content = { 
+            'iriurl': unicode(self.src), 
+            'title':unicode(self.title),
+            'description':unicode(self.desc),
+            'media':media,
+            'iri':unicode(self.id + u"/" + os.path.basename(self.src)),
+            'duration':int(self.duration)
+        }
+        content, self.created = Content.objects.get_or_create(iri_id=self.id, defaults = defaults_content)
+        if not self.created:
+            for key, value in defaults_content.items():
+                setattr(content, key, value)
+        
+        content.save()
+
+        self.content = content
+            
+    def process(self):
+        self.processIri()
+        self.saveContent()
+        
+class BaseFileImport(object):
+
+    def __init__(self, filepath, videopath):
+        self.__filepath = filepath
+        self.__tempdir = ""
+        self.__videopath = videopath
+        self.__author = None
+
+        
+    def filepath(): #@NoSelf
+        doc = """Docstring""" #@UnusedVariable
+       
+        def fget(self):
+            return self.__filepath
+           
+        def fset(self, value):
+            self.__filepath = value
+           
+        def fdel(self):
+            del self.__filepath
+           
+        return locals()
+       
+    filepath = property(**filepath())
+    
+    def videopath(): #@NoSelf
+        doc = """Docstring""" #@UnusedVariable
+       
+        def fget(self):
+            return self.__videopath
+           
+        def fset(self, value):
+            self.__videopath = value
+           
+        def fdel(self):
+            del self.__videopath
+           
+        return locals()
+       
+    videopath = property(**videopath())
+
+    def author(): #@NoSelf
+        doc = """Docstring""" #@UnusedVariable
+       
+        def fget(self):
+            return self.__author
+           
+        def fset(self, value):
+            self.__author = value
+           
+        def fdel(self):
+            del self.__author
+           
+        return locals()
+
+    author = property(**author())
+    
+       
+class FileImport(BaseFileImport):
+
+    def __init__(self, filepath, videopath, flatten):
+        BaseFileImport.__init__(self, filepath, videopath)
+        self.__checkExistingMedia = False
+        self.__flatten = flatten
+        
+    def checkExistingMedia(): #@NoSelf
+        doc = """Docstring""" #@UnusedVariable
+       
+        def fget(self):
+            return self.__checkExistingMedia
+           
+        def fset(self, value):
+            self.__checkExistingMedia = value
+           
+        def fdel(self):
+            del self.__checkExistingMedia
+           
+        return locals()
+
+    checkExistingMedia = property(**checkExistingMedia())    
+
+    def flatten(): #@NoSelf
+        doc = """Docstring""" #@UnusedVariable
+       
+        def fget(self):
+            return self.__flatten
+           
+        def fset(self, value):
+            self.__flatten = value
+           
+        def fdel(self):
+            del self.__flatten
+           
+        return locals()
+    flatten = property(**flatten())
+
+    def processLdt(self, ldtpath=None):
+        
+        # list iri
+        # see if there is some comments
+        # inject comment in iri
+        # copy iri in folder
+        # create or update content
+        contents = {}
+        filepath = ldtpath if ldtpath else self.filepath
+        doc = lxml.etree.parse(filepath)
+        #if ldtpath:
+            #doc = xml.dom.minidom.parse(ldtpath)
+        #    doc = lxml.etree.parse(ldtpath)
+        #else:
+            #doc = xml.dom.minidom.parse(self.filepath)
+        
+        #con = xml.xpath.Context.Context(doc, 1, 1, None)
+        
+        #get author from file ldt
+        #result = xml.xpath.Evaluate("/iri/project", context=con)
+        result = doc.xpath("/iri/project")
+        for pnode in result:
+            #author = pnode.getAttributeNS(None,u"user")
+            author = pnode.attrib[u"user"]
+            if author:
+                self.author = unicode(author)
+                break 
+
+        result = doc.xpath("/iri/medias/media")
+        
+        for i, medianode in  enumerate(result):
+        # get iri file's id from file ldt
+            #id = medianode.attributes['id'].value
+            id = medianode.attrib['id']
+            if self.checkExistingMedia:
+                try:
+                    Content.objects.get(iri_id=id)
+                    do_pass = True
+                except ObjectDoesNotExist: #Content.DoesNotExist
+                    do_pass = False
+            else:
+                    do_pass = False
+            if not do_pass:
+                if not (contents.has_key(id)):
+                    # Create instance iriInfo(id, order, titledesc, basepath="", videopath=settings.STREAM_URL)
+                    if ldtpath:
+                        contents[id] = IriInfo(id, i, "", os.path.dirname(ldtpath), flatten=self.flatten)
+                    else: 
+                        contents[id] = IriInfo(id, i, "", flatten=self.flatten)
+                    # Get iri file's url from ldt. This url can be relative path or absolute path.
+                #contents[id].src = medianode.attributes['src'].value
+                contents[id].src = medianode.attrib['src']
+                if medianode.attrib['video'] !="":
+                    contents[id].videopath = medianode.attrib['video']
+                elif self.videopath !="" or self.videopath:
+                    contents[id].videopath = self.videopath
+                else:
+                    contents[id].videopath =settings.STREAM_URL
+                    
+                
+        #get annotation of file ldt
+        result = doc.xpath("/iri/annotations/content")
+        
+        for contentnode in result:
+            id = contentnode.attrib['id']
+            if contents.has_key(id):
+                if self.author:
+                    contentnode.set("author", unicode(self.author))
+                contents[id].annotations = contentnode
+        
+        #go throught values
+        for iriinfo in contents.values():
+            
+            iriinfo.process()
+            
+            # if yes update
+            # if no create
+            # move iri file to the proper place
+            #return list of iriInfo
+        
+    def processFile(self):
+        if self.filepath.name.endswith(".ldt"):
+            self.processLdt()
+        elif self.filepath.name.endswith(".zip"):
+            self.processZip()
+        else:
+            raise FileImportError("Bad file type")
+
+
+    def processZip(self):
+    # """ extraire .zip, pass to method processLdt"""
+        # create temp directory
+        self.__tempdir = tempfile.mkdtemp()
+        openfiles = []
+        flvfiles = []
+        processedids = []
+        
+        try:
+            zipfile = zipfileext.ZipFileExt(self.filepath)
+            zipfile.unzip_into_dir(self.__tempdir)
+            #load ldt
+            foldersToProcess = [self.__tempdir]
+            while len(foldersToProcess):
+                currentFolder = foldersToProcess.pop()
+                for entry in os.listdir(currentFolder):
+                    if entry in settings.ZIP_BLACKLIST:
+                        continue
+                    entryPath = os.path.join(currentFolder, entry)
+                    if(os.path.isdir(entryPath)):
+                        foldersToProcess.append(entryPath)
+                    elif fnmatch.fnmatch(entry, "*.ldt"):
+                        ldtid = self.processLdt(entryPath)
+                        processedids.append(ldtid)
+                    elif fnmatch.fnmatch(entry, "*.flv"):
+                        flvfiles.append(entryPath)
+             
+            if settings.CONTENT_ROOT and os.path.exists(settings.CONTENT_ROOT): 
+                for entry in flvfiles:
+                    shutil.copy(entry, settings.CONTENT_ROOT)
+                    
+        finally:
+            for f in openfiles:
+                f.close()
+            shutil.rmtree(self.__tempdir)
+        # delete directory
+        return processedids
+        
+    # def processFileLdt(self):
+        # processedids = []
+        # ldtid = self.processLdt(self.filepath)
+        # processedids.append(ldtid)
+        # return processedids
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/forms.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,86 @@
+from django import forms
+from models import Project, Content, Media
+import uuid
+from utils import generate_uuid
+from django.forms.widgets import Widget, RadioSelect
+from django.contrib.admin import widgets as admin_widgets
+from django.core.urlresolvers import reverse
+from ldt.settings import BASE_URL
+from ldt.forms import widgets as ldt_widgets
+from django.utils.translation import ugettext_lazy as _
+
+class LdtImportForm(forms.Form):
+    importFile = forms.FileField()
+    videoPath = forms.CharField(required=False)
+    flatten = forms.BooleanField(required=False, initial=True)   
+    
+class LdtAddForm(forms.ModelForm):
+    title = forms.CharField()
+    # contents = forms.ModelMultipleChoiceField(Content.objects.all())
+    # owner = forms.ModelChoiceField(Author.objects.all())
+    class Meta:
+        model = Project
+        exclude = ("ldt_id", "ldt", "created_by", "changed_by", "creation_date", "modification_date", "state", "owner")   
+
+class ReindexForm(forms.Form):
+    contents = forms.ModelMultipleChoiceField(Content.objects.all())
+
+class SearchForm(forms.Form):
+    search = forms.CharField()
+    field = forms.ChoiceField([(u"all", u"all"), (u"title", u"title"), (u"abstract", u"resume"), (u"tags", u"tags")])
+
+class AddProjectForm (forms.Form):
+    title = forms.CharField(widget=forms.TextInput(attrs={'class':'inputbox required'}))
+
+class CopyProjectForm (forms.Form):
+    title = forms.CharField()
+    
+
+class ContentForm(forms.ModelForm):
+
+    #iri_id = forms.CharField(max_length=1024, widget=forms.HiddenInput, initial=generate_uuid)
+    iriurl = forms.CharField(max_length=1024, widget=forms.HiddenInput, required=False)
+    content_creation_date = forms.SplitDateTimeField(widget=ldt_widgets.LdtSplitDateTime, required=False, label=_("content.content_creation_date"))
+    media_input_type =  forms.ChoiceField(required=False, label=_("content.media_input_type"), choices=(("upload",_("file_upload")),("url",_("url")),("link",_("existing_media")),("create",_("create_media")),("none",_("none_media")) ))
+    
+    def clean_iri_id(self):
+        data = self.cleaned_data.get('iri_id')
+        if not data:
+            data = generate_uuid()
+        return data
+    
+    def clean(self):
+        cleaned_data = self.cleaned_data
+        iriurl_data = cleaned_data.get('iriurl')
+        iri_id_data = cleaned_data['iri_id']
+        if not iriurl_data:
+            iriurl_data = "%s/%s.iri" % (iri_id_data, iri_id_data)    
+        cleaned_data['iriurl'] = iriurl_data
+        return cleaned_data
+    
+    class Meta:
+        model = Content
+        exclude = ("creation_date", "update_date", "authors")
+        widgets = {
+                   'iri_id': forms.HiddenInput,
+        }
+        
+    class Media:
+        css = {
+            'all' : ('admin/css/forms.css','admin/css/base.css', 'admin/css/widgets.css')
+               }
+        
+class MediaForm(forms.ModelForm):
+    
+    media_creation_date = forms.SplitDateTimeField(widget=ldt_widgets.LdtSplitDateTime, required=False)
+    media_file = forms.FileField(required=False);
+    src = forms.CharField(required=False, max_length=1024)
+
+    class Meta:
+        model = Media
+        exclude = ("creation_date", "update_date", "creator")
+    
+    class Media:
+        css = {
+            'all' : ('admin/css/forms.css','admin/css/base.css', 'admin/css/widgets.css')
+               }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/models.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,51 @@
+from django.conf import settings
+from django.db import models
+from django.utils.translation import ugettext_lazy as _
+from ldt.core.models import Document, Owner
+from django.contrib.auth.models import User
+import tagging.fields
+from utils import generate_uuid
+import lxml.etree
+import os.path
+import uuid
+import lucene
+from ldt.ldt_utils import STORE, ANALYZER
+#from django.core.management.validation import max_length
+
+
+
+class Annotation(models.Model):
+    id = models.CharField(max_length=1024, primary_key=True, unique=True, default=generate_uuid, verbose_name=_('annotation.id'))
+    uri = models.CharField(max_length=1024, verbose_name=_('annotation.uri'))
+    tags = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('annotation.tags'))
+    title = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('annotation.title'))
+    description = models.TextField(null=True, blank=True, verbose_name=_('annotation.description'))
+    text = models.TextField(null=True, blank=True, verbose_name=_('annotation.text'))
+    color = models.CharField(max_length=1024, verbose_name=_('annotation.color'))
+    creator = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('creator.title'))
+    contributor = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('contributor.title'))
+    creation_date = models.DateTimeField(auto_now_add=True, verbose_name=_('annotation.creation_date'))
+    update_date = models.DateTimeField(auto_now=True, verbose_name=_('annotation.update_date'))
+
+
+    def __unicode__(self):
+        return unicode(self.id) + u": " + unicode(self.title)
+
+    @staticmethod
+    def create_annotation(id, uri=None, tags=None, title=None, description=None, text=None, color=None, creator=None, contributor=None, creation_date=None, update_date=None):
+        annotation = Annotation(id=id, uri=uri, tags=tags, title=title, description=description, text=text, color=color, creator=creator, contributor=contributor, creation_date=creation_date, update_date=update_date)
+        annotation.save()
+        
+        return annotation
+    
+
+#class Author(models.Model):
+#
+#    handle = models.CharField(max_length=512, unique=True, blank=True, null=True)
+#    email = models.EmailField(unique=False, blank=True, null=True)
+#    firstname = models.CharField(max_length=512, blank=True, null=True)
+#    lastname = models.CharField(max_length=512, blank=True, null=True)
+#    
+#    def __unicode__(self):
+#        return unicode(self.id) + " - " + self.handle + ", " + self.email + ", " + self.firstname + " " + self.lastname
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/projectindexer.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,108 @@
+import tempfile
+import os
+import os.path
+import shutil
+import ldt.utils.xml
+from ldt import settings
+import lucene
+from ldt.ldt_utils import STORE
+from ldt.ldt_utils import ANALYZER
+import lxml.etree
+
+def Property(func):
+    return property(**func()) 
+
+class ProjectIndexer(object):
+    def __init__(self, projectList, writer, decoupage_blackList = settings.DECOUPAGE_BLACKLIST):
+        self.__projectList = projectList
+        self.__decoupage_blacklist = decoupage_blackList
+        self.__writer = writer
+            
+    @Property
+    def decoupage_blacklist(): #@NoSelf
+        doc = """get blacklist""" #@UnusedVariable
+       
+        def fget(self):
+            if self.__decoupage_blacklist is None:
+                self.__decoupage_blacklist = ()
+            return self.__decoupage_blacklist
+           
+        def fset(self, value):
+            self.__decoupage_blacklist = value
+           
+        def fdel(self):
+            del self.__decoupage_blacklist
+           
+        return locals()
+               
+    def index_all(self):
+        for project in self.__projectList:
+            self.index_project(project)
+
+    def index_project(self, project):
+        # ldt.utils.log.debug("Indexing project : "+str(project.ldt_id))
+        
+        ldt=project.ldt
+        doc = lxml.etree.fromstring(ldt.encode( "utf-8" ))
+ 
+        self.__writer.deleteDocuments(lucene.Term("ldt_id", project.ldt_id))
+            
+        res = doc.xpath("/iri/annotations/content")
+        project.ldt.encode( "utf-8 " )
+
+        for content in res:
+            contentId = content.get("id")
+ 
+            res =content.xpath("ensemble")
+            for ensemble in res:
+                ensembleId = ensemble.get("id")
+ 
+                for decoupageNode in ensemble.getchildren():
+                    # ldt.utils.log.debug("Indexing project decoupage : "+ repr(decoupageNode.nodeType) + " in " + repr(self.decoupage_blacklist))
+                    if decoupageNode.tag != "decoupage"  or decoupageNode.get("id") in self.decoupage_blacklist:
+                        continue
+                
+                    decoupId = decoupageNode.get("id")
+                    res = decoupageNode.xpath("elements/element")
+
+                    for elementNode in res:
+                        doc = lucene.Document()
+                        elementId = elementNode.get("id")
+                        tags = elementNode.get("tags")
+                        
+                        if tags is not None:                            
+                            tags.replace(",", ";")
+                        
+                        if tags is None or len(tags) == 0:
+                            tags = ""
+                            restagnode = elementNode.xpath("tag/text()")
+                            for tagnode in restagnode:
+                                tags = tags + " ; " + tagnode.text()
+                                
+                        if tags is None or len(tags) == 0:
+                            tags = ""
+                            restagnode = elementNode.xpath("tags/tag/text()")
+                            for tagnode in restagnode:
+                                tags = tags + " ; " + tagnode.text()                          
+
+                        title = ""
+                        for txtRes in elementNode.xpath("title/text()"): 
+                            title = title + txtRes.text()
+                
+                        abstract = ""
+                        for txtRes in elementNode.xpath("abstract/text()"): 
+                            abstract = abstract + txtRes.text() 
+                            
+                        doc.add(lucene.Field("ldt_id", project.ldt_id, lucene.Field.Store.YES, lucene.Field.Index.NOT_ANALYZED))              
+                        doc.add(lucene.Field("iri_id", contentId, lucene.Field.Store.YES, lucene.Field.Index.NOT_ANALYZED))
+                        doc.add(lucene.Field("ensemble_id", ensembleId, lucene.Field.Store.YES, lucene.Field.Index.NO))
+                        doc.add(lucene.Field("decoupage_id", decoupId, lucene.Field.Store.YES, lucene.Field.Index.NO))
+                        doc.add(lucene.Field("element_id", elementId, lucene.Field.Store.YES, lucene.Field.Index.NO))
+                        doc.add(lucene.Field("tags", tags, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED))
+                        doc.add(lucene.Field("title", title, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED))
+                        doc.add(lucene.Field("abstract", abstract, lucene.Field.Store.NO, lucene.Field.Index.ANALYZED))
+                        doc.add(lucene.Field("all", " ".join([tags, title, abstract]), lucene.Field.Store.NO, lucene.Field.Index.ANALYZED))
+            
+                        self.__writer.addDocument(doc)
+    
+        self.__writer.commit()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/projectserializer.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,426 @@
+from datetime import datetime
+from django.utils.datastructures import SortedDict
+from ldt.ldt_utils.models import Content, Project
+import logging
+import lxml.etree
+import uuid
+
+DATE_FORMATS = ["%d/%m/%Y","%Y-%m-%d"]
+
+"""
+Serialize a project object to a cinelab compatible array
+"""
+class ProjectSerializer:
+    
+    def __init__(self, project, from_contents=True, from_display=True):
+        self.project = project
+        self.parsed = False
+        self.ldt_doc = None
+        self.medias_dict = SortedDict()
+        self.annotations_dict = SortedDict()
+        self.annotations_by_annotation_types = {}
+        self.tags = {}
+        self.tags_dict = SortedDict()
+        self.annotation_types_dict = SortedDict()
+        self.views_dict = SortedDict()
+        self.lists_dict = SortedDict()
+        self.serialize_contents = from_contents
+        self.from_display = from_display
+        self.display_contents_list = []
+        self.display_cuttings_list = []
+        self.display_ensemble_list = []
+        
+        
+    def __parse_views(self, display_node_list):
+        for display_node in display_node_list:
+            display_id = display_node.get(u"id", None)
+            if not display_id:
+                continue
+            content_list = []
+            cuttings_list = []
+            new_display = {
+                "id": display_id,
+                "contents": content_list,
+                "annotation_types": cuttings_list,
+            }
+            
+            for content_node in display_node.xpath("content"):
+                content_id = content_node.get("id")
+                if content_id not in content_list:
+                    content_list.append(content_id)                    
+                if content_id not in self.display_contents_list:
+                    self.display_contents_list.append(content_id)
+                for cutting_node  in content_node.xpath("decoupage"):
+                    cutting_id = cutting_node.get("id")
+                    if cutting_id not in cuttings_list:
+                        cuttings_list.append(cutting_id)
+                    if cutting_id not in self.display_cuttings_list:
+                        self.display_cuttings_list.append(cutting_id)
+                    ensemble_id = cutting_node.get("idens")
+                    if ensemble_id not in self.display_ensemble_list:
+                        self.display_ensemble_list.append(ensemble_id)
+            self.views_dict[display_id] = new_display
+                    
+        
+    
+    def __parse_ensemble(self, ensemble_node, content):
+        
+        ensemble_id = ensemble_node.attrib[u"id"]
+        ensemble_author = ensemble_node.attrib[u"author"]
+        ensemble_title = ensemble_node.attrib[u"title"]
+        ensemble_description = ensemble_node.attrib[u"abstract"]
+        ensemble_created = datetime.utcnow().isoformat()
+        ensemble_modified = ensemble_created 
+        
+        list_items = []
+        new_list = {
+            "id" : ensemble_id,
+            "items" : list_items,
+            "meta" : {
+                "dc:creator":ensemble_author,
+                "dc:created": ensemble_created,
+                "dc:contributor":"undefined",
+                "dc:modified": ensemble_modified,
+                "dc:title":ensemble_title,
+                "dc:description": ensemble_description,
+                "id-ref":content.iri_id,
+                "editable":"false"
+            }
+        }
+        
+        
+        for decoupage_node in ensemble_node:
+            if decoupage_node.tag != "decoupage" :
+                continue
+            
+            decoupage_id = decoupage_node.attrib[ u"id"]
+            if self.from_display and decoupage_id not in self.display_cuttings_list:
+                continue
+            decoupage_creator = decoupage_node.attrib[u"author"]
+            if not decoupage_creator:
+                decoupage_creator = "IRI"
+            decoupage_contributor = decoupage_creator
+            date_str = decoupage_node.get(u"date")
+            decoupage_created = None
+            if date_str :
+                for date_format in DATE_FORMATS:
+                    try:
+                        decoupage_created = datetime.strptime(date_str,date_format).isoformat()
+                        break
+                    except Exception:
+                        decoupage_created = None
+            if decoupage_created is None:
+                decoupage_created = datetime.utcnow().isoformat()
+            decoupage_modified = decoupage_created
+            
+            decoupage_title = ""
+            for txtRes in decoupage_node.xpath("title/text()", smart_strings=False): 
+                    decoupage_title += txtRes
+
+            decoupage_description = ""
+            for txtRes in decoupage_node.xpath("abstract/text()", smart_strings=False): 
+                    decoupage_description += txtRes
+
+            
+            list_items.append({"id-ref":decoupage_id})
+            
+            new_annotation_types = {
+                "id":decoupage_id,
+                "dc:creator":decoupage_creator,
+                "dc:created":decoupage_created,
+                "dc:contributor":decoupage_contributor,
+                "dc:modified":decoupage_modified,
+                "dc:title":decoupage_title,
+                "dc:description":decoupage_description
+            }
+            
+            self.annotation_types_dict[decoupage_id] = new_annotation_types
+            self.annotations_by_annotation_types[decoupage_id] = []
+                        
+            res = decoupage_node.xpath("elements/element")
+            for element_node in res:
+                
+                element_id = element_node.attrib[u"id"]
+                element_begin = element_node.attrib[u"begin"]
+                element_duration = element_node.attrib[u"dur"]
+                element_media = content.iri_id
+                element_color = element_node.attrib[u"color"]
+                
+                element_title = ""
+                for txtRes in element_node.xpath("title/text()", smart_strings=False): 
+                    element_title += txtRes
+        
+                element_description = ""
+                for txtRes in element_node.xpath("abstract/text()", smart_strings=False): 
+                    element_description += txtRes
+                
+                element_audio_src = ""
+                element_audio_href = ""
+                res = element_node.xpath("audio")
+                if len(res) > 0:
+                    element_audio_src = res[0].get(u"source",u"")
+                    element_audio_href =  res[0].text                
+                
+                element_tags = []
+                
+                tags = element_node.get(u"tags",u"")
+                
+                tags_list = map(lambda s:s.strip(),tags.split(","))
+
+                #tags                                
+                if tags is None or len(tags) == 0:
+                    tags_list = []
+                    restagnode = element_node.xpath("tag/text()", smart_strings=False)
+                    for tagnode in restagnode:
+                        tags_list.append(tagnode)
+                        
+                if tags_list is None or len(tags_list) == 0:
+                    tags_list = []
+                    restagnode = element_node.xpath("tags/tag/text()", smart_strings=False)
+                    for tagnode in restagnode:
+                        tags_list.append(tagnode)
+                
+                tag_date = datetime.utcnow().isoformat()
+                for tag_title in tags_list:
+                    if tag_title not in self.tags:
+                        tag_id = unicode(uuid.uuid1())
+                        new_tag = {
+                            "id":tag_id,
+                            "meta" : {
+                                "dc:creator":"IRI",
+                                "dc:created": tag_date,
+                                "dc:contributor":"IRI",
+                                "dc:modified": tag_date,
+                                "dc:title":tag_title
+                            }
+                        }
+                        self.tags[tag_title] = new_tag
+                        self.tags_dict[tag_id] = new_tag
+                    element_tags.append({"id-ref":tag_id})
+
+                if not element_tags:
+                    element_tags = None
+                    
+                new_annotation = {
+                    "begin": element_begin,
+                    "end": int(element_begin) + int(element_duration),
+                    "id": element_id,
+                    "media": element_media,
+                    "content": {
+                        "mimetype": "application/x-ldt-structured",
+                        "title": element_title,
+                        "description": element_description,
+                        "color": element_color,
+                        "audio": {
+                            "src" : element_audio_src,
+                            "mimetype": "audio/mp3",
+                            "href": element_audio_href
+                        },
+                    },
+                    "tags": element_tags,
+                    "meta": {
+                        "id-ref": decoupage_id,
+                        "dc:creator": decoupage_creator,
+                        "dc:contributor": decoupage_contributor,
+                        "dc:created": decoupage_created,
+                        "dc:modified": decoupage_modified
+                    }
+                }
+                
+                self.annotations_dict[element_id] = new_annotation
+                self.annotations_by_annotation_types[decoupage_id].append(new_annotation)
+        
+        if not list_items:
+            new_list["items"] = None
+        self.lists_dict[ensemble_id] = new_list
+
+
+    def __parse_ldt(self):
+        
+        self.ldt_doc = lxml.etree.fromstring(self.project.ldt.encode("utf-8"))
+        
+        if self.from_display:
+            xpath_str = "/iri/displays/display[position()=1]"
+            if isinstance(self.from_display, basestring):
+                xpath_str = "/iri/displays/display[@id='%s']" % self.from_display
+            
+            self.__parse_views(self.ldt_doc.xpath(xpath_str))
+        
+        res = self.ldt_doc.xpath("/iri/medias/media")
+        for mediaNode in res:
+            iri_id = mediaNode.attrib[u"id"]
+            if self.from_display and iri_id not in self.display_contents_list:
+                continue
+            content = Content.objects.get(iri_id=iri_id)
+            self.__parse_content(content)
+            
+        res = self.ldt_doc.xpath("/iri/annotations/content")
+        for content_node in res:
+            content_id = content_node.attrib[u"id"]
+            if self.from_display and content_id not in self.display_contents_list:
+                continue
+            content = Content.objects.get(iri_id=content_id)
+            for ensemble_node in content_node:
+                if ensemble_node.tag != "ensemble" :
+                    continue
+                ensemble_id = ensemble_node.get("id")
+                if self.from_display and ensemble_id not in self.display_ensemble_list:
+                    continue
+                self.__parse_ensemble(ensemble_node, content)            
+        
+        #reorder annotations and annotation type from view
+        if self.from_display and len(self.views_dict) > 0:
+            new_annotation_types_dict = SortedDict()
+            new_annotations_dict = SortedDict()
+            for annotation_type in self.display_cuttings_list:
+                if annotation_type in self.annotation_types_dict:
+                    new_annotation_types_dict[annotation_type] = self.annotation_types_dict[annotation_type]
+                    for annot in self.annotations_by_annotation_types[annotation_type]:
+                        new_annotations_dict[annot['id']] = annot
+                    
+            self.annotations_dict = new_annotations_dict
+            self.annotation_types_dict = new_annotation_types_dict
+        
+        self.parsed = True
+    
+    def __parse_content(self, content):
+        
+        doc = lxml.etree.parse(content.iri_file_path())
+        
+        authors = content.authors.all()
+        
+        if len(authors) > 0 :
+            author = authors[0].handle
+        else :
+            author = "IRI"
+        
+        if len(authors) > 1 :
+            contributor = authors[1].handle
+        else :
+            contributor = author
+        
+        content_author = ""
+        
+        res = doc.xpath("/iri/head/meta[@name='author']/@content")
+        if len(res) > 0:
+            content_author = res[0]
+        
+        
+        content_date = ""
+        
+        res = doc.xpath("/iri/head/meta[@name='date']/@content")
+        if len(res) > 0:
+            content_date = res[0]
+
+        href = ""
+        meta_item_value = ""
+        if content.videopath:
+            href = content.videopath.rstrip('/') + "/" + content.src
+            meta_item_value = content.videopath.rstrip('/') + "/"
+
+        new_media = {
+             "http://advene.liris.cnrs.fr/ns/frame_of_reference/ms" : "o=0",
+             "id" : content.iri_id,
+             "href" : href,
+             "unit" : "ms",
+             "origin" : "0",
+             "meta": {
+                 "dc:creator" : author,
+                 "dc:created" : content.creation_date.isoformat(),
+                 "dc:contributor" : contributor,
+                 "dc:modified" : content.update_date.isoformat(),
+                 "dc:creator.contents" : content_author,
+                 "dc:created.contents" : content_date,
+                 "dc:title" : content.title,
+                 "dc:description" : content.description,
+                 "dc:duration" : content.get_duration(),
+                 "item": {
+                     "name" : "streamer",
+                     "value": meta_item_value, 
+                 },
+             }
+        }
+        
+        self.medias_dict[content.iri_id] = new_media
+        
+        if self.serialize_contents:        
+            res = doc.xpath("/iri/body/ensembles/ensemble")
+            for ensemble_node in res:
+                self.__parse_ensemble(ensemble_node, content)
+
+    
+    def serialize_to_cinelab(self):
+    
+        res = {}
+        
+        if not self.parsed:
+            self.__parse_ldt()    
+
+        
+        project_main_media = ""
+        if len(self.medias_dict) > 0:
+            project_main_media = self.medias_dict.value_for_index(0)["id"]
+        
+        res['meta'] = {
+             'id': self.project.ldt_id,
+             'dc:created':self.project.creation_date.isoformat(),
+             'dc:modified':self.project.modification_date.isoformat(),
+             'dc:contributor':self.project.changed_by,
+             'dc:creator':self.project.created_by,
+             'dc:title':self.project.title,
+             'dc:description':self.project.get_description(self.ldt_doc), # get from doc, parse ldt
+             'main_media': {"id-ref":project_main_media}
+            }
+                
+                    
+        res['medias'] =  self.medias_dict.values() if len(self.medias_dict) > 0 else None
+        res['lists'] = self.lists_dict.values() if len(self.lists_dict) > 0 else None
+        res['tags'] = self.tags.values() if len(self.tags) > 0 else None
+        res['views'] = self.views_dict.values() if len(self.views_dict) > 0 else None
+        
+        res['annotation-types'] = self.annotation_types_dict.values() if len(self.annotation_types_dict) > 0 else None
+        res['annotations'] = self.annotations_dict.values() if len(self.annotations_dict) > 0 else None 
+
+        
+
+        return res
+    
+    def getAnnotations(self, first_cutting=True):
+        
+        if not self.parsed:
+            self.__parse_ldt()
+        
+        annotations = []
+        
+        current_cutting = None
+        uri = None
+        for annot in self.annotations_dict.values():
+            logging.debug("current cutting" + repr(current_cutting) + " : annot " + annot['meta']['id-ref'])
+            if first_cutting and current_cutting and current_cutting != annot['meta']['id-ref'] :
+                break
+            current_cutting = annot['meta']['id-ref']
+            content_id = annot['media']
+            content = Content.objects.get(iri_id=content_id)
+            if annot['tags']:
+                tags_list = map(lambda tag_entry: self.tags_dict[tag_entry['id-ref']]['meta']['dc:title'],annot['tags'])
+            else:
+                tags_list = []
+            begin = int(annot['begin'])
+            duration = int(annot['end'])-begin
+            if content.media_obj and content.media_obj.external_publication_url:
+                uri = "%s#t=%d" % (content.media_obj.external_publication_url, begin)
+
+        
+            annotations.append({
+                'begin': begin,
+                'duration':duration,
+                'title':annot['content']['title'],
+                'desc':annot['content']['description'],
+                'tags': tags_list,
+                'id':annot['id'],
+                'uri':uri
+            })
+            
+        return annotations
+
+        
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/admin/ldt_utils/app_action.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,6 @@
+{% extends "admin/base_site.html" %}
+{% load i18n %}
+{% block breadcrumbs %}
+<div class="breadcrumbs"><a href="{% url admin:index %}"> {% trans "Home" %}</a> &rsaquo; <a href="{% url admin:app_list 'ldt' %}">ldt</a> &rsaquo; {{ current_action }}</div>
+{% endblock %}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/admin/ldt_utils/app_index.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,32 @@
+{% extends "admin/app_index.html" %}
+{% block extrastyle %}
+    {{ block.super }}
+    <link rel="stylesheet" type="text/css" href="{% load ldtmedia %}{% ldt_media_prefix %}css/dashboard.css" />
+{% endblock %}
+{% load i18n %}
+{% block content %}
+{{ block.super }}
+<div id="content-main-app-ldt-utils">
+	<div class="module">
+	<table summary="Import">
+		<caption>Import</caption>
+		<tr>
+			<th><a href="{{WEB_URL}}{% url admin:ldt_content_import_file %}">Import
+			an ldt</a></th>
+			<td>&nbsp;</td>
+			<!--tr>
+	                    <th>            
+	                        <a href="content/export/form">Generate ldt</a>
+	                    </th>
+	                    <td>&nbsp;</td>
+	                </tr-->
+			<tr>
+				<th><a href="{{WEB_URL}}{% url admin:ldt_content_reindex %}">Reindex</a>
+				</th>
+				<td>&nbsp;</td>
+			</tr>
+	</table>
+	</div>
+</div>
+
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/admin/ldt_utils/content/reindex_form.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,23 @@
+{% extends "admin/ldt_utils/app_action.html" %}
+{% load i18n %}
+{# reindex contents #}
+{% block content %}
+{% if message %}
+<div>
+<p>{{ message }}</p>
+</div>
+{% endif %} {% if form. %}
+<div></div>
+{% endif %}
+<div>
+<form method="post"
+	action="{{WEB_URL}}{% url admin:ldt_content_reindex %}">{% csrf_token %}
+<table>
+	{{ form.as_table }}
+</table>
+<input type="submit" /></form>
+</div>
+
+<a href="{{WEB_URL}}{% url admin:app_list 'ldt_utils' %}">Back to administration page</a>
+
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/admin/ldt_utils/content/upload_form.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,27 @@
+{% extends "admin/ldt_utils/app_action.html" %}
+{# import an ldt #}
+{% block content %}
+<p>Vous pouvez importer un fichier ldt ou un zip qui compresse un
+fichier .ldt et plusieurs fichiers .iri.</p>
+<p>Bien verifiez vous que le chemin de source est absolute pour un
+fichier ldt lors qu'il est tout seul, alors qu'il est relatif s'il est
+dans le zip</p>
+<p>Vous pouvez indiquer le chemin de video si vous avez besoin</p>
+{% if message %}
+<div>
+<p>{{ message }}</p>
+</div>
+{% endif %}
+
+{% if form %}
+
+<form method="post" enctype="multipart/form-data" action="">{% csrf_token %}
+<table>
+	{{ form.as_table }}
+</table>
+<input type="submit" /></form>
+{% endif %}
+
+<a href="{% url admin:app_list 'ldt_utils' %}">Back to administration page</a>
+
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/content_list.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,84 @@
+{% extends "ldt/user/user_base.html" %}
+{% load i18n %}
+
+{% block js_declaration %}
+{{block.super}}
+<script type="text/javascript">
+$(document).ready(function(){
+
+	$('.ldt_link').nyroModal({
+           	type: 'iframe',
+           	forceType: 'iframe',
+       		height:662, 
+       		width:1022,
+       		bgColor: 'rgb(239, 239, 239)',
+       		padding: 5,
+       		titleFromIframe: false
+          	});
+        	
+     $('.ldt_link_create').nyroModal({
+            type: 'iframe',
+            forceType: 'iframe',
+            height:662, 
+            width:1022,
+            bgColor: 'rgb(239, 239, 239)',
+            padding: 5,
+            titleFromIframe: false,
+            beforeHideContent: function(elts, settings, callback){
+	             try {
+		              var res = $('#ldtInitSwf',$('#nyroModalIframe').contents());
+		              if(res.length > 0)
+		              {
+		              	   res.get(0).forceSave();
+		              }
+	             }
+	             catch(err)
+	             {
+	              // do nothing
+	             }                   
+	             callback();
+            }
+        });
+
+});
+</script>
+
+{% endblock %}
+
+{% block css_import %}
+{{block.super}}
+    <link rel="stylesheet" type="text/css" href="{{LDT_MEDIA_PREFIX}}/css/ldt.css" />
+{% endblock %}
+
+{% block breadcrumb %}
+<li></li>
+<li><a href="{% url ldt.userpanel.views.space %}">{% trans "Space" %}</a></li>
+<li>{% trans "Ldt Project" %}</li>
+{% endblock %}
+
+{% block content_title %}{% trans "Contents" %}{%endblock %}
+
+{% block iricontent %}
+<div id='contentlist'><a
+	href="#" class="create_content_link">{% trans 'Create new content'%}</a>
+
+<table>
+<caption>{% trans "Content" %}</caption>
+	<thead>
+		<tr>
+			<th width="170">{% trans "title" %}</th>
+			<th width="20">{% trans "create project" %}</th>
+		</tr>
+	</thead>
+	<tbody>
+{% for content in contents %}
+    <tr>
+        <td><a href="{% url ldt.ldt_utils.views.index content.iri_id %}" class="ldt_link">{{ content.title }}</a></td>
+        <td><a href="{% url ldt.ldt_utils.views.create_project content.iri_id %}" class="ldt_link_create">{% trans "create project" %}</a></td>
+    </tr>
+{% endfor %}
+    </tbody>
+</table>
+</div>
+
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/copy_ldt.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,19 @@
+{% load i18n %} {# form of copy of project ldt #}
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/ldt.css" />
+</head>
+<body>
+<div id="add_contribution">
+<div class="title">{% trans "Copy your project" %}</div>
+
+<form action="" method="POST">{% csrf_token %}
+	<label for="title">{%trans "Title" %}:</label>
+	<input class="inputbox required" type="text" name="title" size="80"  value="" id="title" />
+	<input class="button" id="ldt_submit" type="submit" value="{% trans 'Copy' %}" /></form>
+</div>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,116 @@
+{% extends "ldt/ldt_raw_base.html" %}
+
+{% load i18n %} {# form of creation of content #}
+{% load adminmedia %}
+
+{% block js_import %}
+	{{ block.super }}
+    <script type="text/javascript" src="{{MEDIA_URL}}admin/js/core.js" ></script>
+    <script type="text/javascript" src="{% url jsi18n %}" ></script>
+    <script type="text/javascript" src="{{LDT_MEDIA_PREFIX}}js/jquery.nyroModal.min.js"></script>    
+	{{ content_form.media.js }}
+{% endblock %}
+
+{% block css_import %}
+	{{ block.super }}
+	{{ content_form.media.css }}
+	<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/ldt.css" />
+	<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/ldtform.css" />
+{% endblock %}
+
+
+{% block js_declaration %}
+	<script type="text/javascript">
+	window.__admin_media_prefix__ = "{% filter escapejs %}{% admin_media_prefix %}{% endfilter %}";
+	$(document).ready(function() {
+		$("#close_button").click(function (e) {
+			e.preventDefault();
+			parent.$.nyroModalRemove();
+		});
+		$("#submit_button_write").click(function(e) {
+			$(".submitcontent-loader-content").show();
+		});
+		$(".media_fields").hide();
+		$("#media_field_"+$("#id_content-media_input_type").val()).show();
+		$("#id_content-media_input_type").change(function(e) {
+			$(".media_fields").hide();
+			$("#media_field_"+$(e.target).val()).show();
+		});
+	});
+	
+    </script>
+{% endblock %}
+
+{% block body %}
+	{% if content_form.errors %}
+	<div id="content-form-error">
+		<p>{% trans "The operation could not be performed because one or more error(s) occurred.<br />Please resubmit the content form after making the following changes:" %}</p>
+		<ul>
+		{% for field in content_form %}
+		{% if field.errors%}<li>{{field.name}} : {{ field.errors|striptags }}</li>{% endif %}
+		{% endfor %}
+		</ul>
+	</div>
+	{% endif %}
+
+	{% if media_form.errors %}
+	<div id="media-form-error">
+		<p>{% trans "The operation could not be performed because one or more error(s) occurred.<br />Please resubmit the media form after making the following changes:" %}</p>
+		<ul>
+		{% for field in media_form %}
+		{% if field.errors%}<li>{{field.name}} : {{ field.errors|striptags }}</li>{% endif %}
+		{% endfor %}
+		</ul>
+	</div>
+	{% endif %}
+
+	<div id="add_content" class="span-18 last">
+	<div class="projectscontentstitle">{% trans "Create content" %}</div>
+	<form action="{{create_content_action}}" method="POST" enctype="multipart/form-data" >
+	<div id="contentformhidden">
+		{% csrf_token %}
+		<input type="hidden" name="form_status" value="{{form_status}}" id="content_form_status" />
+		{% for hidden in form.hidden_fields %}
+	    	{{ hidden }}
+	    {% endfor %}
+	    {{content_form.iri_id}}
+    </div>
+    <div id="contentformfields" class="span-18 last">
+	<div id="contentleft" class="span-9">
+		<div>{{ content_form.src.errors }}{{ content_form.src.label_tag }}{{content_form.src}}</div>
+		<div>{{ content_form.videopath.errors }}{{ content_form.videopath.label_tag }}{{content_form.videopath}}</div>
+		<div>{{ content_form.title.errors }}{{ content_form.title.label_tag }}{{content_form.title}}</div>
+		<div>{{ content_form.description.errors }}{{ content_form.description.label_tag }}{{content_form.description}}</div>
+		<div>{{ media_form.external_id.errors }}{{ media_form.external_id.label_tag }}{{media_form.external_id}}</div>
+		<div>{{ media_form.external_publication_url.errors }}{{ media_form.external_publication_url.label_tag }}{{media_form.external_publication_url}}</div>
+	</div>
+	<div id="contentright" class="span-9 last" >
+		<div>{{ content_form.external_id.errors }}{{ content_form.external_id.label_tag }}{{content_form.external_id}}</div>
+		<div>{{ content_form.duration.errors }}{{ content_form.duration.label_tag }}{{content_form.duration}}</div>
+		<div>{{ content_form.content_creation_date.errors }}{{ content_form.content_creation_date.label_tag }}{{content_form.content_creation_date}}</div>
+		<div>{{ content_form.tags.errors }}{{ content_form.tags.label_tag }}{{content_form.tags}}</div>
+		<div>{{ content_form.media_input_type.errors }}{{ content_form.media_input_type.label_tag }}{{content_form.media_input_type}}</div>
+		<div id="media_fields_div">
+			<div id="media_field_link" class="media_fields">{{ content_form.media_obj.errors }}{{ content_form.media_obj.label_tag }}{{content_form.media_obj}}</div>
+			<div id="media_field_upload" class="media_fields">{{ media_form.media_file.errors }}{{ media_form.media_file.label_tag }}{{media_form.media_file}}</div>
+			<div id="media_field_url" class="media_fields">{{ media_form.external_src_url.errors }}{{ media_form.external_src_url.label_tag }}{{ media_form.external_src_url }}</div>
+			<div id="media_field_create" class="media_fields">{{ media_form.src.errors }}{{ media_form.src.label_tag }}{{ media_form.src }}</div>
+		</div>
+		
+	</div>
+	</div>
+	<div id="submitcontent" class="span-18 last">
+		<div id="submitcontent-loader" class="span-10">
+			<div id="submitcontent-loader-img" class="submitcontent-loader-content span-10 last"><img alt="loader" src="{{LDT_MEDIA_PREFIX}}img/ajax-loader-220x19.gif"/></div>
+			<div id="submitcontent-loader-msg" class="submitcontent-loader-content span-10 last">{% trans "media file is being processed please wait." %}</div>
+			<span>&nbsp;</span>
+		</div>
+		<div id="submitcontent-buttons" class="span-8 last">
+			<button id="close_button"  value="close">{% trans 'close_cancel' %}</button>
+			{% if iri_id %}<button type="submit" value="prepare_delete" name="submit_button">{% trans "delete" %}</button>{% endif %}
+			<button type="submit" value="write" name="submit_button" id="submit_button_write">{% trans "write" %}</button>
+		</div>
+	</div> 
+	</form>
+	</div>
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,71 @@
+{% extends "ldt/ldt_raw_base.html" %}
+
+{% load i18n %} {# form of creation of content #}
+{% load adminmedia %}
+
+{% block js_import %}
+	{{ block.super }}
+    <script type="text/javascript" src="{{LDT_MEDIA_PREFIX}}/js/jquery.nyroModal.min.js"></script>    
+	{{ content_form.media.js }}
+{% endblock %}
+
+{% block css_import %}
+	{{ block.super }}
+	{{ content_form.media.css }}
+	<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/ldt.css" />
+	<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/ldtform.css" />
+	<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/workspace.css" />
+{% endblock %}
+
+{% block js_declaration %}
+	{{ block.super }}
+	<script type="text/javascript">
+	$(document).ready(function() {	
+		$("#close_button").click(function (e) {
+			e.preventDefault();
+			parent.$.nyroModalRemove();
+		});
+	});
+	</script>
+{% endblock %}
+
+{% block body %}
+	<div id="add_contribution" class="span-12 last">
+	<div class="projectscontentstitle span-12 last">{% if ldt_id %}{% trans "Update your project" %}{% else %}{% trans "Create your project" %}{% endif %}</div>
+	<form action="{{create_project_action}}" method="POST">
+	{% csrf_token %} 
+	<input type="hidden" name="form_status" value="{{form_status}}" id="project_form_status" />
+	<label for="title">{% trans "Title" %}:</label>
+	{{form.title}}
+	<label>{% trans "List of contents" %}</label>
+	<div class="span-12 last projectscontentsdiv" id="ldtcreatecontentslistcontainer">
+		<div class="projectscontentsheader span-12 last" id="contentslistheader">{% trans "name" %}</div>
+		<div class="span-12 last projectscontentstablewrapperdiv" id="ldtcreatetablewrapperdiv">
+			<div class="span-12 last projectscontentstablediv" id="ldtcreatecontentstablediv">
+				<table class="projectscontentstable">
+				    <tbody class="projectscontentsbody">
+				{% for content in contents %}
+					<tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}">
+					    <td class="cellcheckbox"><input type="checkbox" name="contents" value="{{ content.id }}" checked="true" {% if ldt_id %}disabled="disabled"{% endif %} /></td>
+					    <td class="contenttitle">{{ content.title }}</td>
+					</tr>
+				{% endfor %}
+					</tbody>
+				</table>
+			</div>
+		</div>
+	</div>
+	<div id="submitcontent-buttons" class="span-12 last">
+		<button type="button" id="close_button"  value="close">{% trans 'close_cancel' %}</button>
+		{% if ldt_id %}
+		<button class="button" id="ldt_submit" type="submit" value="prepare_delete" name="submit_button">{% trans "delete_project" %}</button>
+		<button class="button" id="ldt_submit" type="submit" value="update" name="submit_button">{% trans "update_project" %}</button>
+		{% else %}
+		<button class="button" id="ldt_submit" type="submit" value="create" name="submit_button">{% trans "create_project" %}</button>
+		{% endif %}
+	</div>
+	</form>
+	</div>
+		
+{% endblock %}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/embed_popup.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,60 @@
+{% load i18n %}
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
+		<meta http-equiv="Pragma" content="no-cache" />
+		<meta http-equiv="Cache" content="no store" />
+		<meta http-equiv="Expires" content="-1" />
+		<title>Ligne de Temps - IRI</title>
+		<script type="text/javascript" src="{{LDT_MEDIA_PREFIX}}js/jquery.min.js"></script>
+		<script type="text/javascript">
+			var $j = jQuery.noConflict();
+		</script>
+		<script type="text/javascript" src="{{LDT_MEDIA_PREFIX}}js/LdtPlayer.min.js"></script>
+		<script type="text/javascript">
+			__IriSP.lib = {
+				jQuery:"{{LDT_MEDIA_PREFIX}}js/jquery.min.js",
+				jQueryUI:"{{LDT_MEDIA_PREFIX}}js/jquery-ui.min.js",
+				jQueryToolTip:"{{LDT_MEDIA_PREFIX}}js/jquery.tools.min.js",
+				swfObject:"{{LDT_MEDIA_PREFIX}}js/swfobject.js",
+				cssjQueryUI:"{{LDT_MEDIA_PREFIX}}css/jq-css/themes/base/jquery-ui.css"							
+			};
+		</script>
+		<script type="text/javascript" src="{{LDT_MEDIA_PREFIX}}js/embed_popup.js"></script>
+		
+		
+		<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/workspace.css" type="text/css"/>
+		<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/embed_popup.css" type="text/css"/>
+	</head>
+
+	<body id="init_embed_popup">
+	
+		<div class="ldt_player" id="wrapper_{{player_id}}">
+		{% include "ldt/ldt_utils/partial/embed_player.html" %}  
+		</div>
+		
+		<div style="height: 100px">&nbsp;</div>
+
+
+		<div id="button_row">
+		    <div id="display_select">
+		    	<input type="button" value="{% trans 'popup_player'%}" id="player_button"/><input id="seo_body_button" type="button" value="{% trans 'popup_seo_body' %}"/><input id="seo_meta_button" type="button" value="{% trans 'popup_seo_meta' %}"/><input id="links_button" type="button" value="{% trans 'popup_links' %}"/>
+		    </div>
+		</div>
+		
+		<div class="ldt_player_code">
+			<code id ="code_{{player_id}}" >		
+				<div  id="player_code"><pre>{{ embed_rendered.player }}</pre></div>
+				<div id="seo_body_code"><pre>{{ embed_rendered.seo_body }}</pre></div>
+				<div id="seo_meta_code"><pre>{{ embed_rendered.seo_meta }}</pre></div>			
+			</code>
+	
+			<div id="links_code">{% include "ldt/ldt_utils/partial/embed_links.html" %}</div>
+		</div>
+						
+		<a href="{{json_url}}?escape=true&mimetype=text/plain" class="ldt_json_link" >{% trans 'clik here to see the project content' %}</a>		
+		
+	</body>
+</html>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/error_confirm.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,55 @@
+{% extends "ldt/ldt_raw_base.html" %}
+
+{% load i18n %} {# form of creation of content #}
+
+{% block js_import %}
+	{{ block.super }}
+{% endblock %}
+
+{% block css_import %}
+	{{ block.super }}
+	{{ content_form.media.css }}
+	<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/ldt.css" />
+	<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/ldtform.css" />
+{% endblock %}
+
+
+{% block js_declaration %}
+	<script type="text/javascript">
+	$(document).ready(function() {
+		$("#close_button").click(function(e) {
+			parent.$.nyroModalRemove();
+		});
+	});
+	</script>
+{% endblock %}
+
+{% block body %}
+	
+<div id="error">
+<div class="projectscontentstitle">{% if errors|length > 0 %}{% trans "error" %}{% else %}{% trans "confirm" %}{% endif %}</div>
+<div class="error_message">
+	{{ message }}
+		{% if errors|length > 0 %}
+		<ul>
+		{% for error_msg in errors %}
+			<li>{{ error_msg }}</li>	
+		{% endfor %}
+		</ul>
+	{% endif %}
+</div>
+
+<div id="submitcontent" >
+	<div id="submitcontent-buttons" >
+	{% if errors|length > 0 %}
+		<button id="close_button"  value="close">{% trans 'close_error' %}</button> 
+	{% else %}
+		<form method="post" enctype="application/x-www-form-urlencoded" action="{{ delete_action }}">
+			{% csrf_token %}
+			<button id="close_button"  value="close">{% trans 'close_cancel' %}</button>
+			<button type="submit" value="delete" name="submit_button" id="submit_button">{% trans "do_delete" %}</button>
+		</form>
+	{% endif %}
+	</div>
+</div>	
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/init_ldt.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
+<meta http-equiv="Pragma" content="no-cache" />
+<meta http-equiv="Cache" content="no store" />
+<meta http-equiv="Expires" content="-1" />
+<title>Ligne de Temps - IRI</title>
+<script type="text/javascript" src="{{LDT_MEDIA_PREFIX}}/js/swfobject.js"></script>
+</head>
+
+<body id="init_ldt_view">
+
+<div id="ldtInit" style="width: 1001px; height: 631px;">&nbsp;</div>
+<script language="JavaScript" type="text/javascript">
+
+        var params = {
+            quality:"high",
+            allowFullScreen:"true",
+            wmode:"transparent",
+            allowScriptAccess:"always"
+        };
+    
+        var flashvars = {
+            colorUrl:'{{colorurl}}',
+            i18nUrl: '{{i18nurl}}',
+            language: '{{language}}',
+            {% if url %}
+            urlBase:'{{baseurl}}',
+            initUrl:'{{url}}',
+            {% endif %}
+            {% ifequal readonly 'false' %}
+            readOnly: '{{readonly}}',
+            postUrl:'{{posturl}}',
+            postVars: encodeURIComponent('id={{id}}&csrfmiddlewaretoken={{csrf_token}}'),
+            {% else %}
+            readOnly:'true',
+            {% endifequal %}
+            startTime:'100'     
+        };
+
+        var attributes = {  id: "ldtInitSwf",  name: "ldtInitSwf"};
+
+        swfobject.embedSWF("{{LDT_MEDIA_PREFIX}}swf/ldt/LignesDeTempsFlex.swf", "ldtInit", "1001", "631", "9.0.0", "{{LDT_MEDIA_PREFIX}}swf/expressInstall.swf", flashvars, params, attributes);
+
+    </script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/ldt_list.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,89 @@
+{% extends "ldt/ldt_base.html" %}
+{% load i18n %}
+
+{% block js_import %}
+{{block.super}}
+	<script type="text/javascript" src="{{LDT_MEDIA_PREFIX}}js/projectscontents.js" ></script>
+{% endblock %}
+
+
+{% block js_declaration %}
+{{block.super}}
+<script type="text/javascript">
+
+searchprojectfilterurl = "{% url ldt.ldt_utils.views.projectsfilter filter='__FILTER__' is_owner='true' status='0' %}";
+publishprojecturl = "{% url ldt.ldt_utils.views.publish '__PROJECT_ID__' 'false' %}";
+unpublishprojecturl = "{% url ldt.ldt_utils.views.unpublish '__PROJECT_ID__' 'false' %}";
+
+function init_events(base_node) {
+
+	init_events_base(base_node, "{% url ldt.ldt_utils.views.popup_embed %}");
+
+	$('.publishedproject', base_node).click(function(e) {
+		e.preventDefault();
+		var target = $(e.target);
+		var project_id = target.attr('id').replace('project_','');
+		var url = unpublishprojecturl.replace('__PROJECT_ID__', project_id);
+
+		$.getJSON(url, function(json){
+			if(json.res) {
+				searchCallback($('#searchprojectsinput'), "#projectslistcontainer", searchprojectfilterurl, 0);
+			}
+		});
+
+	});
+
+	$('.unpublishedproject', base_node).click(function(e) {
+		e.preventDefault();
+		var target = $(e.target);
+		var project_id = target.attr('id').replace('project_','');
+		var url = publishprojecturl.replace('__PROJECT_ID__', project_id);
+
+		$.getJSON(url, {}, function(json){
+			if(json.res) {
+				searchCallback($('#searchprojectsinput'), "#projectslistcontainer", searchprojectfilterurl, 0);
+			}
+		});
+
+	});
+	
+		
+}
+
+$(document).ready(function(){
+
+	input_list_init = [
+		{'input_selector':"#searchprojectsinput", 'container_selector':"#projectslistcontainer", 'url':searchprojectfilterurl}
+	];
+
+	searchFieldInit(input_list_init);
+	
+	init_events(document);
+
+});
+</script>
+
+{% endblock %}
+
+{% block css_import %}
+{{block.super}}
+    <link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}/css/workspace.css" type="text/css"/>
+{% endblock %}
+
+{% block content %}
+<div class="span-24" id="allcontentsdiv">
+	<div class="span-12 last" id="projectsdiv">
+		<div class="span-12 last titlediv" >
+			<div class="span-8 projectscontentstitle" >{% trans "project list" %}</div>
+			<div class="span-4 last searchfielddiv" >
+			    <div class="searchfield rounded"><input id="searchprojectsinput" class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" type="text" /><img id="projectsajaxloader" class="searchajaxloader" src="{{LDT_MEDIA_PREFIX}}/img/ajax-loader-16x16.gif"/><img id="projectsclear" class="searchclear" src="{{LDT_MEDIA_PREFIX}}/img/clear-left.png"/></div>
+			</div>
+		</div>
+		<div class="span-12 last projectscontentsdiv" id="projectslistcontainer">
+		{% include "ldt/ldt_utils/projectslist.html" %}
+		</div>
+	</div>
+	<div class="span-12 last" id="createprojectdiv">
+	</div>		
+</div>
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/loading.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<style type="text/css">
+.center {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+}
+
+.center div {
+	position: relative;
+	top: -7px;
+	left: -104px;
+}
+</style>
+</head>
+<body>
+<div class="center">
+<div><img alt="loading"
+	src="{{LDT_MEDIA_PREFIX}}img/loadingAnimation.gif" /></div>
+</div>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,23 @@
+{% load i18n %}
+<div class="projectscontentsheader span-12 last" id="contentsheader">
+{% trans "name" %}
+</div>
+<div class="span-12 last projectscontentstablewrapperdiv">
+<div class="span-12 last projectscontentstablediv" id="contentstablediv">
+	<table class="projectscontentstable">
+	    <tbody class="projectscontentsbody">
+	{% for content in contents %}
+		<tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}">
+		    <td class="cellimg"><div class="cellimgdiv"><img src="{{LDT_MEDIA_PREFIX}}/img/document_add.gif" title="{% trans 'create project' %}" alt="{% trans 'create project' %}" href="{% url ldt.ldt_utils.views.create_project content.iri_id %}" class="ldt_link_create"/></div></td>
+		    <td class="cellimg"><div class="cellimgdiv"><img  alt="{% trans 'preview media'%}" title="{% trans 'preview media'%}" src="{{LDT_MEDIA_PREFIX}}/img/control_play.gif" href="{% url ldt.ldt_utils.views.index content.iri_id %}" class="ldt_link"/></div></td>
+		    <td class="contenttitle"><a class="contenttitlelink" href="{% url ldt.ldt_utils.views.write_content iri_id=content.iri_id %}">{{ content.title|default:"_" }}</a></td>
+		</tr>
+	{% endfor %}
+		</tbody>
+	</table>
+</div>
+</div>
+<div class="projectscontentsfooter span-12 last">
++&nbsp;<a class='content_link_create' href="{% url ldt.ldt_utils.views.write_content %}">{% trans "Create content" %}</a>
+</div>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_links.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,9 @@
+{% spaceless %}
+<div id="{{ player_id }}_link_list">
+	<ul>
+	    {% for annotation in annotations %}
+	        <li><span class="title">{% firstof annotation.title annotation.desc %}</span>:&nbsp;<span class="uri">{% if annotation.uri %}<a href="{{annotation.uri}}">{{annotation.uri}}</a>{% endif %}</span></li>
+	    {% endfor %}
+	</ul>
+</div>
+{% endspaceless %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_player.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,27 @@
+{% spaceless %}
+{% load i18n %}
+<div>
+<div style="height: 80px">&nbsp;</div>
+<div id="{{ player_id }}_embed" class="iri_player_embed">
+</div>
+<script type="text/javascript">
+	var config = {
+			metadata:{
+				format:'cinelab',
+				src:'{{ json_url }}',
+				load:'jsonp'},
+			gui:{
+				width:650,
+				height:1,
+				mode:'radio',
+				container:'{{ player_id }}_embed',
+				debug:false,
+				css:'{{WEB_URL}}{{LDT_MEDIA_PREFIX}}css/LdtPlayer.css'},
+			player:{
+				type:'jwplayer',
+				src:'{{WEB_URL}}{{LDT_MEDIA_PREFIX}}swf/player.swf'}
+		};
+	__IriSP.init(config);     
+</script>
+</div>
+{% endspaceless %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_seo_body.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,9 @@
+{% spaceless %}
+<div id="{{ player_id }}_seo_body" style="display: none">
+	<ul>
+	{% for annotation in annotations %}
+		<li><span class="title">{{annotation.title}}</span><span class="desc">{{annotation.desc}}</span><span class="tags">{{annotation.tags|join:','}}</span><span class="uri">{% if annotation.uri %}<a href="{{annotation.uri}}">{{annotation.uri}}</a>{% endif %}</span></li>
+	{% endfor %}
+	</ul>
+</div>
+{% endspaceless %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_seo_meta.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,3 @@
+{% spaceless %}
+<link rel="meta" href="{{WEB_URL}}{% url ldt.ldt_utils.views.project_annotations_rdf ldt_id=ldt_id %}"/>
+{% endspaceless %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,37 @@
+{% load i18n %}
+<div class="projectscontentsheader span-12 last" id="projectsheader">
+{% trans "name" %}
+</div>
+<div class="span-12 last projectscontentstablewrapperdiv">
+<div class="span-12 last projectscontentstablediv" id="projectstablediv">
+<table class="projectscontentstable">
+    <tbody class="projectscontentsbody">
+{% for project in projects %}
+    <tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}" >
+        {% url ldt.ldt_utils.views.project_json_id project.ldt_id as json_url_id %}
+        <td class="cellimg"><div class="cellimgdiv"><img src="{{LDT_MEDIA_PREFIX}}img/document_edit.gif" href="{% url ldt.ldt_utils.views.indexProject project.ldt_id %}" class="ldt_link" alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/></div></td>
+        <td class="cellimg"><div class="cellimgdiv"><img src="{{LDT_MEDIA_PREFIX}}img/documents_duplicate.gif" href="{% url ldt.ldt_utils.views.copy_project project.ldt_id %}" class="ldt_link_create" alt="{% trans 'copy project' %}" title="{% trans 'copy project' %}"/></div></td>
+        <td class="cellimg"><div class="cellimgdiv"><img src="{{LDT_MEDIA_PREFIX}}img/plugin.gif" href="{{WEB_URL}}{{json_url_id}}" id="player_project_{{project.ldt_id}}" class="ldt_link_embed" alt="{% trans 'link json by id' %}" title="{% trans 'link json by id' %}"/></div></td>
+        <td class="cellimg">
+        {% ifequal project.state 2 %}
+        <img src="{{BASE_URL}}static/admin/img/admin/icon-yes.gif" alt="{% trans 'Project published, click to unpublish' %}" title="{% trans 'Project published, click to unpublish' %}" class="publishedproject" id="project_{{project.ldt_id}}" />
+        {% else %}
+        <img src="{{BASE_URL}}static/admin/img/admin/icon-no.gif" alt="{% trans 'Project not published, click to publish' %}" title="{% trans 'Project not published, click to publish' %}" class="unpublishedproject" id="project_{{project.ldt_id}}" />
+        {% endifequal %}
+        </td>
+        <td class="projecttitle">
+        {% ifequal project.state 2 %}
+        {{ project.title }}
+        {% else %}
+        <a class="projecttitlelink" href="{% url ldt.ldt_utils.views.update_project ldt_id=project.ldt_id %}">{{ project.title }}</a>
+        {% endifequal %}
+        </td>
+    </tr>
+{% endfor %}
+    </tbody>
+</table>
+</div>
+</div>
+<div class="projectscontentsfooter span-12 last">
++&nbsp;<a class='ldt_link_create' href="{% url ldt.ldt_utils.views.create_ldt_view %}" >{% trans "Create project" %}</a>
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/save_done.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,5 @@
+<p>done</p>
+<p>{{ldt}}
+<p>
+<p>{{id}}</p>
+<p>title:{{title}}</p>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/search_form.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,13 @@
+{% extends "ldt/base.html" %} {% block content %}
+
+<form method="post"
+	action="{{WEB_URL}}{% url ldt.ldt_utils.views.searchIndex %}"
+	accept-charset="utf-8">
+
+<table>
+	{{ form.as_table }}
+</table>
+<input type="submit" /></form>
+
+
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/workspace.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,1 @@
+{% extends "ldt/ldt_utils/workspace_base.html" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/workspace_base.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,73 @@
+{% extends "ldt/ldt_base.html" %}
+{% load i18n %}
+
+{% block js_import %}
+{{block.super}}
+	<script type="text/javascript" src="{{LDT_MEDIA_PREFIX}}/js/projectscontents.js" ></script>
+{% endblock %}
+
+
+{% block js_declaration %}
+{{block.super}}
+<script type="text/javascript">
+
+var content_filter_url = "{% url ldt.ldt_utils.views.contentsfilter filter='__FILTER__' %}";
+var project_filter_url = "{% url ldt.ldt_utils.views.projectsfilter filter='__FILTER__' is_owner='false' status='0' %}";
+var publish_project_url = "{% url ldt.ldt_utils.views.publish '__PROJECT_ID__' 'false' %}";
+var unpublish_project_url = "{% url ldt.ldt_utils.views.unpublish '__PROJECT_ID__' 'false' %}";
+
+
+function init_events(base_node) {
+
+	init_events_all(base_node, "{% url ldt.ldt_utils.views.popup_embed %}", content_filter_url, project_filter_url, publish_project_url, unpublish_project_url);
+
+}
+
+$(document).ready(function(){	
+
+	input_list_init = [
+		{'input_selector':"#searchcontentsinput", 'container_selector':"#contentslistcontainer", 'url':content_filter_url},
+		{'input_selector':"#searchprojectsinput", 'container_selector':"#projectslistcontainer", 'url':project_filter_url}
+	];
+
+	searchFieldInit(input_list_init);
+
+	init_events(document);
+
+
+});
+</script>
+
+{% endblock %}
+
+{% block css_import %}
+{{block.super}}
+    <link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}/css/workspace.css" type="text/css"/>
+{% endblock %}
+
+{% block content %}
+<div class="span-24 last" id="allcontentsdiv">
+	<div class="span-12" id="contentsdiv">
+	    <div class="span-12 last titlediv" >
+			<div class="span-8 projectscontentstitle">{% trans "content list" %}</div>
+			<div class="span-4 last searchfielddiv" >
+			    <div class="searchfield rounded"><input id="searchcontentsinput" class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" type="text" /><img id="contentsajaxloader" class="searchajaxloader" src="{{LDT_MEDIA_PREFIX}}/img/ajax-loader-16x16.gif" alt="loader"/><img id="contentsclear" class="searchclear" src="{{LDT_MEDIA_PREFIX}}img/clear-left.png"/></div>
+			</div>
+		</div>
+		<div class="span-12 last projectscontentsdiv" id="contentslistcontainer">
+		{% include "ldt/ldt_utils/partial/contentslist.html" %}
+		</div>
+	</div>		
+	<div class="span-12 last" id="projectsdiv">
+		<div class="span-12 last titlediv" >
+			<div class="span-8 projectscontentstitle" >{% trans "project list" %}</div>
+			<div class="span-4 last searchfielddiv" >
+			    <div class="searchfield rounded"><input id="searchprojectsinput" class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" type="text" /><img id="projectsajaxloader" class="searchajaxloader" src="{{LDT_MEDIA_PREFIX}}/img/ajax-loader-16x16.gif" alt="loader"/><img id="projecsclear" class="searchclear" src="{{LDT_MEDIA_PREFIX}}img/clear-left.png"/></div>
+			</div>
+		</div>
+		<div class="span-12 last projectscontentsdiv" id="projectslistcontainer">
+		{% include "ldt/ldt_utils/partial/projectslist.html" %}
+		</div>
+	</div>
+</div>
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/tests.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,206 @@
+#encoding:UTF-8
+
+""" Run these tests with 'python manage.py test ldt_utils'  """
+
+from django.test import TestCase
+import unittest
+import lxml.etree
+from ldt.ldt_utils.models import *
+from ldt.core.models import Owner
+from views import *
+import base64
+import uuid
+import tempfile
+import datetime
+from django.contrib.auth.models import *
+from django.conf import settings
+from django.test.client import Client
+
+
+
+# This test creates an annotation and checks that:
+# 1. the annotation was created in the database (by trying to access it through a 'get')
+# 2. the returned xml contains correct data
+class CreateTest(unittest.TestCase):
+    def setUp(self):
+        self.content = base64.urlsafe_b64encode('<iri><text-annotation><id>f2c1d1fa-629d-4520-a3d2-955b4f2582c0</id><uri>http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title><![CDATA[titre de l�annotation]]></title><text><![CDATA[texte selectionne lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>oaubert</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>')
+        self.c = Client()
+    def tearDown(self):
+        annotlist=Annotation.objects.all()
+        for annot in annotlist:
+            annot.delete()
+
+    def test_create_annotation(self):
+        response = self.c.post('/create/', {'content':self.content})
+        self.annot1 = lxml.etree.fromstring(response.content)
+        #self.assertEqual(lxml.etree.tostring(self.annot1),"lala")
+        self.assertEqual(self.annot1.xpath("/iri/text-annotation/id/text()")[0],"f2c1d1fa-629d-4520-a3d2-955b4f2582c0")
+        self.assertEqual(self.annot1.xpath("/iri/text-annotation/content")[0].tag,"content")
+        self.assertEqual(self.annot1.xpath("/iri/text-annotation/tags/tag/text()")[0],"tag1")
+        self.assertEqual(self.annot1.xpath("/iri/text-annotation/content/text/text()")[0],u"texte selectionne lors de la creation de l\'annotation")
+        self.assertEqual(self.annot1.xpath("/iri/text-annotation/meta/created/text()")[0],"2010-09-06 12:33:53.417550")
+        annot = Annotation.objects.get(id="f2c1d1fa-629d-4520-a3d2-955b4f2582c0")
+        self.assertEqual(annot.uri, "http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168")
+
+
+# This test creates an annotation, then gets it, and checks that the returned xml contains correct data
+class GetTest(unittest.TestCase):
+    def setUp(self):
+        self.annotation = Annotation(id="d2c1d1fa-629d-4520-a3d2-955b4f2582c0", tags=[u"tag1",u"tag2",u"tag3"], title="titre de l\'annotation",text="texte selectionne lors de la creation de l\'annotation",color="#AAAAAA", creation_date="2010-09-06T12:33:53.417550", update_date="2010-09-06T12:33:53.420459")
+        self.annotation.save()
+    def tearDown(self):
+        annotlist=Annotation.objects.all()
+        for annot in annotlist:
+            annot.delete()
+      
+    def test_get_annotation(self):
+        response = self.c.get('/get/', {'id':'d2c1d1fa-629d-4520-a3d2-955b4f2582c0'})
+        self.annot1 = lxml.etree.fromstring(response.content)
+        #self.annot1 = get_annotation("d2c1d1fa-629d-4520-a3d2-955b4f2582c0")
+        #self.assertEqual(lxml.etree.tostring(self.annot1),"lala")
+        self.assertEqual(self.annot1.xpath("/iri/text-annotation/id/text()")[0],self.annotation.id)
+        self.assertEqual(self.annot1.xpath("/iri/text-annotation/tags/tag/text()")[1], self.annotation.tags[1])
+        self.assertEqual(self.annot1.xpath("/iri/text-annotation/content/color/text()")[0],self.annotation.color)
+        #self.assertEqual(self.annot1.xpath("/iri/text-annotation/meta/created/text()"), self.annotation.creation_date)
+
+        
+class FilterTest(unittest.TestCase):
+    def setUp(self):
+        self.annotation = Annotation(id="k2c1d1fa-629d-4520-a3d2-955b4f2582c0",title="titre de l\'annotation",text="texte selectionne lors de la creation de l\'annotation",color="#AAAAAA", uri="http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168", creator="wakimd")
+        self.annotation.save()
+        self.annotation2 = Annotation(id="l2c1d1fa-629d-4520-a3d2-955b4f2582c0",title="titre de l\'annotation2",text="texte selectionne lors de la creation de l\'annotation2",color="#BBBBBB", uri="http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168", creator="wakimd")
+        self.annotation2.save()
+        self.annotation3 = Annotation(id="m2c1d1fa-629d-4520-a3d2-955b4f2582c0", title="titre3", text="texte3", color="#CCCCCC", uri="http://blabla", creator="wakimd")
+        self.annotation3.save()        
+    def tearDown(self):
+        annotlist=Annotation.objects.all()
+        for annot in annotlist:
+            annot.delete()
+        
+    def test_filter_annotation_creator(self):
+        user = 'wakimd'
+        uri = None
+        limit= 2
+        doc = filter_annotation(uri,None,limit,user)
+        cpt = 0
+        for elem in doc.xpath("/iri/text-annotation"):
+            cpt = cpt + 1
+        #self.assertEqual(lxml.etree.tostring(doc),"lala")
+        if limit is not None:
+            self.assertEqual(cpt,limit)
+        for elem in doc.xpath("/iri/text-annotation/meta/creator/text()"):
+            self.assertEqual(elem,user)
+        
+    def test_filter_annotation_uri(self):
+        uri = "http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168"
+        limit = None
+        doc = filter_annotation(uri,None,limit,None)
+        for elem in doc.xpath("/iri/text-annotation/uri/text()"):
+            self.assertEqual(elem[:57],"http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml")
+            
+    def test_filter_annotation_filter(self):
+        user = 'wakimd'
+        uri = None
+        filter = 'lors'
+        limit = None
+        doc = filter_annotation(uri,filter,limit,user)
+        #self.assertEqual(lxml.etree.tostring(doc),"lala")
+        for elem in doc.xpath("/iri/text-annotation/content/text/text()"):
+            self.assertTrue('lors' in elem)  
+        for elem in doc.xpath("/iri/text-annotation/meta/creator/text()"):
+            self.assertEqual(elem,user)          
+
+
+# This test creates an annotation, then deletes it, and checks that:
+# 1. the annotation doesn't exist anymore in the database (by trying to access it through a 'get')
+# 2. the returned xml contains no data
+class DeleteTest(unittest.TestCase):
+    def setUp(self):
+        self.annotation = Annotation(id="d2c1d1fa-629d-4520-a3d2-955b4f2582c0",title="titre de l\'annotation",text="texte selectionne lors de la creation de l\'annotation",color="#AAAAAA", creation_date="2010-09-06T12:33:53.417550", update_date="2010-09-06T12:33:53.420459")
+        self.annotation.save()    
+    def tearDown(self):
+        annotlist=Annotation.objects.all()
+        for annot in annotlist:
+            annot.delete()
+    
+    def test_delete_annotation(self):
+        response = self.c.post('/delete/', {'id':'d2c1d1fa-629d-4520-a3d2-955b4f2582c0'})
+        response2 - self.c.get('/get/', {'id':'d2c1d1fa-629d-4520-a3d2-955b4f2582c0'})
+        doc = lxml.etree.fromstring(response.content)
+        #doc=delete_annotation("d2c1d1fa-629d-4520-a3d2-955b4f2582c0")
+        self.assertEqual(self.annot1.xpath("/iri/text-annotation/id/text()")[0],'')
+        self.assertEqual(self.annot1.xpath("/iri/text-annotation/tags/tag/text()")[1], '')
+        self.assertEqual(self.annot1.xpath("/iri/text-annotation/content/color/text()")[0],'')
+        self.assertEqual(self.annot1.xpath("/iri/text-annotation/meta/creator/text()")[0],'')
+        self.assertEqual(response2.status_code, '404')   
+
+
+# This test creates an annotation, then updates it with new content, and checks that the returned xml contains the updated data
+class UpdateTest(unittest.TestCase):
+    def setUp(self):
+        self.annotation = Annotation(id="d2c1d1fa-629d-4520-a3d2-955b4f2582c0", tags=['tag1','mytag'],title="titre de l\'annotation",text="texte selectionne lors de la creation de l\'annotation",color="#AAAAAA", creation_date="2010-09-06T12:33:53.417550", update_date="2010-09-06T12:33:53.420459")
+        self.annotation.save()
+    def tearDown(self):
+        annotlist=Annotation.objects.all()
+        for annot in annotlist:
+            annot.delete()
+            
+    def test_update_annotation(self):
+        content = base64.urlsafe_b64encode('<iri><text-annotation><id></id><uri></uri><tags><tag>tag1</tag><tag>tag2new</tag><tag>tag3</tag></tags><content><color>#DDDDDD</color><description><![CDATA[texte de description update]]></description><title></title><text><![CDATA[texte selectionne a nouveau lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>80cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created></created><creator></creator><creator-id></creator-id><modified>2010-11-06 12:33:53.420459</modified></meta></text-annotation></iri>')
+        response = self.c.post('/update/', {'content':content,'id':'d2c1d1fa-629d-4520-a3d2-955b4f2582c0'})
+        doc = lxml.etree.fromstring(response.content)
+        #doc = update_annotation(content,'d2c1d1fa-629d-4520-a3d2-955b4f2582c0')
+        #self.assertEqual(lxml.etree.tostring(doc),"lala")
+        self.assertEqual(doc.xpath("/iri/text-annotation/id/text()")[0],"d2c1d1fa-629d-4520-a3d2-955b4f2582c0")
+        self.assertEqual(doc.xpath("/iri/text-annotation/tags/tag/text()")[1], "mytag")
+        self.assertEqual(doc.xpath("/iri/text-annotation/content/color/text()")[0],"#DDDDDD")
+               
+                
+#class AnnotTest(unittest.TestCase):
+#    def setUp(self):
+#        self.annot = Annotation(id=u'd2c1d1fa-629d-4520-a3d2-955b4f2582c0', uri=u'http://iri.blabla', tags=[u'tag1',u'tag2'], title=u'montitre', description=u'madesc', text=u'letexteselectionne', color=u'#AAAAAA', creator=u'wakimd', contributor=u'wakimd', creation_date=u'2010-09-06 12:33:53.417550', update_date=u'2010-09-06 12:33:53.417550')
+#        self.annot.save()       
+#    def tearDown(self):
+#        annotlist=Annotation.objects.all()
+#        for annot in annotlist:
+#            annot.delete()
+#  
+#    def test_create_annotation(self):
+#        b = Annotation.objects.get(id=u'd2c1d1fa-629d-4520-a3d2-955b4f2582c0')
+#        self.assertEqual(b.title, 'montitre')
+#            
+
+# These tests check common error codes are raised when needed
+class ErrorTest(unittest.TestCase):
+    def setUp(self):
+        self.annot = Annotation(id=u'd2c1d1fa-629d-4520-a3d2-955b4f2582c0', uri=u'http://iri.blabla', tags=[u'tag1',u'tag2'], title=u'montitre', description=u'madesc', text=u'letexteselectionne', color=u'#AAAAAA', creator=u'wakimd', contributor=u'wakimd', creation_date=u'2010-09-06 12:33:53.417550', update_date=u'2010-09-06 12:33:53.417550')
+        self.annot.save()
+    
+    def tearDown(self):
+        annotlist=Annotation.objects.all()
+        for annot in annotlist:
+            annot.delete()
+
+    def test_error_create(self):
+        content = base64.urlsafe_b64encode('<iri><text-annotation><id>d2c1d1fa-629d-4520-a3d2-955b4f2582c0</id><uri>http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title><![CDATA[titre de l�annotation]]></title><text><![CDATA[texte selectionne lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>oaubert</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>')
+        response = self.c.post('/create/', {'content':self.content})
+        #annot2 = create_annotation(content)
+        self.assertEqual(response.status_code, '409')
+        
+    def test_error_get(self):
+        response = self.c.get('/get/', {'id':'d2c1d1fa-629d-4520-a3d2-955b4f2582c0'})
+        #annot3 = get_annotation('d2c1d1fa-629d-4520-a3d2-955b4f2582c0')
+        resp = response.status_code
+        self.assertEqual(response.status_code,'404')
+
+    def test_error_delete(self):
+        response = self.c.post('/delete/', {'id':'f2c1d1fa-629d-4520-a3d2-955b4f2582c0'})
+        #annot4 = delete_annotation('f2c1d1fa-629d-4520-a3d2-955b4f2582c0')
+        self.assertEqual(response.status_code,'404')
+
+    def test_error_update(self):
+        content = base64.urlsafe_b64encode('<iri><text-annotation><id>d2c1d1fa-629d-4520-a3d2-955b4f2582c0</id><uri>http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title><![CDATA[titre de l�annotation]]></title><text><![CDATA[texte selectionne lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>oaubert</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>')
+        response = self.c.post('/update/', {'content':content,'id':'dfc1d1fa-629d-4520-a3d2-955b4f2582c0'})
+        #annot5=update_annotation()
+        self.assertEqual(response.status_code,'404')
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/urls.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,17 @@
+from django.conf.urls.defaults import *
+from ldt.management import test_ldt
+
+# Uncomment the next two lines to enable the admin:
+# from django.contrib import admin
+# admin.autodiscover()
+
+urlpatterns = patterns('ldt.ldt_utils',
+    url(r'^create/(?P<content>.*)$', 'views.create_annotation'),
+    url(r'^filter/$', 'views.filter_annotation'),
+    url(r'^get/(?P<id>.*)$', 'views.get_annotation'),
+    url(r'^delete/(?P<id>.*)$', 'views.delete_annotation'),
+    url(r'^update/(?P<content>.*)/(?P<id>.*)$', 'views.update_annotation'),
+    #url(r'^oauth/', include('oauth_provider.urls')),
+    #url(r'^filterprojects/_(?P<filter>[\w\%\_\-\+]*?)/(?P<is_owner>true|false)/(?P<status>\d)$', "views.projectsfilter", ),
+    #url(r'^filtercontents/_(?P<filter>[\w\%\_\-\+]*?)/$', "views.contentsfilter", ),
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/utils.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,67 @@
+import lucene
+from ldt.ldt_utils import STORE
+from ldt.ldt_utils import ANALYZER
+import uuid
+import django.core.urlresolvers
+from django.conf import settings
+from ldt.ldt_utils.models import *
+import urllib
+import datetime
+import lxml.etree
+import base64
+
+__BOOLEAN_DICT = {
+    'false':False,
+    'true':True,
+    '0':False,
+    '1':True,
+    't': True,
+    'f':False
+}
+
+def boolean_convert(bool):
+    if bool is None:
+        return False
+    if bool is True or bool is False:
+        return bool
+    key = str(bool).lower()
+    return __BOOLEAN_DICT.get(key, False)
+
+
+def generate_uuid():
+    return unicode(uuid.uuid1())
+
+
+def normalize_tags(list):
+    nlist=[]
+    for tag in list:
+        tag = tag.lower()
+        nlist.append(tag)
+    taglist = dict().fromkeys(nlist).keys()    
+    
+    return taglist
+
+
+def create_empty_annotation():
+    iri = lxml.etree.Element('iri')
+    doc = lxml.etree.ElementTree(iri)
+    
+    textannotation = lxml.etree.SubElement(iri, 'text-annotation')
+    id = lxml.etree.SubElement(textannotation,'id')
+    uri = lxml.etree.SubElement(textannotation,'uri')
+    tags = lxml.etree.SubElement(textannotation,'tags')
+    
+    content = lxml.etree.SubElement(textannotation,'content')
+    color = lxml.etree.SubElement(content,'color')
+    description = lxml.etree.SubElement(content,'description')
+    title = lxml.etree.SubElement(content,'title')
+    text = lxml.etree.SubElement(content,'text')
+    
+    meta = lxml.etree.SubElement(textannotation,'meta')
+    contributor = lxml.etree.SubElement(meta, "contributor")
+    creator = lxml.etree.SubElement(meta, "creator")
+    creationdate = lxml.etree.SubElement(meta, "created")
+    updatedate = lxml.etree.SubElement(meta, "modified")
+
+    return doc
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/views.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,241 @@
+from django.conf import settings
+from django.contrib.auth.decorators import login_required
+from django.core import serializers
+from django.core.urlresolvers import reverse
+from django.db import IntegrityError
+from django.db.models import Q
+from django.forms.util import ErrorList
+from django.http import HttpResponse, HttpResponseRedirect, \
+    HttpResponseForbidden, HttpResponseServerError, HttpResponseBadRequest
+from django.shortcuts import render_to_response, get_object_or_404, \
+    get_list_or_404
+from django.template import RequestContext
+from django.template.loader import render_to_string
+from django.utils import simplejson
+from django.utils.html import escape
+from django.utils.translation import ugettext as _, ungettext
+from ldt.core.models import Owner
+from ldt.ldt_utils.utils import boolean_convert
+from lxml import etree
+from lxml.html import fromstring, fragment_fromstring
+from ldt.ldt_utils.models import *
+from string import Template
+from urllib2 import urlparse
+from utils import *
+import StringIO
+import base64
+import cgi
+import django.core.urlresolvers
+import ldt.auth as ldt_auth
+import ldt.utils.path as ldt_utils_path
+import logging
+import lucene
+import tempfile
+import uuid
+
+
+## Filters the annotation depending on the request parameters
+## Returns an xml containing the resulting annotations
+def filter_annotation(request, uri=None, filter=None, limit=None, creator=None):
+    annotlist = None
+    query = Q()
+    
+    if uri:
+        query &= Q(uri=uri)
+    if creator:
+        query &= Q(creator=creator)
+    if filter and len(filter) > 0:
+        query &= Q(text__icontains=filter)
+
+    annotlist = Annotation.objects.filter(query)
+
+    if limit:
+        annotlist = annotlist[:limit]
+
+    #create xml
+    iri = lxml.etree.Element('iri')
+    doc = lxml.etree.ElementTree(iri)
+    
+    for annot in annotlist:
+        textannotation = lxml.etree.SubElement(iri, 'text-annotation')
+        id = lxml.etree.SubElement(textannotation,'id')
+        id.text = annot.id
+        uri = lxml.etree.SubElement(textannotation,'uri')
+        uri.text = annot.uri
+        
+        if annot.tags:
+            tags = lxml.etree.SubElement(textannotation,'tags')
+            ltags = normalize_tags(annot.tags)
+            for t in ltags:
+                tag = lxml.etree.SubElement(tags, 'tag')
+                tag.text = t
+            
+        content = lxml.etree.SubElement(textannotation,'content')
+        color = lxml.etree.SubElement(content,'color')
+        color.text = annot.color
+        description = lxml.etree.SubElement(content,'description')
+        description.text = annot.description
+        title = lxml.etree.SubElement(content,'title')
+        title.text = annot.title
+        text = lxml.etree.SubElement(content,'text')
+        text.text = annot.text
+        
+        meta = lxml.etree.SubElement(textannotation,'meta')
+        contributor = lxml.etree.SubElement(meta, "contributor")
+        contributor.text = annot.contributor
+        creator = lxml.etree.SubElement(meta, "contributor")
+        creator.text = annot.creator
+        creationdate = lxml.etree.SubElement(meta, "created")
+        #creationdate.text = annot.creation_date
+        updatedate = lxml.etree.SubElement(meta, "modified")
+        #updatedate.text = annot.update_date
+        
+    return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8")
+
+
+## Creates an annotation from a urlencoded xml content
+## Returns an xml-structured annotation
+#@login_required
+def create_annotation(request, content):
+    cont = base64.urlsafe_b64decode(content)
+    doc = lxml.etree.fromstring(cont)
+    
+    id = unicode(doc.xpath("/iri/text-annotation/id/text()")[0])
+    if id is None:
+        id = generate_uuid()
+        
+    uri = unicode(doc.xpath("/iri/text-annotation/uri/text()")[0])
+    ltags = []
+    for tag in doc.xpath("/iri/text-annotation/tags/tag/text()"):
+        ltags.append(unicode(tag))
+    tags=normalize_tags(ltags)
+    
+    title = unicode(doc.xpath("/iri/text-annotation/content/title/text()")[0])
+    desc = unicode(doc.xpath("/iri/text-annotation/content/description/text()")[0])
+    text = unicode(doc.xpath("/iri/text-annotation/content/text/text()")[0])
+    color = unicode(doc.xpath("/iri/text-annotation/content/color/text()")[0])
+    
+    creator = unicode(doc.xpath("/iri/text-annotation/meta/creator/text()")[0])
+    contributor = unicode(doc.xpath("/iri/text-annotation/meta/contributor/text()")[0])
+    creation_date = unicode(doc.xpath("/iri/text-annotation/meta/created/text()")[0])
+    update_date = unicode(doc.xpath("/iri/text-annotation/meta/modified/text()")[0])
+    
+    try:
+        annotation = Annotation.create_annotation(id=id, uri=uri, tags=tags, title=title, description=desc, text=text, color=color, creator=creator, contributor=contributor, creation_date=creation_date, update_date=update_date)
+        annotation.save()
+        return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8")
+        #return doc
+    except:
+        #raise IntegrityError
+        #print 'This id is already used! Please choose another one!'
+        raise HttpResponseBadRequest('This id is already used! Please chose another one!')
+    
+    
+    #return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8")
+    
+
+## Gets an annotation from an id
+## Returns the xml-structured annotation
+def get_annotation(request, id):
+    annot = Annotation.objects.get_object_or_404(id=id)
+    iri = lxml.etree.Element('iri')
+    doc = lxml.etree.ElementTree(iri)
+    
+    textannotation = lxml.etree.SubElement(iri, 'text-annotation')
+    id = lxml.etree.SubElement(textannotation,'id')
+    id.text = annot.id
+    uri = lxml.etree.SubElement(textannotation,'uri')
+    uri.text = annot.uri
+    
+    if annot.tags:
+        if type(annot.tags) is unicode:
+            annot.tags = eval(annot.tags)
+        tags = lxml.etree.SubElement(textannotation,'tags')
+        ltags = normalize_tags(annot.tags)
+        for t in ltags:
+            tag = lxml.etree.SubElement(tags, 'tag')
+            tag.text = t
+    
+    content = lxml.etree.SubElement(textannotation,'content')
+    color = lxml.etree.SubElement(content,'color')
+    color.text = annot.color
+    description = lxml.etree.SubElement(content,'description')
+    description.text = annot.description
+    title = lxml.etree.SubElement(content,'title')
+    title.text = annot.title
+    text = lxml.etree.SubElement(content,'text')
+    text.text = annot.text
+    
+    meta = lxml.etree.SubElement(textannotation,'meta')
+    contributor = lxml.etree.SubElement(meta, "contributor")
+    contributor.text = annot.contributor
+    creator = lxml.etree.SubElement(meta, "creator")
+    creator.text = annot.creator
+    creationdate = lxml.etree.SubElement(meta, "created")
+    #creationdate.text = annot.creation_date
+    updatedate = lxml.etree.SubElement(meta, "modified")
+    #updatedate.text = annot.update_date
+
+    #return doc
+    return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8")
+
+
+## Delete an annotation from an id
+## Returns an empty xml-structured annotation
+#@login_required
+def delete_annotation(request, id):
+    annot = Annotation.objects.get_object_or_404(id=id)
+    annot.delete()
+    
+    doc=create_empty_annotation()
+    #return doc
+    return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8")
+
+
+## Updates the content of an annotation
+## Returns the xml-structured updated annotation
+#@login_required
+def update_annotation(request, content, id):
+    annot = Annotation.objects.get_object_or_404(id=id)
+    
+    cont = base64.urlsafe_b64decode(content)
+    doc = lxml.etree.fromstring(cont)
+    
+    uri = doc.xpath("/iri/text-annotation/uri/text()")
+    if uri != [] and annot.uri != uri[0]:
+        annot.uri = unicode(uri[0])
+    
+    tags = []
+    for tag in doc.xpath("/iri/text-annotation/tags/tag"):
+        tags.append(unicode(tag.text))
+    if annot.tags is not None:
+        if type(annot.tags) is unicode:
+            annot.tags = eval(annot.tags)
+        tags += annot.tags
+    tags = normalize_tags(tags)
+    annot.tags=tags
+    
+    title = doc.xpath("/iri/text-annotation/content/title/text()")
+    if title != [] and annot.title != title[0]:
+        annot.title = unicode(title[0])
+    desc = doc.xpath("/iri/text-annotation/content/description/text()")
+    if desc != [] and annot.description != desc[0]:
+        annot.description = unicode(desc[0])
+    text = doc.xpath("/iri/text-annotation/content/text/text()")
+    if text != [] and annot.text != text[0]:
+        annot.text = unicode(text[0])
+    color = doc.xpath("/iri/text-annotation/content/color/text()")
+    if color != [] and annot.color != color[0]:
+        annot.color = unicode(color[0])
+    
+    contributor = doc.xpath("/iri/text-annotation/meta/contributor/text()")
+    if contributor != [] and annot.contributor != contributor[0]:
+        annot.contributor = unicode(contributor[0])
+    update_date = doc.xpath("/iri/text-annotation/meta/modified/text()")
+    if update_date != [] and annot.update_date != update_date[0]:
+        annot.update_date = unicode(update_date[0])
+
+    annot.save()
+    
+    return get_annotation(id)
+    
Binary file web/ldt/locale/en/LC_MESSAGES/django.mo has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/locale/en/LC_MESSAGES/django.po	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,1012 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-19 19:43+0200\n"
+"PO-Revision-Date: 2010-02-17 03:53+0100\n"
+"Last-Translator: Yves-Marie Haussonne <ymh.work@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: forms/widgets.py:17
+msgid "Date"
+msgstr "Date"
+
+#: forms/widgets.py:17
+msgid "Time"
+msgstr "Time"
+
+#: ldt_utils/forms.py:43 ldt_utils/models.py:82
+msgid "content.content_creation_date"
+msgstr "content creation date"
+
+#: ldt_utils/forms.py:44
+msgid "content.media_input_type"
+msgstr "Media source type"
+
+#: ldt_utils/forms.py:44
+msgid "file_upload"
+msgstr "file upload"
+
+#: ldt_utils/forms.py:44
+msgid "url"
+msgstr "url"
+
+#: ldt_utils/forms.py:44
+msgid "existing_media"
+msgstr "existing media"
+
+#: ldt_utils/forms.py:44
+msgid "create_media"
+msgstr "create media"
+
+#: ldt_utils/forms.py:44
+msgid "none_media"
+msgstr "no media"
+
+#: ldt_utils/models.py:25
+msgid "media.external_id"
+msgstr "external id"
+
+#: ldt_utils/models.py:26
+msgid "media.external_permalink"
+msgstr "media permalink"
+
+#: ldt_utils/models.py:27
+msgid "media.external_publication_url"
+msgstr "media publication url"
+
+#: ldt_utils/models.py:28
+msgid "media.external_src_url"
+msgstr "media external source url"
+
+#: ldt_utils/models.py:29
+msgid "media.creation_date"
+msgstr "media object creation date"
+
+#: ldt_utils/models.py:30
+msgid "media.media_creation_date"
+msgstr "media creation date"
+
+#: ldt_utils/models.py:31
+msgid "media.update_date"
+msgstr "update date"
+
+#: ldt_utils/models.py:32
+msgid "media.videopath"
+msgstr "videopath"
+
+#: ldt_utils/models.py:33
+msgid "media.duration"
+msgstr "duration (ms)"
+
+#: ldt_utils/models.py:34
+msgid "media.creator"
+msgstr "media creator"
+
+#: ldt_utils/models.py:35
+msgid "description"
+msgstr "description"
+
+#: ldt_utils/models.py:36
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:69
+msgid "title"
+msgstr "Title"
+
+#: ldt_utils/models.py:37
+msgid "media.src"
+msgstr "media source"
+
+#: ldt_utils/models.py:74
+msgid "content.iri_id"
+msgstr "iri id"
+
+#: ldt_utils/models.py:75
+msgid "content.iriurl"
+msgstr "iri url"
+
+#: ldt_utils/models.py:76
+msgid "content.creation_date"
+msgstr "content creation date"
+
+#: ldt_utils/models.py:77
+msgid "content.update_date"
+msgstr "content update date"
+
+#: ldt_utils/models.py:78
+msgid "content.title"
+msgstr "title"
+
+#: ldt_utils/models.py:79
+msgid "content.description"
+msgstr "description"
+
+#: ldt_utils/models.py:80
+msgid "content.authors"
+msgstr "authors"
+
+#: ldt_utils/models.py:81
+msgid "content.duration"
+msgstr "duration (ms)"
+
+#: ldt_utils/models.py:256
+msgid "created by"
+msgstr "created by"
+
+#: ldt_utils/models.py:257
+msgid "changed by"
+msgstr "changed by"
+
+#: ldt_utils/views.py:72 ldt_utils/views.py:332 ldt_utils/views.py:378
+msgid "You can not access this project"
+msgstr "You can not access this project"
+
+#: ldt_utils/views.py:536
+#, python-format
+msgid "the project %(title)s is published. please unpublish before deleting."
+msgstr "the project %(title)s is published. please unpublish before deleting."
+
+#: ldt_utils/views.py:537
+msgid "can not delete the project. Please correct the following error"
+msgstr "can not delete the project. Please correct the following error"
+
+#: ldt_utils/views.py:538
+msgid "title error deleting project"
+msgstr "Error when deleting project"
+
+#: ldt_utils/views.py:540
+#, python-format
+msgid "please confirm deleting project %(title)s"
+msgstr "Please confirm deleting project %(title)s"
+
+#: ldt_utils/views.py:541
+msgid "confirm deletion"
+msgstr "Confirm deletion"
+
+#: ldt_utils/views.py:683
+msgid "Problem when downloading file from url : "
+msgstr "Problem when downloading file from url: "
+
+#: ldt_utils/views.py:686
+msgid "Problem when uploading file : "
+msgstr "Problem when uploading file: "
+
+#: ldt_utils/views.py:756
+#, python-format
+msgid "There is %(count)d error when deleting content"
+msgid_plural "There are %(count)d errors when deleting content"
+msgstr[0] "There is %(count)d error when deleting content"
+msgstr[1] "There are %(count)d errors when deleting content"
+
+#: ldt_utils/views.py:757
+msgid "title error deleting content"
+msgstr "Error when deleting content"
+
+#: ldt_utils/views.py:759
+#, python-format
+msgid "Confirm delete content %(titles)s"
+msgstr "Confirm delete content %(titles)s"
+
+#: ldt_utils/views.py:760
+msgid "confirm delete content"
+msgstr "Confirm delete content"
+
+#: ldt_utils/views.py:791
+#, python-format
+msgid ""
+"Content '%(title)s' is referenced by this project : %(project_titles)s. "
+"Please delete it beforehand."
+msgid_plural ""
+"Content '%(title)s' is referenced by %(count)d projects: %(project_titles)s. "
+"Please delete them beforehand."
+msgstr[0] ""
+"Content '%(title)s' is referenced by this project : %(project_titles)s. "
+"Please delete it beforehand."
+msgstr[1] ""
+"Content '%(title)s' is referenced by %(count)d projects: %(project_titles)s. "
+"Please delete them beforehand."
+
+#: ldt_utils/templates/admin/ldt_utils/app_action.html:4
+#: templates/admin/cms_change_list.html:7
+#: templates/admin/page_app_index.html:8
+#: templates/admin/page_change_form.html:17
+#: templates/admin/page_change_list.html:25
+#: user/templates/registration/logged_out.html:4
+msgid "Home"
+msgstr "Home"
+
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:55
+#: templates/admin/page_base.html:19
+#: user/templates/ldt/user/login_form.html:33
+#: user/templates/ldt/user/space.html:6 user/templates/ldt/user/space.html:9
+msgid "Space"
+msgstr "Space"
+
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:56
+msgid "Ldt Project"
+msgstr "Ldt Project"
+
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:59
+msgid "Contents"
+msgstr "Contents"
+
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:63
+msgid "Create new content"
+msgstr "Create new content"
+
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:66
+msgid "Content"
+msgstr "Content"
+
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:70
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:77
+#: ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html:11
+msgid "create project"
+msgstr "Create new project"
+
+#: ldt_utils/templates/ldt/ldt_utils/copy_ldt.html:11
+msgid "Copy your project"
+msgstr "Copy your project"
+
+#: ldt_utils/templates/ldt/ldt_utils/copy_ldt.html:14
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:38
+msgid "Title"
+msgstr "Title"
+
+#: ldt_utils/templates/ldt/ldt_utils/copy_ldt.html:16
+msgid "Copy"
+msgstr "Copy"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:47
+msgid ""
+"The operation could not be performed because one or more error(s) occurred."
+"<br />Please resubmit the content form after making the following changes:"
+msgstr ""
+"The operation could not be performed because one or more error(s) occurred."
+"<br />Please resubmit the content form after making the following changes:"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:58
+msgid ""
+"The operation could not be performed because one or more error(s) occurred."
+"<br />Please resubmit the media form after making the following changes:"
+msgstr ""
+"The operation could not be performed because one or more error(s) occurred."
+"<br />Please resubmit the media form after making the following changes:"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:68
+#: ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html:21
+msgid "Create content"
+msgstr "Create content"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:105
+msgid "media file is being processed please wait."
+msgstr "media file is being processed please wait."
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:109
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:59
+#: ldt_utils/templates/ldt/ldt_utils/error_confirm.html:49
+msgid "close_cancel"
+msgstr "Close"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:110
+msgid "delete"
+msgstr "Approve delete"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:111
+msgid "write"
+msgstr "write"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:34
+msgid "Update your project"
+msgstr "Create your project"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:34
+msgid "Create your project"
+msgstr "Create your project"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:40
+msgid "List of contents"
+msgstr "List of contents"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:42
+#: ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html:3
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:3
+msgid "name"
+msgstr "name"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:61
+msgid "delete_project"
+msgstr "delete project"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:62
+msgid "update_project"
+msgstr "update project"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:64
+msgid "create_project"
+msgstr "Create new project"
+
+#: ldt_utils/templates/ldt/ldt_utils/embed_popup.html:42
+msgid "popup_player"
+msgstr "player"
+
+#: ldt_utils/templates/ldt/ldt_utils/embed_popup.html:42
+msgid "popup_seo_body"
+msgstr "seo"
+
+#: ldt_utils/templates/ldt/ldt_utils/embed_popup.html:42
+msgid "popup_seo_meta"
+msgstr "meta"
+
+#: ldt_utils/templates/ldt/ldt_utils/embed_popup.html:42
+msgid "popup_links"
+msgstr "links"
+
+#: ldt_utils/templates/ldt/ldt_utils/embed_popup.html:56
+msgid "clik here to see the project content"
+msgstr "clik here to see the project content"
+
+#: ldt_utils/templates/ldt/ldt_utils/error_confirm.html:30
+msgid "error"
+msgstr "Error"
+
+#: ldt_utils/templates/ldt/ldt_utils/error_confirm.html:30
+msgid "confirm"
+msgstr "Confirm deletion"
+
+#: ldt_utils/templates/ldt/ldt_utils/error_confirm.html:45
+msgid "close_error"
+msgstr "Close"
+
+#: ldt_utils/templates/ldt/ldt_utils/error_confirm.html:50
+msgid "do_delete"
+msgstr "Approve delete"
+
+#: ldt_utils/templates/ldt/ldt_utils/ldt_list.html:77
+#: ldt_utils/templates/ldt/ldt_utils/workspace_base.html:63
+msgid "project list"
+msgstr "Projects"
+
+#: ldt_utils/templates/ldt/ldt_utils/ldt_list.html:79
+#: ldt_utils/templates/ldt/ldt_utils/workspace_base.html:54
+#: ldt_utils/templates/ldt/ldt_utils/workspace_base.html:65
+msgid "search"
+msgstr "search"
+
+#: ldt_utils/templates/ldt/ldt_utils/workspace_base.html:52
+msgid "content list"
+msgstr "contents"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html:12
+msgid "preview media"
+msgstr "preview media"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:12
+msgid "open ldt"
+msgstr "open ldt"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:13
+msgid "copy project"
+msgstr "Copy your project"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:14
+msgid "link json by id"
+msgstr "link json by id"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:17
+msgid "Project published, click to unpublish"
+msgstr "Project published, click to unpublish"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:19
+msgid "Project not published, click to publish"
+msgstr "Project not published, click to publish"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:36
+msgid "Create project"
+msgstr "Create new project"
+
+#: templates/admin/cms_change_form.html:30
+msgid "Approve page deletion"
+msgstr "Approve page deletion"
+
+#: templates/admin/cms_change_form.html:36
+#, python-format
+msgid "(requires approvement at %(moderation_level)s level)"
+msgstr "(requires approvement at %(moderation_level)s level)"
+
+#: templates/admin/cms_change_form.html:37
+msgid "(you can perform actions on this page directly)"
+msgstr "(you can perform actions on this page directly)"
+
+#: templates/admin/cms_change_form.html:50
+msgid "Remove delete request"
+msgstr "Remove delete request"
+
+#: templates/admin/cms_change_form.html:52
+msgid "Approve delete"
+msgstr "Approve delete"
+
+#: templates/admin/cms_change_form.html:52
+msgid "Approve"
+msgstr "Approve"
+
+#: templates/admin/cms_change_form.html:52
+#: templates/admin/cms_change_form.html:53
+msgid "draft"
+msgstr "draft"
+
+#: templates/admin/cms_change_form.html:53
+msgid "Preview"
+msgstr "Preview"
+
+#: templates/admin/cms_change_form.html:56
+#: templates/admin/page_change_form.html:27
+msgid "History"
+msgstr "History"
+
+#: templates/admin/cms_change_form.html:57
+#: templates/admin/page_change_form.html:28
+msgid "View on site"
+msgstr "View on site"
+
+#: templates/admin/cms_change_form.html:87
+#: templates/admin/page_change_form.html:38
+#: templates/admin/page_change_list.html:54
+#: templates/cms/admin/cms/page/change_form.html:24
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Please correct the error below."
+msgstr[1] "Please correct the errors below."
+
+#: templates/admin/cms_change_form.html:107
+msgid "All permissions"
+msgstr "All permissions"
+
+#: templates/admin/cms_change_form.html:108
+#: templates/admin/cms_change_form.html:120
+msgid "Loading..."
+msgstr "Loading..."
+
+#: templates/admin/cms_change_form.html:119
+msgid "Page states"
+msgstr "Page states"
+
+#: templates/admin/cms_change_form.html:142
+#, python-format
+msgid ""
+"This page must be moderated at level %(moderation_level)s, post a message "
+"for moderator."
+msgstr ""
+"This page must be moderated at level %(moderation_level)s, post a message "
+"for moderator."
+
+#: templates/admin/cms_change_form.html:144
+msgid "Request approvemet"
+msgstr "Request approvemet"
+
+#: templates/admin/cms_change_form.html:234
+#: user/templates/registration/registration_form.html:16
+msgid "Save"
+msgstr "Save"
+
+#: templates/admin/cms_change_form.html:235
+msgid "Save and continue editing"
+msgstr "Save and continue editing"
+
+#: templates/admin/cms_change_list.html:51
+msgid "Successfully moved"
+msgstr "Successfully moved"
+
+#: templates/admin/cms_change_list.html:76
+#, python-format
+msgid "Recover deleted %(name)s"
+msgstr "Recover deleted %(name)s"
+
+#: templates/admin/cms_change_list.html:79
+#: templates/admin/page_change_list.html:46
+#, python-format
+msgid "Add %(name)s"
+msgstr "Add %(name)s"
+
+#: templates/admin/cms_change_list.html:91
+msgid "Pages on:"
+msgstr "Pages on:"
+
+#: templates/admin/cms_change_list.html:108
+msgid "on"
+msgstr "on"
+
+#: templates/admin/cms_change_list.html:108
+msgid "off"
+msgstr "off"
+
+#: templates/admin/cms_change_list.html:110
+#: templates/admin/page_change_list.html:65
+msgid "Filter"
+msgstr "Filter"
+
+#: templates/admin/index.html:18 templates/admin/page_index.html:18
+#, python-format
+msgid "Models available in the %(name)s application."
+msgstr "Models available in the %(name)s application."
+
+#: templates/admin/index.html:19 templates/admin/page_app_index.html:10
+#: templates/admin/page_index.html:19
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
+
+#: templates/admin/index.html:29 templates/admin/page_change_form.html:20
+#: templates/admin/page_index.html:29
+msgid "Add"
+msgstr "Add"
+
+#: templates/admin/index.html:35 templates/admin/page_index.html:35
+msgid "Change"
+msgstr "changed by"
+
+#: templates/admin/index.html:64 templates/admin/page_index.html:45
+msgid "You don't have permission to edit anything."
+msgstr "You don't have permission to edit anything."
+
+#: templates/admin/index.html:72 templates/admin/page_index.html:53
+msgid "Recent Actions"
+msgstr "Recent Actions"
+
+#: templates/admin/index.html:73 templates/admin/page_index.html:54
+msgid "My Actions"
+msgstr "My Actions"
+
+#: templates/admin/index.html:77 templates/admin/page_index.html:58
+msgid "None available"
+msgstr "None available"
+
+#: templates/admin/index.html:91 templates/admin/page_index.html:72
+msgid "Unknown content"
+msgstr "Unknown content"
+
+#: templates/admin/page_base.html:20 templates/admin/page_index.html:11
+msgid "Pages"
+msgstr "Pages"
+
+#: templates/admin/page_base_site.html:7
+msgid "Django administration"
+msgstr "Django administration"
+
+#: templates/admin/page_login.html:8
+msgid "Connexion"
+msgstr "Login"
+
+#: templates/admin/page_login.html:20
+msgid "Username:"
+msgstr "Username:"
+
+#: templates/admin/page_login.html:24
+msgid "Password:"
+msgstr "Password:"
+
+#: templates/admin/page_login.html:29
+#: user/templates/registration/login.html:29
+msgid "Create an account"
+msgstr "Create an account"
+
+#: templates/admin/page_login.html:30
+#: user/templates/registration/login.html:30
+msgid "Forget password?"
+msgstr "Forget password?"
+
+#: templates/admin/page_login.html:32
+#: user/templates/ldt/user/login_form.html:37
+#: user/templates/ldt/user/login_form.html:45
+#: user/templates/registration/login.html:14
+#: user/templates/registration/password_reset_complete.html:14
+msgid "Log in"
+msgstr "Log in"
+
+#: templates/cms/admin/cms/page/change_form.html:11
+msgid "Documentation"
+msgstr "Documentation"
+
+#: templates/cms/admin/cms/page/change_form.html:11
+msgid "Change password"
+msgstr "Change password"
+
+#: templates/cms/admin/cms/page/change_form.html:11
+#: templates/ldt/ldt_base.html:54 user/templates/ldt/user/login_form.html:34
+msgid "Log out"
+msgstr "Log out"
+
+#: templates/cms/admin/cms/page/change_form.html:42
+msgid "Ordering"
+msgstr "Ordering"
+
+#: templates/cms/admin/cms/page/change_form.html:45
+msgid "Order:"
+msgstr "Order:"
+
+#: templates/ldt/ldt_base.html:26
+msgid "header_title"
+msgstr "Ldt&nbsp;Platform"
+
+#: templates/ldt/ldt_base.html:44
+msgid "home"
+msgstr "home"
+
+#: templates/ldt/ldt_base.html:45
+msgid "contents"
+msgstr "Contents"
+
+#: templates/ldt/ldt_base.html:46
+msgid "indexation projects"
+msgstr "indexation projects"
+
+#: templates/ldt/ldt_base.html:47
+msgid "accounts"
+msgstr "accounts"
+
+#: templates/ldt/ldt_base.html:48 user/templates/ldt/user/change_email.html:6
+#: user/templates/ldt/user/change_email_done.html:6
+#: user/templates/ldt/user/login_form.html:32
+#: user/templates/registration/password_change_done.html:7
+#: user/templates/registration/password_change_form.html:13
+msgid "Profiles"
+msgstr "Profiles"
+
+#: templates/ldt/ldt_base.html:62
+msgid "Langue"
+msgstr "Langue"
+
+#: templates/ldt/ldt_raw_base.html:13
+msgid "page_title"
+msgstr "Ldt Platform"
+
+#: user/admin.py:15
+msgid "User details"
+msgstr "User details"
+
+#: user/admin.py:16
+msgid "Groups"
+msgstr "Groups"
+
+#: user/admin.py:17
+msgid "Permissions"
+msgstr "Permissions"
+
+#: user/admin.py:27 user/templates/ldt/user/login_form.html:61
+msgid "Password"
+msgstr "Password"
+
+#: user/forms.py:31
+msgid "New password"
+msgstr "New password"
+
+#: user/forms.py:33
+msgid "New password confirmation"
+msgstr "New password confirmation"
+
+#: user/forms.py:78 user/forms.py:79
+msgid "E-mail"
+msgstr "E-mail"
+
+#: user/forms.py:90
+msgid "The two emails didn't match."
+msgstr "The two emails didn't match."
+
+#: user/views.py:45 user/templates/registration/login.html:17
+msgid "Sorry, that's not a valid username or password."
+msgstr "Sorry, that's not a valid username or password."
+
+#: user/templates/ldt/user/change_email.html:7
+#: user/templates/ldt/user/change_email.html:10
+msgid "Modification de l'adresse émail"
+msgstr "E-mail change"
+
+#: user/templates/ldt/user/change_email.html:26
+msgid ""
+"Please enter your new e-mail twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Please enter your new e-mail twice so we can verify you typed it in "
+"correctly."
+
+#: user/templates/ldt/user/change_email.html:32
+msgid "email"
+msgstr "email"
+
+#: user/templates/ldt/user/change_email.html:41
+msgid "Confirmation de l'adresse émail"
+msgstr "E-mail confirmation"
+
+#: user/templates/ldt/user/change_email.html:48
+msgid "change my e-mail"
+msgstr "Change my e-mail"
+
+#: user/templates/ldt/user/change_email_done.html:7
+#: user/templates/ldt/user/change_email_done.html:10
+msgid "email change"
+msgstr "email change"
+
+#: user/templates/ldt/user/change_email_done.html:12
+msgid "email changed"
+msgstr "changed by"
+
+#: user/templates/ldt/user/change_email_done.html:13
+msgid "back to profile"
+msgstr "back to profile"
+
+#: user/templates/ldt/user/home.html:9
+msgid "Se connecter"
+msgstr "Login"
+
+#: user/templates/ldt/user/home.html:10
+msgid "Créer un compte"
+msgstr "Create an account"
+
+#: user/templates/ldt/user/home.html:11
+msgid "récupérer mot de passe"
+msgstr "Forget password?"
+
+#: user/templates/ldt/user/login_form.html:50
+msgid "create account"
+msgstr "create account"
+
+#: user/templates/ldt/user/login_form.html:54
+msgid "Pseudo"
+msgstr "Username"
+
+#: user/templates/ldt/user/login_form.html:57
+#: user/templates/ldt/user/login_form.html:64
+msgid "this field is compulsory"
+msgstr "this field is compulsory"
+
+#: user/templates/ldt/user/login_form.html:68
+msgid "reset password"
+msgstr "reset password"
+
+#: user/templates/ldt/user/login_form.html:71
+msgid "Connection"
+msgstr "Login"
+
+#: user/templates/ldt/user/profile.html:6
+#: user/templates/registration/password_change_form.html:14
+#: user/templates/registration/password_change_form.html:17
+msgid "Password change"
+msgstr "Password change"
+
+#: user/templates/ldt/user/profile.html:7
+msgid "Mail change"
+msgstr "Mail change"
+
+#: user/templates/ldt/user/space.html:13
+msgid "Page"
+msgstr "Pages"
+
+#: user/templates/ldt/user/space.html:16
+msgid "Projets Lignes de temps"
+msgstr "Lignes de temps projects"
+
+#: user/templates/registration/activate.html:6
+#: user/templates/registration/activate.html:9
+msgid "Activate account"
+msgstr "Activate account"
+
+#: user/templates/registration/activate.html:12
+msgid "You have activated your account"
+msgstr "You have activated your account"
+
+#: user/templates/registration/activate.html:13
+msgid "Go back to login page"
+msgstr "Go back to login page"
+
+#: user/templates/registration/activation_complete.html:4
+#: user/templates/registration/registration_complete.html:8
+msgid "Sign up successfully"
+msgstr "Sign up successfully"
+
+#: user/templates/registration/activation_complete.html:6
+msgid "activation completed"
+msgstr "activation completed"
+
+#: user/templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Thanks for spending some quality time with the Web site today."
+
+#: user/templates/registration/logged_out.html:10
+msgid "Log in again"
+msgstr "Log in again"
+
+#: user/templates/registration/login.html:25
+msgid "login"
+msgstr "login"
+
+#: user/templates/registration/password_change_done.html:3
+#: user/templates/registration/password_change_done.html:11
+msgid "password change successful"
+msgstr "password change successful"
+
+#: user/templates/registration/password_change_done.html:8
+msgid "password change"
+msgstr "password change"
+
+#: user/templates/registration/password_change_done.html:14
+msgid "Your password has been changed."
+msgstr "Your password has been changed."
+
+#: user/templates/registration/password_change_done.html:15
+msgid "Go back to profiles"
+msgstr "Go back to profiles"
+
+#: user/templates/registration/password_change_form.html:20
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+
+#: user/templates/registration/password_change_form.html:26
+msgid "Old password:"
+msgstr "Old password:"
+
+#: user/templates/registration/password_change_form.html:32
+#: user/templates/registration/password_reset_confirm.html:19
+msgid "New password:"
+msgstr "New password:"
+
+#: user/templates/registration/password_change_form.html:38
+#: user/templates/registration/password_reset_confirm.html:21
+msgid "Confirm password:"
+msgstr "Confirm password:"
+
+#: user/templates/registration/password_change_form.html:44
+#: user/templates/registration/password_reset_confirm.html:22
+msgid "Change my password"
+msgstr "Change my password"
+
+#: user/templates/registration/password_reset_complete.html:6
+#: user/templates/registration/password_reset_confirm.html:6
+#: user/templates/registration/password_reset_confirm.html:9
+#: user/templates/registration/password_reset_done.html:6
+#: user/templates/registration/password_reset_form.html:13
+#: user/templates/registration/password_reset_form.html:15
+#: user/templates/registration/password_reset_form.html:18
+msgid "Password reset"
+msgstr "Password reset"
+
+#: user/templates/registration/password_reset_complete.html:9
+msgid "Password reset complete"
+msgstr "Password reset complete"
+
+#: user/templates/registration/password_reset_complete.html:12
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Your password has been set.  You may go ahead and log in now."
+
+#: user/templates/registration/password_reset_confirm.html:15
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+
+#: user/templates/registration/password_reset_confirm.html:27
+msgid "Password reset unsuccessful"
+msgstr "Password reset unsuccessful"
+
+#: user/templates/registration/password_reset_confirm.html:29
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+
+#: user/templates/registration/password_reset_done.html:8
+msgid "Password reset successful"
+msgstr "Password reset successful"
+
+#: user/templates/registration/password_reset_done.html:12
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
+msgstr ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
+
+#: user/templates/registration/password_reset_email.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
+msgstr "You're receiving this e-mail because you requested a password reset"
+
+#: user/templates/registration/password_reset_email.html:3
+#, python-format
+msgid "for your user account at %(site_name)s"
+msgstr "for your user account at %(site_name)s"
+
+#: user/templates/registration/password_reset_email.html:5
+msgid "Please go to the following page and choose a new password:"
+msgstr "Please go to the following page and choose a new password:"
+
+#: user/templates/registration/password_reset_email.html:9
+msgid "Your username, in case you've forgotten:"
+msgstr "Your username, in case you've forgotten:"
+
+#: user/templates/registration/password_reset_email.html:11
+msgid "Thanks for using our site!"
+msgstr "Thanks for using our site!"
+
+#: user/templates/registration/password_reset_email.html:13
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "The %(site_name)s team"
+
+#: user/templates/registration/password_reset_form.html:22
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
+msgstr ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
+
+#: user/templates/registration/password_reset_form.html:27
+msgid "Adresse émail"
+msgstr "E-mail"
+
+#: user/templates/registration/password_reset_form.html:32
+msgid "Reset my password"
+msgstr "Reset my password"
+
+#: user/templates/registration/registration_active.html:5
+#: user/templates/registration/registration_active.html:7
+msgid "Activate the account"
+msgstr "Activate the account"
+
+#: user/templates/registration/registration_active.html:9
+msgid ""
+"Vous avez bien activé votre compte, vous pouvez accedez à votre espace "
+"personnel."
+msgstr ""
+"Vous avez bien activé votre compte, vous pouvez accedez à votre espace "
+"personnel."
+
+#: user/templates/registration/registration_active.html:10
+msgid "retourner à la page de connexion"
+msgstr "go back to login page"
+
+#: user/templates/registration/registration_complete.html:6
+#: user/templates/registration/registration_form.html:11
+msgid "Sign up"
+msgstr "Sign up"
+
+#: user/templates/registration/registration_complete.html:10
+msgid ""
+"We've e-mailed you instructions for activate your account to the e-mail "
+"address you submitted. You should be receiving it shortly."
+msgstr ""
+"We've e-mailed you instructions for activate your account to the e-mail "
+"address you submitted. You should be receiving it shortly."
+
+#~ msgid "Create"
+#~ msgstr "Create"
+
+#~ msgid "Create new project"
+#~ msgstr "Create new project"
+
+#~ msgid " published"
+#~ msgstr " published"
+
+#~ msgid "Changement de l'adresse émail"
+#~ msgstr "E-mail change"
+
+#~ msgid "Mot de passe"
+#~ msgstr "Password"
+
+#~ msgid "Déconnexion"
+#~ msgstr "Logout"
Binary file web/ldt/locale/fr/LC_MESSAGES/django.mo has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/locale/fr/LC_MESSAGES/django.po	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,1010 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-19 19:43+0200\n"
+"PO-Revision-Date: 2010-03-09 15:52+0100\n"
+"Last-Translator: Yves-Marie Haussonne <ymh.work@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: forms/widgets.py:17
+msgid "Date"
+msgstr "Date"
+
+#: forms/widgets.py:17
+msgid "Time"
+msgstr "Time"
+
+#: ldt_utils/forms.py:43 ldt_utils/models.py:82
+msgid "content.content_creation_date"
+msgstr "Date de creation du contenu"
+
+#: ldt_utils/forms.py:44
+msgid "content.media_input_type"
+msgstr "Source du média"
+
+#: ldt_utils/forms.py:44
+msgid "file_upload"
+msgstr "upload fichier"
+
+#: ldt_utils/forms.py:44
+msgid "url"
+msgstr "url"
+
+#: ldt_utils/forms.py:44
+msgid "existing_media"
+msgstr "média existant"
+
+#: ldt_utils/forms.py:44
+msgid "create_media"
+msgstr "source serveur de stream"
+
+#: ldt_utils/forms.py:44
+msgid "none_media"
+msgstr "Aucun"
+
+#: ldt_utils/models.py:25
+msgid "media.external_id"
+msgstr "id externe"
+
+#: ldt_utils/models.py:26
+msgid "media.external_permalink"
+msgstr "permalien externe"
+
+#: ldt_utils/models.py:27
+msgid "media.external_publication_url"
+msgstr "url de publication externe"
+
+#: ldt_utils/models.py:28
+msgid "media.external_src_url"
+msgstr "url source"
+
+#: ldt_utils/models.py:29
+msgid "media.creation_date"
+msgstr "Date de création"
+
+#: ldt_utils/models.py:30
+msgid "media.media_creation_date"
+msgstr "Date de création du média"
+
+#: ldt_utils/models.py:31
+msgid "media.update_date"
+msgstr "Date de maj"
+
+#: ldt_utils/models.py:32
+msgid "media.videopath"
+msgstr "videopath"
+
+#: ldt_utils/models.py:33
+msgid "media.duration"
+msgstr "Durée du contenu (ms)"
+
+#: ldt_utils/models.py:34
+msgid "media.creator"
+msgstr "Créateur"
+
+#: ldt_utils/models.py:35
+msgid "description"
+msgstr "description"
+
+#: ldt_utils/models.py:36
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:69
+msgid "title"
+msgstr "Titre"
+
+#: ldt_utils/models.py:37
+msgid "media.src"
+msgstr "Sources"
+
+#: ldt_utils/models.py:74
+msgid "content.iri_id"
+msgstr "iri id"
+
+#: ldt_utils/models.py:75
+msgid "content.iriurl"
+msgstr "iri url"
+
+#: ldt_utils/models.py:76
+msgid "content.creation_date"
+msgstr "date de création"
+
+#: ldt_utils/models.py:77
+msgid "content.update_date"
+msgstr "Date de maj"
+
+#: ldt_utils/models.py:78
+msgid "content.title"
+msgstr "titre"
+
+#: ldt_utils/models.py:79
+msgid "content.description"
+msgstr "Description"
+
+#: ldt_utils/models.py:80
+msgid "content.authors"
+msgstr "Autheurs"
+
+#: ldt_utils/models.py:81
+msgid "content.duration"
+msgstr "Durée (ms)"
+
+#: ldt_utils/models.py:256
+msgid "created by"
+msgstr "créé par"
+
+#: ldt_utils/models.py:257
+msgid "changed by"
+msgstr "modifié par"
+
+#: ldt_utils/views.py:72 ldt_utils/views.py:332 ldt_utils/views.py:378
+msgid "You can not access this project"
+msgstr "vous n'avez pas l'autorisation d'accéder à ce projet"
+
+#: ldt_utils/views.py:536
+#, python-format
+msgid "the project %(title)s is published. please unpublish before deleting."
+msgstr "Le projet %(title)s est publié. Déplublier le avant de l'effacer."
+
+#: ldt_utils/views.py:537
+msgid "can not delete the project. Please correct the following error"
+msgstr ""
+"Le projet ne peut pas être effacé. Veuillez corriger les erreurs suivantes."
+
+#: ldt_utils/views.py:538
+msgid "title error deleting project"
+msgstr "Erreur lors de l'effacement du projet"
+
+#: ldt_utils/views.py:540
+#, python-format
+msgid "please confirm deleting project %(title)s"
+msgstr "Confirmer l'efaccement du projet intitulé %(title)s"
+
+#: ldt_utils/views.py:541
+msgid "confirm deletion"
+msgstr "Confirmation d'effacement"
+
+#: ldt_utils/views.py:683
+msgid "Problem when downloading file from url : "
+msgstr "Problème lors du téléchargement du fichier : "
+
+#: ldt_utils/views.py:686
+msgid "Problem when uploading file : "
+msgstr "Problème lors de l'upload du fichier : "
+
+#: ldt_utils/views.py:756
+#, python-format
+msgid "There is %(count)d error when deleting content"
+msgid_plural "There are %(count)d errors when deleting content"
+msgstr[0] "Il y a %(count)d erreur lors de l'effacement du contenu"
+msgstr[1] "Il y a %(count)d erreurs lors de l'effacement du contenu"
+
+#: ldt_utils/views.py:757
+msgid "title error deleting content"
+msgstr "Erreur lors de l'effacement du contenu"
+
+#: ldt_utils/views.py:759
+#, python-format
+msgid "Confirm delete content %(titles)s"
+msgstr "Veuillez confirmer l'effacement du contenu %(titles)s"
+
+#: ldt_utils/views.py:760
+msgid "confirm delete content"
+msgstr "Confirmation effacement contenu"
+
+#: ldt_utils/views.py:791
+#, python-format
+msgid ""
+"Content '%(title)s' is referenced by this project : %(project_titles)s. "
+"Please delete it beforehand."
+msgid_plural ""
+"Content '%(title)s' is referenced by %(count)d projects: %(project_titles)s. "
+"Please delete them beforehand."
+msgstr[0] ""
+"Le contenu '%(title)s' est référencé par le projet '%(project_titles)s'."
+"Veuillez l'effacer préalablement."
+msgstr[1] ""
+"Le contenu '%(title)s' est référencé par les projets suivants : "
+"'%(project_titles)s'.Veuillez les effacer préalablement."
+
+#: ldt_utils/templates/admin/ldt_utils/app_action.html:4
+#: templates/admin/cms_change_list.html:7
+#: templates/admin/page_app_index.html:8
+#: templates/admin/page_change_form.html:17
+#: templates/admin/page_change_list.html:25
+#: user/templates/registration/logged_out.html:4
+msgid "Home"
+msgstr "Accueil"
+
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:55
+#: templates/admin/page_base.html:19
+#: user/templates/ldt/user/login_form.html:33
+#: user/templates/ldt/user/space.html:6 user/templates/ldt/user/space.html:9
+msgid "Space"
+msgstr "Esp. perso"
+
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:56
+msgid "Ldt Project"
+msgstr "Projet lignes de temps"
+
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:59
+msgid "Contents"
+msgstr "Liste des contenus"
+
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:63
+msgid "Create new content"
+msgstr "Créer un nouveau contenu"
+
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:66
+msgid "Content"
+msgstr "Contenu"
+
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:70
+#: ldt_utils/templates/ldt/ldt_utils/content_list.html:77
+#: ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html:11
+msgid "create project"
+msgstr "Créer un nouveau projet d'indexation"
+
+#: ldt_utils/templates/ldt/ldt_utils/copy_ldt.html:11
+msgid "Copy your project"
+msgstr "Copier votre projet"
+
+#: ldt_utils/templates/ldt/ldt_utils/copy_ldt.html:14
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:38
+msgid "Title"
+msgstr "Titre"
+
+#: ldt_utils/templates/ldt/ldt_utils/copy_ldt.html:16
+msgid "Copy"
+msgstr "Copier"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:47
+msgid ""
+"The operation could not be performed because one or more error(s) occurred."
+"<br />Please resubmit the content form after making the following changes:"
+msgstr ""
+"Opération impossible à cause d'une ou plusieurs erreurs.<br />Veuillez "
+"resoumettre le formulaire contenu après avoir fait les changements suivants:"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:58
+msgid ""
+"The operation could not be performed because one or more error(s) occurred."
+"<br />Please resubmit the media form after making the following changes:"
+msgstr ""
+"opération impossible à cause d'une ou plusieurs erreurs.<br />Veuillez "
+"resoumettre le formulaire media après avoir fait les changements suivants:"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:68
+#: ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html:21
+msgid "Create content"
+msgstr "Créer un contenu"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:105
+msgid "media file is being processed please wait."
+msgstr "Le fichier média est en cours de traitement. Veullez patienter."
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:109
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:59
+#: ldt_utils/templates/ldt/ldt_utils/error_confirm.html:49
+msgid "close_cancel"
+msgstr "Fermer"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:110
+msgid "delete"
+msgstr "Effacer"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_content.html:111
+msgid "write"
+msgstr "Enregistrer"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:34
+msgid "Update your project"
+msgstr "Mettre à jour votre projet Lignes de Temps"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:34
+msgid "Create your project"
+msgstr "Créer votre projet Lignes de Temps"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:40
+msgid "List of contents"
+msgstr "Liste de contenus"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:42
+#: ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html:3
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:3
+msgid "name"
+msgstr "nom"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:61
+msgid "delete_project"
+msgstr "Effacer"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:62
+msgid "update_project"
+msgstr "Mettre à jour"
+
+#: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:64
+msgid "create_project"
+msgstr "Créer un nouveau projet Ligne de Temps"
+
+#: ldt_utils/templates/ldt/ldt_utils/embed_popup.html:42
+msgid "popup_player"
+msgstr "Code Lecteur métadata"
+
+#: ldt_utils/templates/ldt/ldt_utils/embed_popup.html:42
+msgid "popup_seo_body"
+msgstr "Code SEO"
+
+#: ldt_utils/templates/ldt/ldt_utils/embed_popup.html:42
+msgid "popup_seo_meta"
+msgstr "Code balise meta en-tête"
+
+#: ldt_utils/templates/ldt/ldt_utils/embed_popup.html:42
+msgid "popup_links"
+msgstr "Liste de liens"
+
+#: ldt_utils/templates/ldt/ldt_utils/embed_popup.html:56
+msgid "clik here to see the project content"
+msgstr "cliquer ici pour voir le contenu du projet"
+
+#: ldt_utils/templates/ldt/ldt_utils/error_confirm.html:30
+msgid "error"
+msgstr "Erreur"
+
+#: ldt_utils/templates/ldt/ldt_utils/error_confirm.html:30
+msgid "confirm"
+msgstr "Confirmation d'effacement"
+
+#: ldt_utils/templates/ldt/ldt_utils/error_confirm.html:45
+msgid "close_error"
+msgstr "Fermer"
+
+#: ldt_utils/templates/ldt/ldt_utils/error_confirm.html:50
+msgid "do_delete"
+msgstr "Effacer"
+
+#: ldt_utils/templates/ldt/ldt_utils/ldt_list.html:77
+#: ldt_utils/templates/ldt/ldt_utils/workspace_base.html:63
+msgid "project list"
+msgstr "Liste des projets"
+
+#: ldt_utils/templates/ldt/ldt_utils/ldt_list.html:79
+#: ldt_utils/templates/ldt/ldt_utils/workspace_base.html:54
+#: ldt_utils/templates/ldt/ldt_utils/workspace_base.html:65
+msgid "search"
+msgstr "Recherche"
+
+#: ldt_utils/templates/ldt/ldt_utils/workspace_base.html:52
+msgid "content list"
+msgstr "Liste des contenus"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html:12
+msgid "preview media"
+msgstr "aperçu"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:12
+msgid "open ldt"
+msgstr "Ouvrir sous Lignes de Temps"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:13
+msgid "copy project"
+msgstr "Copier votre projet"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:14
+msgid "link json by id"
+msgstr "Ouvrir le lecteur de métadata"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:17
+msgid "Project published, click to unpublish"
+msgstr "Projet publié, cliquer pour de-publier"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:19
+msgid "Project not published, click to publish"
+msgstr "Projet non publié, cliquer pour publier"
+
+#: ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html:36
+msgid "Create project"
+msgstr "Créer un nouveau projet d'indexation"
+
+#: templates/admin/cms_change_form.html:30
+msgid "Approve page deletion"
+msgstr "Accepter l'effacement de la page"
+
+#: templates/admin/cms_change_form.html:36
+#, python-format
+msgid "(requires approvement at %(moderation_level)s level)"
+msgstr "(Demande l'approbation au niveau %(moderation_level)s)"
+
+#: templates/admin/cms_change_form.html:37
+msgid "(you can perform actions on this page directly)"
+msgstr "(Vous pouvez agir sur cette page directement)"
+
+#: templates/admin/cms_change_form.html:50
+msgid "Remove delete request"
+msgstr "Effacer la requête d'affacement"
+
+#: templates/admin/cms_change_form.html:52
+msgid "Approve delete"
+msgstr "Accepter l'effacement"
+
+#: templates/admin/cms_change_form.html:52
+msgid "Approve"
+msgstr "Accepter"
+
+#: templates/admin/cms_change_form.html:52
+#: templates/admin/cms_change_form.html:53
+msgid "draft"
+msgstr "brouillon"
+
+#: templates/admin/cms_change_form.html:53
+msgid "Preview"
+msgstr "Aperçu"
+
+#: templates/admin/cms_change_form.html:56
+#: templates/admin/page_change_form.html:27
+msgid "History"
+msgstr "Histoire"
+
+#: templates/admin/cms_change_form.html:57
+#: templates/admin/page_change_form.html:28
+msgid "View on site"
+msgstr "Voir sur le site"
+
+#: templates/admin/cms_change_form.html:87
+#: templates/admin/page_change_form.html:38
+#: templates/admin/page_change_list.html:54
+#: templates/cms/admin/cms/page/change_form.html:24
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Veuillez corriger l'erreur ci-dessous"
+msgstr[1] "Veuillez corriger les erreurs ci-dessous"
+
+#: templates/admin/cms_change_form.html:107
+msgid "All permissions"
+msgstr "Toutes le parmissions"
+
+#: templates/admin/cms_change_form.html:108
+#: templates/admin/cms_change_form.html:120
+msgid "Loading..."
+msgstr "Chargement..."
+
+#: templates/admin/cms_change_form.html:119
+msgid "Page states"
+msgstr "Etat de la page"
+
+#: templates/admin/cms_change_form.html:142
+#, python-format
+msgid ""
+"This page must be moderated at level %(moderation_level)s, post a message "
+"for moderator."
+msgstr ""
+"Le niveau nécessaire pour modérer cette page est le niveau "
+"%(moderation_level)s, laisser un message pour le modérateur"
+
+#: templates/admin/cms_change_form.html:144
+msgid "Request approvemet"
+msgstr "Demander l'approbation"
+
+#: templates/admin/cms_change_form.html:234
+#: user/templates/registration/registration_form.html:16
+msgid "Save"
+msgstr "Enregistrer"
+
+#: templates/admin/cms_change_form.html:235
+msgid "Save and continue editing"
+msgstr "Sauver et continuer l'édition"
+
+#: templates/admin/cms_change_list.html:51
+msgid "Successfully moved"
+msgstr "Déplacement réussi"
+
+#: templates/admin/cms_change_list.html:76
+#, python-format
+msgid "Recover deleted %(name)s"
+msgstr "Récupérer %(name)s effacé"
+
+#: templates/admin/cms_change_list.html:79
+#: templates/admin/page_change_list.html:46
+#, python-format
+msgid "Add %(name)s"
+msgstr "Ajouter %(name)s"
+
+#: templates/admin/cms_change_list.html:91
+msgid "Pages on:"
+msgstr "Pages sur:"
+
+#: templates/admin/cms_change_list.html:108
+msgid "on"
+msgstr "on"
+
+#: templates/admin/cms_change_list.html:108
+msgid "off"
+msgstr "off"
+
+#: templates/admin/cms_change_list.html:110
+#: templates/admin/page_change_list.html:65
+msgid "Filter"
+msgstr "Filtre"
+
+#: templates/admin/index.html:18 templates/admin/page_index.html:18
+#, python-format
+msgid "Models available in the %(name)s application."
+msgstr "Le modèle disponible dans l'application %(name)s."
+
+#: templates/admin/index.html:19 templates/admin/page_app_index.html:10
+#: templates/admin/page_index.html:19
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
+
+#: templates/admin/index.html:29 templates/admin/page_change_form.html:20
+#: templates/admin/page_index.html:29
+msgid "Add"
+msgstr "Ajouter"
+
+#: templates/admin/index.html:35 templates/admin/page_index.html:35
+msgid "Change"
+msgstr "modifié par"
+
+#: templates/admin/index.html:64 templates/admin/page_index.html:45
+msgid "You don't have permission to edit anything."
+msgstr "Vous n'aver pas l'autorisation d'éditer quoi que ce soit."
+
+#: templates/admin/index.html:72 templates/admin/page_index.html:53
+msgid "Recent Actions"
+msgstr "Actions récentes"
+
+#: templates/admin/index.html:73 templates/admin/page_index.html:54
+msgid "My Actions"
+msgstr "Mes actions"
+
+#: templates/admin/index.html:77 templates/admin/page_index.html:58
+msgid "None available"
+msgstr "Aucune disponible"
+
+#: templates/admin/index.html:91 templates/admin/page_index.html:72
+msgid "Unknown content"
+msgstr "Contenu inconnu"
+
+#: templates/admin/page_base.html:20 templates/admin/page_index.html:11
+msgid "Pages"
+msgstr "Pages"
+
+#: templates/admin/page_base_site.html:7
+msgid "Django administration"
+msgstr "Administration de Django"
+
+#: templates/admin/page_login.html:8
+msgid "Connexion"
+msgstr "Connexion"
+
+#: templates/admin/page_login.html:20
+msgid "Username:"
+msgstr "Nom de utilisateur :"
+
+#: templates/admin/page_login.html:24
+msgid "Password:"
+msgstr "Mot de passe :"
+
+#: templates/admin/page_login.html:29
+#: user/templates/registration/login.html:29
+msgid "Create an account"
+msgstr "Créer un compte"
+
+#: templates/admin/page_login.html:30
+#: user/templates/registration/login.html:30
+msgid "Forget password?"
+msgstr "Oubliez le mot de passe?"
+
+#: templates/admin/page_login.html:32
+#: user/templates/ldt/user/login_form.html:37
+#: user/templates/ldt/user/login_form.html:45
+#: user/templates/registration/login.html:14
+#: user/templates/registration/password_reset_complete.html:14
+msgid "Log in"
+msgstr "Connexion"
+
+#: templates/cms/admin/cms/page/change_form.html:11
+msgid "Documentation"
+msgstr "Documentation"
+
+#: templates/cms/admin/cms/page/change_form.html:11
+msgid "Change password"
+msgstr "Modifier le mot de passe"
+
+#: templates/cms/admin/cms/page/change_form.html:11
+#: templates/ldt/ldt_base.html:54 user/templates/ldt/user/login_form.html:34
+msgid "Log out"
+msgstr "Déconnexion"
+
+#: templates/cms/admin/cms/page/change_form.html:42
+msgid "Ordering"
+msgstr "Ordre"
+
+#: templates/cms/admin/cms/page/change_form.html:45
+msgid "Order:"
+msgstr "Ordre :"
+
+#: templates/ldt/ldt_base.html:26
+msgid "header_title"
+msgstr "Plateforme&nbsp;Ldt"
+
+#: templates/ldt/ldt_base.html:44
+msgid "home"
+msgstr "accueil"
+
+#: templates/ldt/ldt_base.html:45
+msgid "contents"
+msgstr "Liste des contenus"
+
+#: templates/ldt/ldt_base.html:46
+msgid "indexation projects"
+msgstr "Projets d'indexation"
+
+#: templates/ldt/ldt_base.html:47
+msgid "accounts"
+msgstr "Comptes"
+
+#: templates/ldt/ldt_base.html:48 user/templates/ldt/user/change_email.html:6
+#: user/templates/ldt/user/change_email_done.html:6
+#: user/templates/ldt/user/login_form.html:32
+#: user/templates/registration/password_change_done.html:7
+#: user/templates/registration/password_change_form.html:13
+msgid "Profiles"
+msgstr "Mon profil"
+
+#: templates/ldt/ldt_base.html:62
+msgid "Langue"
+msgstr "Langue"
+
+#: templates/ldt/ldt_raw_base.html:13
+msgid "page_title"
+msgstr "Plateforme Ldt"
+
+#: user/admin.py:15
+msgid "User details"
+msgstr "Détail utilisateur"
+
+#: user/admin.py:16
+msgid "Groups"
+msgstr "Groupes"
+
+#: user/admin.py:17
+msgid "Permissions"
+msgstr "Permissions"
+
+#: user/admin.py:27 user/templates/ldt/user/login_form.html:61
+msgid "Password"
+msgstr "Mot de passe"
+
+#: user/forms.py:31
+msgid "New password"
+msgstr "Nouveau mot de passe"
+
+#: user/forms.py:33
+msgid "New password confirmation"
+msgstr "Confirmation du nouveau mot de passe"
+
+#: user/forms.py:78 user/forms.py:79
+msgid "E-mail"
+msgstr "E-mail"
+
+#: user/forms.py:90
+msgid "The two emails didn't match."
+msgstr "les deux emails ne correspondent pas"
+
+#: user/views.py:45 user/templates/registration/login.html:17
+msgid "Sorry, that's not a valid username or password."
+msgstr "Saisissez un nom d'utilisateur et un mot de passe valide."
+
+#: user/templates/ldt/user/change_email.html:7
+#: user/templates/ldt/user/change_email.html:10
+msgid "Modification de l'adresse émail"
+msgstr "Modification de l'adresse email"
+
+#: user/templates/ldt/user/change_email.html:26
+msgid ""
+"Please enter your new e-mail twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Saisissez deux fois votre nouvelle adresse émail afin de vérifier qu'il est "
+"correctment"
+
+#: user/templates/ldt/user/change_email.html:32
+msgid "email"
+msgstr "adresse émail"
+
+#: user/templates/ldt/user/change_email.html:41
+msgid "Confirmation de l'adresse émail"
+msgstr "Confirmation de l'adresse email"
+
+#: user/templates/ldt/user/change_email.html:48
+msgid "change my e-mail"
+msgstr "Changer l'adresse émail"
+
+#: user/templates/ldt/user/change_email_done.html:7
+#: user/templates/ldt/user/change_email_done.html:10
+msgid "email change"
+msgstr "Modification de l'adresse émail"
+
+#: user/templates/ldt/user/change_email_done.html:12
+msgid "email changed"
+msgstr "email modifié"
+
+#: user/templates/ldt/user/change_email_done.html:13
+msgid "back to profile"
+msgstr "Retourner à mon profil"
+
+#: user/templates/ldt/user/home.html:9
+msgid "Se connecter"
+msgstr "Se connecter"
+
+#: user/templates/ldt/user/home.html:10
+msgid "Créer un compte"
+msgstr "Créer un compte"
+
+#: user/templates/ldt/user/home.html:11
+msgid "récupérer mot de passe"
+msgstr "Récupérer le mot de passe"
+
+#: user/templates/ldt/user/login_form.html:50
+msgid "create account"
+msgstr "Créer un compte"
+
+#: user/templates/ldt/user/login_form.html:54
+msgid "Pseudo"
+msgstr "Pseudo"
+
+#: user/templates/ldt/user/login_form.html:57
+#: user/templates/ldt/user/login_form.html:64
+msgid "this field is compulsory"
+msgstr "Ce champs est obligatoire"
+
+#: user/templates/ldt/user/login_form.html:68
+msgid "reset password"
+msgstr "Réinitialiser le mot de passe"
+
+#: user/templates/ldt/user/login_form.html:71
+msgid "Connection"
+msgstr "Connexion"
+
+#: user/templates/ldt/user/profile.html:6
+#: user/templates/registration/password_change_form.html:14
+#: user/templates/registration/password_change_form.html:17
+msgid "Password change"
+msgstr "Modification du mot de passe"
+
+#: user/templates/ldt/user/profile.html:7
+msgid "Mail change"
+msgstr "Modification de l'adresse émail"
+
+#: user/templates/ldt/user/space.html:13
+msgid "Page"
+msgstr "Pages"
+
+#: user/templates/ldt/user/space.html:16
+msgid "Projets Lignes de temps"
+msgstr "Projets Lignes de temps"
+
+#: user/templates/registration/activate.html:6
+#: user/templates/registration/activate.html:9
+msgid "Activate account"
+msgstr "Activer le compte"
+
+#: user/templates/registration/activate.html:12
+msgid "You have activated your account"
+msgstr "Vous avez bien activé votre compte."
+
+#: user/templates/registration/activate.html:13
+msgid "Go back to login page"
+msgstr "Retourner à la page de connexion"
+
+#: user/templates/registration/activation_complete.html:4
+#: user/templates/registration/registration_complete.html:8
+msgid "Sign up successfully"
+msgstr "Création de compte avec succès"
+
+#: user/templates/registration/activation_complete.html:6
+msgid "activation completed"
+msgstr "Activation terminée"
+
+#: user/templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Merci de votre visite."
+
+#: user/templates/registration/logged_out.html:10
+msgid "Log in again"
+msgstr "Se reconnecter"
+
+#: user/templates/registration/login.html:25
+msgid "login"
+msgstr "Connexion"
+
+#: user/templates/registration/password_change_done.html:3
+#: user/templates/registration/password_change_done.html:11
+msgid "password change successful"
+msgstr "Changement de mot de passe réussi"
+
+#: user/templates/registration/password_change_done.html:8
+msgid "password change"
+msgstr "Changement de mot de passe"
+
+#: user/templates/registration/password_change_done.html:14
+msgid "Your password has been changed."
+msgstr "Votre mot de passe a été changeé."
+
+#: user/templates/registration/password_change_done.html:15
+msgid "Go back to profiles"
+msgstr "Retourner à la page de mon profil"
+
+#: user/templates/registration/password_change_form.html:20
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Par sécurité, veuillez enter votre ancien mot de passe puis le nouveau a "
+"deux reprise afin de savoir si vous l'avez taper correctement "
+
+#: user/templates/registration/password_change_form.html:26
+msgid "Old password:"
+msgstr "Ancien mot de passe :"
+
+#: user/templates/registration/password_change_form.html:32
+#: user/templates/registration/password_reset_confirm.html:19
+msgid "New password:"
+msgstr "Nouveau mot de passe :"
+
+#: user/templates/registration/password_change_form.html:38
+#: user/templates/registration/password_reset_confirm.html:21
+msgid "Confirm password:"
+msgstr "Confirmer le mot de passe :"
+
+#: user/templates/registration/password_change_form.html:44
+#: user/templates/registration/password_reset_confirm.html:22
+msgid "Change my password"
+msgstr "Modifier mon mot de passe"
+
+#: user/templates/registration/password_reset_complete.html:6
+#: user/templates/registration/password_reset_confirm.html:6
+#: user/templates/registration/password_reset_confirm.html:9
+#: user/templates/registration/password_reset_done.html:6
+#: user/templates/registration/password_reset_form.html:13
+#: user/templates/registration/password_reset_form.html:15
+#: user/templates/registration/password_reset_form.html:18
+msgid "Password reset"
+msgstr "réinitialiser e mot de passe"
+
+#: user/templates/registration/password_reset_complete.html:9
+msgid "Password reset complete"
+msgstr "Réinitialisation du mot de passe terminée"
+
+#: user/templates/registration/password_reset_complete.html:12
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Votre mot de passe a été fixé. vous pouvez vous connecter maintenant."
+
+#: user/templates/registration/password_reset_confirm.html:15
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"veuillez enter votre nouveau mot de pass deux fois afin de le vérifier."
+
+#: user/templates/registration/password_reset_confirm.html:27
+msgid "Password reset unsuccessful"
+msgstr "Reinitialisation du mot de pass a échoué"
+
+#: user/templates/registration/password_reset_confirm.html:29
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Le lien de réinitialisation du mot de passe n'est pas valide, certainement "
+"car il a déjà été utilisé. veuiller demander une nouvelle réinitialisation."
+
+#: user/templates/registration/password_reset_done.html:8
+msgid "Password reset successful"
+msgstr "Réinitialisation du mot de passe réussie"
+
+#: user/templates/registration/password_reset_done.html:12
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
+msgstr ""
+"Nous vous avons envoyer les instructions de reinitialisation de votre mot de "
+"passe à l'adresse email que vous nous avez fournie. vous devriez les "
+"recevoir bientôt."
+
+#: user/templates/registration/password_reset_email.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
+msgstr ""
+"Vous recevez ce mail car vous avez damender la réinitialisation du mot de "
+"passe"
+
+#: user/templates/registration/password_reset_email.html:3
+#, python-format
+msgid "for your user account at %(site_name)s"
+msgstr "Pour votre compte sur le site %(site_name)s"
+
+#: user/templates/registration/password_reset_email.html:5
+msgid "Please go to the following page and choose a new password:"
+msgstr ""
+"veuillez aller à la page suivante et choisissez un nouveau mot de passe :"
+
+#: user/templates/registration/password_reset_email.html:9
+msgid "Your username, in case you've forgotten:"
+msgstr "Pour rappel votre nom d'autilisateur :"
+
+#: user/templates/registration/password_reset_email.html:11
+msgid "Thanks for using our site!"
+msgstr "Merci de votre visite."
+
+#: user/templates/registration/password_reset_email.html:13
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "L'équipe du site %(site_name)s"
+
+#: user/templates/registration/password_reset_form.html:22
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
+msgstr ""
+"Mot de passe oublié ? Entrez votre adresse email ci-dessous pour recevoir "
+"les instructions pour en entrer un nouveau."
+
+#: user/templates/registration/password_reset_form.html:27
+msgid "Adresse émail"
+msgstr "Adresse email"
+
+#: user/templates/registration/password_reset_form.html:32
+msgid "Reset my password"
+msgstr "Reinitialiser mon mot de passe"
+
+#: user/templates/registration/registration_active.html:5
+#: user/templates/registration/registration_active.html:7
+msgid "Activate the account"
+msgstr "Activer le compte"
+
+#: user/templates/registration/registration_active.html:9
+msgid ""
+"Vous avez bien activé votre compte, vous pouvez accedez à votre espace "
+"personnel."
+msgstr ""
+"Vous avez bien activé votre compte, vous pouvez accedez à votre espace "
+"personnel."
+
+#: user/templates/registration/registration_active.html:10
+msgid "retourner à la page de connexion"
+msgstr "retourner à la page de connexion"
+
+#: user/templates/registration/registration_complete.html:6
+#: user/templates/registration/registration_form.html:11
+msgid "Sign up"
+msgstr "Création d'un compte"
+
+#: user/templates/registration/registration_complete.html:10
+msgid ""
+"We've e-mailed you instructions for activate your account to the e-mail "
+"address you submitted. You should be receiving it shortly."
+msgstr ""
+"Nous vous avons envoyé par courriel les instructions pour activer le compte "
+"à l'adresse que vous avez indiquée. Vous devriez le recevoir rapidement."
+
+#~ msgid "Create"
+#~ msgstr "Créer"
+
+#~ msgid "Create new project"
+#~ msgstr "Créer un nouveau projet Ligne de Temps"
+
+#~ msgid " published"
+#~ msgstr "Publié"
+
+#~ msgid "Password (Verification)"
+#~ msgstr "Mot de passe (Vérification)"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/management/__init__.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,66 @@
+from django.db.models import signals
+from django.conf import settings
+from django.contrib.auth.models import User, Group 
+from ldt.core.models import Owner
+from ldt.user.models import ldt, IriGroup
+from django.contrib.contenttypes.models import ContentType
+# import logging
+from django.core.exceptions import ObjectDoesNotExist
+
+    
+def post_save_ldt(instance, raw, created, **kwargs):
+    signals.post_save.send(sender=User, instance=instance, raw=raw, created=created)     
+    
+signals.post_save.connect(post_save_ldt, ldt) 
+
+def post_save_irigroup(instance, raw, created, **kwargs):
+    signals.post_save.send(sender=Group, instance=instance, raw=raw, created=created)
+    
+signals.post_save.connect(post_save_irigroup, IriGroup) 
+
+def post_save_user(instance, raw, created, **kwargs):
+    if created:
+        try:
+            owner = Owner.objects.get(user=instance)
+        except ObjectDoesNotExist:
+            owner=Owner(user=instance)
+            owner.save() 
+    
+signals.post_save.connect(post_save_user, User) 
+
+def post_save_group(instance, raw, created, **kwargs):
+    if created:
+        try:
+            owner = Owner.objects.get(group=instance)
+        except ObjectDoesNotExist:
+            owner=Owner(group=instance)
+            owner.save()
+    
+signals.post_save.connect(post_save_group, Group) 
+
+    
+def test_cms():
+    if 'cms' in settings.INSTALLED_APPS:
+        return True
+    else:
+        return False
+        
+def test_ldt():
+    if 'ldt.ldt_utils' in settings.INSTALLED_APPS:
+        return True
+    else:
+        return False
+
+def get_content_type_list() :
+    content_type_list = []
+    if test_cms():
+        content_type = ContentType.objects.get(app_label='cms', model='page')
+        content_type_list.append(content_type)
+        content_type = ContentType.objects.get(app_label='snippet', model='snippet')
+        content_type_list.append(content_type)
+    # if test_ldt():
+        # content_type = ContentType.objects.get(app_label='ldt', model='content')
+        # content_type_list.append(content_type)
+    return content_type_list
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/LdtPlayer.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,175 @@
+		#demo-frame > div.demo { padding: 5px !important; };
+		
+		button.ui-button-icon-only  {
+			height:1.5em;
+			width:1.5em;
+		}
+		
+		#Ldt-loader{
+			background:url(imgs/transBlack.gif);
+			width:10px;
+			height:10px;
+		}
+		
+		#Ldt-controler {
+			font-size: 62.5%;
+			font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
+			background-color:#DECFE2;
+			height:35px;
+			padding:5px;
+		}
+		
+		.Ldt-iri-chapter{
+			padding-top:10px;
+			padding-bottom:5px;
+			border-left:solid 1px #000;
+			border-right:solid 1px #000;
+		}
+		
+		#Ldt-loader {
+			background:url(imgs/loader_fc.gif) no-repeat;
+			width:20px;
+			height:16px;
+			float:left;
+		}
+		
+		.tooltip {
+			display:none;
+			background:transparent url(imgs/white_arrow_mini.png);
+			font-size:12px;
+			height:55px;
+			width:180px;
+			padding:10px;
+			padding-left:15px;
+			padding-top:15px;
+			padding-right:15px;
+			color:#000;	
+			font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
+		}
+		#Ldt-Root{
+			font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
+		}
+		#Ldt-Hat{
+			height:3px;
+		}
+		#Ldt-Annotations{
+			padding-left:5px;
+			width:470px;
+			float:left;
+			font-size: 62.5%;
+		}
+		#Ldt-SaTitle{
+			padding-top:2px;
+			padding-bottom:5px;
+			font-size:18px;
+			height:22p;
+			color:#FFF;
+		}
+		#Ldt-SaDescription{
+			font-size:12px;	
+		}
+		#Ldt-Show-Arrow-container{
+			margin-left:60px;
+		}
+		#Ldt-Show-Arrow{
+			position:relative;
+			background:url(imgs/grey_arrow_Show.png);
+			width:27px;
+			height:13px;
+			margin-top:12px;
+			margin-left:-10px;
+		}
+
+		#Ldt-output{
+			display:none;
+		}
+		#Ldt-Show-Tags{
+			position:relative;
+			height:13px;
+			margin-top:-10px;
+			border: solid 1px #000;
+		}
+		#Ldt-ShowAnnotation-video{
+			position:absolute;
+			z-index: 999;
+			padding:5px;
+			background:url(imgs/transBlack.png);
+			font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
+			color:#FFF;	
+		}
+		#Ldt-ShowAnnotation-audio{
+			position:relative;
+			padding:5px;
+			background-color:#773584;
+			font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
+			color:#000000;	
+		}
+		#Ldt-SaKeyword{
+			background-color:#28042D;
+			color:#FFFFFF;
+			padding:5px;
+			font-weight:bold;
+			text-align:left;
+			float:left;
+			font-size:10px;
+		}
+		#Ldt-SaShareTools{
+			text-align:right;
+			float:right;
+		}
+		
+		
+		#Ldt-PlaceHolder{
+			position:absolue;
+			float:none;
+		}
+		
+		.Ldt-mode-radio{
+			visibility:hidden;
+			height:0px;
+			display:none
+		}
+		
+		.Ldt-Control1{
+			width:60px;
+			float:left;
+		}
+		.Ldt-Control2{
+			padding-left:10px;
+			width:60px;
+			float:left;
+		}
+		.Ldt-cleaner {
+			clear:both;
+		} 
+		.share {
+			background:url('imgs/widget20.png') no-repeat scroll 0 0 transparent ;
+			display:block;
+			height:16px;
+			line-height:16px !important;
+			overflow:hidden;
+			width:16px;
+			float:left;
+			cursor:pointer;
+			margin:2px;
+		}
+		.shareFacebook{
+			background-position:0 -704px;
+		}
+		.shareMySpace{
+			background-position:0 -736px;
+		}
+		.shareTwitter{
+			background-position:0 -1072px;
+		}
+		.shareGoogle{
+			background-position:0 -752px;
+		}
+		.shareDelicious{
+			background-position:0 -672px;
+		}
+		.shareJamesPot{
+			background-position:0 -1808px;
+		}
+		
+		
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/blueprint/ie.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,35 @@
+/* -----------------------------------------------------------------------
+
+
+ Blueprint CSS Framework 0.9
+ http://blueprintcss.org
+
+   * Copyright (c) 2007-Present. See LICENSE for more info.
+   * See README for instructions on how to use Blueprint.
+   * For credits and origins, see AUTHORS.
+   * This is a compressed file. See the sources in the 'src' directory.
+
+----------------------------------------------------------------------- */
+
+/* ie.css */
+body {text-align:center;}
+.container {text-align:left;}
+* html .column, * html .span-1, * html .span-2, * html .span-3, * html .span-4, * html .span-5, * html .span-6, * html .span-7, * html .span-8, * html .span-9, * html .span-10, * html .span-11, * html .span-12, * html .span-13, * html .span-14, * html .span-15, * html .span-16, * html .span-17, * html .span-18, * html .span-19, * html .span-20, * html .span-21, * html .span-22, * html .span-23, * html .span-24 {display:inline;overflow-x:hidden;}
+* html legend {margin:0px -8px 16px 0;padding:0;}
+sup {vertical-align:text-top;}
+sub {vertical-align:text-bottom;}
+html>body p code {*white-space:normal;}
+hr {margin:-8px auto 11px;}
+img {-ms-interpolation-mode:bicubic;}
+.clearfix, .container {display:inline-block;}
+* html .clearfix, * html .container {height:1%;}
+fieldset {padding-top:0;}
+textarea {overflow:auto;}
+input.text, input.title, textarea {background-color:#fff;border:1px solid #bbb;}
+input.text:focus, input.title:focus {border-color:#666;}
+input.text, input.title, textarea, select {margin:0.5em 0;}
+input.checkbox, input.radio {position:relative;top:.25em;}
+form.inline div, form.inline p {vertical-align:middle;}
+form.inline label {position:relative;top:-0.25em;}
+form.inline input.checkbox, form.inline input.radio, form.inline input.button, form.inline button {margin:0.5em 0;}
+button, input.button {position:relative;top:0.25em;}
\ No newline at end of file
Binary file web/ldt/media/css/blueprint/plugins/buttons/icons/cross.png has changed
Binary file web/ldt/media/css/blueprint/plugins/buttons/icons/key.png has changed
Binary file web/ldt/media/css/blueprint/plugins/buttons/icons/tick.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/blueprint/plugins/buttons/readme.txt	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,32 @@
+Buttons
+
+* Gives you great looking CSS buttons, for both <a> and <button>.
+* Demo: particletree.com/features/rediscovering-the-button-element
+
+
+Credits
+----------------------------------------------------------------
+
+* Created by Kevin Hale [particletree.com]
+* Adapted for Blueprint by Olav Bjorkoy [bjorkoy.com]
+
+
+Usage
+----------------------------------------------------------------
+
+1) Add this plugin to lib/settings.yml.
+   See compress.rb for instructions.
+
+2) Use the following HTML code to place the buttons on your site:
+
+  <button type="submit" class="button positive">
+    <img src="css/blueprint/plugins/buttons/icons/tick.png" alt=""/> Save
+  </button>
+
+  <a class="button" href="/password/reset/">
+    <img src="css/blueprint/plugins/buttons/icons/key.png" alt=""/> Change Password
+  </a>
+
+  <a href="#" class="button negative">
+    <img src="css/blueprint/plugins/buttons/icons/cross.png" alt=""/> Cancel
+  </a>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/blueprint/plugins/buttons/screen.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,97 @@
+/* -------------------------------------------------------------- 
+  
+   buttons.css
+   * Gives you some great CSS-only buttons.
+   
+   Created by Kevin Hale [particletree.com]
+   * particletree.com/features/rediscovering-the-button-element
+
+   See Readme.txt in this folder for instructions.
+
+-------------------------------------------------------------- */
+
+a.button, button {
+  display:block;
+  float:left;
+  margin: 0.7em 0.5em 0.7em 0;
+  padding:5px 10px 5px 7px;   /* Links */
+  
+  border:1px solid #dedede;
+  border-top:1px solid #eee;
+  border-left:1px solid #eee;
+
+  background-color:#f5f5f5;
+  font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
+  font-size:100%;
+  line-height:130%;
+  text-decoration:none;
+  font-weight:bold;
+  color:#565656;
+  cursor:pointer;
+}
+button {
+  width:auto;
+  overflow:visible;
+  padding:4px 10px 3px 7px;   /* IE6 */
+}
+button[type] {
+  padding:4px 10px 4px 7px;   /* Firefox */
+  line-height:17px;           /* Safari */
+}
+*:first-child+html button[type] {
+  padding:4px 10px 3px 7px;   /* IE7 */
+}
+button img, a.button img{
+  margin:0 3px -3px 0 !important;
+  padding:0;
+  border:none;
+  width:16px;
+  height:16px;
+  float:none;
+}
+
+
+/* Button colors
+-------------------------------------------------------------- */
+
+/* Standard */
+button:hover, a.button:hover{
+  background-color:#dff4ff;
+  border:1px solid #c2e1ef;
+  color:#336699;
+}
+a.button:active{
+  background-color:#6299c5;
+  border:1px solid #6299c5;
+  color:#fff;
+}
+
+/* Positive */
+body .positive {
+  color:#529214;
+}
+a.positive:hover, button.positive:hover {
+  background-color:#E6EFC2;
+  border:1px solid #C6D880;
+  color:#529214;
+}
+a.positive:active {
+  background-color:#529214;
+  border:1px solid #529214;
+  color:#fff;
+}
+
+/* Negative */
+body .negative {
+  color:#d12f19;
+}
+a.negative:hover, button.negative:hover {
+  background-color:#fbe3e4;
+  border:1px solid #fbc2c4;
+  color:#d12f19;
+}
+a.negative:active {
+  background-color:#d12f19;
+  border:1px solid #d12f19;
+  color:#fff;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/blueprint/plugins/fancy-type/readme.txt	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,14 @@
+Fancy Type
+
+* Gives you classes to use if you'd like some 
+  extra fancy typography. 
+
+Credits and instructions are specified above each class
+in the fancy-type.css file in this directory.
+
+
+Usage
+----------------------------------------------------------------
+
+1) Add this plugin to lib/settings.yml.
+   See compress.rb for instructions.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/blueprint/plugins/fancy-type/screen.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,71 @@
+/* --------------------------------------------------------------
+
+   fancy-type.css
+   * Lots of pretty advanced classes for manipulating text.
+
+   See the Readme file in this folder for additional instructions.
+
+-------------------------------------------------------------- */
+
+/* Indentation instead of line shifts for sibling paragraphs. */
+   p + p { text-indent:2em; margin-top:-1.5em; }
+   form p + p  { text-indent: 0; } /* Don't want this in forms. */
+
+
+/* For great looking type, use this code instead of asdf:
+   <span class="alt">asdf</span>
+   Best used on prepositions and ampersands. */
+
+.alt {
+  color: #666;
+  font-family: "Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua", Georgia, serif;
+  font-style: italic;
+  font-weight: normal;
+}
+
+
+/* For great looking quote marks in titles, replace "asdf" with:
+   <span class="dquo">&#8220;</span>asdf&#8221;
+   (That is, when the title starts with a quote mark).
+   (You may have to change this value depending on your font size). */
+
+.dquo { margin-left: -.5em; }
+
+
+/* Reduced size type with incremental leading
+   (http://www.markboulton.co.uk/journal/comments/incremental_leading/)
+
+   This could be used for side notes. For smaller type, you don't necessarily want to
+   follow the 1.5x vertical rhythm -- the line-height is too much.
+
+   Using this class, it reduces your font size and line-height so that for
+   every four lines of normal sized type, there is five lines of the sidenote. eg:
+
+   New type size in em's:
+     10px (wanted side note size) / 12px (existing base size) = 0.8333 (new type size in ems)
+
+   New line-height value:
+     12px x 1.5 = 18px (old line-height)
+     18px x 4 = 72px
+     72px / 5 = 14.4px (new line height)
+     14.4px / 10px = 1.44 (new line height in em's) */
+
+p.incr, .incr p {
+  font-size: 10px;
+  line-height: 1.44em;
+  margin-bottom: 1.5em;
+}
+
+
+/* Surround uppercase words and abbreviations with this class.
+   Based on work by Jørgen Arnor Gårdsø Lom [http://twistedintellect.com/] */
+
+.caps {
+  font-variant: small-caps;
+  letter-spacing: 1px;
+  text-transform: lowercase;
+  font-size:1.2em;
+  line-height:1%;
+  font-weight:bold;
+  padding:0 2px;
+}
Binary file web/ldt/media/css/blueprint/plugins/link-icons/icons/doc.png has changed
Binary file web/ldt/media/css/blueprint/plugins/link-icons/icons/email.png has changed
Binary file web/ldt/media/css/blueprint/plugins/link-icons/icons/external.png has changed
Binary file web/ldt/media/css/blueprint/plugins/link-icons/icons/feed.png has changed
Binary file web/ldt/media/css/blueprint/plugins/link-icons/icons/im.png has changed
Binary file web/ldt/media/css/blueprint/plugins/link-icons/icons/pdf.png has changed
Binary file web/ldt/media/css/blueprint/plugins/link-icons/icons/visited.png has changed
Binary file web/ldt/media/css/blueprint/plugins/link-icons/icons/xls.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/blueprint/plugins/link-icons/readme.txt	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,18 @@
+Link Icons
+* Icons for links based on protocol or file type.
+
+This is not supported in IE versions < 7.
+
+
+Credits
+----------------------------------------------------------------
+
+* Marc Morgan
+* Olav Bjorkoy  [bjorkoy.com]
+
+
+Usage
+----------------------------------------------------------------
+
+1) Add this line to your HTML:
+  <link rel="stylesheet" href="css/blueprint/plugins/link-icons/screen.css" type="text/css" media="screen, projection">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/blueprint/plugins/link-icons/screen.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,40 @@
+/* --------------------------------------------------------------
+
+   link-icons.css
+   * Icons for links based on protocol or file type.
+
+   See the Readme file in this folder for additional instructions.
+
+-------------------------------------------------------------- */
+
+/* Use this class if a link gets an icon when it shouldn't. */
+body a.noicon {
+  background:transparent none !important;
+  padding:0 !important;
+  margin:0 !important;
+}
+
+/* Make sure the icons are not cut */
+a[href^="http:"], a[href^="mailto:"], a[href^="http:"]:visited,
+a[href$=".pdf"], a[href$=".doc"], a[href$=".xls"], a[href$=".rss"],
+a[href$=".rdf"], a[href^="aim:"] {
+  padding:2px 22px 2px 0;
+  margin:-2px 0;
+  background-repeat: no-repeat;
+  background-position: right center;
+}
+
+/* External links */
+a[href^="http:"]          { background-image: url(icons/external.png); }
+a[href^="mailto:"]        { background-image: url(icons/email.png); }
+a[href^="http:"]:visited  { background-image: url(icons/visited.png); }
+
+/* Files */
+a[href$=".pdf"]   { background-image: url(icons/pdf.png); }
+a[href$=".doc"]   { background-image: url(icons/doc.png); }
+a[href$=".xls"]   { background-image: url(icons/xls.png); }
+
+/* Misc */
+a[href$=".rss"],
+a[href$=".rdf"]   { background-image: url(icons/feed.png); }
+a[href^="aim:"]   { background-image: url(icons/im.png); }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/blueprint/plugins/rtl/readme.txt	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,10 @@
+RTL
+* Mirrors Blueprint, so it can be used with Right-to-Left languages.
+
+By Ran Yaniv Hartstein, ranh.co.il
+
+Usage
+----------------------------------------------------------------
+
+1) Add this line to your HTML:
+   <link rel="stylesheet" href="css/blueprint/plugins/rtl/screen.css" type="text/css" media="screen, projection">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/blueprint/plugins/rtl/screen.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,110 @@
+/* --------------------------------------------------------------
+
+   rtl.css
+   * Mirrors Blueprint for left-to-right languages
+
+   By Ran Yaniv Hartstein [ranh.co.il]
+
+-------------------------------------------------------------- */
+
+body .container { direction: rtl; }
+body .column, body .span-1, body .span-2, body .span-3, body .span-4, body .span-5, body .span-6, body .span-7, body .span-8, body .span-9, body .span-10, body .span-11, body .span-12, body .span-13, body .span-14, body .span-15, body .span-16, body .span-17, body .span-18, body .span-19, body .span-20, body .span-21, body .span-22, body .span-23, body .span-24 {
+  float: right;
+  margin-right: 0;
+  margin-left: 10px;
+  text-align:right;
+}
+
+body div.last { margin-left: 0; }
+body table .last { padding-left: 0; }
+
+body .append-1   { padding-right: 0; padding-left: 40px; }
+body .append-2   { padding-right: 0; padding-left: 80px; }
+body .append-3   { padding-right: 0; padding-left: 120px; }
+body .append-4   { padding-right: 0; padding-left: 160px; }
+body .append-5   { padding-right: 0; padding-left: 200px; }
+body .append-6   { padding-right: 0; padding-left: 240px; }
+body .append-7   { padding-right: 0; padding-left: 280px; }
+body .append-8   { padding-right: 0; padding-left: 320px; }
+body .append-9   { padding-right: 0; padding-left: 360px; }
+body .append-10  { padding-right: 0; padding-left: 400px; }
+body .append-11  { padding-right: 0; padding-left: 440px; }
+body .append-12  { padding-right: 0; padding-left: 480px; }
+body .append-13  { padding-right: 0; padding-left: 520px; }
+body .append-14  { padding-right: 0; padding-left: 560px; }
+body .append-15  { padding-right: 0; padding-left: 600px; }
+body .append-16  { padding-right: 0; padding-left: 640px; }
+body .append-17  { padding-right: 0; padding-left: 680px; }
+body .append-18  { padding-right: 0; padding-left: 720px; }
+body .append-19  { padding-right: 0; padding-left: 760px; }
+body .append-20  { padding-right: 0; padding-left: 800px; }
+body .append-21  { padding-right: 0; padding-left: 840px; }
+body .append-22  { padding-right: 0; padding-left: 880px; }
+body .append-23  { padding-right: 0; padding-left: 920px; }
+
+body .prepend-1   { padding-left: 0; padding-right: 40px; }
+body .prepend-2   { padding-left: 0; padding-right: 80px; }
+body .prepend-3   { padding-left: 0; padding-right: 120px; }
+body .prepend-4   { padding-left: 0; padding-right: 160px; }
+body .prepend-5   { padding-left: 0; padding-right: 200px; }
+body .prepend-6   { padding-left: 0; padding-right: 240px; }
+body .prepend-7   { padding-left: 0; padding-right: 280px; }
+body .prepend-8   { padding-left: 0; padding-right: 320px; }
+body .prepend-9   { padding-left: 0; padding-right: 360px; }
+body .prepend-10  { padding-left: 0; padding-right: 400px; }
+body .prepend-11  { padding-left: 0; padding-right: 440px; }
+body .prepend-12  { padding-left: 0; padding-right: 480px; }
+body .prepend-13  { padding-left: 0; padding-right: 520px; }
+body .prepend-14  { padding-left: 0; padding-right: 560px; }
+body .prepend-15  { padding-left: 0; padding-right: 600px; }
+body .prepend-16  { padding-left: 0; padding-right: 640px; }
+body .prepend-17  { padding-left: 0; padding-right: 680px; }
+body .prepend-18  { padding-left: 0; padding-right: 720px; }
+body .prepend-19  { padding-left: 0; padding-right: 760px; }
+body .prepend-20  { padding-left: 0; padding-right: 800px; }
+body .prepend-21  { padding-left: 0; padding-right: 840px; }
+body .prepend-22  { padding-left: 0; padding-right: 880px; }
+body .prepend-23  { padding-left: 0; padding-right: 920px; }
+
+body .border {
+  padding-right: 0;
+  padding-left: 4px;
+  margin-right: 0;
+  margin-left: 5px;
+  border-right: none;
+  border-left: 1px solid #eee;
+}
+
+body .colborder {
+  padding-right: 0;
+  padding-left: 24px;
+  margin-right: 0;
+  margin-left: 25px;
+  border-right: none;
+  border-left: 1px solid #eee;
+}
+
+body .pull-1  { margin-left: 0; margin-right: -40px; }
+body .pull-2  { margin-left: 0; margin-right: -80px; }
+body .pull-3  { margin-left: 0; margin-right: -120px; }
+body .pull-4  { margin-left: 0; margin-right: -160px; }
+
+body .push-0  { margin: 0 18px 0 0; }
+body .push-1  { margin: 0 18px 0 -40px; }
+body .push-2  { margin: 0 18px 0 -80px; }
+body .push-3  { margin: 0 18px 0 -120px; }
+body .push-4  { margin: 0 18px 0 -160px; }
+body .push-0, body .push-1, body .push-2,
+body .push-3, body .push-4 { float: left; }
+
+
+/* Typography with RTL support */
+body h1,body h2,body h3,
+body h4,body h5,body h6 { font-family: Arial, sans-serif; }
+html body { font-family: Arial, sans-serif;  }
+body pre,body code,body tt { font-family: monospace; }
+
+/* Mirror floats and margins on typographic elements */
+body p img { float: right; margin: 1.5em 0 1.5em 1.5em; }
+body dd, body ul, body ol { margin-left: 0; margin-right: 1.5em;}
+body td, body th { text-align:right; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/blueprint/print.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,29 @@
+/* -----------------------------------------------------------------------
+
+
+ Blueprint CSS Framework 0.9
+ http://blueprintcss.org
+
+   * Copyright (c) 2007-Present. See LICENSE for more info.
+   * See README for instructions on how to use Blueprint.
+   * For credits and origins, see AUTHORS.
+   * This is a compressed file. See the sources in the 'src' directory.
+
+----------------------------------------------------------------------- */
+
+/* print.css */
+body {line-height:1.5;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;color:#000;background:none;font-size:10pt;}
+.container {background:none;}
+hr {background:#ccc;color:#ccc;width:100%;height:2px;margin:2em 0;padding:0;border:none;}
+hr.space {background:#fff;color:#fff;visibility:hidden;}
+h1, h2, h3, h4, h5, h6 {font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif;}
+code {font:.9em "Courier New", Monaco, Courier, monospace;}
+a img {border:none;}
+p img.top {margin-top:0;}
+blockquote {margin:1.5em;padding:1em;font-style:italic;font-size:.9em;}
+.small {font-size:.9em;}
+.large {font-size:1.1em;}
+.quiet {color:#999;}
+.hide {display:none;}
+a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;}
+a:link:after, a:visited:after {content:" (" attr(href) ")";font-size:90%;}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/blueprint/screen.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,258 @@
+/* -----------------------------------------------------------------------
+
+
+ Blueprint CSS Framework 0.9
+ http://blueprintcss.org
+
+   * Copyright (c) 2007-Present. See LICENSE for more info.
+   * See README for instructions on how to use Blueprint.
+   * For credits and origins, see AUTHORS.
+   * This is a compressed file. See the sources in the 'src' directory.
+
+----------------------------------------------------------------------- */
+
+/* reset.css */
+html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
+article, aside, dialog, figure, footer, header, hgroup, nav, section {display:block;}
+body {line-height:1.5;}
+table {border-collapse:separate;border-spacing:0;}
+caption, th, td {text-align:left;font-weight:normal;}
+table, td, th {vertical-align:middle;}
+blockquote:before, blockquote:after, q:before, q:after {content:"";}
+blockquote, q {quotes:"" "";}
+a img {border:none;}
+
+/* typography.css */
+html {font-size:100.01%;}
+body {font-size:75%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;}
+h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}
+h1 {font-size:3em;line-height:1;margin-bottom:0.5em;}
+h2 {font-size:2em;margin-bottom:0.75em;}
+h3 {font-size:1.5em;line-height:1;margin-bottom:1em;}
+h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}
+h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;}
+h6 {font-size:1em;font-weight:bold;}
+h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;}
+p {margin:0 0 1.5em;}
+p img.left {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}
+p img.right {float:right;margin:1.5em 0 1.5em 1.5em;}
+a:focus, a:hover {color:#000;}
+a {color:#009;text-decoration:underline;}
+blockquote {margin:1.5em;color:#666;font-style:italic;}
+strong {font-weight:bold;}
+em, dfn {font-style:italic;}
+dfn {font-weight:bold;}
+sup, sub {line-height:0;}
+abbr, acronym {border-bottom:1px dotted #666;}
+address {margin:0 0 1.5em;font-style:italic;}
+del {color:#666;}
+pre {margin:1.5em 0;white-space:pre;}
+pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;}
+li ul, li ol {margin:0;}
+ul, ol {margin:0 1.5em 1.5em 0;padding-left:3.333em;}
+ul {list-style-type:disc;}
+ol {list-style-type:decimal;}
+dl {margin:0 0 1.5em 0;}
+dl dt {font-weight:bold;}
+dd {margin-left:1.5em;}
+table {margin-bottom:1.4em;width:100%;}
+th {font-weight:bold;}
+thead th {background:#c3d9ff;}
+th, td, caption {padding:4px 10px 4px 5px;}
+tr.even td {background:#e5ecf9;}
+tfoot {font-style:italic;}
+caption {background:#eee;}
+.small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}
+.large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}
+.hide {display:none;}
+.quiet {color:#666;}
+.loud {color:#000;}
+.highlight {background:#ff0;}
+.added {background:#060;color:#fff;}
+.removed {background:#900;color:#fff;}
+.first {margin-left:0;padding-left:0;}
+.last {margin-right:0;padding-right:0;}
+.top {margin-top:0;padding-top:0;}
+.bottom {margin-bottom:0;padding-bottom:0;}
+
+/* forms.css */
+label {font-weight:bold;}
+fieldset {padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;}
+legend {font-weight:bold;font-size:1.2em;}
+input[type=text], input[type=password], input.text, input.title, textarea, select {background-color:#fff;border:1px solid #bbb;}
+input[type=text]:focus, input[type=password]:focus, input.text:focus, input.title:focus, textarea:focus, select:focus {border-color:#666;}
+input[type=text], input[type=password], input.text, input.title, textarea, select {margin:0.5em 0;}
+input.text, input.title {width:300px;padding:5px;}
+input.title {font-size:1.5em;}
+textarea {width:390px;height:250px;padding:5px;}
+input[type=checkbox], input[type=radio], input.checkbox, input.radio {position:relative;top:.25em;}
+form.inline {line-height:3;}
+form.inline p {margin-bottom:0;}
+.error, .notice, .success {padding:.8em;margin-bottom:1em;border:2px solid #ddd;}
+.error {background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}
+.notice {background:#FFF6BF;color:#514721;border-color:#FFD324;}
+.success {background:#E6EFC2;color:#264409;border-color:#C6D880;}
+.error a {color:#8a1f11;}
+.notice a {color:#514721;}
+.success a {color:#264409;}
+
+/* grid.css */
+.container {width:950px;margin:0 auto;}
+.showgrid {background:url(src/grid.png);}
+.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 {float:left;margin-right:10px;}
+.last {margin-right:0;}
+.span-1 {width:30px;}
+.span-2 {width:70px;}
+.span-3 {width:110px;}
+.span-4 {width:150px;}
+.span-5 {width:190px;}
+.span-6 {width:230px;}
+.span-7 {width:270px;}
+.span-8 {width:310px;}
+.span-9 {width:350px;}
+.span-10 {width:390px;}
+.span-11 {width:430px;}
+.span-12 {width:470px;}
+.span-13 {width:510px;}
+.span-14 {width:550px;}
+.span-15 {width:590px;}
+.span-16 {width:630px;}
+.span-17 {width:670px;}
+.span-18 {width:710px;}
+.span-19 {width:750px;}
+.span-20 {width:790px;}
+.span-21 {width:830px;}
+.span-22 {width:870px;}
+.span-23 {width:910px;}
+.span-24 {width:950px;margin-right:0;}
+input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, textarea.span-23, input.span-24, textarea.span-24 {border-left-width:1px!important;border-right-width:1px!important;padding-left:5px!important;padding-right:5px!important;}
+input.span-1, textarea.span-1 {width:18px!important;}
+input.span-2, textarea.span-2 {width:58px!important;}
+input.span-3, textarea.span-3 {width:98px!important;}
+input.span-4, textarea.span-4 {width:138px!important;}
+input.span-5, textarea.span-5 {width:178px!important;}
+input.span-6, textarea.span-6 {width:218px!important;}
+input.span-7, textarea.span-7 {width:258px!important;}
+input.span-8, textarea.span-8 {width:298px!important;}
+input.span-9, textarea.span-9 {width:338px!important;}
+input.span-10, textarea.span-10 {width:378px!important;}
+input.span-11, textarea.span-11 {width:418px!important;}
+input.span-12, textarea.span-12 {width:458px!important;}
+input.span-13, textarea.span-13 {width:498px!important;}
+input.span-14, textarea.span-14 {width:538px!important;}
+input.span-15, textarea.span-15 {width:578px!important;}
+input.span-16, textarea.span-16 {width:618px!important;}
+input.span-17, textarea.span-17 {width:658px!important;}
+input.span-18, textarea.span-18 {width:698px!important;}
+input.span-19, textarea.span-19 {width:738px!important;}
+input.span-20, textarea.span-20 {width:778px!important;}
+input.span-21, textarea.span-21 {width:818px!important;}
+input.span-22, textarea.span-22 {width:858px!important;}
+input.span-23, textarea.span-23 {width:898px!important;}
+input.span-24, textarea.span-24 {width:938px!important;}
+.append-1 {padding-right:40px;}
+.append-2 {padding-right:80px;}
+.append-3 {padding-right:120px;}
+.append-4 {padding-right:160px;}
+.append-5 {padding-right:200px;}
+.append-6 {padding-right:240px;}
+.append-7 {padding-right:280px;}
+.append-8 {padding-right:320px;}
+.append-9 {padding-right:360px;}
+.append-10 {padding-right:400px;}
+.append-11 {padding-right:440px;}
+.append-12 {padding-right:480px;}
+.append-13 {padding-right:520px;}
+.append-14 {padding-right:560px;}
+.append-15 {padding-right:600px;}
+.append-16 {padding-right:640px;}
+.append-17 {padding-right:680px;}
+.append-18 {padding-right:720px;}
+.append-19 {padding-right:760px;}
+.append-20 {padding-right:800px;}
+.append-21 {padding-right:840px;}
+.append-22 {padding-right:880px;}
+.append-23 {padding-right:920px;}
+.prepend-1 {padding-left:40px;}
+.prepend-2 {padding-left:80px;}
+.prepend-3 {padding-left:120px;}
+.prepend-4 {padding-left:160px;}
+.prepend-5 {padding-left:200px;}
+.prepend-6 {padding-left:240px;}
+.prepend-7 {padding-left:280px;}
+.prepend-8 {padding-left:320px;}
+.prepend-9 {padding-left:360px;}
+.prepend-10 {padding-left:400px;}
+.prepend-11 {padding-left:440px;}
+.prepend-12 {padding-left:480px;}
+.prepend-13 {padding-left:520px;}
+.prepend-14 {padding-left:560px;}
+.prepend-15 {padding-left:600px;}
+.prepend-16 {padding-left:640px;}
+.prepend-17 {padding-left:680px;}
+.prepend-18 {padding-left:720px;}
+.prepend-19 {padding-left:760px;}
+.prepend-20 {padding-left:800px;}
+.prepend-21 {padding-left:840px;}
+.prepend-22 {padding-left:880px;}
+.prepend-23 {padding-left:920px;}
+.border {padding-right:4px;margin-right:5px;border-right:1px solid #eee;}
+.colborder {padding-right:24px;margin-right:25px;border-right:1px solid #eee;}
+.pull-1 {margin-left:-40px;}
+.pull-2 {margin-left:-80px;}
+.pull-3 {margin-left:-120px;}
+.pull-4 {margin-left:-160px;}
+.pull-5 {margin-left:-200px;}
+.pull-6 {margin-left:-240px;}
+.pull-7 {margin-left:-280px;}
+.pull-8 {margin-left:-320px;}
+.pull-9 {margin-left:-360px;}
+.pull-10 {margin-left:-400px;}
+.pull-11 {margin-left:-440px;}
+.pull-12 {margin-left:-480px;}
+.pull-13 {margin-left:-520px;}
+.pull-14 {margin-left:-560px;}
+.pull-15 {margin-left:-600px;}
+.pull-16 {margin-left:-640px;}
+.pull-17 {margin-left:-680px;}
+.pull-18 {margin-left:-720px;}
+.pull-19 {margin-left:-760px;}
+.pull-20 {margin-left:-800px;}
+.pull-21 {margin-left:-840px;}
+.pull-22 {margin-left:-880px;}
+.pull-23 {margin-left:-920px;}
+.pull-24 {margin-left:-960px;}
+.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 {float:left;position:relative;}
+.push-1 {margin:0 -40px 1.5em 40px;}
+.push-2 {margin:0 -80px 1.5em 80px;}
+.push-3 {margin:0 -120px 1.5em 120px;}
+.push-4 {margin:0 -160px 1.5em 160px;}
+.push-5 {margin:0 -200px 1.5em 200px;}
+.push-6 {margin:0 -240px 1.5em 240px;}
+.push-7 {margin:0 -280px 1.5em 280px;}
+.push-8 {margin:0 -320px 1.5em 320px;}
+.push-9 {margin:0 -360px 1.5em 360px;}
+.push-10 {margin:0 -400px 1.5em 400px;}
+.push-11 {margin:0 -440px 1.5em 440px;}
+.push-12 {margin:0 -480px 1.5em 480px;}
+.push-13 {margin:0 -520px 1.5em 520px;}
+.push-14 {margin:0 -560px 1.5em 560px;}
+.push-15 {margin:0 -600px 1.5em 600px;}
+.push-16 {margin:0 -640px 1.5em 640px;}
+.push-17 {margin:0 -680px 1.5em 680px;}
+.push-18 {margin:0 -720px 1.5em 720px;}
+.push-19 {margin:0 -760px 1.5em 760px;}
+.push-20 {margin:0 -800px 1.5em 800px;}
+.push-21 {margin:0 -840px 1.5em 840px;}
+.push-22 {margin:0 -880px 1.5em 880px;}
+.push-23 {margin:0 -920px 1.5em 920px;}
+.push-24 {margin:0 -960px 1.5em 960px;}
+.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 {float:right;position:relative;}
+.prepend-top {margin-top:1.5em;}
+.append-bottom {margin-bottom:1.5em;}
+.box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;}
+hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;}
+hr.space {background:#fff;color:#fff;visibility:hidden;}
+.clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}
+.clearfix, .container {display:block;}
+.clear {clear:both;}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/border-radius.htc	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,143 @@
+--Do not remove this if you are using--
+Original Author: Remiz Rahnas
+Original Author URL: http://www.htmlremix.com
+Published date: 2008/09/24
+
+Changes by Nick Fetchak:
+- IE8 standards mode compatibility
+- VML elements now positioned behind original box rather than inside of it - should be less prone to breakage
+Published date : 2009/11/18
+
+
+<public:attach event="oncontentready" onevent="oncontentready('v08vnSVo78t4JfjH')" />
+<script type="text/javascript">
+
+// findPos() borrowed from http://www.quirksmode.org/js/findpos.html
+function findPos(obj) {
+	var curleft = curtop = 0;
+
+	if (obj.offsetParent) {
+		do {
+			curleft += obj.offsetLeft;
+			curtop += obj.offsetTop;
+		} while (obj = obj.offsetParent);
+	}
+
+	return({
+		'x': curleft,
+		'y': curtop
+	});
+}
+
+function oncontentready(classID) {
+  if (this.className.match(classID)) { return(false); }
+
+	if (!document.namespaces.v) { document.namespaces.add("v", "urn:schemas-microsoft-com:vml"); }
+
+	this.className = this.className.concat(' ', classID);
+	var arcSize = Math.min(parseInt(this.currentStyle['-moz-border-radius'] ||
+	                                this.currentStyle['-webkit-border-radius'] ||
+	                                this.currentStyle['border-radius'] ||
+	                                this.currentStyle['-khtml-border-radius']) /
+	                       Math.min(this.offsetWidth, this.offsetHeight), 1);
+	var fillColor = this.currentStyle.backgroundColor;
+	var fillSrc = this.currentStyle.backgroundImage.replace(/^url\("(.+)"\)$/, '$1');
+	var strokeColor = this.currentStyle.borderColor;
+	var strokeWeight = parseInt(this.currentStyle.borderWidth);
+	var stroked = 'true';
+	if (isNaN(strokeWeight)) {
+		strokeWeight = 0;
+		strokeColor = fillColor;
+		stroked = 'false';
+	}
+
+	this.style.background = 'transparent';
+	this.style.borderColor = 'transparent';
+
+	// Find which element provides position:relative for the target element (default to BODY)
+	var el = this;
+	var limit = 100, i = 0;
+	while ((typeof(el) != 'unknown') && (el.currentStyle.position != 'relative') && (el.tagName != 'BODY')) {
+		el = el.parentElement;
+		i++;
+		if (i >= limit) { return(false); }
+	}
+	var el_zindex = parseInt(el.currentStyle.zIndex);
+	if (isNaN(el_zindex)) { el_zindex = 0; }
+	//alert('got tag '+ el.tagName +' with pos '+ el.currentStyle.position);
+
+	var rect_size = {
+		'width': this.offsetWidth - strokeWeight,
+		'height': this.offsetHeight - strokeWeight
+	};
+	var el_pos = findPos(el);
+	var this_pos = findPos(this);
+	this_pos.y = this_pos.y + (0.5 * strokeWeight) - el_pos.y;
+	this_pos.x = this_pos.x + (0.5 * strokeWeight) - el_pos.x;
+
+	var rect = document.createElement('v:roundrect');
+	rect.arcsize = arcSize +'px';
+	rect.strokecolor = strokeColor;
+	rect.strokeWeight = strokeWeight +'px';
+	rect.stroked = stroked;
+	rect.style.display = 'block';
+	rect.style.position = 'absolute';
+	rect.style.top = this_pos.y +'px';
+	rect.style.left = this_pos.x +'px';
+	rect.style.width = rect_size.width +'px';
+	rect.style.height = rect_size.height +'px';
+	rect.style.antialias = true;
+	rect.style.zIndex = el_zindex - 1;
+
+	var fill = document.createElement('v:fill');
+	fill.color = fillColor;
+	fill.src = fillSrc;
+	fill.type = 'tile';
+
+	rect.appendChild(fill);
+	el.appendChild(rect);
+
+	var css = el.document.createStyleSheet();
+	css.addRule("v\\:roundrect", "behavior: url(#default#VML)");
+	css.addRule("v\\:fill", "behavior: url(#default#VML)");
+
+	isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
+	// IE6 doesn't support transparent borders, use padding to offset original element
+	if (isIE6 && (strokeWeight > 0)) {
+		this.style.borderStyle = 'none';
+		this.style.paddingTop = parseInt(this.currentStyle.paddingTop || 0) + strokeWeight;
+		this.style.paddingBottom = parseInt(this.currentStyle.paddingBottom || 0) + strokeWeight;
+	}
+
+	if (typeof(window.rounded_elements) == 'undefined') {
+		window.rounded_elements = new Array();
+
+		if (typeof(window.onresize) == 'function') { window.previous_onresize = window.onresize; }
+		window.onresize = window_resize;
+	}
+	this.element.vml = rect;
+	window.rounded_elements.push(this.element);
+}
+
+function window_resize() {
+	if (typeof(window.rounded_elements) == 'undefined') { return(false); }
+
+	for (var i in window.rounded_elements) {
+		var el = window.rounded_elements[i];
+
+		var strokeWeight = parseInt(el.currentStyle.borderWidth);
+		if (isNaN(strokeWeight)) { strokeWeight = 0; }
+
+		var parent_pos = findPos(el.vml.parentNode);
+		var pos = findPos(el);
+		pos.y = pos.y + (0.5 * strokeWeight) - parent_pos.y;
+		pos.x = pos.x + (0.5 * strokeWeight) - parent_pos.x;
+
+		el.vml.style.top = pos.y +'px';
+		el.vml.style.left = pos.x +'px';
+	}
+
+	if (typeof(window.previous_onresize) == 'function') { window.previous_onresize(); }
+}
+</script>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/custom_player.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,59 @@
+@charset "UTF-8";
+
+#demo-frame > div.demo { padding: 5px !important; };
+.iri-chapter{
+	padding-top:10px;
+	padding-bottom:5px;
+	border-left:solid 1px #aaaaaa;
+	border-right:solid 1px #aaaaaa;'
+}
+
+.tooltip {
+	display:none;
+	background:transparent url(css/jq-css/tooltip/white_arrow.png);
+	font-size:12px;
+	height:100px;
+	width:180px;
+	padding:10px;
+	padding-left:15px;
+	padding-right:15px;
+	color:#000;	
+}
+
+#Annotations{
+	padding-left:5px;
+	width:470px;
+	float:left;
+}
+#ldtSaTitle{
+	padding-top:2px;
+	padding-bottom:5px;
+	font-size:18px;
+	color:#FFF;	
+	height:22p;
+}
+#ldtSaDescription{
+	font-size:12px;	
+	color:#FFF;	
+}
+#ShowAnnotation{
+	position:absolute;
+	z-index: 999;
+	padding:5px;
+	background:url(css/custom/images/transBlack.png);
+}
+
+#ldtPlaceHolder{
+	position:absolue;
+	float:none;
+}
+.ldtControl1{
+	width:70px;
+	float:left;
+}
+.ldtControl2{
+	padding-left:10px;
+	width:70px;
+	float:left;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/dashboard.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,5 @@
+
+#content-main-app-ldt-utils {
+    float: left;
+    width: 100%;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/embed_popup.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,33 @@
+pre {
+white-space: pre-wrap; /* css-3 */
+white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
+white-space: -pre-wrap; /* Opera 4-6 */
+white-space: -o-pre-wrap; /* Opera 7 */
+word-wrap: break-word; /* Internet Explorer 5.5+ */
+}
+
+input
+{
+	background: #ededed;
+}
+
+input[type="button"] {
+	background-color: #656565;
+	color: white;
+	width: auto;
+	font-weight: bold;
+	padding: 5px 10px;
+}
+
+#button_row input {
+	margin: 10px; 
+}
+
+#display_select {
+	float: left;
+}
+
+#copy_div {
+	float: right;
+}
+
Binary file web/ldt/media/css/imgs/black.png has changed
Binary file web/ldt/media/css/imgs/black_arrow.png has changed
Binary file web/ldt/media/css/imgs/black_arrow_big.png has changed
Binary file web/ldt/media/css/imgs/black_big.png has changed
Binary file web/ldt/media/css/imgs/delicious.png has changed
Binary file web/ldt/media/css/imgs/facebook.png has changed
Binary file web/ldt/media/css/imgs/grey_arrow_Show.png has changed
Binary file web/ldt/media/css/imgs/linkedin.png has changed
Binary file web/ldt/media/css/imgs/loader.gif has changed
Binary file web/ldt/media/css/imgs/loader_fc.gif has changed
Binary file web/ldt/media/css/imgs/transBlack.png has changed
Binary file web/ldt/media/css/imgs/twitter.png has changed
Binary file web/ldt/media/css/imgs/white.png has changed
Binary file web/ldt/media/css/imgs/white_arrow.png has changed
Binary file web/ldt/media/css/imgs/white_arrow_big.png has changed
Binary file web/ldt/media/css/imgs/white_arrow_mini.png has changed
Binary file web/ldt/media/css/imgs/white_big.png has changed
Binary file web/ldt/media/css/imgs/widget20.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-bg_flat_75_ffffff_40x100.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-bg_glass_65_ffffff_1x400.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-bg_glass_75_dadada_1x400.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-icons_222222_256x240.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-icons_2e83ff_256x240.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-icons_454545_256x240.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-icons_888888_256x240.png has changed
Binary file web/ldt/media/css/jq-css/themes/base/images/ui-icons_cd0a0a_256x240.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/jq-css/themes/base/jquery-ui.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,570 @@
+/*
+ * jQuery UI CSS Framework @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* 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 Accordion @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.ui-accordion { width: 100%; }
+.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 .7em; }
+.ui-accordion-icons .ui-accordion-header a { padding-left: 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; zoom: 1; }
+.ui-accordion .ui-accordion-content-active { display: block; }/*
+ * jQuery UI Autocomplete @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Datepicker @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.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 { 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 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*/
+}/*
+ * jQuery UI Dialog @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative;  }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } 
+.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 { position: relative; 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 .ui-dialog-buttonset { float: right; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Progressbar @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.ui-progressbar { height:2em; text-align: left; }
+.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/*
+ * jQuery UI Resizable @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.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: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; 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;}/*
+ * jQuery UI Selectable @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Slider @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.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; background-position: 0 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; }/*
+ * jQuery UI Tabs @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.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 { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI CSS Framework @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; }
+.ui-widget-content a { color: #222222/*{fcContent}*/; }
+.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; }
+.ui-widget-header a { color: #222222/*{fcHeader}*/; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; }
+
+/* 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-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.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: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; }
+.ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }
+.ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
+.ui-corner-top { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
+.ui-corner-right {  -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
+.ui-corner-left { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }
+.ui-corner-all { -moz-border-radius: 4px/*{cornerRadius}*/; -webkit-border-radius: 4px/*{cornerRadius}*/; border-radius: 4px/*{cornerRadius}*/; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; }
+.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/jquery.qtip.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,337 @@
+/*
+* qTip - The jQuery tooltip plugin
+* http://craigsworks.com/projects/qtip/
+*
+* Version: 2.0.0pre
+* Copyright 2009 Craig Michael Thompson - http://craigsworks.com
+*
+* Dual licensed under MIT or GPL Version 2 licenses
+*   http://en.wikipedia.org/wiki/MIT_License
+*   http://en.wikipedia.org/wiki/GNU_General_Public_License
+*
+* Date: Mon Sep 6 15:10:26 2010 +0100
+*/
+
+.ui-tooltip-accessible{
+	left: -10000em !important;
+	top: -10000em !important;
+	display: block !important;
+	visibility: hidden !important;
+}
+
+	/* IE6 ONLY - Width detection fix */
+	* html .ui-tooltip-accessible{
+		position: static !important;
+		float: left !important;
+	}
+
+.ui-tooltip, .qtip{
+	position: absolute;
+	display: none;
+
+	max-width: 280px;
+	min-width: 50px;
+}
+
+	.ui-tooltip .ui-tooltip-wrapper{
+		position: relative;
+		overflow: hidden;
+
+		border-width: 3px;
+		border-style: solid;
+	}
+
+	.ui-tooltip .ui-tooltip-content{
+		position: relative;
+		padding: 5px 9px;
+
+		text-align: left;
+		word-wrap: break-word;
+		overflow: hidden;
+	}
+
+	.ui-tooltip .ui-tooltip-titlebar{
+		position: relative;
+		padding: 6px 35px 6px 10px;
+
+		font-weight: bold;
+	}
+
+		/*! Default close button class */
+		.ui-tooltip .ui-tooltip-close{
+			position: absolute;
+			height: 16px;
+			width: 16px;
+			padding: 1px;
+			right: 5px;
+			top: 5px;
+
+			cursor: pointer;
+			line-height: 0px;
+			font-size: 0px;
+		}
+
+			.ui-tooltip .ui-tooltip-close .ui-icon{
+				height: 16px;
+				width: 16px;
+				display: block;
+
+				opacity: 0.8;
+				-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
+				filter: alpha(opacity=80);
+			}
+			.ui-tooltip .ui-tooltip-close:hover .ui-icon{
+				opacity: 1;
+				-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+				filter: alpha(opacity=100);
+			}
+
+		/*! Custom button class */
+		.ui-tooltip .ui-tooltip-button{
+			float: right;
+		}
+
+	/* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */
+	.ui-tooltip-focus{
+
+	}
+
+
+/*! Default tooltip style */
+.ui-tooltip-wrapper{
+	border-color: #F9E98E;
+	background-color: #FBF7AA;
+	color: #A27D35;
+}
+
+	.ui-tooltip .ui-tooltip-titlebar{
+		background-color: #F0DE7D;
+	}
+
+	.ui-tooltip .ui-tooltip-close .ui-icon{
+		background: #A27D35 url('images/close.png') no-repeat 50% 50%;
+	}
+
+/*! Plain tooltip style */
+.ui-tooltip-plain .ui-tooltip-wrapper{
+	border-color: black;
+	border-width: 1px;
+
+	background-color: white;
+	color: black;
+}
+
+	.ui-tooltip-plain .ui-tooltip-titlebar{
+		background-color: white;
+	}
+
+	.ui-tooltip-plain .ui-tooltip-close .ui-icon{
+		background: black;
+	}
+
+/*! Light tooltip style */
+.ui-tooltip-light .ui-tooltip-wrapper{
+	border-color: #E2E2E2;
+	background-color: white;
+	color: #454545;
+}
+
+	.ui-tooltip-light .ui-tooltip-titlebar{
+		background-color: #f1f1f1;
+	}
+
+	.ui-tooltip-light .ui-tooltip-close .ui-icon{
+		background: #454545 url('images/close-light.png') no-repeat 50% 50%;
+	}
+
+
+/*! Dark tooltip style */
+.ui-tooltip-dark .ui-tooltip-wrapper{
+	border-color: #303030;
+	background-color: #505050;
+	color: #f3f3f3;
+}
+
+	.ui-tooltip-dark .ui-tooltip-titlebar{
+		background-color: #404040;
+	}
+
+	.ui-tooltip-dark .ui-tooltip-close .ui-icon{
+		background: #f3f3f3 url('images/close-dark.png') no-repeat 50% 50%;
+	}
+
+
+/*! Red tooltip style */
+.ui-tooltip-red .ui-tooltip-wrapper{
+	border-color: #D95252;
+	background-color: #F78B83;
+	color: #912323;
+}
+
+	.ui-tooltip-red .ui-tooltip-titlebar{
+		background-color: #F06D65;
+	}
+
+	.ui-tooltip-red .ui-tooltip-close .ui-icon{
+		background: #9C2F2F url('images/close-red.png') no-repeat 50% 50%;
+	}
+
+
+/*! Green tooltip style */
+.ui-tooltip-green .ui-tooltip-wrapper{
+	border-color: #90D93F;
+	background-color: #CAED9E;
+	color: #3F6219;
+}
+
+	.ui-tooltip-green .ui-tooltip-titlebar{
+		background-color: #B0DE78;
+	}
+
+	.ui-tooltip-green .ui-tooltip-close .ui-icon{
+		background: #58792E url('images/close-green.png') no-repeat 50% 50%;
+	}
+
+
+/*! Blue tooltip style */
+.ui-tooltip-blue .ui-tooltip-wrapper{
+	border-color: #ADD9ED;
+	background-color: #E5F6FE;
+	color: #5E99BD;
+}
+
+	.ui-tooltip-blue .ui-tooltip-titlebar{
+		background-color: #D0E9F5;
+	}
+
+	.ui-tooltip-blue .ui-tooltip-close .ui-icon{
+		background: #4D9FBF url('images/close-blue.png') no-repeat 50% 50%;
+	}
+
+
+/*! Add shadows to your tooltips in all supported browsers */
+.ui-tooltip-shadow{
+  -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.3);
+  -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.3);
+  box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.3);
+
+  filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=5, OffY=5, Color='gray');
+  -ms-filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=5, OffY=5, Color='gray')";
+}
+
+div.ui-tooltip-tip{
+	position: absolute;
+	margin: 0 auto;
+	overflow: hidden;
+
+	line-height: 0.1px;
+	font-size: 1px;
+
+	background: transparent !important;
+	border: 0px !important;
+	z-index: 10;
+}
+
+	div.ui-tooltip-tip *{
+		line-height: 0.1px;
+		font-size: 0.1px;
+	}
+
+	div.ui-tooltip-tip div{
+		background: transparent !important;
+		border: 0px dashed transparent;
+	}
+
+#qtip-overlay{
+	position: absolute;
+	left: -10000em;
+	top: -10000em;
+
+	background-color: black;
+	cursor: pointer;
+
+	/* Set this to any below 15000 (default starting z-index for qTips) */
+	z-index: 14999;
+}
+
+/*! Youtube tooltip style */
+div.ui-tooltip-youtube .ui-tooltip-wrapper{
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+
+	-webkit-box-shadow: 0 0 3px #333;
+	-moz-box-shadow: 0 0 3px #333;
+	box-shadow: 0 0 3px #333;
+
+	border-color: #CCCCCC;
+	border-width: 1px;
+
+	color: white;
+}
+
+	div.ui-tooltip-youtube .ui-tooltip-close .ui-icon{
+		background: #4D9FBF url('images/close-dark.png') no-repeat 50% 50%;
+	}
+
+	div.ui-tooltip-youtube .ui-tooltip-titlebar,
+	div.ui-tooltip-youtube .ui-tooltip-content{
+		background-color: rgba(0, 0, 0, 0.85);
+	}
+
+	/* IE6 Fallback */
+	* html div.ui-tooltip-youtube-wrapper{
+		background-color: black;
+	}
+
+
+/* jQuery TOOLS Tooltip style */
+div.ui-tooltip-jtools .ui-tooltip-wrapper{
+	-moz-border-radius: 2px;
+	-webkit-border-radius: 2px;
+	border-radius: 2px;
+
+	border-color: white;
+	border-width: 2px;
+
+	-webkit-box-shadow: 0 0 12px #333;
+	-moz-box-shadow: 0 0 12px #333;
+	box-shadow: 0 0 12px #333;
+
+	background-color: rgba(0, 0, 0, 0.7);
+	background-image: -moz-linear-gradient(top, #717171, #232323);
+	background-image: -webkit-gradient(linear, left top, left bottom, from(#717171), to(#232323));
+	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#232323);
+	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#232323)";
+
+	color: white;
+}
+
+	div.ui-tooltip-jtools .ui-tooltip-titlebar,
+	div.ui-tooltip-jtools .ui-tooltip-content{
+		background: none;
+	}
+
+	div.ui-tooltip-jtools .ui-tooltip-close .ui-icon{
+		background: black url('images/close-dark.png') no-repeat 50% 50%;
+	}
+
+
+/* Cluetip style */
+div.ui-tooltip-cluetip .ui-tooltip-wrapper{
+	border-width: 0;
+
+	-webkit-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
+	-moz-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
+	box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
+}
+
+	div.ui-tooltip-cluetip .ui-tooltip-titlebar{
+		background-color: #87876A;
+		color: white;
+	}
+	div.ui-tooltip-cluetip .ui-tooltip-content{
+		background-color: #D9D9C2;
+		color: #111;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/ldt.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,122 @@
+#addldtform
+{
+    font-size: 16px;
+    background: #ffffff scroll repeat 0 0;
+    border: 1px solid #666666;
+    text-align: left;
+    width: 700px;
+}
+
+#addldtform .title
+{
+    color: #666666;
+    font-weight:bold !important;
+    font-size:16px;
+    position: relative;
+    padding:8px 12px;
+}
+
+#addldtform .title .closebutton
+{
+    float: right;
+    text-decoration: none;
+    color:#666666;
+}
+
+
+#addldtform .form-row
+{
+    border-bottom: 1px solid #eeeeee;
+    font-size: 15px;
+    padding: 8px 12px;
+}
+
+#addldtform label
+{
+    float: left;
+    padding: 3px 8px 0 0;
+    width:8em;
+    color: #333333 !important;
+    font-weight: bold !important;
+}
+#addldtform input
+{
+    font-size: 15px;
+    font-weight: normal;
+    padding:2px 3px;
+    vertical-align: middle;
+    margin : 2px 0;
+    background-color: #ffffff;
+    border: 1px solid #cccccc;
+}
+
+#addldtform  .checkbox
+{
+    padding: 6px 3px 3px 30px;
+}
+
+#addldtform .submit-row input
+{
+    color:black;
+    border-color:#DDDDDD #AAAAAA #AAAAAA #DDDDDD;
+    background:#dddddd;
+    padding: 3px;
+    margin:0 10px 10px 10px;
+}
+/*
+#ldtlist{
+    width:60%;
+    overflow:auto;
+    padding:1em;
+}
+*/
+#ldtlist table {
+    border-collapse: collapse;
+    border-color: #ccc;
+    width:100%;
+}
+#ldtlist table caption{
+    color:black;
+    font-size:15px;
+    font-weight:bold;
+    padding:5px;
+    text-align:left;
+    text-transform:uppercase;
+}
+#ldtlist td, th {
+    font-size: 11px;
+    line-height: 13px;
+    border-bottom: 1px solid #eee;
+    vertical-align: top;
+    padding: 5px;
+    font-family: "Lucida Grande", Verdana, Arial, sans-serif;
+}
+
+
+#ldtlist table thead {
+    color: #666;
+    padding: 2px 5px;
+    font-size: 13px;
+    background: #e1e1e1 url(../../admin/img/admin/nav-bg.gif) top left repeat-x;
+    border-left: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    white-space: nowrap;
+    vertical-align: middle;
+    font-weight: bold;
+    text-align: center;
+}
+
+#ldtlist table tbody td {
+    border-left: 1px solid #ddd;
+    text-align: center;
+}
+
+#ldtlist table tbody td:first-child {
+    border-left: 0;
+    border-right: 1px solid #ddd;
+    text-align: left;
+}
+
+#ldtlist table tfoot {
+    color: #666;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/ldtform.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,140 @@
+@charset "UTF-8";
+
+body {
+	min-width: 0;
+}
+
+#add_content, #add_contribution {
+	padding: 10px;	
+}
+
+
+#add_content input, #add_content textarea, #add_content select,
+#add_contribution input, #add_contribution textarea, #add_contribution select
+{
+	background: #ededed;
+	width: 250px;
+}
+
+#add_contribution input[type="checkbox"] {
+	width: auto;
+}
+
+
+#add_content textarea {
+	height : 125px;
+}
+
+#add_content li {
+	list-style: none;
+}
+
+
+label {
+	display: block;
+	margin-top: 0.5em;
+}
+
+#add_content .vDateField,#add_content .vTimeField {
+	width: 90px;
+	float: left;
+}
+
+.projectscontentstitle {
+	border-bottom: 1px solid black;
+}
+
+#submitcontent {
+	border-top: 1px solid black;
+	padding-top : 10px;
+}
+
+#submitcontent-buttons {
+	text-align: right;
+}
+
+#submitcontent-loader {
+	text-align: left;
+}
+
+.submitcontent-loader-content {
+	display: none;
+}
+
+
+#submitcontent-loader-msg {
+	padding-left: 6px;
+}
+
+
+#submitcontent-buttons input[type="submit"], #submitcontent-buttons button  {
+	background-color: #656565;
+	color: white;
+	width:auto;
+	font-weight: bold;
+	padding: 5px 10px;
+}
+
+.datetimeshortcuts {
+	float: left;
+}
+
+.ldtdatetime {
+	float: left;
+	width: 350px;
+}
+
+.ldtdate,.ldttime {
+	float: left;
+	width: 150px;
+}
+
+.ldtdatetitle,.ldttimetitle {
+	color: #666;
+}
+
+#contentformhidden {
+	display: none;
+}
+
+#contentformfields {
+	margin: 10px 0px;
+}
+
+.cellcheckbox {
+	text-align: center;
+	width: 70 px;
+}
+
+#contentslistheader {
+	padding: 1px 10px 1px 36px;	
+}
+
+#ldtcreatetablewrapperdiv {
+	height: 282px;
+}
+
+#ldtcreatecontentstablediv {
+	max-height: 280px;
+}
+
+#ldtcreatecontentslistcontainer {
+	padding: 5px 0px 20px 0px;
+	height: 300px;
+}
+
+#media_fields_div {
+	width : 338px;
+	height : 50px;
+	margin-top: 10px 0px;
+	padding-left: 10px;
+	border: 1px solid #DDD;
+}
+
+.error_message {
+	padding: 3em 2em;
+	font-size: larger;
+	font-weight: bold;   
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/nyroModal.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,109 @@
+@charset "UTF-8";
+
+div#nyroModalFull {
+	font-size: 12px;
+	color: #777;
+}
+div#nyroModalLoading {
+	border: 4px solid #777;
+	width: 150px;
+	height: 150px;
+	text-indent: -9999em;
+	background: #fff url(../img/ajax-loader-43x43.gif) no-repeat;
+	background-position: center;
+}
+div#nyroModalLoading.error {
+	border: 4px solid #f66;
+	line-height: 20px;
+	padding: 20px;
+	width: 300px;
+	height: 100px;
+	text-indent: 0;
+	background: #fff;
+}
+div#nyroModalWrapper {
+	background: #fff;
+	border-color: #777;
+	border-style: solid;
+	border-width: 24px 4px 4px 4px;
+}
+a#closeBut {
+	position: absolute;
+	display: block;
+	top: -19px;
+	right: 0px;
+	width: 16px;
+	height: 16px;
+	text-indent: -9999em;
+	background: url(../img/close.png) no-repeat;
+	outline: 0;
+}
+h1#nyroModalTitle {
+	margin: 0;
+	padding: 0;
+	position: absolute;
+	top: -22px;
+	left: 5px;
+	font-size: 12px;
+	color: #ddd;
+}
+div#nyroModalContent {
+	overflow: auto;
+}
+div.wrapper div#nyroModalContent {
+	padding: 5px;
+}
+div.wrapperImg div#nyroModalContent {
+	position: relative;
+	overflow: hidden;
+	text-align: center;
+}
+div.wrapperImg img {
+	vertical-align: baseline;
+}
+div.wrapperImg div#nyroModalContent div {
+	position: absolute;
+	bottom: 0;
+	left: 0;
+	background: black;
+	padding: 10px;
+	margin: 10px;
+	border: 1px white dotted;
+	overflow: hidden;
+	opacity: 0.2;
+	filter: alpha(opacity=20);
+}
+div.wrapperImg div#nyroModalContent div:hover {
+	opacity: 0.5;
+	filter: alpha(opacity=50);
+	cursor: help;
+}
+a.nyroModalPrev, a.nyroModalNext {
+	z-index: 105;
+	outline: none;
+	position: absolute;
+	top: 0;
+	height: 100%;
+	width: 40%;
+	cursor: pointer;
+	text-indent: -9999em;
+	background: left 20% no-repeat;
+	background-image: url(data:image/gif;base64,AAAA); /* Trick IE6 */
+}
+div.wrapperSwf a.nyroModalPrev, div.wrapperSwf a.nyroModalNext, div.wrapper a.nyroModalPrev, div.wrapper a.nyroModalNext {
+	height: 60%;
+	width: 20%;
+}
+a.nyroModalPrev {
+	left: 0;
+}
+a.nyroModalPrev:hover {
+	background-image: url(../img/prev.gif);
+}
+a.nyroModalNext {
+	right: 0;
+	background-position: right 20%;
+}
+a.nyroModalNext:hover {
+	background-image: url(../img/next.gif);
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/registration.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,33 @@
+/* style for registration */ 
+
+label.error { 
+	float: none; 
+	color: red; 
+	padding-left: .5em; 
+	vertical-align: middle;
+}
+
+#login_links {
+	height: 127px;
+}
+
+#login_links_list {
+	border-left: 1px solid black;
+	height: 90%;
+	padding-top: 6px; 
+}
+
+#login_links_list ul {
+	list-style: none;
+}
+
+
+#loginform_div ul {
+	list-style: none;
+}
+
+#loginform_div label {
+	display: inline;
+	float: left;
+	width: 110px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/style.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,279 @@
+@charset "UTF-8";
+
+body {
+
+ 	font-family: Arial, Helvetica, sans serif;
+ 	font-size: 12px;
+ 	color: #4F5155;
+ 	margin: 5px;
+ 	padding: 0px;
+ 	min-width:750px;
+	text-align: justify; 	
+}
+
+a img,a:link img, a:active img, a:visited img, a:hover img  {
+	border:0px;
+}
+
+
+a:link
+{
+	text-decoration: none;
+	color: #2181b1;
+	text-decoration: none;
+	font-family:  Arial, Helvetica, sans-serif;
+	/*font-weight: bold;*/
+}
+
+a:hover
+{
+	color: #2181b1;
+	text-decoration: none;
+	font-family:  Arial, Helvetica, sans-serif;
+	/*border-bottom-width: 1px;
+	border-bottom-style: dashed;
+	border-bottom-color: #2c8084;
+	/*font-weight: bold;*/
+}
+a:visited {
+	color: #2181b1;
+	font-family:  Arial, Helvetica, sans-serif;
+	/*font-weight: bold;*/
+}
+
+
+#header
+{
+     padding: .5em;
+     border-bottom: 1px solid gray;
+     border-left: 1px solid gray;
+     padding: 1em;
+}
+
+#header a
+{
+    text-decoration: none;
+}
+
+
+#header_left
+{
+	max-width: 8em;
+	font-size: 40px;
+	font-weight : bold;
+	text-align: left;
+        text-transform: uppercase;
+}
+
+
+#header_left a:hover, #header_left a:visited, #header_left a:link, #header_left a:active, #header_left a:focus
+{
+	color: #4F5155;
+	text-decoration: none;
+}
+
+
+#header_right
+{
+	text-align: right;
+}
+
+#header_right a:link
+{
+	text-decoration: none;
+	text-decoration: none;
+	color: white;
+}
+
+#header_right a:hover
+{
+	text-decoration: none;
+	color:  white;
+}
+
+#header_right a:visited {
+	text-decoration: none;
+	color: white;
+}
+
+
+#footer
+{
+    clear: both;
+    margin: 0;
+    padding: .5em;
+    /*background-color: #ddd;*/
+    border-top: 1px solid gray;
+}
+
+.version
+{
+    text-align: right;
+    color: white;
+    font-size:9px;
+}
+
+.version a:link
+{
+    text-decoration: none;
+    color: white;
+    text-decoration: bold;
+    font-weight: bold;
+    border-bottom-style: none;
+}
+
+.version a:hover
+{
+    color: #2c8084;
+    text-decoration: none;
+    font-weight: bold;
+    border-bottom-width: 0px;
+    border-bottom-style: none;
+}
+
+.version a:active
+{
+    color: white;
+    text-decoration: none;
+    font-weight: bold;
+    border-bottom-style: none;
+}
+
+.version a:visited
+{
+    color: white;
+    font-weight: bold;
+    border-bottom-style: none;
+}
+
+.small
+{
+    font-size:9px;
+}
+
+.footer_img
+{
+    float: left;
+}
+
+.footer_img img
+{
+    padding-left: 10px;
+    padding-right: 10px;
+}
+
+.footer_img a
+{
+    color: white;
+}
+
+.footer_img a:link
+{
+    color: white;
+}
+
+.footer_img a:hover
+{
+    color: white;
+}
+
+.footer_img a:visited
+{
+    color: white;
+}
+
+
+#home_links
+{
+    line-height: 150%
+}
+
+#search_form_div {
+    text-align: center;
+    padding: 10px;
+    margin: 10px 10px;
+    margin-bottom: 30px;
+    background-color:#ececec;
+    border: 1px solid #7E7E7E
+}
+
+#search_form ul {
+	list-style-type: none;
+	margin: 0;
+	padding: 0;
+}
+
+#search_form ul li {
+	display: inline;
+}
+
+#toolbar {
+	margin-top: 10px;
+	border-bottom: 3px solid #707070;
+}
+
+#inner_content {
+	padding: 40px 0px 50px 0px; 	
+}
+
+#loginstate {
+	text-align: right;
+}
+
+.projectscontentstitle {
+	color: #949494;
+	font-family: Verdana;
+	font-weight: lighter;
+	font-size: 2.0em;
+	font-style: normal;
+	text-align: left;
+}
+
+
+#loginstate a, #loginstate a:hover, #loginstate a:visited, #loginstate a:link, #loginstate a:active {
+    color:#0063DC;
+    margin-right:4px;
+    text-decoration:none;
+}
+
+#loginstate a:hover{
+    text-decoration: underline;
+}
+
+#loginstate ul {
+    margin:0;
+    padding:0;
+    float: left;
+}
+#loginstate li{
+    display: inline;
+    padding:0;
+    margin:0;
+}
+#loginstate #user{
+    color: #000000;
+    font-weight: bold;
+    margin-right:4px;
+}
+#loginstate ul .usertool a,
+#loginstate ul .usertool a:link, 
+#loginstate ul .usertool a:visited {
+    color:#0063DC;
+    text-decoration:none;
+}
+
+#loginstate ul .usertool a:hover {
+    color:#0063DC;
+    text-decoration:underline;
+}
+
+.errorlist
+{
+    color: red;
+    font-size:12px
+}
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/style_base.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,202 @@
+body
+{   font-family: Arial, Helvetica, sans serif;
+    padding: 0px;
+    margin: 0px;
+    background-color: #f9f9f9;
+    font-size: 12px;
+}
+
+a
+{
+    color: #0045A3;
+    text-decoration:none;
+}
+
+a:hover
+{
+    color: #990000;
+    text-decoration: underline;
+}
+
+p
+{
+    font-size:12px;
+    font-weight:normal;
+    margin:0;
+    padding:0;
+}
+
+th
+{
+   text-align: left; 
+}
+.button
+{
+    margin: 3px 0;
+    margin-left: 25px;
+    background: #3366CC;
+    padding: 0 6px;
+    border-color: #6699CC #3366CC #3366CC #6699CC;
+    border-style: solid;
+    border-width: 1px 2px 2px 1px;
+    font-size: 13px;
+    font-style: normal;
+    font-weight: bold;
+    color: #ffffff;
+}
+
+.errorlist
+{
+    color: red;
+    font-size:12px
+}
+#header
+{
+    background-color: #ffffcc;
+    height: 50px;
+}
+
+#logo
+{
+}
+
+#usertool
+{
+}
+
+#loginstate
+{
+    color:#0045A3;
+}
+
+#menu
+{
+   width: 200px;
+   vertical-align: top;
+}
+
+#container
+{
+  width: 90%;
+  margin: 10px auto;
+  background-color: #fff;
+  color: #000;
+}
+}
+#content
+{
+}
+
+#footer
+{    
+}
+
+/* page login *//*
+#loginarea
+{
+    margin: 0 auto;
+    margin-top: 100px;
+    overflow: hidden;
+    width: 362px;
+    border: 2px solid #CCCCCC;
+}
+
+#loginarea .title
+{
+    font-size: 15px;
+    color: #FFFFFF;
+    background: #990000 scroll repeat left top;
+    font-weight:bold;
+    height:34px;
+    position: relative;
+    line-height: 34px;
+    overflow: hidden;
+    text-transform: uppercase;
+}
+
+#loginarea .title div
+{
+    margin-left: 12px;
+}
+
+#loginarea .login-form
+{
+    margin-top:20px;
+    margin-left:25px;
+} 
+
+#loginarea .login-form .inputbox
+{
+    font-size: 13px;
+    line-height:20px;
+    text-align: left; 
+}
+
+#loginarea .login-form label
+{
+    font-size: 14px;
+    font-weight: bold;
+}
+/*
+#loginarea .login-form .button
+{
+    margin: 3px 0;
+    margin-left: 25px;
+    background: #3366CC;
+    padding: 0 6px;
+    border-color: #6699CC #3366CC #3366CC #6699CC;
+    border-style: solid;
+    border-width: 1px 2px 2px 1px;
+    font-size: 13px;
+    font-style: normal;
+    font-weight: bold;
+    color: #ffffff;
+}
+
+#loginarea a
+{
+    font-size: 12px;
+    background:url("norm_left.gif") no-repeat left top;
+    padding:5px 15px;
+    margin: 5px;
+}
+
+#nav {
+    float:left;
+    width:100%;
+    font-size:93%;
+    line-height:normal;
+    background:#828282 repeat-x scroll 0 0;
+    margin:0;
+    padding:0;
+    list-style:none;
+}
+
+#nav a:link, 
+#nav a:visited {
+    color:#fff;
+    background:#828282 repeat-x scroll 0 0;
+    padding:20px 40px 4px 10px;
+    float:left;
+    width:auto;
+    border-right:1px solid #999999;
+}
+
+#nav li a:hover {
+    color:#fff;
+    background:#999999 none repeat scroll 0 0;
+}
+
+#space #nav-space a, #profile  #nav-profile a
+{
+    background:#666666 none repeat scroll 0 0;
+}
+
+#space  #nav-space, #profile  #nav-profile
+{
+    background:#666666 none repeat scroll 0 0;
+    color:#FFFFFF;
+}
+*/
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/tabs.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,72 @@
+/* -----------------------------------------------------------------------
+ Taken from:
+
+ Tabs Plugin 0.2 for the Blueprint CSS Framework
+ http://blueprintcss.org
+
+   * Copyright (c) 2008-Present. Refer to the main Blueprint license.
+   * See README for instructions on how to use this plugin.
+   * For credits and origins, see AUTHORS.
+
+----------------------------------------------------------------------- */
+@charset "UTF-8";
+
+.tabs { 
+	height:auto; 
+	margin:0;
+	overflow:hidden;
+	padding-left:0; 
+}
+* html .tabs { height:1%; /* fixing IE 6 */ }
+.tabs li {
+  background: #707070 url("../img/tabsright_normal.png") no-repeat right center;
+  border-bottom:none;
+  float:left;
+  line-height:1.5; 
+  list-style-type:none;
+  margin:0 ;
+  padding: 0 9px 0 0;
+  height: 29px;
+  
+}
+.tabs li a { 
+  border-bottom:none;
+  color: #ffffff;
+  cursor:pointer;
+  display:block;
+  float:left;
+  margin: .5em 2em .5em 2em;
+  text-transform: capitalize;
+  font-weight: lighter;
+}
+
+.tabs li.active { 
+  background:#29aae3 url("../img/tabsright_active.png") no-repeat right center;
+}
+
+
+.tabs li a.selected { 
+  background:#666;
+  border:1px solid #666;
+  border-bottom:none;
+  color:#fff;
+  cursor:default;
+}
+.tabs li a, .tabs li a:focus, .tabs li a:hover { 
+  text-decoration:none;
+}
+.tabs li a:focus, .tabs li a:hover { 
+  color:#555;
+  outline:none;
+}
+.tabs li a.selected:focus, .tabs li a.selected:hover { 
+  color:#fafafa;
+}	
+.tabs li.label { 
+	border:none;
+	font-weight:bold;
+	line-height:1.5; 
+	margin-right:.5em; 
+	padding:.25em .33em .25em .33em;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/css/workspace.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,176 @@
+@charset "UTF-8";
+
+.titlediv {
+	margin: 0px 0px 25px 0px;
+}
+
+
+.ldt_player_code {
+	width: 580px;
+	overflow: auto;
+	border-style: inset;
+	border: 1px solid silver;
+	margin: 10px 5px;
+	padding: 2px;
+}
+
+.searchfielddiv {
+	top: 50%;
+	margin-top: 12px;
+}
+
+.searchfield {
+	background: white;
+	border: 1px solid #b8b8b8;
+	-moz-border-radius: 15px;
+	-webkit-border-radius:15px;
+	-khtml-border-radius:15px;
+	border-radius: 15px;
+	padding: 2px 5px;
+}
+
+.searchfield img {
+	vertical-align: middle;
+	margin-top: 5px;
+}
+
+.searchfieldinput {
+	color: graytext;
+	font-style: italic;
+}
+
+
+input[type="text"].searchfieldinputbase {
+	border: none;
+}
+
+.searchclear {
+ 	display: none;
+	float: right;
+}
+
+.searchfieldinputbase {
+	background: #ffffff url("../img/search.gif") no-repeat left center;
+	width: 99px;
+	height: 14px;
+	margin: 0px 2px 0px 0px;
+	vertical-align: top;
+	padding-left: 20px;
+}
+
+
+.projectscontentsdiv {
+	overflow: hidden;
+	height: 570px;
+	
+}
+div.projectscontentsdiv table {
+	width: 470px;
+	height: 100%;
+	margin-bottom: 0;
+}
+
+tr.projectscontentsoddline {
+	background: #ededed;
+}
+
+tr.projectscontentsevenline {
+	background: white;	
+}
+
+
+/* make the TH elements pretty */
+.projectscontentsheader {
+	background: #b5b5b5;
+	font-weight: bold;
+	text-transform:capitalize;
+	color: white;
+	padding: 1px 2px;
+	text-align: left;
+}
+
+
+#contentsheader {
+	padding: 1px 10px 1px 49px;
+}
+
+
+#projectsheader {
+	padding: 1px 10px 1px 93px;
+}
+
+.contenttitle {
+	width: 411px;
+	padding: 4px 10px 4px 5px;
+}
+
+.contenttitlelink,.contenttitlelink:link,.contenttitlelink:hover,.contenttitlelink:visited {
+	text-decoration: none;
+	color: #4F5155;
+}
+
+.projecttitlelink,.projecttitlelink:link,.projecttitlelink:hover,.projecttitlelink:visited {
+	text-decoration: none;
+	color: #4F5155;
+}
+
+
+.projecttitle {
+	width: 367px;
+	padding: 4px 10px 4px 5px;	
+}
+
+.projectscontentsfooter {
+	background: #8c8c8c;
+	color: #ffffff;
+	margin-top: 18px;
+	font-size: 1.25em;
+	font-style: normal;
+	padding : 5px 5px;
+}
+
+.projectscontentstablediv {
+	max-height: 500px;
+	overflow: auto; overflow-x: hidden;
+	border-bottom: 2px solid #b5b5b5 ;
+	float: left;
+}
+.projectscontentstablewrapperdiv {
+	height: 502px;
+}
+
+.projectscontentsbody tr {
+	padding-right: 16px;
+}
+
+.titlediv {
+	vertical-align: middle;	
+}
+
+.cellimg {
+	width: 18px;
+	text-align: center;
+	padding: 4px 2px 4px 2px;
+	cursor: pointer; cursor: hand;
+}
+
+.cellimgdiv {
+	visibility: hidden;
+}
+
+.searchajaxloader {
+	display: none;
+	float: right;
+	z-index: +1;
+}
+
+a.content_link_create:link, a.content_link_create:visited,
+a.ldt_link_create:link, a.ldt_link_create:visited {
+	color: white;
+	text-decoration: none;
+}
+
+a.project_link_create:link, a.project_link_create:visited {
+	color: white;
+}
+
Binary file web/ldt/media/img/ajax-loader-16x16.gif has changed
Binary file web/ldt/media/img/ajax-loader-220x19.gif has changed
Binary file web/ldt/media/img/ajax-loader-43x43.gif has changed
Binary file web/ldt/media/img/clear-left.png has changed
Binary file web/ldt/media/img/close.png has changed
Binary file web/ldt/media/img/control_play.gif has changed
Binary file web/ldt/media/img/document_add.gif has changed
Binary file web/ldt/media/img/document_edit.gif has changed
Binary file web/ldt/media/img/documents_duplicate.gif has changed
Binary file web/ldt/media/img/favicon.ico has changed
Binary file web/ldt/media/img/loadingAnimation.gif has changed
Binary file web/ldt/media/img/logo_IRI_footer.png has changed
Binary file web/ldt/media/img/plugin.gif has changed
Binary file web/ldt/media/img/search.gif has changed
Binary file web/ldt/media/img/tabsright_active.png has changed
Binary file web/ldt/media/img/tabsright_normal.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/LdtPlayer.min.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,64 @@
+/* 
+ * 	
+ *	Copyright 2010 Institut de recherche et d'innovation 
+ *	contributor(s) : Samuel Huron 
+ *	 
+ *	contact@iri.centrepompidou.fr
+ *	http://www.iri.centrepompidou.fr 
+ *	 
+ *	This software is a computer program whose purpose is to show and add annotations on a video .
+ *	This software is governed by the CeCILL-C license under French law and
+ *	abiding by the rules of distribution of free software. You can  use, 
+ *	modify and/ or redistribute the software under the terms of the CeCILL-C
+ *	license as circulated by CEA, CNRS and INRIA at the following URL
+ *	"http://www.cecill.info". 
+ *	
+ *	The fact that you are presently reading this means that you have had
+ *	knowledge of the CeCILL-C license and that you accept its terms.
+*/
+if(window.__IriSP===undefined)var __IriSP={};__IriSP.config={metadata:{format:"cinelab",src:"http://exp.iri.centrepompidou.fr/franceculture/franceculture/ldt/cljson/id/ef4dcc2e-8d3b-11df-8a24-00145ea4a2be",load:"jsonp"},gui:{width:650,height:0,mode:"radio",container:"LdtPlayer",debug:false,css:"../src/css/LdtPlayer.css"},player:{type:"jwplayer",src:"../res/swf/player.swf"},module:null};
+__IriSP.lib={jQuery:"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js",jQueryUI:"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js",jQueryToolTip:"http://cdn.jquerytools.org/1.2.4/all/jquery.tools.min.js",swfObject:"http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js",cssjQueryUI:"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css"};__IriSP.LdtShareTool="\n<a onclick=\"__IriSP.MyApiPlayer.share('delicious');\" title='partager avec delicious'><span class='share shareDelicious'>&nbsp;</span></a>\n<a onclick=\"__IriSP.MyApiPlayer.share('facebook');\" title='partager avec facebook'> <span class='share shareFacebook'>&nbsp;</span></a>\n<a onclick=\"__IriSP.MyApiPlayer.share('twitter');\" title='partager avec twitter'>  <span class='share shareTwitter'>&nbsp;</span></a>\n<a onclick=\"__IriSP.MyApiPlayer.share('myspace');\" title='partager avec Myspace'>  <span class='share shareMySpace'>&nbsp;</span></a>\n<a onclick=\"__IriSP.MyApiPlayer.share('jamespot');\" title='partager avec JamesPot'>  <span class='share shareJamesPot'>&nbsp;</span></a>";
+__IriSP.MyLdt=null;__IriSP.MyTags=null;__IriSP.MyApiPlayer=null;__IriSP.player=null;__IriSP.Durration=null;__IriSP.playerLdtWidth=null;__IriSP.playerLdtHeight=null;
+__IriSP.init=function(a){function b(){var f=document.createElement("script");f.setAttribute("type","text/javascript");f.setAttribute("src",__IriSP.lib.jQueryToolTip);f.onload=c;f.onreadystatechange=function(){if(this.readyState=="complete"||this.readyState=="loaded")c("jquery.tools.min.js loded")};var i=document.createElement("script");i.setAttribute("type","text/javascript");i.setAttribute("src",__IriSP.lib.swfObject);i.onload=c;i.onreadystatechange=function(){if(this.readyState=="complete"||this.readyState==
+"loaded")c("swfobject.js loded")};var j=document.createElement("script");j.setAttribute("type","text/javascript");j.setAttribute("src",__IriSP.lib.jQueryUI);j.onload=c;j.onreadystatechange=function(){if(this.readyState=="complete"||this.readyState=="loaded")c("jquery-ui.min.js loded")};(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(f);(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(j);(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(i)}
+function c(){g+=1;g===3&&d()}function d(){__IriSP.jQuery=window.jQuery.noConflict(true);__IriSP.jQuery(document).ready(function(f){var i=__IriSP.jQuery("<link>",{rel:"stylesheet",type:"text/css",href:__IriSP.lib.cssjQueryUI,"class":"dynamic_css"}),j=__IriSP.jQuery("<link>",{rel:"stylesheet",type:"text/css",href:__IriSP.config.gui.css,"class":"dynamic_css"});i.appendTo("head");j.appendTo("head");f.browser.msie&&f(".dynamic_css").clone().appendTo("head");__IriSP.createMyHtml();__IriSP.jQuery.ajax({dataType:"jsonp",
+url:h,success:function(e){__IriSP.trace("ajax","success");if(e==="")alert("ERREUR DE CHARGEMENT JSON");else{new __IriSP.Media(e.medias[0].id,e.medias[0].href,e.medias[0].meta["dc:duration"],e.medias[0]["dc:title"],e.medias[0]["dc:description"]);__IriSP.trace("__IriSP.MyApiPlayer",__IriSP.config.gui.width+"   "+__IriSP.config.gui.height+" "+e.medias[0].href+" "+e.medias[0].meta["dc:duration"]+" "+e.medias[0].meta.item.value);__IriSP.MyApiPlayer=new __IriSP.APIplayer(__IriSP.config.gui.width,__IriSP.config.gui.height,
+e.medias[0].href,e.medias[0].meta["dc:duration"],e.medias[0].meta.item.value);__IriSP.trace("__IriSP.init.main","__IriSP.Ligne");__IriSP.MyLdt=new __IriSP.Ligne(e["annotation-types"][0].id,e["annotation-types"][0]["dc:title"],e["annotation-types"][0]["dc:description"],e.medias[0].meta["dc:duration"]);__IriSP.trace("__IriSP.init.main","__IriSP.Tags");__IriSP.MyTags=new __IriSP.Tags(e.tags);__IriSP.jQuery.each(e.annotations,function(l,k){k.meta["id-ref"]==__IriSP.MyLdt.id&&__IriSP.MyLdt.addAnnotation(k.id,
+k.begin,k.end,k.media,k.content.title,k.content.description,k.content.color,k.tags)});__IriSP.jQuery.each(e.lists,function(){__IriSP.trace("lists","")});__IriSP.jQuery.each(e.views,function(){__IriSP.trace("views","")})}},error:function(e){alert("ERROR : "+e)}})})}__IriSP.config=a;var h=__IriSP.config.metadata.src;__IriSP.jQuery=null;if(window.jQuery===undefined||window.jQuery.fn.jquery!=="1.4.2"){a=document.createElement("script");a.setAttribute("type","text/javascript");a.setAttribute("src",__IriSP.lib.jQuery);
+a.onload=b;a.onreadystatechange=function(){if(this.readyState=="complete"||this.readyState=="loaded")b()};(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(a)}else{__IriSP.jQuery=window.jQuery;b()}var g=0};
+__IriSP.createMyHtml=function(){var a=__IriSP.config.gui.width;__IriSP.jQuery("<div id='Ldt-Root'>\n\t<div id='Ldt-PlaceHolder'>\n\t\t<a href='http://www.adobe.com/go/getflashplayer'>Get flash</a> to see this player\t\n\t</div>\n\t<div id='Ldt-controler' class='demo'>\n\t\t<div class='Ldt-Control1' >\n\t\t\t<button id='ldt-CtrlPlay' onclick='__IriSP.MyApiPlayer.play()'>Lecture / Pause </button>\n\t\t\t<button id='ldt-CtrlNext' onclick='__IriSP.MyLdt.nextAnnotation()'>Suivant</button>\n\t\t</div>\n\t\t<div id='Ldt-Annotations' class='ui-slider'>\n\t\t\t<div id='slider-range-min'></div>\n\t</div>\n\t\t<div class='Ldt-Control2'>\n\t\t\t<button id='ldt-CtrlLink'> Partager </button>\n\t\t\t<button id='ldt-CtrlSound' onclick='__IriSP.MyApiPlayer.mute()'>Sound</button>\n\t\t</div>\n  <div class='cleaner'>&nbsp;</div> \n  <div id='Ldt-Show-Arrow-container'>\n  \t<div id='Ldt-Show-Arrow'> </div>\n  </div>\n</div>\n<div>\n <div id='ldt-Show'> </div>\n\t<div id='Ldt-ShowAnnotation-audio' class='demo' >\n\t\t<div id='Ldt-SaTitle'></div>\n\t\t<div id='Ldt-SaDescription'></div>\n \t\t<div class='cleaner'><!--&nbsp;--\></div>\n </div>\n <div id='Ldt-SaKeyword'>\n <div id='Ldt-SaKeywordText'>  </div>\n <div class='cleaner'></div>\n <div id='Ldt-SaShareTools'>\n \n "+__IriSP.LdtShareTool+
+"\n \n  </div>\n <div class='cleaner'></div></div>  </div><div id='Ldt-output'></div>").appendTo("#"+__IriSP.config.gui.container);__IriSP.trace("__IriSP.createHtml","end");__IriSP.jQuery("#Ldt-Annotations").width(a-150);__IriSP.jQuery("#Ldt-Show-Arrow-container").width(a-150);__IriSP.jQuery("#Ldt-ShowAnnotation-audio").width(a-10);__IriSP.jQuery("#Ldt-ShowAnnotation-video").width(a-10);__IriSP.jQuery("#Ldt-SaKeyword").width(a-10);__IriSP.jQuery("#Ldt-controler").width(a-10);__IriSP.jQuery("#Ldt-Control").attr("z-index",
+"100");__IriSP.jQuery("#Ldt-controler").hide();__IriSP.jQuery("<div id='Ldt-load-container'><div id='Ldt-loader'>&nbsp;</div> Chargement... </div>").appendTo("#Ldt-ShowAnnotation-audio");__IriSP.config.gui.mode=="radio"&&__IriSP.jQuery("#Ldt-load-container").attr("width",__IriSP.config.gui.width);__IriSP.config.gui.debug===true?__IriSP.jQuery("#Ldt-output").show():__IriSP.jQuery("#Ldt-output").hide()};
+__IriSP.Media=function(a,b,c,d,h){this.id=a;this.url=b;this.title=d;this.description=h;this.duration=c;this.lignes=[];__IriSP.trace("__IriSP.Media","Media ID : "+a);__IriSP.trace("__IriSP.Media","Media URL : "+b);__IriSP.trace("__IriSP.Media","Media title : "+d)};__IriSP.Media.prototype.createPlayerMedia=function(a,b,c,d){__IriSP.MyApiPlayer=new __IriSP.APIplayer(a,b,this.url,this.duration,c,d)};__IriSP.Media.prototype.getMediaDuration=function(){return this.duration};
+__IriSP.Media.prototype.getMediaTitle=function(){return this.title};
+__IriSP.createInterface=function(a,b,c){__IriSP.jQuery("#Ldt-controler").show();__IriSP.trace("__IriSP.createInterface",a+","+b+","+c+",");__IriSP.jQuery("#Ldt-ShowAnnotation").click(function(){});__IriSP.jQuery("#Ldt-PlaceHolder").attr("top");__IriSP.jQuery("#Ldt-PlaceHolder").attr("left");__IriSP.jQuery("#slider-range-min").slider({value:0,min:1,max:c/1E3,step:0.1,slide:function(d,h){__IriSP.MyApiPlayer.seek(h.value)}});__IriSP.trace("__IriSP.createInterface","ICI");__IriSP.jQuery("#amount").val(__IriSP.jQuery("#slider-range-min").slider("value")+
+" s");__IriSP.jQuery(".Ldt-Control1 button:first").button({icons:{primary:"ui-icon-play"},text:false}).next().button({icons:{primary:"ui-icon-seek-next"},text:false});__IriSP.jQuery(".Ldt-Control2 button:first").button({icons:{primary:"ui-icon-transferthick-e-w"},text:false}).next().button({icons:{primary:"ui-icon-volume-on"},text:false});__IriSP.trace("__IriSP.createInterface","ICI2");__IriSP.jQuery("#ldt-CtrlPlay").attr("style","background-color:#CD21C24;");__IriSP.jQuery("#Ldt-load-container").hide();
+__IriSP.config.gui.mode=="radio"&__IriSP.jQuery.browser.msie!=true&&__IriSP.jQuery("#Ldtplayer1").attr("height","0");__IriSP.trace("__IriSP.createInterface","3");__IriSP.trace("__IriSP.createInterface","END")};
+__IriSP.APIplayer=function(a,b,c,d,h,g){this.hashchangeUpdate=this.player=null;this.width=a;this.height=b;this.url=c;this.duration=d;this.streamerPath=h;this.MySwfPath=g;__IriSP.MyApiPlayer=this;__IriSP.createPlayer(a,b,this.url,this.duration,this.streamerPath,this.MySwfPath);__IriSP.trace("__IriSP.APIplayer","__IriSP.createPlayer")};
+__IriSP.APIplayer.prototype.ready=function(){__IriSP.createInterface(this.width,this.height,this.duration);__IriSP.trace("__IriSP.APIplayer.prototype.APIpReady","END  __IriSP.createInterface");if(window.addEventListener)window.addEventListener("hashchange",function(){var a=__IriSP.retrieveTimeFragment(window.location.href);__IriSP.trace("__IriSP.APIplayer.prototype.ready",a);if(__IriSP.MyApiPlayer.hashchangeUpdate==null)__IriSP.MyApiPlayer.seek(a);else __IriSP.MyApiPlayer.hashchangeUpdate=null},false);
+else window.attachEvent&&window.attachEvent("onhashchange",function(){__IriSP.trace("hashchange",a);var a=__IriSP.retrieveTimeFragment(window.location.href);if(__IriSP.MyApiPlayer.hashchangeUpdate==null)__IriSP.MyApiPlayer.seek(a);else __IriSP.MyApiPlayer.hashchangeUpdate=null},false)};__IriSP.APIplayer.prototype.pause=function(){this.hashchangeUpdate=true;__IriSP.player.sendEvent("PAUSE")};__IriSP.APIplayer.prototype.play=function(){this.hashchangeUpdate=true;__IriSP.player.sendEvent("PLAY")};
+__IriSP.APIplayer.prototype.mute=function(){__IriSP.player.sendEvent("MUTE")};
+__IriSP.APIplayer.prototype.share=function(a){var b=window.location.href,c;if(a=="facebook")c="http://www.facebook.com/share.php?u=";else if(a=="twitter")c="http://twitter.com/home?status=Je regarde :";else if(a=="myspace")c="http://www.myspace.com/Modules/PostTo/Pages/?u=";else if(a=="delicious")c="http://delicious.com/save?url=";else if(a=="JameSpot")c="http://www.jamespot.com/?action=spotit&u=";window.location.href=c+encodeURIComponent(b)};
+__IriSP.APIplayer.prototype.seek=function(a){__IriSP.player.sendEvent("SEEK",a);this.changePageUrlOffset(a)};__IriSP.APIplayer.prototype.update=function(a){this.hashchangeUpdate=true;__IriSP.player.sendEvent("SEEK",a)};__IriSP.APIplayer.prototype.changePageUrlOffset=function(a){__IriSP.trace("__IriSP.APIplayer.prototype.changePageUrlOffset","CHANGE URL "+a);window.location.hash="#t="+a;window.location.href=window.location.href};__IriSP.jumpToTimeoffset=function(a){__IriSP.MyApiPlayer.changePageUrlOffset(a.time.value)};
+__IriSP.retrieveTimeFragment=function(a){var b=0,c=0;if(a.split("#")[1]!=null){b=a.split("#")[1];if(b.substring(2)!=null)c=b.substring(2)}return c};__IriSP.ignoreTimeFragment=function(a){if(a.split("#")[1]!=null)var b=a.split("#")[0];return b};__IriSP.currentPosition=0;__IriSP.currentVolume=50;__IriSP.player=null;__IriSP.startPosition=null;
+__IriSP.createPlayer=function(a,b,c,d,h){__IriSP.trace("__IriSP.createPlayer","start");__IriSP.myUrlFragment=c.split(h);c={streamer:h,file:__IriSP.myUrlFragment[1],live:"true",autostart:"true",controlbar:"none",playerready:"__IriSP.playerReady"};__IriSP.trace("__IriSP.createPlayer","SWFOBJECT src:"+__IriSP.config.player.src+" "+a+" "+b);swfobject.embedSWF(__IriSP.config.player.src,"Ldt-PlaceHolder",a,b,"9.0.115",false,c,{allowfullscreen:"true",allowscriptaccess:"always",wmode:"transparent"},{id:"Ldtplayer1",
+name:"Ldtplayer1"})};__IriSP.playerReady=function(a){__IriSP.player=window.document[a.id];__IriSP.MyApiPlayer.ready(__IriSP.player);a=__IriSP.retrieveTimeFragment(document.location.href);__IriSP.startPosition=a;__IriSP.addListeners()};
+__IriSP.addListeners=function(){if(__IriSP.player){__IriSP.trace("__IriSP.addListeners","ADD  Listener ");__IriSP.player.addModelListener("TIME","__IriSP.positionListener");__IriSP.player.addControllerListener("VOLUME","__IriSP.volumeListener");__IriSP.player.addModelListener("STATE","__IriSP.stateMonitor")}else __IriSP.setTimeout("addListeners()",100)};
+__IriSP.stateMonitor=function(a){if(a.newstate=="PAUSED"){__IriSP.trace("__IriSP.stateMonitor","PAUSE");__IriSP.MyApiPlayer.changePageUrlOffset(__IriSP.currentPosition)}else if(a.newstate=="PLAYING"){if(__IriSP.startPosition!=null){__IriSP.MyApiPlayer.update(__IriSP.startPosition);__IriSP.startPosition=null}}else a.newstate=="BUFFERING"&&__IriSP.trace("__IriSP.stateMonitor","BUFFERING : ")};
+__IriSP.positionListener=function(a){__IriSP.currentPosition=a.position;var b=document.getElementById("posit");if(b)b.innerHTML="position: "+__IriSP.currentPosition;__IriSP.jQuery("#slider-range-min").slider("value",a.position);__IriSP.jQuery("#amount").val(a.position+" s");__IriSP.MyLdt.checkTime(__IriSP.currentPosition)};__IriSP.volumeListener=function(a){__IriSP.currentVolume=a.percentage;if(a=document.getElementById("vol"))a.innerHTML="volume: "+__IriSP.currentVolume};
+__IriSP.stripHtml=function(a){return a.replace(/\\&/g,"&amp;").replace(/\\</g,"&lt;").replace(/\\>/g,"&gt;").replace(/\\t/g,"&nbsp;&nbsp;&nbsp;").replace(/\\n/g,"<br />").replace(/'/g,"&#39;").replace(/"/g,"&quot;")};__IriSP.DEC_HEXA_COLOR=function(a){for(var b="",c;a>15;){c=a-Math.floor(a/16)*16;b="0123456789ABCDEF".charAt(c)+b;a=Math.floor(a/16)}b="0123456789ABCDEF".charAt(a)+b;if(b=="FFCC00")b="";return b};__IriSP.LDTligne=null;
+__IriSP.Ligne=function(a,b,c,d){this.id=a;this.title=b;this.description=c;this.annotations=[];this.duration=d;__IriSP.LDTligne=this;__IriSP.trace("__IriSP.Ligne","CREATE "+__IriSP.LDTligne)};__IriSP.Ligne.prototype.addAnnotation=function(a,b,c,d,h,g,f,i){this.annotations.push(new __IriSP.Annotation(a,b,c,d,h,g,f,i,this.duration))};__IriSP.Ligne.prototype.onClickLigneAnnotation=function(){};__IriSP.Ligne.prototype.searchLigneAnnotation=function(){};__IriSP.Ligne.prototype.listAnnotations=function(){};
+__IriSP.Ligne.prototype.nextAnnotation=function(){var a=this.numAnnotation(this.annotationOldRead)+1,b=this.annotations[a];if(a<this.annotations.length-1){__IriSP.player.sendEvent("SEEK",b.begin/1E3);__IriSP.trace("LIGNE  ","| next = "+a+" - "+this.annotations.length+" | seek :"+b.begin/1E3)}else __IriSP.player.sendEvent("SEEK",this.annotations[0].begin/1E3)};__IriSP.Ligne.prototype.numAnnotation=function(a){for(var b=0;b<this.annotations.length;++b)if(a==this.annotations[b])return b};
+__IriSP.Ligne.prototype.checkTime=function(a){for(var b=-1,c=0;c<this.annotations.length;++c){b=this.annotations[c];if(a>b.begin/1E3&&a<b.end/1E3){if(b!=this.annotationOldRead){this.annotationOldRead=b;__IriSP.jQuery("#Ldt-SaTitle").text(b.title);__IriSP.jQuery("#Ldt-SaDescription").text(b.description);__IriSP.jQuery("#Ldt-SaDescription").text(b.description);__IriSP.jQuery("#Ldt-SaKeywordText").html("Mots clefs : "+b.htmlTags);a=b.timeToPourcent(b.begin*1+(b.end*1-b.begin*1)/2,b.duration*1);__IriSP.jQuery("#Ldt-Show-Arrow").animate({left:a+
+"%"},1E3);__IriSP.ignoreTimeFragment(window.location.href)}break}}if(b==-1)if(b!=this.annotationOldRead){__IriSP.trace("Check : ","pas d'annotation ici ");__IriSP.jQuery("#Ldt-ShowAnnotation").slideUp();this.annotationOldRead=b}};__IriSP.Annotation=function(){__IriSP.trace("annotation ","r\ufffdussi")};
+__IriSP.Annotation=function(a,b,c,d,h,g,f,i,j){this.id=a;this.begin=b;this.end=c;this.media=d;this.description=g;this.title=h;this.color=f;this.tags=i;this.htmlTags="";this.duration=j;this.draw();this.drawTags();__IriSP.trace("Annotation created : ",a)};
+__IriSP.Annotation.prototype.draw=function(){var a=this.timeToPourcent(this.begin,this.duration),b=this.timeToPourcent(this.end,this.duration)-a,c=this.title.substr(0,55);__IriSP.jQueryAnnotationTemplate="<div title='"+__IriSP.stripHtml(c)+"' id='"+this.id+"'  class='ui-slider-range ui-slider-range-min ui-widget-header iri-chapter' width='100%' style=\"left:"+a+"%; width:"+b+"%; padding-top:15px; border-left:solid 1px #aaaaaa; border-right:solid 1px #aaaaaa; background:#"+__IriSP.DEC_HEXA_COLOR(this.color)+
+';" onClick="__IriSP.MyApiPlayer.seek(\''+Math.round(this.begin/1E3)+"');__IriSP.jQuery('#Ldt-ShowAnnotation').slideDown();\"    ></div> ";__IriSP.jQuerytoolTipTemplate="<div class='Ldt-tooltip'><div class='title'>"+__IriSP.stripHtml(this.title)+"</div><div class='time'>"+this.begin+" : "+this.end+"</div><div class='description'>"+__IriSP.stripHtml(this.description)+"</div></div>";__IriSP.jQuery("<div>"+__IriSP.jQueryAnnotationTemplate+"</div>").appendTo("#Ldt-Annotations");__IriSP.jQuery("#"+this.id).tooltip({effect:"slide"});
+__IriSP.jQuery("#"+this.id).fadeTo(0,0.3);__IriSP.jQuery("#"+this.id).mouseover(function(){__IriSP.jQuery("#"+this.id).animate({opacity:0.6},5)}).mouseout(function(){__IriSP.jQuery("#"+this.id).animate({opacity:0.3},5)});__IriSP.trace("__IriSP.Annotation.prototype.draw","ADD ANOTATION : "+this.begin+" "+this.end+" "+__IriSP.stripHtml(this.title)+" | "+a+" | "+b+" | duration = "+this.duration)};
+__IriSP.Annotation.prototype.drawTags=function(){if(this.tags!=undefined)for(var a=0;a<this.tags.length;++a)this.htmlTags+="<span> "+__IriSP.MyTags.getTitle(this.tags[a]["id-ref"])+" </span> , "};__IriSP.Annotation.prototype.tootTipAnnotation=function(){return this.color+" "+this.type+" apple"};__IriSP.Annotation.prototype.onRollOverAnnotation=function(){this.tootTip()};__IriSP.Annotation.prototype.timeToPourcent=function(a,b){return parseInt(Math.round(a/b*100))};
+__IriSP.Tags=function(a){this.myTags=a;this.htmlTags=null;this.weigthMax=0};__IriSP.Tags.prototype.addAnnotation=function(a){for(var b=0;b<this.myTags.length;++b){this.myTags[b].mySegments=[];if(a.tags!=null)for(var c=0;c<a.tags.length;++c)if(this.myTags[b].id==a.tags[c]["id-ref"]){this.myTags[b].mySegments.push([a.begin,a.end,a.id]);var d=this.myTags[b].mySegments.length;if(this.weigthMax<d)this.weigthMax=d}}};
+__IriSP.Tags.prototype.getTitle=function(a){for(var b=0;b<this.myTags.length;++b)if(this.myTags[b].id==a)return this.myTags[b].meta["dc:title"]};
+__IriSP.Tags.prototype.draw=function(){__IriSP.trace("__IriSP.Tags.prototype.draw"," !!! WELL START ");for(var a=0;a<this.myTags.length;++a){__IriSP.trace("__IriSP.Tags.prototype.draw"," ADD Tags : "+this.myTags[a].id);if(this.myTags[a].id!=null)this.htmlTags+="<span onclick=\"MyTags.show( '"+this.myTags[a].id+'\');" style="font-size:'+(this.myTags[a].mySegments.length/this.weigthMax*10+8)+'px;" alt="'+this.myTags[a].mySegments.length+'"> '+this.myTags[a].meta["dc:title"]+" </span> , "}__IriSP.jQuery("#Ldt-Tags").html(this.htmlTags);
+__IriSP.trace("__IriSP.Tags.prototype.draw"," !!!!  END WMAX= "+this.weigthMax)};
+__IriSP.Tags.prototype.show=function(a){for(var b=1.0E20,c=1.0E20,d=0,h=0,g=0;g<this.myTags.length;++g)if(this.myTags[g].id==a){__IriSP.trace("######### TAG DRAWing : "," END");for(var f=0;f<this.myTags[g].mySegments.length;++f){if(void 0>this.myTags[g].mySegments[f][0]){b=this.myTags[g].mySegments[f][0];c=this.myTags[g].mySegments[f][1]}if(void 0>this.myTags[g].mySegments[f][0]){d=this.myTags[g].mySegments[f][0];h=this.myTags[g].mySegments[f][1]}}}a=__IriSP.timeToPourcent(b*1+(c-b)/2,__IriSP.MyLdt.duration);
+d=__IriSP.timeToPourcent(d*1+(h-d)/2,__IriSP.MyLdt.duration)-a;__IriSP.jQuery("#Ldt-Show-Tags").css("left",a+"%");__IriSP.jQuery("#Ldt-Show-Tags").css("width",d+"%")};__IriSP.traceNum=0;__IriSP.trace=function(a,b){if(__IriSP.config.gui.debug===true){__IriSP.traceNum+=1;__IriSP.jQuery("<div>"+__IriSP.traceNum+" - "+a+" : "+b+"</div>").appendTo("#Ldt-output")}};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/embed_popup.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,49 @@
+var display_state = "player";
+
+function toggle_display() {
+	$j.each(["player","seo_body","seo_meta","links"], function(i,display_str) {
+
+		var div_selector = "#"+display_str+"_code";
+		if(display_str == display_state) {
+			$j(div_selector).show();
+		}
+		else {
+			$j(div_selector).hide();
+		}
+	});
+}
+
+$j(document).ready(function(){
+	
+	toggle_display();
+	
+	$j('.ldt_json_link').click(function(e) {
+    	e.preventDefault();
+ 		link = $j(e.target);
+ 		$j("#res_link_{{player_id}}").load(link.attr("href"));
+ 		$j("#res_link_{{player_id}}").show();
+ 		return false;
+    });
+
+    $j('#player_button').click(function(e) {
+    	display_state = "player";
+    	toggle_display();
+    });
+    $j('#seo_body_button').click(function(e) {
+    	display_state = "seo_body";
+    	toggle_display();
+    });
+    $j('#seo_meta_button').click(function(e) {
+    	display_state = "seo_meta";
+    	toggle_display();
+    });
+    $j('#links_button').click(function(e) {
+    	display_state = "links";
+    	toggle_display();
+    });
+
+   $j("#copy_button").click(function(e) {
+ 	   alert($j("#"+display_state+"_code").html());
+   });	 	    
+    
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/jquery-ui.min.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,399 @@
+/*!
+ * jQuery UI 1.8.4
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.4",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,
+b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)},keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,
+CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable",
+"off").css("MozUserSelect","")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none")},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?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):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"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"));if(!isNaN(b)&&b!=0)return b}a=a.parent()}}return 0}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=
+parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c.style(this,h,d(this,f)+"px")})};c.fn["outer"+
+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c.style(this,h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==
+b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}})}})(jQuery);
+(function(b,j){var k=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return k.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);
+b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):
+this.each(function(){var g=b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});
+this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f,
+h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=
+b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&&
+this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();
+return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&
+this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-
+a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,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},_create: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")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b=
+this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-
+this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();
+d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.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";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode)return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,
+b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==
+a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||
+0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],
+this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-
+(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.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 a=this.options;if(a.containment==
+"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&
+a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),
+10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],
+this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():
+f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])e=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+
+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=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-b.grid[1]:g+b.grid[1]:g;e=this.originalPageX+
+Math.round((e-this.originalPageX)/b.grid[0])*b.grid[0];e=this.containment?!(e-this.offset.click.left<this.containment[0]||e-this.offset.click.left>this.containment[2])?e:!(e-this.offset.click.left<this.containment[0])?e-b.grid[0]:e+b.grid[0]:e}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop()),left:e-this.offset.click.left-
+this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(a,b,c){c=c||this._uiHash();d.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=
+this._convertPositionTo("absolute");return d.Widget.prototype._trigger.call(this,a,b,c)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});d.extend(d.ui.draggable,{version:"1.8.4"});d.ui.plugin.add("draggable","connectToSortable",{start:function(a,b){var c=d(this).data("draggable"),f=c.options,e=d.extend({},b,{item:c.element});c.sortables=[];d(f.connectToSortable).each(function(){var g=d.data(this,"sortable");
+if(g&&!g.options.disabled){c.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",a,e)}})},stop:function(a,b){var c=d(this).data("draggable"),f=d.extend({},b,{item:c.element});d.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;
+c.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",a,f)}})},drag:function(a,b){var c=d(this).data("draggable"),f=this;d.each(c.sortables,function(){this.instance.positionAbs=c.positionAbs;this.instance.helperProportions=c.helperProportions;this.instance.offset.click=c.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=
+1;this.instance.currentItem=d(f).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return b.helper[0]};a.target=this.instance.currentItem[0];this.instance._mouseCapture(a,true);this.instance._mouseStart(a,true,true);this.instance.offset.click.top=c.offset.click.top;this.instance.offset.click.left=c.offset.click.left;this.instance.offset.parent.left-=c.offset.parent.left-this.instance.offset.parent.left;
+this.instance.offset.parent.top-=c.offset.parent.top-this.instance.offset.parent.top;c._trigger("toSortable",a);c.dropped=this.instance.element;c.currentItem=c.element;this.instance.fromOutside=c}this.instance.currentItem&&this.instance._mouseDrag(a)}else if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",a,this.instance._uiHash(this.instance));this.instance._mouseStop(a,true);this.instance.options.helper=
+this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&this.instance.placeholder.remove();c._trigger("fromSortable",a);c.dropped=false}})}});d.ui.plugin.add("draggable","cursor",{start:function(){var a=d("body"),b=d(this).data("draggable").options;if(a.css("cursor"))b._cursor=a.css("cursor");a.css("cursor",b.cursor)},stop:function(){var a=d(this).data("draggable").options;a._cursor&&d("body").css("cursor",a._cursor)}});d.ui.plugin.add("draggable","iframeFix",{start:function(){var a=
+d(this).data("draggable").options;d(a.iframeFix===true?"iframe":a.iframeFix).each(function(){d('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})},stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;
+if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!=
+"HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop+c.scrollSpeed;else if(a.pageY-b.overflowOffset.top<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop-c.scrollSpeed;if(!c.axis||c.axis!="y")if(b.overflowOffset.left+b.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft+c.scrollSpeed;else if(a.pageX-
+b.overflowOffset.left<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(!c.axis||c.axis!="x")if(a.pageY-d(document).scrollTop()<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()-c.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()+c.scrollSpeed);if(!c.axis||c.axis!="y")if(a.pageX-d(document).scrollLeft()<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()-
+c.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()+c.scrollSpeed)}f!==false&&d.ui.ddmanager&&!c.dropBehaviour&&d.ui.ddmanager.prepareOffsets(b,a)}});d.ui.plugin.add("draggable","snap",{start:function(){var a=d(this).data("draggable"),b=a.options;a.snapElements=[];d(b.snap.constructor!=String?b.snap.items||":data(draggable)":b.snap).each(function(){var c=d(this),f=c.offset();this!=a.element[0]&&a.snapElements.push({item:this,
+width:c.outerWidth(),height:c.outerHeight(),top:f.top,left:f.left})})},drag:function(a,b){for(var c=d(this).data("draggable"),f=c.options,e=f.snapTolerance,g=b.offset.left,n=g+c.helperProportions.width,m=b.offset.top,o=m+c.helperProportions.height,h=c.snapElements.length-1;h>=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e<g&&g<k+e&&j-e<m&&m<l+e||i-e<g&&g<k+e&&j-e<o&&o<l+e||i-e<n&&n<k+e&&j-e<m&&m<l+e||i-e<n&&n<k+e&&j-e<o&&
+o<l+e){if(f.snapMode!="inner"){var p=Math.abs(j-o)<=e,q=Math.abs(l-m)<=e,r=Math.abs(i-n)<=e,s=Math.abs(k-g)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:j-c.helperProportions.height,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:l,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:i-c.helperProportions.width}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:k}).left-c.margins.left}var t=
+p||q||r||s;if(f.snapMode!="outer"){p=Math.abs(j-m)<=e;q=Math.abs(l-o)<=e;r=Math.abs(i-g)<=e;s=Math.abs(k-n)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:j,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:l-c.helperProportions.height,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:i}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:k-c.helperProportions.width}).left-c.margins.left}if(!c.snapElements[h].snapping&&
+(p||q||r||s||t))c.options.snap.snap&&c.options.snap.snap.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[h].item}));c.snapElements[h].snapping=p||q||r||s||t}else{c.snapElements[h].snapping&&c.options.snap.release&&c.options.snap.release.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[h].item}));c.snapElements[h].snapping=false}}}});d.ui.plugin.add("draggable","stack",{start:function(){var a=d(this).data("draggable").options;a=d.makeArray(d(a.stack)).sort(function(c,f){return(parseInt(d(c).css("zIndex"),
+10)||0)-(parseInt(d(f).css("zIndex"),10)||0)});if(a.length){var b=parseInt(a[0].style.zIndex)||0;d(a).each(function(c){this.style.zIndex=b+c});this[0].style.zIndex=b+a.length}}});d.ui.plugin.add("draggable","zIndex",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("zIndex"))b._zIndex=a.css("zIndex");a.css("zIndex",b.zIndex)},stop:function(a,b){a=d(this).data("draggable").options;a._zIndex&&d(b.helper).css("zIndex",a._zIndex)}})})(jQuery);
+(function(d){d.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,b=a.accept;this.isover=0;this.isout=1;this.accept=d.isFunction(b)?b:function(c){return c.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};d.ui.ddmanager.droppables[a.scope]=d.ui.ddmanager.droppables[a.scope]||[];d.ui.ddmanager.droppables[a.scope].push(this);
+a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=d.ui.ddmanager.droppables[this.options.scope],b=0;b<a.length;b++)a[b]==this&&a.splice(b,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,b){if(a=="accept")this.accept=d.isFunction(b)?b:function(c){return c.is(b)};d.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&
+this.element.addClass(this.options.activeClass);b&&this._trigger("activate",a,this.ui(b))},_deactivate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);b&&this._trigger("deactivate",a,this.ui(b))},_over:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);
+this._trigger("over",a,this.ui(b))}},_out:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",a,this.ui(b))}},_drop:function(a,b){var c=b||d.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g=
+d.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==c.options.scope&&g.accept.call(g.element[0],c.currentItem||c.element)&&d.ui.intersect(c,d.extend(g,{offset:g.element.offset()}),g.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",
+a,this.ui(c));return this.element}return false},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}});d.extend(d.ui.droppable,{version:"1.8.4"});d.ui.intersect=function(a,b,c){if(!b.offset)return false;var e=(a.positionAbs||a.position.absolute).left,g=e+a.helperProportions.width,f=(a.positionAbs||a.position.absolute).top,h=f+a.helperProportions.height,i=b.offset.left,k=i+b.proportions.width,j=b.offset.top,l=j+b.proportions.height;
+switch(c){case "fit":return i<=e&&g<=k&&j<=f&&h<=l;case "intersect":return i<e+a.helperProportions.width/2&&g-a.helperProportions.width/2<k&&j<f+a.helperProportions.height/2&&h-a.helperProportions.height/2<l;case "pointer":return d.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,j,i,b.proportions.height,b.proportions.width);case "touch":return(f>=j&&f<=l||h>=j&&h<=l||f<j&&h>l)&&(e>=
+i&&e<=k||g>=i&&g<=k||e<i&&g>k);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f<c.length;f++)if(!(c[f].options.disabled||a&&!c[f].accept.call(c[f].element[0],a.currentItem||a.element))){for(var h=0;h<g.length;h++)if(g[h]==c[f].element[0]){c[f].proportions.height=0;continue a}c[f].visible=c[f].element.css("display")!=
+"none";if(c[f].visible){c[f].offset=c[f].element.offset();c[f].proportions={width:c[f].element[0].offsetWidth,height:c[f].element[0].offsetHeight};e=="mousedown"&&c[f]._activate.call(c[f],b)}}},drop:function(a,b){var c=false;d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&d.ui.intersect(a,this,this.options.tolerance))c=c||this._drop.call(this,b);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem||
+a.element)){this.isout=1;this.isover=0;this._deactivate.call(this,b)}}});return c},drag:function(a,b){a.options.refreshPositions&&d.ui.ddmanager.prepareOffsets(a,b);d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var c=d.ui.intersect(a,this,this.options.tolerance);if(c=!c&&this.isover==1?"isout":c&&this.isover==0?"isover":null){var e;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){e=
+d.data(g[0],"droppable");e.greedyChild=c=="isover"?1:0}}if(e&&c=="isover"){e.isover=0;e.isout=1;e._out.call(e,b)}this[c]=1;this[c=="isout"?"isover":"isout"]=0;this[c=="isover"?"_over":"_out"].call(this,b);if(e&&c=="isout"){e.isout=0;e.isover=1;e._over.call(e,b)}}}})}}})(jQuery);
+(function(e){e.widget("ui.resizable",e.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");e.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,
+_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&e.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(e('<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=a.handles||(!e(".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 c=this.handles.split(",");this.handles={};for(var d=0;d<c.length;d++){var f=e.trim(c[d]),g=e('<div class="ui-resizable-handle '+("ui-resizable-"+f)+'"></div>');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor==
+String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection();
+this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};
+if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),
+d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=
+this.helper.offset();this.position={left:c,top:f};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:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:
+this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",
+b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;
+f={width:c.size.width-(f?0:c.sizeDiff.width),height:c.size.height-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",
+b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top=
+a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=l(b.height)&&a.maxHeight&&a.maxHeight<b.height,g=l(b.width)&&a.minWidth&&a.minWidth>b.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,
+k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var d=[c.css("borderTopWidth"),
+c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],f=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=e.map(d,function(g,h){g=parseInt(g,10)||0;h=parseInt(f[h],10)||0;return g+h})}e.browser.msie&&(e(b).is(":hidden")||e(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=
+this.element.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+
+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,
+arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,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}}});e.extend(e.ui.resizable,
+{version:"1.8.4"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,
+function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=
+(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=
+false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-
+a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",
+b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top",
+"Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,
+f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=
+a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+
+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&
+e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",
+height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=
+d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery);
+(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
+selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
+c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting",
+c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d=
+this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");
+a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&
+!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=
+e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.4"})})(jQuery);
+(function(d){d.widget("ui.sortable",d.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,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:1E3},_create:function(){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 a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,
+arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=
+c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);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");d.extend(this.offset,
+{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();
+if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",
+a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");
+if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop+b.scrollSpeed;else if(a.pageY-this.overflowOffset.top<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop-b.scrollSpeed;if(this.overflowOffset.left+
+this.scrollParent[0].offsetWidth-a.pageX<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft+b.scrollSpeed;else if(a.pageX-this.overflowOffset.left<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft-b.scrollSpeed}else{if(a.pageY-d(document).scrollTop()<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()-b.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()+
+b.scrollSpeed);if(a.pageX-d(document).scrollLeft()<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()-b.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()+b.scrollSpeed)}c!==false&&d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a)}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(b=this.items.length-1;b>=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,
+c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==
+document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp();this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",
+null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):
+d(this.domPosition.parent).prepend(this.currentItem);return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||
+"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+j<k&&b+l>g&&b+l<h;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?j:g<b+
+this.helperProportions.width/2&&c-this.helperProportions.width/2<h&&i<e+this.helperProportions.height/2&&f-this.helperProportions.height/2<k},_intersectsWithPointer:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width);b=b&&a;a=this._getDragVerticalDirection();var c=this._getDragHorizontalDirection();if(!b)return false;return this.floating?c&&c=="right"||a=="down"?2:1:a&&(a=="down"?
+2:1)},_intersectsWithSides:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width);var c=this._getDragVerticalDirection(),e=this._getDragHorizontalDirection();return this.floating&&e?e=="right"&&a||e=="left"&&!a:c&&(c=="down"&&b||c=="up"&&!b)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},
+_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=
+this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=
+this.currentItem.find(":data(sortable-item)"),b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(a){this.items=[];this.containers=[this];var b=this.items,c=[[d.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):d(this.options.items,this.element),this]],e=this._connectWith();if(e)for(var f=e.length-1;f>=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");
+if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h<g;h++){i=d(e[h]);i.data("sortable-item",a);b.push({item:i,instance:a,width:0,height:0,left:0,top:0})}}},refreshPositions:function(a){if(this.offsetParent&&this.helper)this.offset.parent=this._getParentOffset();for(var b=this.items.length-1;b>=
+0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=
+this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},
+update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=
+null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));
+this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)<b){b=Math.abs(h-f);e=this.items[g]}}if(e||this.options.dropOnEmpty){this.currentContainer=this.containers[c];e?this._rearrange(a,e,null,true):this._rearrange(a,
+null,this.containers[c].element,true);this._trigger("change",a,this._uiHash());this.containers[c]._trigger("change",a,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}}},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a,this.currentItem])):b.helper=="clone"?this.currentItem.clone():this.currentItem;a.parents("body").length||
+d(b.appendTo!="parent"?b.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);if(a[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(a[0].style.width==""||b.forceHelperSize)a.width(this.currentItem.width());if(a[0].style.height==""||b.forceHelperSize)a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){if(typeof a==
+"string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition==
+"absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition==
+"relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.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 a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-
+this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var b=d(a.containment)[0];a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),
+10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?
+this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=
+this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]))this.offset.relative=this._getRelativeOffset();var f=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])f=this.containment[0]+
+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=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-b.grid[1]:g+b.grid[1]:g;f=this.originalPageX+Math.round((f-this.originalPageX)/b.grid[0])*b.grid[0];f=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-b.grid[0]:f+b.grid[0]:f}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():
+e?0:c.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())}},_rearrange:function(a,b,c,e){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?b.item[0]:b.item[0].nextSibling);this.counter=this.counter?++this.counter:1;var f=this,g=this.counter;window.setTimeout(function(){g==
+f.counter&&f.refreshPositions(!e)},0)},_clear:function(a,b){this.reverting=false;var c=[];!this._noFinalSort&&this.currentItem[0].parentNode&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var e in this._storedCSS)if(this._storedCSS[e]=="auto"||this._storedCSS[e]=="static")this._storedCSS[e]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!b&&c.push(function(f){this._trigger("receive",
+f,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])&&!b)c.push(function(f){this._trigger("update",f,this._uiHash())});if(!d.ui.contains(this.element[0],this.currentItem[0])){b||c.push(function(f){this._trigger("remove",f,this._uiHash())});for(e=this.containers.length-1;e>=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",
+g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=
+0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);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(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}return false}b||this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
+this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!b){for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){d.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()},_uiHash:function(a){var b=a||this;return{helper:b.helper,placeholder:b.placeholder||d([]),position:b.position,originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:a?a.element:null}}});
+d.extend(d.ui.sortable,{version:"1.8.4"})})(jQuery);
+jQuery.effects||function(f,j){function l(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],
+16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return m.transparent;return m[f.trim(c).toLowerCase()]}function r(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return l(b)}function n(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
+a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function o(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in s||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function t(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d=
+a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:f.fx.speeds[b]||f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=r(b.elem,a);b.end=l(b.end);b.colorInit=
+true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var m={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]},p=["add","remove","toggle"],s={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,d){if(f.isFunction(b)){d=b;b=null}return this.each(function(){var e=f(this),g=e.attr("style")||" ",h=o(n.call(this)),q,u=e.attr("className");f.each(p,function(v,
+i){c[i]&&e[i+"Class"](c[i])});q=o(n.call(this));e.attr("className",u);e.animate(t(h,q),a,b,function(){f.each(p,function(v,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)})})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?
+f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.4",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==
+null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b=0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();
+var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});
+c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c||
+typeof c=="number"||f.fx.speeds[c])return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c])return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||typeof c=="boolean"||f.isFunction(c))return this.__toggle.apply(this,
+arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,
+a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+
+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,
+10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*
+a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,
+a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,
+a,b,d,e,g){if(g==j)g=1.70158;if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+
+b;return f.easing.easeOutBounce(c,a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
+(function(b){b.effects.blind=function(c){return this.queue(function(){var a=b(this),g=["position","top","left"],f=b.effects.setMode(a,c.options.mode||"hide"),d=c.options.direction||"vertical";b.effects.save(a,g);a.show();var e=b.effects.createWrapper(a).css({overflow:"hidden"}),h=d=="vertical"?"height":"width";d=d=="vertical"?e.height():e.width();f=="show"&&e.css(h,0);var i={};i[h]=f=="show"?d:0;e.animate(i,c.duration,c.options.easing,function(){f=="hide"&&a.hide();b.effects.restore(a,g);b.effects.removeWrapper(a);
+c.callback&&c.callback.apply(a[0],arguments);a.dequeue()})})}})(jQuery);
+(function(e){e.effects.bounce=function(b){return this.queue(function(){var a=e(this),l=["position","top","left"],h=e.effects.setMode(a,b.options.mode||"effect"),d=b.options.direction||"up",c=b.options.distance||20,m=b.options.times||5,i=b.duration||250;/show|hide/.test(h)&&l.push("opacity");e.effects.save(a,l);a.show();e.effects.createWrapper(a);var f=d=="up"||d=="down"?"top":"left";d=d=="up"||d=="left"?"pos":"neg";c=b.options.distance||(f=="top"?a.outerHeight({margin:true})/3:a.outerWidth({margin:true})/
+3);if(h=="show")a.css("opacity",0).css(f,d=="pos"?-c:c);if(h=="hide")c/=m*2;h!="hide"&&m--;if(h=="show"){var g={opacity:1};g[f]=(d=="pos"?"+=":"-=")+c;a.animate(g,i/2,b.options.easing);c/=2;m--}for(g=0;g<m;g++){var j={},k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing);c=h=="hide"?c*2:c/2}if(h=="hide"){g={opacity:0};g[f]=(d=="pos"?"-=":"+=")+c;a.animate(g,i/2,b.options.easing,function(){a.hide();e.effects.restore(a,l);e.effects.removeWrapper(a);
+b.callback&&b.callback.apply(this,arguments)})}else{j={};k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing,function(){e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}a.queue("fx",function(){a.dequeue()});a.dequeue()})}})(jQuery);
+(function(b){b.effects.clip=function(e){return this.queue(function(){var a=b(this),i=["position","top","left","height","width"],f=b.effects.setMode(a,e.options.mode||"hide"),c=e.options.direction||"vertical";b.effects.save(a,i);a.show();var d=b.effects.createWrapper(a).css({overflow:"hidden"});d=a[0].tagName=="IMG"?d:a;var g={size:c=="vertical"?"height":"width",position:c=="vertical"?"top":"left"};c=c=="vertical"?d.height():d.width();if(f=="show"){d.css(g.size,0);d.css(g.position,c/2)}var h={};h[g.size]=
+f=="show"?c:0;h[g.position]=f=="show"?0:c/2;d.animate(h,{queue:false,duration:e.duration,easing:e.options.easing,complete:function(){f=="hide"&&a.hide();b.effects.restore(a,i);b.effects.removeWrapper(a);e.callback&&e.callback.apply(a[0],arguments);a.dequeue()}})})}})(jQuery);
+(function(c){c.effects.drop=function(d){return this.queue(function(){var a=c(this),h=["position","top","left","opacity"],e=c.effects.setMode(a,d.options.mode||"hide"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a);var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true})/2:a.outerWidth({margin:true})/2);if(e=="show")a.css("opacity",0).css(f,b=="pos"?-g:g);var i={opacity:e=="show"?1:
+0};i[f]=(e=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+(function(j){j.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode=a.options.mode=="toggle"?j(this).is(":visible")?"hide":"show":a.options.mode;var b=j(this).show().css("visibility","hidden"),g=b.offset();g.top-=parseInt(b.css("marginTop"),10)||0;g.left-=parseInt(b.css("marginLeft"),10)||0;for(var h=b.outerWidth(true),i=b.outerHeight(true),e=0;e<c;e++)for(var f=
+0;f<d;f++)b.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+
+e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery);
+(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","left"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],10)/100*
+f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);
+(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&&
+this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c<times;c++){b.animate({opacity:animateTo},duration,a.options.easing);animateTo=(animateTo+1)%2}b.animate({opacity:animateTo},duration,
+a.options.easing,function(){animateTo==0&&b.hide();a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()}).dequeue()})}})(jQuery);
+(function(c){c.effects.puff=function(b){return this.queue(function(){var a=c(this),e=c.effects.setMode(a,b.options.mode||"hide"),g=parseInt(b.options.percent,10)||150,h=g/100,i={height:a.height(),width:a.width()};c.extend(b.options,{fade:true,mode:e,percent:e=="hide"?g:100,from:e=="hide"?i:{height:i.height*h,width:i.width*h}});a.effect("scale",b.options,b.duration,b.callback);a.dequeue()})};c.effects.scale=function(b){return this.queue(function(){var a=c(this),e=c.extend(true,{},b.options),g=c.effects.setMode(a,
+b.options.mode||"effect"),h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:g=="hide"?0:100),i=b.options.direction||"both",f=b.options.origin;if(g!="effect"){e.origin=f||["middle","center"];e.restore=true}f={height:a.height(),width:a.width()};a.from=b.options.from||(g=="show"?{height:0,width:0}:f);h={y:i!="horizontal"?h/100:1,x:i!="vertical"?h/100:1};a.to={height:f.height*h.y,width:f.width*h.x};if(b.options.fade){if(g=="show"){a.from.opacity=0;a.to.opacity=1}if(g=="hide"){a.from.opacity=
+1;a.to.opacity=0}}e.from=a.from;e.to=a.to;e.mode=g;a.effect("size",e,b.duration,b.callback);a.dequeue()})};c.effects.size=function(b){return this.queue(function(){var a=c(this),e=["position","top","left","width","height","overflow","opacity"],g=["position","top","left","overflow","opacity"],h=["width","height","overflow"],i=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],k=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=c.effects.setMode(a,
+b.options.mode||"effect"),n=b.options.restore||false,m=b.options.scale||"both",l=b.options.origin,j={height:a.height(),width:a.width()};a.from=b.options.from||j;a.to=b.options.to||j;if(l){l=c.effects.getBaseline(l,j);a.from.top=(j.height-a.from.height)*l.y;a.from.left=(j.width-a.from.width)*l.x;a.to.top=(j.height-a.to.height)*l.y;a.to.left=(j.width-a.to.width)*l.x}var d={from:{y:a.from.height/j.height,x:a.from.width/j.width},to:{y:a.to.height/j.height,x:a.to.width/j.width}};if(m=="box"||m=="both"){if(d.from.y!=
+d.to.y){e=e.concat(f);a.from=c.effects.setTransition(a,f,d.from.y,a.from);a.to=c.effects.setTransition(a,f,d.to.y,a.to)}if(d.from.x!=d.to.x){e=e.concat(k);a.from=c.effects.setTransition(a,k,d.from.x,a.from);a.to=c.effects.setTransition(a,k,d.to.x,a.to)}}if(m=="content"||m=="both")if(d.from.y!=d.to.y){e=e.concat(i);a.from=c.effects.setTransition(a,i,d.from.y,a.from);a.to=c.effects.setTransition(a,i,d.to.y,a.to)}c.effects.save(a,n?e:g);a.show();c.effects.createWrapper(a);a.css("overflow","hidden").css(a.from);
+if(m=="content"||m=="both"){f=f.concat(["marginTop","marginBottom"]).concat(i);k=k.concat(["marginLeft","marginRight"]);h=e.concat(f).concat(k);a.find("*[width]").each(function(){child=c(this);n&&c.effects.save(child,h);var o={height:child.height(),width:child.width()};child.from={height:o.height*d.from.y,width:o.width*d.from.x};child.to={height:o.height*d.to.y,width:o.width*d.to.x};if(d.from.y!=d.to.y){child.from=c.effects.setTransition(child,f,d.from.y,child.from);child.to=c.effects.setTransition(child,
+f,d.to.y,child.to)}if(d.from.x!=d.to.x){child.from=c.effects.setTransition(child,k,d.from.x,child.from);child.to=c.effects.setTransition(child,k,d.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){n&&c.effects.restore(child,h)})})}a.animate(a.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){a.to.opacity===0&&a.css("opacity",a.from.opacity);p=="hide"&&a.hide();c.effects.restore(a,n?e:g);c.effects.removeWrapper(a);b.callback&&
+b.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+(function(d){d.effects.shake=function(a){return this.queue(function(){var b=d(this),j=["position","top","left"];d.effects.setMode(b,a.options.mode||"effect");var c=a.options.direction||"left",e=a.options.distance||20,l=a.options.times||3,f=a.duration||a.options.duration||140;d.effects.save(b,j);b.show();d.effects.createWrapper(b);var g=c=="up"||c=="down"?"top":"left",h=c=="up"||c=="left"?"pos":"neg";c={};var i={},k={};c[g]=(h=="pos"?"-=":"+=")+e;i[g]=(h=="pos"?"+=":"-=")+e*2;k[g]=(h=="pos"?"-=":"+=")+
+e*2;b.animate(c,f,a.options.easing);for(e=1;e<l;e++)b.animate(i,f,a.options.easing).animate(k,f,a.options.easing);b.animate(i,f,a.options.easing).animate(c,f/2,a.options.easing,function(){d.effects.restore(b,j);d.effects.removeWrapper(b);a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()});b.dequeue()})}})(jQuery);
+(function(c){c.effects.slide=function(d){return this.queue(function(){var a=c(this),h=["position","top","left"],e=c.effects.setMode(a,d.options.mode||"show"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a).css({overflow:"hidden"});var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true}):a.outerWidth({margin:true}));if(e=="show")a.css(f,b=="pos"?-g:g);var i={};i[f]=(e=="show"?b=="pos"?
+"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+(function(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments);
+b.dequeue()})})}})(jQuery);
+(function(c){c.widget("ui.accordion",{options:{active:0,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()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");
+a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
+if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var f=d.closest(".ui-accordion-header");a.active=f.length?f:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",function(g){return a._keydown(g)}).next().attr("role",
+"tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(g){a._clickHandler.call(a,g,this);g.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("<span></span>").addClass("ui-icon "+a.icons.header).prependTo(this.headers);
+this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex");
+this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();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 ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons();
+b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,f=this.headers.index(a.target),g=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:g=this.headers[(f+1)%d];break;case b.LEFT:case b.UP:g=this.headers[(f-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target);
+a.preventDefault()}if(g){c(a.target).attr("tabIndex",-1);c(g).attr("tabIndex",0);g.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+
+c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options;
+if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);
+a.next().addClass("ui-accordion-content-active")}h=a.next();f=this.active.next();g={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):h,oldContent:f};d=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(h,f,g,b,d)}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);
+this.active.next().addClass("ui-accordion-content-active");var f=this.active.next(),g={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:f},h=this.active=c([]);this._toggle(h,f,g)}},_toggle:function(a,b,d,f,g){var h=this,e=h.options;h.toShow=a;h.toHide=b;h.data=d;var j=function(){if(h)return h._completed.apply(h,arguments)};h._trigger("changestart",null,h.data);h.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&f?{toShow:c([]),toHide:b,complete:j,
+down:g,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:g,autoHeight:e.autoHeight||e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;f=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!f[k]&&!c.easing[k])k="slide";f[k]||(f[k]=function(l){this.slide(l,{easing:k,duration:i||700})});
+f[k](d)}else{if(e.collapsible&&f)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.4",animations:{slide:function(a,
+b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),f=0,g={},h={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){h[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);g[i]={value:j[1],
+unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(h,{step:function(j,i){if(i.prop=="height")f=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=f*g[i.prop].value+g[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide",
+paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery);
+(function(e){e.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},_create:function(){var a=this,b=this.element[0].ownerDocument;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!a.options.disabled){var d=e.ui.keyCode;switch(c.keyCode){case d.PAGE_UP:a._move("previousPage",
+c);break;case d.PAGE_DOWN:a._move("nextPage",c);break;case d.UP:a._move("previous",c);c.preventDefault();break;case d.DOWN:a._move("next",c);c.preventDefault();break;case d.ENTER:case d.NUMPAD_ENTER:a.menu.element.is(":visible")&&c.preventDefault();case d.TAB:if(!a.menu.active)return;a.menu.select(c);break;case d.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);
+break}}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=e("<ul></ul>").addClass("ui-autocomplete").appendTo(e(this.options.appendTo||"body",b)[0]).mousedown(function(c){var d=a.menu.element[0];
+c.target===d&&setTimeout(function(){e(document).one("mousedown",function(f){f.target!==a.element[0]&&f.target!==d&&!e.ui.contains(d,f.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,d){d=d.item.data("item.autocomplete");false!==a._trigger("focus",null,{item:d})&&/^key/.test(c.originalEvent.type)&&a.element.val(d.value)},selected:function(c,d){d=d.item.data("item.autocomplete");var f=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();
+a.previous=f}false!==a._trigger("select",c,{item:d})&&a.element.val(d.value);a.close(c);a.selectedItem=d},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();
+e.Widget.prototype.destroy.call(this)},_setOption:function(a,b){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(e(b||"body",this.element[0].ownerDocument)[0])},_initSource:function(){var a,b;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(c,d){d(e.ui.autocomplete.filter(a,c.term))}}else if(typeof this.options.source==="string"){b=this.options.source;this.source=function(c,d){e.getJSON(b,
+c,d)}}else this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search")!==false)return this._search(a)},_search:function(a){this.term=this.element.addClass("ui-autocomplete-loading").val();this.source({term:a},this.response)},_response:function(a){if(a.length){a=this._normalize(a);this._suggest(a);this._trigger("open")}else this.close();this.element.removeClass("ui-autocomplete-loading")},
+close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this._trigger("close",a);this.menu.element.hide();this.menu.deactivate()}},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return e.map(a,function(b){if(typeof b==="string")return{label:b,value:b};return e.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(a){var b=
+this.menu.element.empty().zIndex(this.element.zIndex()+1),c;this._renderMenu(b,a);this.menu.deactivate();this.menu.refresh();this.menu.element.show().position(e.extend({of:this.element},this.options.position));a=b.width("").outerWidth();c=this.element.outerWidth();b.outerWidth(Math.max(a,c))},_renderMenu:function(a,b){var c=this;e.each(b,function(d,f){c._renderItem(a,f)})},_renderItem:function(a,b){return e("<li></li>").data("item.autocomplete",b).append(e("<a></a>").text(b.label)).appendTo(a)},_move:function(a,
+b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,b){var c=new RegExp(e.ui.autocomplete.escapeRegex(b),"i");return e.grep(a,function(d){return c.test(d.label||d.value||
+d)})}})})(jQuery);
+(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(b){if(e(b.target).closest(".ui-menu-item a").length){b.preventDefault();a.select(b)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(b){a.activate(b,
+e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.attr("scrollTop"),f=this.element.height();if(c<0)this.element.attr("scrollTop",d+c);else c>f&&this.element.attr("scrollTop",d+c-f+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:b})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");
+this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(c,a):this.activate(c,this.element.children(b))}else this.activate(c,
+this.element.children(b))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(":first"));else{var b=this.active.offset().top,c=this.element.height(),d=this.element.children("li").filter(function(){var f=e(this).offset().top-b-c+e(this).height();return f<10&&f>-10});d.length||(d=this.element.children(":last"));this.activate(a,d)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||
+this.first())this.activate(a,this.element.children(":last"));else{var b=this.active.offset().top,c=this.element.height();result=this.element.children("li").filter(function(){var d=e(this).offset().top-b+c-e(this).height();return d<10&&d>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element.attr("scrollHeight")},select:function(a){this._trigger("selected",
+a,{item:this.active})}})})(jQuery);
+(function(a){var g,i=function(b){a(":ui-button",b.target.form).each(function(){var c=a(this).data("button");setTimeout(function(){c.refresh()},1)})},h=function(b){var c=b.name,d=b.form,e=a([]);if(c)e=d?a(d).find("[name='"+c+"']"):a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form});return e};a.widget("ui.button",{options:{text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",i);this._determineButtonType();
+this.hasTitle=!!this.buttonElement.attr("title");var b=this,c=this.options,d=this.type==="checkbox"||this.type==="radio",e="ui-state-hover"+(!d?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){a(this).addClass("ui-state-hover");this===g&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button",
+function(){c.disabled||a(this).removeClass(e)}).bind("focus.button",function(){a(this).addClass("ui-state-focus")}).bind("blur.button",function(){a(this).removeClass("ui-state-focus")});d&&this.element.bind("change.button",function(){b.refresh()});if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).toggleClass("ui-state-active");b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",
+function(){if(c.disabled)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);var f=b.element[0];h(f).not(f).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");g=this;a(document).one("mouseup",function(){g=null})}).bind("mouseup.button",function(){if(c.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button",
+function(f){if(c.disabled)return false;if(f.keyCode==a.ui.keyCode.SPACE||f.keyCode==a.ui.keyCode.ENTER)a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(f){f.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",c.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?
+"input":"button";if(this.type==="checkbox"||this.type==="radio"){this.buttonElement=this.element.parents().last().find("label[for="+this.element.attr("id")+"]");this.element.addClass("ui-helper-hidden-accessible");var b=this.element.is(":checked");b&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active  ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());
+this.hasTitle||this.buttonElement.removeAttr("title");a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")h(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed",
+true):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),
+c=a("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>");d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary");
+this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()},
+destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery);
+(function(d,G){function L(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=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"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",
+minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>')}function E(a,b){d.extend(a,
+b);for(var c in b)if(b[c]==null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.4"}});var y=(new Date).getTime();d.extend(L.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=
+f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')}},
+_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&
+b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==
+""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,
+c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),
+true);this._updateDatepicker(b);this._updateAlternate(b)}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{});b=b&&b.constructor==
+Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);
+d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},
+_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=
+d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;
+for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&
+this._hideDatepicker();var h=this._getDateDatepicker(a,true);E(e.settings,f);this._attachments(d(a),e);this._autoSize(e);this._setDateDatepicker(a,h);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&
+!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass,b.dpDiv).add(d("td."+d.datepicker._currentClass,b.dpDiv));c[0]?d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker();
+return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||
+a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,
+a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));
+var c=String.fromCharCode(a.charCode==G?a.keyCode:a.charCode);return a.ctrlKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||
+a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);
+d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&
+d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=d.datepicker._getBorders(b.dpDiv);b.dpDiv.find("iframe.ui-datepicker-cover").css({left:-i[0],top:-i[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,
+h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a)).find("iframe.ui-datepicker-cover").css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){d(this).removeClass("ui-state-hover");
+this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover");
+this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);var e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");
+a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus()},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),
+k=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>k&&k>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"];
+a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():
+"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&
+!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;
+b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=
+this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=
+d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,
+"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b==
+"object"?b.toString():b+"";if(b=="")return null;for(var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,k=c=-1,l=-1,u=-1,j=false,o=function(p){(p=z+1<a.length&&a.charAt(z+1)==p)&&z++;return p},m=function(p){o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"?4:p=="o"?
+3:2)+"}");p=b.substring(s).match(p);if(!p)throw"Missing number at position "+s;s+=p[0].length;return parseInt(p[0],10)},n=function(p,w,H){p=o(p)?H:w;for(w=0;w<p.length;w++)if(b.substr(s,p[w].length)==p[w]){s+=p[w].length;return w+1}throw"Unknown name at position "+s;},r=function(){if(b.charAt(s)!=a.charAt(z))throw"Unexpected literal at position "+s;s++},s=0,z=0;z<a.length;z++)if(j)if(a.charAt(z)=="'"&&!o("'"))j=false;else r();else switch(a.charAt(z)){case "d":l=m("d");break;case "D":n("D",f,h);break;
+case "o":u=m("o");break;case "m":k=m("m");break;case "M":k=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=new Date(m("@"));c=v.getFullYear();k=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();k=v.getMonth()+1;l=v.getDate();break;case "'":if(o("'"))r();else j=true;break;default:r()}if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){k=1;l=u;do{e=this._getDaysInMonth(c,
+k-1);if(l<=e)break;k++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,k-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=k||v.getDate()!=l)throw"Invalid date";return v},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",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";
+var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=j+1<a.length&&a.charAt(j+1)==o)&&j++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},k=function(o,m,n,r){return i(o)?r[m]:n[m]},l="",u=false;if(b)for(var j=0;j<a.length;j++)if(u)if(a.charAt(j)=="'"&&!i("'"))u=false;else l+=a.charAt(j);
+else switch(a.charAt(j)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=k("D",b.getDay(),e,f);break;case "o":l+=g("o",(b.getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5,3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=k("M",b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(j)}return l},
+_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==G?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=
+a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,
+this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,k=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,j=u.exec(h);j;){switch(j[2]||"d"){case "d":case "D":g+=parseInt(j[1],
+10);break;case "w":case "W":g+=parseInt(j[1],10)*7;break;case "m":case "M":l+=parseInt(j[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(k,l));break;case "y":case "Y":k+=parseInt(j[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(k,l));break}j=u.exec(h)}return new Date(k,l,g)};if(b=(b=b==null?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):b)&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;
+a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||
+a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),k=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?
+new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),j=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=j&&n<j?j:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-k,1)),this._getFormatConfig(a));
+n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', -"+k+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,
+g+k,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', +"+k+", 'M');\" title=\""+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>";k=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&
+a.currentDay?u:b;k=!h?k:this.formatDate(k,r,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+y+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,r)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
+y+".datepicker._gotoToday('#"+a.id+"');\">"+k+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;k=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),w=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var M=this._getDefaultDate(a),I="",C=0;C<i[0];C++){for(var N=
+"",D=0;D<i[1];D++){var J=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",x="";if(l){x+='<div class="ui-datepicker-group';if(i[1]>1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&C==0?c?
+f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,j,o,C>0||D>0,z,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var A=k?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var q=(t+h)%7;A+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+r[q]+'">'+s[q]+"</span></th>"}x+=A+"</tr></thead><tbody>";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,
+A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O<A;O++){x+="<tr>";var P=!k?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(q)+"</td>";for(t=0;t<7;t++){var F=p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,K=B&&!H||!F[0]||j&&q<j||o&&q>o;P+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(B?" ui-datepicker-other-month":"")+(q.getTime()==J.getTime()&&g==a.selectedMonth&&
+a._keyEvent||M.getTime()==q.getTime()&&M.getTime()==J.getTime()?" "+this._dayOverClass:"")+(K?" "+this._unselectableClass+" ui-state-disabled":"")+(B&&!w?"":" "+F[1]+(q.getTime()==u.getTime()?" "+this._currentClass:"")+(q.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!B||w)&&F[2]?' title="'+F[2]+'"':"")+(K?"":' onclick="DP_jQuery_'+y+".datepicker._selectDay('#"+a.id+"',"+q.getMonth()+","+q.getFullYear()+', this);return false;"')+">"+(B&&!w?"&#xa0;":K?'<span class="ui-state-default">'+q.getDate()+
+"</span>":'<a class="ui-state-default'+(q.getTime()==b.getTime()?" ui-state-highlight":"")+(q.getTime()==J.getTime()?" ui-state-active":"")+(B?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+"</td>";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+=P+"</tr>"}g++;if(g>11){g=0;m++}x+="</tbody></table>"+(l?"</div>"+(i[0]>0&&D==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");N+=x}I+=N}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':
+"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var k=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),j='<div class="ui-datepicker-title">',o="";if(h||!k)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+
+a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(j+=o+(h||!(k&&l)?"&#xa0;":""));if(h||!l)j+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,
+i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(j+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)j+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";j+="</select>"}j+=this._get(a,"yearSuffix");if(u)j+=(h||!(k&&l)?"&#xa0;":"")+o;j+="</div>";return j},_adjustInstDate:function(a,b,c){var e=
+a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,
+"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);
+c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,
+"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=
+function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));
+return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new L;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.4";window["DP_jQuery_"+y]=d})(jQuery);
+(function(c,j){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",of:window,collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");
+if(typeof this.originalTitle!=="string")this.originalTitle="";var a=this,b=a.options,d=b.title||a.originalTitle||"&#160;",f=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(i){a.moveToTop(false,
+i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var e=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);
+return false}).appendTo(e);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",f).html(d).prependTo(e);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;e.find("*").add(e).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&
+g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");
+b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,f=d.options;if(f.modal&&!a||!f.stack&&!f.modal)return d._trigger("focus",b);if(f.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=
+f.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);
+a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(f){if(f.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),e=g.filter(":first");g=g.filter(":last");if(f.target===g[0]&&!f.shiftKey){e.focus(1);return false}else if(f.target===e[0]&&f.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false,
+f=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(f);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(e,h){e=c('<button type="button"></button>').text(e).click(function(){h.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&e.button()});f.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(e){return{position:e.position,
+offset:e.offset}}var b=this,d=b.options,f=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(e,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",e,a(h))},drag:function(e,h){b._trigger("drag",e,a(h))},stop:function(e,h){d.position=[h.position.left-f.scrollLeft(),h.position.top-f.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);
+b._trigger("dragStop",e,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}a=a===j?this.options.resizable:a;var d=this,f=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:d._minHeight(),
+handles:a,start:function(e,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",e,b(h))},resize:function(e,h){d._trigger("resize",e,b(h))},stop:function(e,h){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();d._trigger("resizeStop",e,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,
+a.height)},_position:function(a){var b=[],d=[0,0],f;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,e){if(+b[g]===b[g]){d[g]=b[g];b[g]=e}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a);
+f||this.uiDialog.hide()},_setOption:function(a,b){var d=this,f=d.uiDialog,g=f.is(":data(resizable)"),e=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);e=true;break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":f.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case "draggable":b?
+d._makeDraggable():f.draggable("destroy");break;case "height":e=true;break;case "maxHeight":g&&f.resizable("option","maxHeight",b);e=true;break;case "maxWidth":g&&f.resizable("option","maxWidth",b);e=true;break;case "minHeight":g&&f.resizable("option","minHeight",b);e=true;break;case "minWidth":g&&f.resizable("option","minWidth",b);e=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&f.resizable("destroy");g&&typeof b==="string"&&f.resizable("option","handles",b);!g&&b!==false&&
+d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||"&#160;"));break;case "width":e=true;break}c.Widget.prototype._setOption.apply(d,arguments);e&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height-
+b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.4",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),
+create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),
+height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
+b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,
+function(){a=a.add(this)});a.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(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h=
+0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+=
+g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k,
+elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"?
+-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position=
+"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery);
+(function(b,c){b.widget("ui.progressbar",{options:{value:0},min:0,max:100,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.max,"aria-valuenow":this._value()});this.valueDiv=b("<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");
+this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===c)return this._value();this._setOption("value",a);return this},_setOption:function(a,d){if(a==="value"){this.options.value=d;this._refreshValue();this._trigger("change")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.max,Math.max(this.min,a))},_refreshValue:function(){var a=this.value();this.valueDiv.toggleClass("ui-corner-right",
+a===this.max).width(a+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.4"})})(jQuery);
+(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options;this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");b.disabled&&this.element.addClass("ui-slider-disabled ui-disabled");
+this.range=d([]);if(b.range){if(b.range===true){this.range=d("<div></div>");if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}else this.range=d("<div></div>");this.range.appendTo(this.element).addClass("ui-slider-range");if(b.range==="min"||b.range==="max")this.range.addClass("ui-slider-range-"+b.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle");
+if(b.values&&b.values.length)for(;d(".ui-slider-handle",this.element).length<b.values.length;)d("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".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(c){c.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();
+else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!a.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e=
+false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");h=a._start(c,f);if(h===false)return}break}i=a.options.step;h=a.options.values&&a.options.values.length?(g=a.values(f)):(g=a.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=a._valueMin();break;case d.ui.keyCode.END:g=a._valueMax();break;case d.ui.keyCode.PAGE_UP:g=a._trimAlignValue(h+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=a._trimAlignValue(h-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h===
+a._valueMax())return;g=a._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===a._valueMin())return;g=a._trimAlignValue(h-i);break}a._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(c,e);a._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},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();return this},_mouseCapture:function(a){var b=this.options,c,e,f,h,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(b.range===true&&this.values(1)===b.min){g+=1;f=d(this.handles[g])}if(this._start(a,
+g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();b=f.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-f.width()/2,top:a.pageY-b.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b=
+this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b=
+this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);
+c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var e;if(this.options.values&&this.options.values.length){e=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>e||b===1&&c<e))c=e;if(c!==this.values(b)){e=this.values();e[b]=c;a=this._trigger("slide",a,{handle:this.handles[b],value:c,values:e});this.values(b?0:1);a!==false&&this.values(b,c,true)}}else if(c!==this.value()){a=this._trigger("slide",a,{handle:this.handles[b],value:c});
+a!==false&&this.value(c)}},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value=
+this._trimAlignValue(a);this._refreshValue();this._change(null,0)}return this._value()},values:function(a,b){var c,e,f;if(arguments.length>1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f<c.length;f+=1){c[f]=this._trimAlignValue(e[f]);this._change(null,f)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(a):this.value();
+else return this._values()},_setOption:function(a,b){var c,e=0;if(d.isArray(this.options.values))e=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":if(b){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation();
+this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<e;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a)},_values:function(a){var b,c;if(arguments.length){b=this.options.values[a];
+return b=this._trimAlignValue(b)}else{b=this.options.values.slice();for(c=0;c<b.length;c+=1)b[c]=this._trimAlignValue(b[c]);return b}},_trimAlignValue:function(a){if(a<this._valueMin())return this._valueMin();if(a>this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=a%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a=
+this.options.range,b=this.options,c=this,e=!this._animateOff?b.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},b.animate);if(k===1)c.range[e?"animate":"css"]({width:f-
+g+"%"},{queue:false,duration:b.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},b.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:b.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},
+b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.4"})})(jQuery);
+(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(a,e){if(a=="selected")this.options.collapsible&&
+e==this.options.selected||this.select(e);else{this.options[a]=e;this._tabify()}},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var a=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[a].concat(d.makeArray(arguments)))},_ui:function(a,e){return{tab:a,panel:e,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var a=
+d(this);a.html(a.data("label.tabs")).removeData("label.tabs")})},_tabify:function(a){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var b=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]||
+(q=d("base")[0])&&l===q.href)){j=f.hash;f.href=j}if(h.test(j))b.panels=b.panels.add(b._sanitizeSelector(j));else if(j!=="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=b._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(c.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(b.panels[g-1]||b.list);f.data("destroy.tabs",true)}b.panels=b.panels.add(f)}else c.disabled.push(g)});if(a){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(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(b._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected=
+this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return b.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
+if(c.selected>=0&&this.anchors.length){this.panels.eq(c.selected).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");b.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[c.selected],b.panels[c.selected]))});this.load(c.selected)}d(window).bind("unload",function(){b.lis.add(b.anchors).unbind(".tabs");b.lis=b.anchors=b.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[c.collapsible?"addClass":
+"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);a=0;for(var i;i=this.lis[a];a++)d(i)[d.inArray(a,c.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs",
+function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);b._trigger("show",
+null,b._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");b._trigger("show",null,b._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){b.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);b.element.dequeue("tabs")})}:function(g,f){b.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");b.element.dequeue("tabs")};this.anchors.bind(c.event+".tabs",
+function(){var g=this,f=d(g).closest("li"),j=b.panels.filter(":not(.ui-tabs-hide)"),l=d(b._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||b._trigger("select",null,b._ui(this,l[0]))===false){this.blur();return false}c.selected=b.anchors.index(this);b.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected=-1;c.cookie&&b._cookie(c.selected,c.cookie);b.element.queue("tabs",function(){s(g,
+j)}).dequeue("tabs");this.blur();return false}else if(!j.length){c.cookie&&b._cookie(c.selected,c.cookie);b.element.queue("tabs",function(){r(g,l)});b.load(b.anchors.index(this));this.blur();return false}c.cookie&&b._cookie(c.selected,c.cookie);if(l.length){j.length&&b.element.queue("tabs",function(){s(g,j)});b.element.queue("tabs",function(){r(g,l)});b.load(b.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",
+function(){return false})},_getIndex:function(a){if(typeof a=="string")a=this.anchors.index(this.anchors.filter("[href$="+a+"]"));return a},destroy:function(){var a=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 e=d.data(this,"href.tabs");if(e)this.href=
+e;var b=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){b.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(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")});a.cookie&&this._cookie(null,a.cookie);return this},add:function(a,e,b){if(b===p)b=this.anchors.length;
+var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,a).replace(/#\{label\}/g,e));a=!a.indexOf("#")?a.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var i=d("#"+a);i.length||(i=d(h.panelTemplate).attr("id",a).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(b>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[b]);
+i.insertBefore(this.panels[b])}h.disabled=d.map(h.disabled,function(k){return k>=b?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[b],this.panels[b]));return this},remove:function(a){a=this._getIndex(a);var e=this.options,b=this.lis.eq(a).remove(),c=this.panels.eq(a).remove();
+if(b.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(a+(a+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=a}),function(h){return h>=a?--h:h});this._tabify();this._trigger("remove",null,this._ui(b.find("a")[0],c[0]));return this},enable:function(a){a=this._getIndex(a);var e=this.options;if(d.inArray(a,e.disabled)!=-1){this.lis.eq(a).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(b){return b!=a});this._trigger("enable",null,
+this._ui(this.anchors[a],this.panels[a]));return this}},disable:function(a){a=this._getIndex(a);var e=this.options;if(a!=e.selected){this.lis.eq(a).addClass("ui-state-disabled");e.disabled.push(a);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))}return this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;this.anchors.eq(a).trigger(this.options.event+".tabs");return this},
+load:function(a){a=this._getIndex(a);var e=this,b=this.options,c=this.anchors.eq(a)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(a).addClass("ui-state-processing");if(b.spinner){var i=d("span",c);i.data("label.tabs",i.html()).html(b.spinner)}this.xhr=d.ajax(d.extend({},b.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(c.hash)).html(k);e._cleanup();b.cache&&d.data(c,"cache.tabs",
+true);e._trigger("load",null,e._ui(e.anchors[a],e.panels[a]));try{b.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[a],e.panels[a]));try{b.ajaxOptions.error(k,n,a,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(a,
+e){this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.4"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(a,e){var b=this,c=this.options,h=b._rotate||(b._rotate=function(i){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var k=c.selected;b.select(++k<b.anchors.length?k:0)},a);i&&i.stopPropagation()});e=b._unrotate||(b._unrotate=!e?function(i){i.clientX&&b.rotate(null)}:
+function(){t=c.selected;h()});if(a){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(b.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/jquery.DOMWindow.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,372 @@
+(function($){
+	
+	//closeDOMWindow
+	$.fn.closeDOMWindow = function(settings){
+		
+		if(!settings){settings={};}
+		
+		var run = function(passingThis){
+			
+			if(settings.anchoredClassName){
+				var $anchorClassName = $('.'+settings.anchoredClassName);
+				$anchorClassName.fadeOut('fast',function(){
+					if($.fn.draggable){
+						$anchorClassName.draggable('destory').trigger("unload").remove();	
+					}else{
+						$anchorClassName.trigger("unload").remove();
+					}
+				});
+				if(settings.functionCallOnClose){settings.functionCallAfterClose();}
+			}else{
+				var $DOMWindowOverlay = $('#DOMWindowOverlay');
+				var $DOMWindow = $('#DOMWindow');
+				$DOMWindowOverlay.fadeOut('fast',function(){
+					$DOMWindowOverlay.trigger('unload').unbind().remove();																	  
+				});
+				$DOMWindow.fadeOut('fast',function(){
+					if($.fn.draggable){
+						$DOMWindow.draggable("destroy").trigger("unload").remove();
+					}else{
+						$DOMWindow.trigger("unload").remove();
+					}
+				});
+			
+				$(window).unbind('scroll.DOMWindow');
+				$(window).unbind('resize.DOMWindow');
+				
+				if($.fn.openDOMWindow.isIE6){$('#DOMWindowIE6FixIframe').remove();}
+				if(settings.functionCallOnClose){settings.functionCallAfterClose();}
+			}	
+		};
+		
+		if(settings.eventType){//if used with $().
+			return this.each(function(index){
+				$(this).bind(settings.eventType, function(){
+					run(this);
+					return false;
+				});
+			});
+		}else{//else called as $.function
+			run();
+		}
+		
+	};
+	
+	//allow for public call, pass settings
+	$.closeDOMWindow = function(s){$.fn.closeDOMWindow(s);};
+	
+	//openDOMWindow
+	$.fn.openDOMWindow = function(instanceSettings){	
+		
+		var shortcut =  $.fn.openDOMWindow;
+	
+		//default settings combined with callerSettings////////////////////////////////////////////////////////////////////////
+		
+		shortcut.defaultsSettings = {
+			anchoredClassName:'',
+			anchoredSelector:'',
+			borderColor:'#ccc',
+			borderSize:'4',
+			draggable:0,
+			eventType:null, //click, blur, change, dblclick, error, focus, load, mousedown, mouseout, mouseup etc...
+			fixedWindowY:100,
+			functionCallOnOpen:null,
+			functionCallOnClose:null,
+			height:500,
+			loader:0,
+			loaderHeight:0,
+			loaderImagePath:'',
+			loaderWidth:0,
+			modal:0,
+			overlay:1,
+			overlayColor:'#000',
+			overlayOpacity:'85',
+			positionLeft:0,
+			positionTop:0,
+			positionType:'centered', // centered, anchored, absolute, fixed
+			width:500, 
+			windowBGColor:'#fff',
+			windowBGImage:null, // http path
+			windowHTTPType:'get',
+			windowPadding:10,
+			windowSource:'inline', //inline, ajax, iframe
+			windowSourceID:'',
+			windowSourceURL:'',
+			windowSourceAttrURL:'href',
+			windowOverflow : 'auto',
+			ajaxParameters : {}
+		};
+		
+		var settings = $.extend({}, $.fn.openDOMWindow.defaultsSettings , instanceSettings || {});
+		
+		//Public functions
+		
+		shortcut.viewPortHeight = function(){ return self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;};
+		shortcut.viewPortWidth = function(){ return self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;};
+		shortcut.scrollOffsetHeight = function(){ return self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;};
+		shortcut.scrollOffsetWidth = function(){ return self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;};
+		shortcut.isIE6 = typeof document.body.style.maxHeight === "undefined";
+		
+		//Private Functions/////////////////////////////////////////////////////////////////////////////////////////////////////////
+		
+		var sizeOverlay = function(){
+			var $DOMWindowOverlay = $('#DOMWindowOverlay');
+			if(shortcut.isIE6){//if IE 6
+				var overlayViewportHeight = document.documentElement.offsetHeight + document.documentElement.scrollTop - 4;
+				var overlayViewportWidth = document.documentElement.offsetWidth - 21;
+				$DOMWindowOverlay.css({'height':overlayViewportHeight +'px','width':overlayViewportWidth+'px'});
+			}else{//else Firefox, safari, opera, IE 7+
+				$DOMWindowOverlay.css({'height':'100%','width':'100%','position':'fixed'});
+			}	
+		};
+		
+		var sizeIE6Iframe = function(){
+			var overlayViewportHeight = document.documentElement.offsetHeight + document.documentElement.scrollTop - 4;
+			var overlayViewportWidth = document.documentElement.offsetWidth - 21;
+			$('#DOMWindowIE6FixIframe').css({'height':overlayViewportHeight +'px','width':overlayViewportWidth+'px'});
+		};
+		
+		var centerDOMWindow = function() {
+			var $DOMWindow = $('#DOMWindow');
+			if(settings.height + 50 > shortcut.viewPortHeight()){//added 50 to be safe
+				$DOMWindow.css('left',Math.round(shortcut.viewPortWidth()/2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindow.outerWidth())/2));
+			}else{
+				$DOMWindow.css('left',Math.round(shortcut.viewPortWidth()/2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindow.outerWidth())/2));
+				$DOMWindow.css('top',Math.round(shortcut.viewPortHeight()/2) + shortcut.scrollOffsetHeight() - Math.round(($DOMWindow.outerHeight())/2));
+			}
+		};
+		
+		var centerLoader = function() {
+			var $DOMWindowLoader = $('#DOMWindowLoader');
+			if(shortcut.isIE6){//if IE 6
+				$DOMWindowLoader.css({'left':Math.round(shortcut.viewPortWidth()/2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindowLoader.innerWidth())/2),'position':'absolute'});
+				$DOMWindowLoader.css({'top':Math.round(shortcut.viewPortHeight()/2) + shortcut.scrollOffsetHeight() - Math.round(($DOMWindowLoader.innerHeight())/2),'position':'absolute'});
+			}else{
+				$DOMWindowLoader.css({'left':'50%','top':'50%','position':'fixed'});
+			}
+			
+		};
+		
+		var fixedDOMWindow = function(){
+			var $DOMWindow = $('#DOMWindow');
+			$DOMWindow.css('left', settings.positionLeft + shortcut.scrollOffsetWidth());
+			$DOMWindow.css('top', + settings.positionTop + shortcut.scrollOffsetHeight());
+		};
+		
+		var showDOMWindow = function(instance){
+			if(arguments[0]){
+				$('.'+instance+' #DOMWindowLoader').remove();
+				$('.'+instance+' #DOMWindowContent').fadeIn('fast',function(){if(settings.functionCallOnOpen){settings.functionCallOnOpen();}});
+				$('.'+instance+ '.closeDOMWindow').click(function(){
+					$.closeDOMWindow();	
+					return false;
+				});
+			}else{
+				$('#DOMWindowLoader').remove();
+				$('#DOMWindow').fadeIn('fast',function(){if(settings.functionCallOnOpen){settings.functionCallOnOpen();}});
+				$('#DOMWindow .closeDOMWindow').click(function(){						
+					$.closeDOMWindow();
+					return false;
+				});
+			}
+			
+		};
+		
+		var urlQueryToObject = function(s, q){
+			  var query = typeof(q) != 'undefined' ? q : {};
+			  s.replace(/b([^&=]*)=([^&=]*)b/g, function (m, a, d) {
+				if (typeof query[a] != 'undefined') {
+				  query[a] += ',' + d;
+				} else {
+				  query[a] = d;
+				}
+			  });
+			  return query;
+		};
+			
+		//Run Routine ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+		var run = function(passingThis){
+			
+			//get values from element clicked, or assume its passed as an option
+			settings.windowSourceID = $(passingThis).attr('href') || settings.windowSourceID;
+			settings.windowSourceURL = $(passingThis).attr(settings.windowSourceAttrURL) || settings.windowSourceURL;
+			settings.windowBGImage = settings.windowBGImage ? 'background-image:url('+settings.windowBGImage+')' : '';
+			var urlOnly, urlQueryObject;
+			
+			if(settings.positionType == 'anchored'){//anchored DOM window
+				
+				var anchoredPositions = $(settings.anchoredSelector).position();
+				var anchoredPositionX = anchoredPositions.left + settings.positionLeft;
+				var anchoredPositionY = anchoredPositions.top + settings.positionTop;
+				
+				$('body').append('<div class="'+settings.anchoredClassName+'" style="'+settings.windowBGImage+';background-repeat:no-repeat;padding:'+settings.windowPadding+'px;overflow:'+settings.windowOverflow+';position:absolute;top:'+anchoredPositionY+'px;left:'+anchoredPositionX+'px;height:'+settings.height+'px;width:'+settings.width+'px;background-color:'+settings.windowBGColor+';border:'+settings.borderSize+'px solid '+settings.borderColor+';z-index:10001"><div id="DOMWindowContent" style="display:none"></div></div>');		
+				//loader
+				if(settings.loader && settings.loaderImagePath !== ''){
+					$('.'+settings.anchoredClassName).append('<div id="DOMWindowLoader" style="width:'+settings.loaderWidth+'px;height:'+settings.loaderHeight+'px;"><img src="'+settings.loaderImagePath+'" /></div>');
+					
+				}
+
+				if($.fn.draggable){
+					if(settings.draggable){$('.' + settings.anchoredClassName).draggable({cursor:'move'});}
+				}
+				
+				switch(settings.windowSource){
+					case 'inline'://////////////////////////////// inline //////////////////////////////////////////
+						$('.' + settings.anchoredClassName+" #DOMWindowContent").append($(settings.windowSourceID).children());
+						$('.' + settings.anchoredClassName).unload(function(){// move elements back when you're finished
+							$('.' + settings.windowSourceID).append( $('.' + settings.anchoredClassName+" #DOMWindowContent").children());				
+						});
+						showDOMWindow(settings.anchoredClassName);
+					break;
+					case 'iframe'://////////////////////////////// iframe //////////////////////////////////////////
+						$('.' + settings.anchoredClassName+" #DOMWindowContent").append('<iframe frameborder="0" hspace="0" wspace="0" src="'+settings.windowSourceURL+'" name="DOMWindowIframe'+Math.round(Math.random()*1000)+'" style="width:100%;height:100%;border:none;background-color:#fff;overflow:'+settings.windowOverflow+';" class="'+settings.anchoredClassName+'Iframe" ></iframe>');
+						$('.'+settings.anchoredClassName+'Iframe').load(showDOMWindow(settings.anchoredClassName));
+					break;
+					case 'ajax'://////////////////////////////// ajax //////////////////////////////////////////	
+						if(settings.windowHTTPType == 'post'){
+							
+							if(settings.windowSourceURL.indexOf("?") !== -1){//has a query string
+								urlOnly = settings.windowSourceURL.substr(0, settings.windowSourceURL.indexOf("?"));
+								urlQueryObject = urlQueryToObject(settings.windowSourceURL, settings.ajaxParameters);
+							}else{
+								urlOnly = settings.windowSourceURL;
+								urlQueryObject = settings.ajaxParameters;
+							}
+							$('.' + settings.anchoredClassName+" #DOMWindowContent").load(urlOnly,urlQueryObject,function(){
+								showDOMWindow(settings.anchoredClassName);
+							});
+						}else{
+							if(settings.windowSourceURL.indexOf("?") == -1){ //no query string, so add one
+								settings.windowSourceURL += '?';
+							}
+							$('.' + settings.anchoredClassName+" #DOMWindowContent").load(
+								settings.windowSourceURL + '&random=' + (new Date().getTime()),function(){
+								showDOMWindow(settings.anchoredClassName);
+							});
+						}
+					break;
+				}
+				
+			}else{//centered, fixed, absolute DOM window
+				
+				//overlay & modal
+				if(settings.overlay){
+					$('body').append('<div id="DOMWindowOverlay" style="z-index:10000;display:none;position:absolute;top:0;left:0;background-color:'+settings.overlayColor+';filter:alpha(opacity='+settings.overlayOpacity+');-moz-opacity: 0.'+settings.overlayOpacity+';opacity: 0.'+settings.overlayOpacity+';"></div>');
+					if(shortcut.isIE6){//if IE 6
+						$('body').append('<iframe id="DOMWindowIE6FixIframe"  src="blank.html"  style="width:100%;height:100%;z-index:9999;position:absolute;top:0;left:0;filter:alpha(opacity=0);"></iframe>');
+						sizeIE6Iframe();
+					}
+					sizeOverlay();
+					var $DOMWindowOverlay = $('#DOMWindowOverlay');
+					$DOMWindowOverlay.fadeIn('fast');
+					if(!settings.modal){$DOMWindowOverlay.click(function(){$.closeDOMWindow();});}
+				}
+				
+				//loader
+				if(settings.loader && settings.loaderImagePath !== ''){
+					$('body').append('<div id="DOMWindowLoader" style="z-index:10002;width:'+settings.loaderWidth+'px;height:'+settings.loaderHeight+'px;"><img src="'+settings.loaderImagePath+'" /></div>');
+					centerLoader();
+				}
+
+				//add DOMwindow
+				$('body').append('<div id="DOMWindow" style="background-repeat:no-repeat;'+settings.windowBGImage+';overflow:'+settings.windowOverflow+';padding:'+settings.windowPadding+'px;display:none;height:'+settings.height+'px;width:'+settings.width+'px;background-color:'+settings.windowBGColor+';border:'+settings.borderSize+'px solid '+settings.borderColor+'; position:absolute;z-index:10001"></div>');
+				
+				var $DOMWindow = $('#DOMWindow');
+				//centered, absolute, or fixed
+				switch(settings.positionType){
+					case 'centered':
+						centerDOMWindow();
+						if(settings.height + 50 > shortcut.viewPortHeight()){//added 50 to be safe
+							$DOMWindow.css('top', (settings.fixedWindowY + shortcut.scrollOffsetHeight()) + 'px');
+						}
+					break;
+					case 'absolute':
+						$DOMWindow.css({'top':(settings.positionTop+shortcut.scrollOffsetHeight())+'px','left':(settings.positionLeft+shortcut.scrollOffsetWidth())+'px'});
+						if($.fn.draggable){
+							if(settings.draggable){$DOMWindow.draggable({cursor:'move'});}
+						}
+					break;
+					case 'fixed':
+						fixedDOMWindow();
+					break;
+					case 'anchoredSingleWindow':
+						var anchoredPositions = $(settings.anchoredSelector).position();
+						var anchoredPositionX = anchoredPositions.left + settings.positionLeft;
+						var anchoredPositionY = anchoredPositions.top + settings.positionTop;
+						$DOMWindow.css({'top':anchoredPositionY + 'px','left':anchoredPositionX+'px'});
+								
+					break;
+				}
+				
+				$(window).bind('scroll.DOMWindow',function(){
+					if(settings.overlay){sizeOverlay();}
+					if(shortcut.isIE6){sizeIE6Iframe();}
+					if(settings.positionType == 'centered'){centerDOMWindow();}
+					if(settings.positionType == 'fixed'){fixedDOMWindow();}
+				});
+
+				$(window).bind('resize.DOMWindow',function(){
+					if(shortcut.isIE6){sizeIE6Iframe();}
+					if(settings.overlay){sizeOverlay();}
+					if(settings.positionType == 'centered'){centerDOMWindow();}
+				});
+				
+				switch(settings.windowSource){
+					case 'inline'://////////////////////////////// inline //////////////////////////////////////////
+						$DOMWindow.append($(settings.windowSourceID).children());
+						$DOMWindow.unload(function(){// move elements back when you're finished
+							$(settings.windowSourceID).append($DOMWindow.children());				
+						});
+						showDOMWindow();
+					break;
+					case 'iframe'://////////////////////////////// iframe //////////////////////////////////////////
+						var name = 'DOMWindowIframe'+Math.round(Math.random()*1000);
+						$DOMWindow.append('<iframe frameborder="0" hspace="0" wspace="0" src="'+settings.windowSourceURL+'" name="'+name+'" style="width:100%;height:100%;border:none;background-color:#fff;overflow:'+settings.windowOverflow+';" id="DOMWindowIframe" ></iframe>');
+						$('#DOMWindowIframe').load(showDOMWindow());
+					break;
+					case 'ajax'://////////////////////////////// ajax //////////////////////////////////////////
+						if(settings.windowHTTPType == 'post'){
+							
+							if(settings.windowSourceURL.indexOf("?") !== -1){//has a query string
+								urlOnly = settings.windowSourceURL.substr(0, settings.windowSourceURL.indexOf("?"));
+								urlQueryObject = urlQueryToObject(settings.windowSourceURL, settings.ajaxParameters);
+							}else{
+								urlOnly = settings.windowSourceURL;
+								urlQueryObject = settings.ajaxParameters;
+							}
+							$DOMWindow.load(urlOnly,urlQueryObject,function(){
+								showDOMWindow();
+							});
+						}else{
+							if(settings.windowSourceURL.indexOf("?") == -1){ //no query string, so add one
+								settings.windowSourceURL += '?';
+							}
+							$DOMWindow.load(
+								settings.windowSourceURL + '&random=' + (new Date().getTime()),function(){
+								showDOMWindow();
+							});
+						}
+					break;
+				}
+				
+			}//end if anchored, or absolute, fixed, centered
+			
+		};//end run()
+		
+		if(settings.eventType){//if used with $().
+			return this.each(function(index){				  
+				$(this).bind(settings.eventType,function(){
+					run(this);
+					return false;
+				});
+			});	
+		}else{//else called as $.function
+			run();
+		}
+		
+	};//end function openDOMWindow
+	
+	//allow for public call, pass settings
+	$.openDOMWindow = function(s){$.fn.openDOMWindow(s);};
+	
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/jquery.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,19 @@
+/*
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
+ *
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
+ *
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
+ */
+(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
+/*
+ * Sizzle CSS Selector Engine - v0.9.3
+ *  Copyright 2009, The Dojo Foundation
+ *  Released under the MIT, BSD, and GPL Licenses.
+ *  More information: http://sizzlejs.com/
+ */
+(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.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\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<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>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/jquery.min.js	Sun Nov 14 20:25:22 2010 +0100
@@ -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);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/jquery.nyroModal.min.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,11 @@
+/*
+ * nyroModal - jQuery Plugin
+ * http://nyromodal.nyrodev.com
+ *
+ * Copyright (c) 2010 Cedric Nirousset (nyrodev.com)
+ * Licensed under the MIT license
+ *
+ * $Date: 2010-02-23 (Tue, 23 Feb 2010) $
+ * $version: 1.6.2
+ */
+jQuery(function($){var userAgent=navigator.userAgent.toLowerCase();var browserVersion=(userAgent.match(/.+(?:rv|webkit|khtml|opera|msie)[\/: ]([\d.]+)/)||[0,'0'])[1];var isIE6=(/msie/.test(userAgent)&&!/opera/.test(userAgent)&&parseInt(browserVersion)<7&&(!window.XMLHttpRequest||typeof(XMLHttpRequest)==='function'));var body=$('body');var currentSettings;var callingSettings;var shouldResize=false;var gallery={};var fixFF=false;var contentElt;var contentEltLast;var modal={started:false,ready:false,dataReady:false,anim:false,animContent:false,loadingShown:false,transition:false,resizing:false,closing:false,error:false,blocker:null,blockerVars:null,full:null,bg:null,loading:null,tmp:null,content:null,wrapper:null,contentWrapper:null,scripts:new Array(),scriptsShown:new Array()};var resized={width:false,height:false,windowResizing:false};var initSettingsSize={width:null,height:null,windowResizing:true};var windowResizeTimeout;$.fn.nyroModal=function(settings){if(!this)return false;return this.each(function(){var me=$(this);if(this.nodeName.toLowerCase()=='form'){me.unbind('submit.nyroModal').bind('submit.nyroModal',function(e){if(e.isDefaultPrevented())return false;if(me.data('nyroModalprocessing'))return true;if(this.enctype=='multipart/form-data'){processModal($.extend(settings,{from:this}));return true}e.preventDefault();processModal($.extend(settings,{from:this}));return false})}else{me.unbind('click.nyroModal').bind('click.nyroModal',function(e){if(e.isDefaultPrevented())return false;e.preventDefault();processModal($.extend(settings,{from:this}));return false})}})};$.fn.nyroModalManual=function(settings){if(!this.length)processModal(settings);return this.each(function(){processModal($.extend(settings,{from:this}))})};$.nyroModalManual=function(settings){processModal(settings)};$.nyroModalSettings=function(settings,deep1,deep2){setCurrentSettings(settings,deep1,deep2);if(!deep1&&modal.started){if(modal.bg&&settings.bgColor)currentSettings.updateBgColor(modal,currentSettings,function(){});if(modal.contentWrapper&&settings.title)setTitle();if(!modal.error&&(settings.windowResizing||(!modal.resizing&&(('width'in settings&&settings.width==currentSettings.width)||('height'in settings&&settings.height==currentSettings.height))))){modal.resizing=true;if(modal.contentWrapper)calculateSize(true);if(modal.contentWrapper&&modal.contentWrapper.is(':visible')&&!modal.animContent){if(fixFF)modal.content.css({position:''});currentSettings.resize(modal,currentSettings,function(){currentSettings.windowResizing=false;modal.resizing=false;if(fixFF)modal.content.css({position:'fixed'});if($.isFunction(currentSettings.endResize))currentSettings.endResize(modal,currentSettings)})}}}};$.nyroModalRemove=function(){removeModal()};$.nyroModalNext=function(){var link=getGalleryLink(1);if(link)return link.nyroModalManual(getCurrentSettingsNew());return false};$.nyroModalPrev=function(){var link=getGalleryLink(-1);if(link)return link.nyroModalManual(getCurrentSettingsNew());return false};$.fn.nyroModal.settings={debug:false,blocker:false,windowResize:true,modal:false,type:'',forceType:null,from:'',hash:'',processHandler:null,selIndicator:'nyroModalSel',formIndicator:'nyroModal',content:null,bgColor:'#000000',ajax:{},swf:{wmode:'transparent'},width:null,height:null,minWidth:400,minHeight:300,resizable:true,autoSizable:true,padding:25,regexImg:'[^\.]\.(jpg|jpeg|png|tiff|gif|bmp)\s*$',addImageDivTitle:false,defaultImgAlt:'Image',setWidthImgTitle:true,ltr:true,gallery:null,galleryLinks:'<a href="#" class="nyroModalPrev">Prev</a><a href="#"  class="nyroModalNext">Next</a>',galleryCounts:galleryCounts,galleryLoop:false,zIndexStart:100,cssOpt:{bg:{position:'absolute',overflow:'hidden',top:0,left:0,height:'100%',width:'100%'},wrapper:{position:'absolute',top:'50%',left:'50%'},wrapper2:{},content:{},loading:{position:'absolute',top:'50%',left:'50%',marginTop:'-50px',marginLeft:'-50px'}},wrap:{div:'<div class="wrapper"></div>',ajax:'<div class="wrapper"></div>',form:'<div class="wrapper"></div>',formData:'<div class="wrapper"></div>',image:'<div class="wrapperImg"></div>',swf:'<div class="wrapperSwf"></div>',iframe:'<div class="wrapperIframe"></div>',iframeForm:'<div class="wrapperIframe"></div>',manual:'<div class="wrapper"></div>'},closeButton:'<a href="#" class="nyroModalClose" id="closeBut" title="close">Close</a>',title:null,titleFromIframe:true,openSelector:'.nyroModal',closeSelector:'.nyroModalClose',contentLoading:'<a href="#" class="nyroModalClose">Cancel</a>',errorClass:'error',contentError:'The requested content cannot be loaded.<br />Please try again later.<br /><a href="#" class="nyroModalClose">Close</a>',handleError:null,showBackground:showBackground,hideBackground:hideBackground,endFillContent:null,showContent:showContent,endShowContent:null,beforeHideContent:null,hideContent:hideContent,showTransition:showTransition,hideTransition:hideTransition,showLoading:showLoading,hideLoading:hideLoading,resize:resize,endResize:null,updateBgColor:updateBgColor,endRemove:null};function processModal(settings){if(modal.loadingShown||modal.transition||modal.anim)return;debug('processModal');modal.started=true;callingSettings=$.extend(true,settings);setDefaultCurrentSettings(settings);if(!modal.full)modal.blockerVars=modal.blocker=null;modal.error=false;modal.closing=false;modal.dataReady=false;modal.scripts=new Array();modal.scriptsShown=new Array();currentSettings.type=fileType();if(currentSettings.forceType){if(!currentSettings.content)currentSettings.from=true;currentSettings.type=currentSettings.forceType;currentSettings.forceType=null}if($.isFunction(currentSettings.processHandler))currentSettings.processHandler(currentSettings);var from=currentSettings.from;var url=currentSettings.url;initSettingsSize.width=currentSettings.width;initSettingsSize.height=currentSettings.height;if(currentSettings.type=='swf'){setCurrentSettings({overflow:'visible'},'cssOpt','content');currentSettings.content='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+currentSettings.width+'" height="'+currentSettings.height+'"><param name="movie" value="'+url+'"></param>';var tmp='';$.each(currentSettings.swf,function(name,val){currentSettings.content+='<param name="'+name+'" value="'+val+'"></param>';tmp+=' '+name+'="'+val+'"'});currentSettings.content+='<embed src="'+url+'" type="application/x-shockwave-flash" width="'+currentSettings.width+'" height="'+currentSettings.height+'"'+tmp+'></embed></object>'}if(from){var jFrom=$(from).blur();if(currentSettings.type=='form'){var data=$(from).serializeArray();data.push({name:currentSettings.formIndicator,value:1});if(currentSettings.selector)data.push({name:currentSettings.selIndicator,value:currentSettings.selector.substring(1)});showModal();$.ajax($.extend({},currentSettings.ajax,{url:url,data:data,type:jFrom.attr('method')?jFrom.attr('method'):'get',success:ajaxLoaded,error:loadingError}));debug('Form Ajax Load: '+jFrom.attr('action'))}else if(currentSettings.type=='formData'){initModal();jFrom.attr('target','nyroModalIframe');jFrom.attr('action',url);jFrom.prepend('<input type="hidden" name="'+currentSettings.formIndicator+'" value="1" />');if(currentSettings.selector)jFrom.prepend('<input type="hidden" name="'+currentSettings.selIndicator+'" value="'+currentSettings.selector.substring(1)+'" />');modal.tmp.html('<iframe frameborder="0" hspace="0" name="nyroModalIframe" src="javascript:\'\';"></iframe>');$('iframe',modal.tmp).css({width:currentSettings.width,height:currentSettings.height}).error(loadingError).load(formDataLoaded);debug('Form Data Load: '+jFrom.attr('action'));showModal();showContentOrLoading()}else if(currentSettings.type=='image'){debug('Image Load: '+url);var title=jFrom.attr('title')||currentSettings.defaultImgAlt;initModal();modal.tmp.html('<img id="nyroModalImg" />').find('img').attr('alt',title);modal.tmp.css({lineHeight:0});$('img',modal.tmp).error(loadingError).load(function(){debug('Image Loaded: '+this.src);$(this).unbind('load');var w=modal.tmp.width();var h=modal.tmp.height();modal.tmp.css({lineHeight:''});resized.width=w;resized.height=h;setCurrentSettings({width:w,height:h,imgWidth:w,imgHeight:h});initSettingsSize.width=w;initSettingsSize.height=h;setCurrentSettings({overflow:'visible'},'cssOpt','content');modal.dataReady=true;if(modal.loadingShown||modal.transition)showContentOrLoading()}).attr('src',url);showModal()}else if(currentSettings.type=='iframeForm'){initModal();modal.tmp.html('<iframe frameborder="0" hspace="0" src="javascript:\'\';" name="nyroModalIframe" id="nyroModalIframe"></iframe>');debug('Iframe Form Load: '+url);$('iframe',modal.tmp).eq(0).css({width:'100%',height:$.support.boxModel?'99%':'100%'}).load(iframeLoaded);modal.dataReady=true;showModal()}else if(currentSettings.type=='iframe'){initModal();modal.tmp.html('<iframe frameborder="0" hspace="0" src="javascript:\'\';" name="nyroModalIframe" id="nyroModalIframe"></iframe>');debug('Iframe Load: '+url);$('iframe',modal.tmp).eq(0).css({width:'100%',height:$.support.boxModel?'99%':'100%'}).load(iframeLoaded);modal.dataReady=true;showModal()}else if(currentSettings.type){debug('Content: '+currentSettings.type);initModal();modal.tmp.html(currentSettings.content);var w=modal.tmp.width();var h=modal.tmp.height();var div=$(currentSettings.type);if(div.length){setCurrentSettings({type:'div'});w=div.width();h=div.height();if(contentElt)contentEltLast=contentElt;contentElt=div;modal.tmp.append(div.contents())}initSettingsSize.width=w;initSettingsSize.height=h;setCurrentSettings({width:w,height:h});if(modal.tmp.html())modal.dataReady=true;else loadingError();if(!modal.ready)showModal();else endHideContent()}else{debug('Ajax Load: '+url);setCurrentSettings({type:'ajax'});var data=currentSettings.ajax.data||{};if(currentSettings.selector){if(typeof data=="string"){data+='&'+currentSettings.selIndicator+'='+currentSettings.selector.substring(1)}else{data[currentSettings.selIndicator]=currentSettings.selector.substring(1)}}showModal();$.ajax($.extend(true,currentSettings.ajax,{url:url,success:ajaxLoaded,error:loadingError,data:data}))}}else if(currentSettings.content){debug('Content: '+currentSettings.type);setCurrentSettings({type:'manual'});initModal();modal.tmp.html($('<div/>').html(currentSettings.content).contents());if(modal.tmp.html())modal.dataReady=true;else loadingError();showModal()}else{}}function setDefaultCurrentSettings(settings){debug('setDefaultCurrentSettings');currentSettings=$.extend(true,{},$.fn.nyroModal.settings,settings);setMargin()}function setCurrentSettings(settings,deep1,deep2){if(modal.started){if(deep1&&deep2){$.extend(true,currentSettings[deep1][deep2],settings)}else if(deep1){$.extend(true,currentSettings[deep1],settings)}else{if(modal.animContent){if('width'in settings){if(!modal.resizing){settings.setWidth=settings.width;shouldResize=true}delete settings['width']}if('height'in settings){if(!modal.resizing){settings.setHeight=settings.height;shouldResize=true}delete settings['height']}}$.extend(true,currentSettings,settings)}}else{if(deep1&&deep2){$.extend(true,$.fn.nyroModal.settings[deep1][deep2],settings)}else if(deep1){$.extend(true,$.fn.nyroModal.settings[deep1],settings)}else{$.extend(true,$.fn.nyroModal.settings,settings)}}}function setMarginScroll(){if(isIE6&&!modal.blocker){if(document.documentElement){currentSettings.marginScrollLeft=document.documentElement.scrollLeft;currentSettings.marginScrollTop=document.documentElement.scrollTop}else{currentSettings.marginScrollLeft=document.body.scrollLeft;currentSettings.marginScrollTop=document.body.scrollTop}}else{currentSettings.marginScrollLeft=0;currentSettings.marginScrollTop=0}}function setMargin(){setMarginScroll();currentSettings.marginLeft=-(currentSettings.width+currentSettings.borderW)/2;currentSettings.marginTop=-(currentSettings.height+currentSettings.borderH)/2;if(!modal.blocker){currentSettings.marginLeft+=currentSettings.marginScrollLeft;currentSettings.marginTop+=currentSettings.marginScrollTop}}function setMarginLoading(){setMarginScroll();var outer=getOuter(modal.loading);currentSettings.marginTopLoading=-(modal.loading.height()+outer.h.border+outer.h.padding)/2;currentSettings.marginLeftLoading=-(modal.loading.width()+outer.w.border+outer.w.padding)/2;if(!modal.blocker){currentSettings.marginLeftLoading+=currentSettings.marginScrollLeft;currentSettings.marginTopLoading+=currentSettings.marginScrollTop}}function setTitle(){var title=$('h1#nyroModalTitle',modal.contentWrapper);if(title.length)title.text(currentSettings.title);else modal.contentWrapper.prepend('<h1 id="nyroModalTitle">'+currentSettings.title+'</h1>')}function initModal(){debug('initModal');if(!modal.full){if(currentSettings.debug)setCurrentSettings({color:'white'},'cssOpt','bg');var full={zIndex:currentSettings.zIndexStart,position:'fixed',top:0,left:0,width:'100%',height:'100%'};var contain=body;var iframeHideIE='';if(currentSettings.blocker){modal.blocker=contain=$(currentSettings.blocker);var pos=modal.blocker.offset();var w=modal.blocker.outerWidth();var h=modal.blocker.outerHeight();if(isIE6){setCurrentSettings({height:'100%',width:'100%',top:0,left:0},'cssOpt','bg')}modal.blockerVars={top:pos.top,left:pos.left,width:w,height:h};var plusTop=(/msie/.test(userAgent)?0:getCurCSS(body.get(0),'borderTopWidth'));var plusLeft=(/msie/.test(userAgent)?0:getCurCSS(body.get(0),'borderLeftWidth'));full={position:'absolute',top:pos.top+plusTop,left:pos.left+plusLeft,width:w,height:h}}else if(isIE6){body.css({marginLeft:0,marginRight:0});var w=body.width();var h=$(window).height()+'px';if($(window).height()>=body.outerHeight()){h=body.outerHeight()+'px'}else w+=20;w+='px';body.css({width:w,height:h,position:'static',overflow:'hidden'});$('html').css({overflow:'hidden'});setCurrentSettings({cssOpt:{bg:{position:'absolute',zIndex:currentSettings.zIndexStart+1,height:'110%',width:'110%',top:currentSettings.marginScrollTop+'px',left:currentSettings.marginScrollLeft+'px'},wrapper:{zIndex:currentSettings.zIndexStart+2},loading:{zIndex:currentSettings.zIndexStart+3}}});iframeHideIE=$('<iframe id="nyroModalIframeHideIe" src="javascript:\'\';"></iframe>').css($.extend({},currentSettings.cssOpt.bg,{opacity:0,zIndex:50,border:'none'}))}contain.append($('<div id="nyroModalFull"><div id="nyroModalBg"></div><div id="nyroModalWrapper"><div id="nyroModalContent"></div></div><div id="nyrModalTmp"></div><div id="nyroModalLoading"></div></div>').hide());modal.full=$('#nyroModalFull').css(full).show();modal.bg=$('#nyroModalBg').css($.extend({backgroundColor:currentSettings.bgColor},currentSettings.cssOpt.bg)).before(iframeHideIE);modal.bg.bind('click.nyroModal',clickBg);modal.loading=$('#nyroModalLoading').css(currentSettings.cssOpt.loading).hide();modal.contentWrapper=$('#nyroModalWrapper').css(currentSettings.cssOpt.wrapper).hide();modal.content=$('#nyroModalContent');modal.tmp=$('#nyrModalTmp').hide();if($.isFunction($.fn.mousewheel)){modal.content.mousewheel(function(e,d){var elt=modal.content.get(0);if((d>0&&elt.scrollTop==0)||(d<0&&elt.scrollHeight-elt.scrollTop==elt.clientHeight)){e.preventDefault();e.stopPropagation()}})}$(document).bind('keydown.nyroModal',keyHandler);modal.content.css({width:'auto',height:'auto'});modal.contentWrapper.css({width:'auto',height:'auto'});if(!currentSettings.blocker&&currentSettings.windowResize){$(window).bind('resize.nyroModal',function(){window.clearTimeout(windowResizeTimeout);windowResizeTimeout=window.setTimeout(windowResizeHandler,200)})}}}function windowResizeHandler(){$.nyroModalSettings(initSettingsSize)}function showModal(){debug('showModal');if(!modal.ready){initModal();modal.anim=true;currentSettings.showBackground(modal,currentSettings,endBackground)}else{modal.anim=true;modal.transition=true;currentSettings.showTransition(modal,currentSettings,function(){endHideContent();modal.anim=false;showContentOrLoading()})}}function clickBg(e){if(!currentSettings.modal)removeModal()}function keyHandler(e){if(e.keyCode==27){if(!currentSettings.modal)removeModal()}else if(currentSettings.gallery&&modal.ready&&modal.dataReady&&!modal.anim&&!modal.transition){if(e.keyCode==39||e.keyCode==40){e.preventDefault();$.nyroModalNext();return false}else if(e.keyCode==37||e.keyCode==38){e.preventDefault();$.nyroModalPrev();return false}}}function fileType(){var from=currentSettings.from;var url;if(from&&from.nodeName){var jFrom=$(from);url=jFrom.attr(from.nodeName.toLowerCase()=='form'?'action':'href');if(!url)url=location.href.substring(window.location.host.length+7);currentSettings.url=url;if(jFrom.attr('rev')=='modal')currentSettings.modal=true;currentSettings.title=jFrom.attr('title');if(from&&from.rel&&from.rel.toLowerCase()!='nofollow'){var indexSpace=from.rel.indexOf(' ');currentSettings.gallery=indexSpace>0?from.rel.substr(0,indexSpace):from.rel}var imgType=imageType(url,from);if(imgType)return imgType;if(isSwf(url))return'swf';var iframe=false;if(from.target&&from.target.toLowerCase()=='_blank'||(from.hostname&&from.hostname.replace(/:\d*$/,'')!=window.location.hostname.replace(/:\d*$/,''))){iframe=true}if(from.nodeName.toLowerCase()=='form'){if(iframe)return'iframeForm';setCurrentSettings(extractUrlSel(url));if(jFrom.attr('enctype')=='multipart/form-data')return'formData';return'form'}if(iframe)return'iframe'}else{url=currentSettings.url;if(!currentSettings.content)currentSettings.from=true;if(!url)return null;if(isSwf(url))return'swf';var reg1=new RegExp("^http://|https://","g");if(url.match(reg1))return'iframe'}var imgType=imageType(url,from);if(imgType)return imgType;var tmp=extractUrlSel(url);setCurrentSettings(tmp);if(!tmp.url)return tmp.selector}function imageType(url,from){var image=new RegExp(currentSettings.regexImg,'i');if(image.test(url)){return'image'}}function isSwf(url){var swf=new RegExp('[^\.]\.(swf)\s*$','i');return swf.test(url)}function extractUrlSel(url){var ret={url:null,selector:null};if(url){var hash=getHash(url);var hashLoc=getHash(window.location.href);var curLoc=window.location.href.substring(0,window.location.href.length-hashLoc.length);var req=url.substring(0,url.length-hash.length);if(req==curLoc||req==$('base').attr('href')){ret.selector=hash}else{ret.url=req;ret.selector=hash}}return ret}function loadingError(){debug('loadingError');modal.error=true;if(!modal.ready)return;if($.isFunction(currentSettings.handleError))currentSettings.handleError(modal,currentSettings);modal.loading.addClass(currentSettings.errorClass).html(currentSettings.contentError);$(currentSettings.closeSelector,modal.loading).unbind('click.nyroModal').bind('click.nyroModal',removeModal);setMarginLoading();modal.loading.css({marginTop:currentSettings.marginTopLoading+'px',marginLeft:currentSettings.marginLeftLoading+'px'})}function fillContent(){debug('fillContent');if(!modal.tmp.html())return;modal.content.html(modal.tmp.contents());modal.tmp.empty();wrapContent();if(currentSettings.type=='iframeForm'){$(currentSettings.from).attr('target','nyroModalIframe').data('nyroModalprocessing',1).submit().attr('target','_blank').removeData('nyroModalprocessing')}if(!currentSettings.modal)modal.wrapper.prepend(currentSettings.closeButton);if($.isFunction(currentSettings.endFillContent))currentSettings.endFillContent(modal,currentSettings);modal.content.append(modal.scripts);$(currentSettings.closeSelector,modal.contentWrapper).unbind('click.nyroModal').bind('click.nyroModal',removeModal);$(currentSettings.openSelector,modal.contentWrapper).nyroModal(getCurrentSettingsNew())}function getCurrentSettingsNew(){return callingSettings;var currentSettingsNew=$.extend(true,{},currentSettings);if(resized.width)currentSettingsNew.width=null;else currentSettingsNew.width=initSettingsSize.width;if(resized.height)currentSettingsNew.height=null;else currentSettingsNew.height=initSettingsSize.height;currentSettingsNew.cssOpt.content.overflow='auto';return currentSettingsNew}function wrapContent(){debug('wrapContent');var wrap=$(currentSettings.wrap[currentSettings.type]);modal.content.append(wrap.children().remove());modal.contentWrapper.wrapInner(wrap);if(currentSettings.gallery){modal.content.append(currentSettings.galleryLinks);gallery.links=$('[rel="'+currentSettings.gallery+'"], [rel^="'+currentSettings.gallery+' "]');gallery.index=gallery.links.index(currentSettings.from);if(currentSettings.galleryCounts&&$.isFunction(currentSettings.galleryCounts))currentSettings.galleryCounts(gallery.index+1,gallery.links.length,modal,currentSettings);var currentSettingsNew=getCurrentSettingsNew();var linkPrev=getGalleryLink(-1);if(linkPrev){var prev=$('.nyroModalPrev',modal.contentWrapper).attr('href',linkPrev.attr('href')).click(function(e){e.preventDefault();$.nyroModalPrev();return false});if(isIE6&&currentSettings.type=='swf'){prev.before($('<iframe id="nyroModalIframeHideIeGalleryPrev" src="javascript:\'\';"></iframe>').css({position:prev.css('position'),top:prev.css('top'),left:prev.css('left'),width:prev.width(),height:prev.height(),opacity:0,border:'none'}))}}else{$('.nyroModalPrev',modal.contentWrapper).remove()}var linkNext=getGalleryLink(1);if(linkNext){var next=$('.nyroModalNext',modal.contentWrapper).attr('href',linkNext.attr('href')).click(function(e){e.preventDefault();$.nyroModalNext();return false});if(isIE6&&currentSettings.type=='swf'){next.before($('<iframe id="nyroModalIframeHideIeGalleryNext" src="javascript:\'\';"></iframe>').css($.extend({},{position:next.css('position'),top:next.css('top'),left:next.css('left'),width:next.width(),height:next.height(),opacity:0,border:'none'})))}}else{$('.nyroModalNext',modal.contentWrapper).remove()}}calculateSize()}function getGalleryLink(dir){if(currentSettings.gallery){if(!currentSettings.ltr)dir*=-1;var index=gallery.index+dir;if(index>=0&&index<gallery.links.length)return gallery.links.eq(index);else if(currentSettings.galleryLoop){if(index<0)return gallery.links.eq(gallery.links.length-1);else return gallery.links.eq(0)}}return false}function calculateSize(resizing){debug('calculateSize');modal.wrapper=modal.contentWrapper.children('div:first');resized.width=false;resized.height=false;if(false&&!currentSettings.windowResizing){initSettingsSize.width=currentSettings.width;initSettingsSize.height=currentSettings.height}if(currentSettings.autoSizable&&(!currentSettings.width||!currentSettings.height)){modal.contentWrapper.css({opacity:0,width:'auto',height:'auto'}).show();var tmp={width:'auto',height:'auto'};if(currentSettings.width){tmp.width=currentSettings.width}else if(currentSettings.type=='iframe'){tmp.width=currentSettings.minWidth}if(currentSettings.height){tmp.height=currentSettings.height}else if(currentSettings.type=='iframe'){tmp.height=currentSettings.minHeight}modal.content.css(tmp);if(!currentSettings.width){currentSettings.width=modal.content.outerWidth(true);resized.width=true}if(!currentSettings.height){currentSettings.height=modal.content.outerHeight(true);resized.height=true}modal.contentWrapper.css({opacity:1});if(!resizing)modal.contentWrapper.hide()}if(currentSettings.type!='image'&&currentSettings.type!='swf'){currentSettings.width=Math.max(currentSettings.width,currentSettings.minWidth);currentSettings.height=Math.max(currentSettings.height,currentSettings.minHeight)}var outerWrapper=getOuter(modal.contentWrapper);var outerWrapper2=getOuter(modal.wrapper);var outerContent=getOuter(modal.content);var tmp={content:{width:currentSettings.width,height:currentSettings.height},wrapper2:{width:currentSettings.width+outerContent.w.total,height:currentSettings.height+outerContent.h.total},wrapper:{width:currentSettings.width+outerContent.w.total+outerWrapper2.w.total,height:currentSettings.height+outerContent.h.total+outerWrapper2.h.total}};if(currentSettings.resizable){var maxHeight=modal.blockerVars?modal.blockerVars.height:$(window).height()-outerWrapper.h.border-(tmp.wrapper.height-currentSettings.height);var maxWidth=modal.blockerVars?modal.blockerVars.width:$(window).width()-outerWrapper.w.border-(tmp.wrapper.width-currentSettings.width);maxHeight-=currentSettings.padding*2;maxWidth-=currentSettings.padding*2;if(tmp.content.height>maxHeight||tmp.content.width>maxWidth){if(currentSettings.type=='image'||currentSettings.type=='swf'){var useW=currentSettings.imgWidth?currentSettings.imgWidth:currentSettings.width;var useH=currentSettings.imgHeight?currentSettings.imgHeight:currentSettings.height;var diffW=tmp.content.width-useW;var diffH=tmp.content.height-useH;if(diffH<0)diffH=0;if(diffW<0)diffW=0;var calcH=maxHeight-diffH;var calcW=maxWidth-diffW;var ratio=Math.min(calcH/useH,calcW/useW);calcW=Math.floor(useW*ratio);calcH=Math.floor(useH*ratio);tmp.content.height=calcH+diffH;tmp.content.width=calcW+diffW}else{tmp.content.height=Math.min(tmp.content.height,maxHeight);tmp.content.width=Math.min(tmp.content.width,maxWidth)}tmp.wrapper2={width:tmp.content.width+outerContent.w.total,height:tmp.content.height+outerContent.h.total};tmp.wrapper={width:tmp.content.width+outerContent.w.total+outerWrapper2.w.total,height:tmp.content.height+outerContent.h.total+outerWrapper2.h.total}}}if(currentSettings.type=='swf'){$('object, embed',modal.content).attr('width',tmp.content.width).attr('height',tmp.content.height)}else if(currentSettings.type=='image'){$('img',modal.content).css({width:tmp.content.width,height:tmp.content.height})}modal.content.css($.extend({},tmp.content,currentSettings.cssOpt.content));modal.wrapper.css($.extend({},tmp.wrapper2,currentSettings.cssOpt.wrapper2));if(!resizing)modal.contentWrapper.css($.extend({},tmp.wrapper,currentSettings.cssOpt.wrapper));if(currentSettings.type=='image'&&currentSettings.addImageDivTitle){$('img',modal.content).removeAttr('alt');var divTitle=$('div',modal.content);if(currentSettings.title!=currentSettings.defaultImgAlt&&currentSettings.title){if(divTitle.length==0){divTitle=$('<div>'+currentSettings.title+'</div>');modal.content.append(divTitle)}if(currentSettings.setWidthImgTitle){var outerDivTitle=getOuter(divTitle);divTitle.css({width:(tmp.content.width+outerContent.w.padding-outerDivTitle.w.total)+'px'})}}else if(divTitle.length=0){divTitle.remove()}}if(currentSettings.title)setTitle();tmp.wrapper.borderW=outerWrapper.w.border;tmp.wrapper.borderH=outerWrapper.h.border;setCurrentSettings(tmp.wrapper);setMargin()}function removeModal(e){debug('removeModal');if(e)e.preventDefault();if(modal.full&&modal.ready){$(document).unbind('keydown.nyroModal');if(!currentSettings.blocker)$(window).unbind('resize.nyroModal');modal.ready=false;modal.anim=true;modal.closing=true;if(modal.loadingShown||modal.transition){currentSettings.hideLoading(modal,currentSettings,function(){modal.loading.hide();modal.loadingShown=false;modal.transition=false;currentSettings.hideBackground(modal,currentSettings,endRemove)})}else{if(fixFF)modal.content.css({position:''});modal.wrapper.css({overflow:'hidden'});modal.content.css({overflow:'hidden'});$('iframe',modal.content).hide();if($.isFunction(currentSettings.beforeHideContent)){currentSettings.beforeHideContent(modal,currentSettings,function(){currentSettings.hideContent(modal,currentSettings,function(){endHideContent();currentSettings.hideBackground(modal,currentSettings,endRemove)})})}else{currentSettings.hideContent(modal,currentSettings,function(){endHideContent();currentSettings.hideBackground(modal,currentSettings,endRemove)})}}}if(e)return false}function showContentOrLoading(){debug('showContentOrLoading');if(modal.ready&&!modal.anim){if(modal.dataReady){if(modal.tmp.html()){modal.anim=true;if(modal.transition){fillContent();modal.animContent=true;currentSettings.hideTransition(modal,currentSettings,function(){modal.loading.hide();modal.transition=false;modal.loadingShown=false;endShowContent()})}else{currentSettings.hideLoading(modal,currentSettings,function(){modal.loading.hide();modal.loadingShown=false;fillContent();setMarginLoading();setMargin();modal.animContent=true;currentSettings.showContent(modal,currentSettings,endShowContent)})}}}else if(!modal.loadingShown&&!modal.transition){modal.anim=true;modal.loadingShown=true;if(modal.error)loadingError();else modal.loading.html(currentSettings.contentLoading);$(currentSettings.closeSelector,modal.loading).unbind('click.nyroModal').bind('click.nyroModal',removeModal);setMarginLoading();currentSettings.showLoading(modal,currentSettings,function(){modal.anim=false;showContentOrLoading()})}}}function ajaxLoaded(data){debug('AjaxLoaded: '+this.url);if(currentSettings.selector){var tmp={};var i=0;data=data.replace(/\r\n/gi,'nyroModalLN').replace(/<script(.|\s)*?\/script>/gi,function(x){tmp[i]=x;return'<pre style="display: none" class=nyroModalScript rel="'+(i++)+'"></pre>'});data=$('<div>'+data+'</div>').find(currentSettings.selector).html().replace(/<pre style="display: none;?" class="?nyroModalScript"? rel="(.?)"><\/pre>/gi,function(x,y,z){return tmp[y]}).replace(/nyroModalLN/gi,"\r\n")}modal.tmp.html(filterScripts(data));if(modal.tmp.html()){modal.dataReady=true;showContentOrLoading()}else loadingError()}function formDataLoaded(){debug('formDataLoaded');var jFrom=$(currentSettings.from);jFrom.attr('action',jFrom.attr('action')+currentSettings.selector);jFrom.attr('target','');$('input[name='+currentSettings.formIndicator+']',currentSettings.from).remove();var iframe=modal.tmp.children('iframe');var iframeContent=iframe.unbind('load').contents().find(currentSettings.selector||'body').not('script[src]');iframe.attr('src','about:blank');modal.tmp.html(iframeContent.html());if(modal.tmp.html()){modal.dataReady=true;showContentOrLoading()}else loadingError()}function iframeLoaded(){if((window.location.hostname&&currentSettings.url.indexOf(window.location.hostname)>-1)||currentSettings.url.indexOf('http://')){var iframe=$('iframe',modal.full).contents();var tmp={};if(currentSettings.titleFromIframe){tmp.title=iframe.find('title').text();if(!tmp.title){try{tmp.title=iframe.find('title').html()}catch(err){}}}var body=iframe.find('body');if(!currentSettings.height&&body.height())tmp.height=body.height();if(!currentSettings.width&&body.width())tmp.width=body.width();$.extend(initSettingsSize,tmp);$.nyroModalSettings(tmp)}}function galleryCounts(nb,total,elts,settings){if(total>1)settings.title+=(settings.title?' - ':'')+nb+'/'+total}function endHideContent(){debug('endHideContent');modal.anim=false;if(contentEltLast){contentEltLast.append(modal.content.contents());contentEltLast=null}else if(contentElt){contentElt.append(modal.content.contents());contentElt=null}modal.content.empty();gallery={};modal.contentWrapper.hide().children().remove().empty().attr('style','').hide();if(modal.closing||modal.transition)modal.contentWrapper.hide();modal.contentWrapper.css(currentSettings.cssOpt.wrapper).append(modal.content);showContentOrLoading()}function endRemove(){debug('endRemove');$(document).unbind('keydown',keyHandler);modal.anim=false;modal.full.remove();modal.full=null;if(isIE6){body.css({height:'',width:'',position:'',overflow:'',marginLeft:'',marginRight:''});$('html').css({overflow:''})}if($.isFunction(currentSettings.endRemove))currentSettings.endRemove(modal,currentSettings)}function endBackground(){debug('endBackground');modal.ready=true;modal.anim=false;showContentOrLoading()}function endShowContent(){debug('endShowContent');modal.anim=false;modal.animContent=false;modal.contentWrapper.css({opacity:''});fixFF=/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)&&parseFloat(browserVersion)<1.9&&currentSettings.type!='image';if(fixFF)modal.content.css({position:'fixed'});modal.content.append(modal.scriptsShown);if(currentSettings.type=='iframe')modal.content.find('iframe').attr('src',currentSettings.url);if($.isFunction(currentSettings.endShowContent))currentSettings.endShowContent(modal,currentSettings);if(shouldResize){shouldResize=false;$.nyroModalSettings({width:currentSettings.setWidth,height:currentSettings.setHeight});delete currentSettings['setWidth'];delete currentSettings['setHeight']}if(resized.width)setCurrentSettings({width:null});if(resized.height)setCurrentSettings({height:null})}function getHash(url){if(typeof url=='string'){var hashPos=url.indexOf('#');if(hashPos>-1)return url.substring(hashPos)}return''}function filterScripts(data){if(typeof data=='string')data=data.replace(/<\/?(html|head|body)([^>]*)>/gi,'');var tmp=new Array();$.each($.clean({0:data},this.ownerDocument),function(){if($.nodeName(this,"script")){if(!this.src||$(this).attr('rel')=='forceLoad'){if($(this).attr('rev')=='shown')modal.scriptsShown.push(this);else modal.scripts.push(this)}}else tmp.push(this)});return tmp}function getOuter(elm){elm=elm.get(0);var ret={h:{margin:getCurCSS(elm,'marginTop')+getCurCSS(elm,'marginBottom'),border:getCurCSS(elm,'borderTopWidth')+getCurCSS(elm,'borderBottomWidth'),padding:getCurCSS(elm,'paddingTop')+getCurCSS(elm,'paddingBottom')},w:{margin:getCurCSS(elm,'marginLeft')+getCurCSS(elm,'marginRight'),border:getCurCSS(elm,'borderLeftWidth')+getCurCSS(elm,'borderRightWidth'),padding:getCurCSS(elm,'paddingLeft')+getCurCSS(elm,'paddingRight')}};ret.h.outer=ret.h.margin+ret.h.border;ret.w.outer=ret.w.margin+ret.w.border;ret.h.inner=ret.h.padding+ret.h.border;ret.w.inner=ret.w.padding+ret.w.border;ret.h.total=ret.h.outer+ret.h.padding;ret.w.total=ret.w.outer+ret.w.padding;return ret}function getCurCSS(elm,name){var ret=parseInt($.curCSS(elm,name,true));if(isNaN(ret))ret=0;return ret}function debug(msg){if($.fn.nyroModal.settings.debug||currentSettings&&currentSettings.debug)nyroModalDebug(msg,modal,currentSettings||{})}function showBackground(elts,settings,callback){elts.bg.css({opacity:0}).fadeTo(500,0.75,callback)}function hideBackground(elts,settings,callback){elts.bg.fadeOut(300,callback)}function showLoading(elts,settings,callback){elts.loading.css({marginTop:settings.marginTopLoading+'px',marginLeft:settings.marginLeftLoading+'px',opacity:0}).show().animate({opacity:1},{complete:callback,duration:400})}function hideLoading(elts,settings,callback){callback()}function showContent(elts,settings,callback){elts.loading.css({marginTop:settings.marginTopLoading+'px',marginLeft:settings.marginLeftLoading+'px'}).show().animate({width:settings.width+'px',height:settings.height+'px',marginTop:settings.marginTop+'px',marginLeft:settings.marginLeft+'px'},{duration:350,complete:function(){elts.contentWrapper.css({width:settings.width+'px',height:settings.height+'px',marginTop:settings.marginTop+'px',marginLeft:settings.marginLeft+'px'}).show();elts.loading.fadeOut(200,callback)}})}function hideContent(elts,settings,callback){elts.contentWrapper.animate({height:'50px',width:'50px',marginTop:(-(25+settings.borderH)/2+settings.marginScrollTop)+'px',marginLeft:(-(25+settings.borderW)/2+settings.marginScrollLeft)+'px'},{duration:350,complete:function(){elts.contentWrapper.hide();callback()}})}function showTransition(elts,settings,callback){elts.loading.css({marginTop:elts.contentWrapper.css('marginTop'),marginLeft:elts.contentWrapper.css('marginLeft'),height:elts.contentWrapper.css('height'),width:elts.contentWrapper.css('width'),opacity:0}).show().fadeTo(400,1,function(){elts.contentWrapper.hide();callback()})}function hideTransition(elts,settings,callback){elts.contentWrapper.hide().css({width:settings.width+'px',height:settings.height+'px',marginLeft:settings.marginLeft+'px',marginTop:settings.marginTop+'px',opacity:1});elts.loading.animate({width:settings.width+'px',height:settings.height+'px',marginLeft:settings.marginLeft+'px',marginTop:settings.marginTop+'px'},{complete:function(){elts.contentWrapper.show();elts.loading.fadeOut(400,function(){elts.loading.hide();callback()})},duration:350})}function resize(elts,settings,callback){elts.contentWrapper.animate({width:settings.width+'px',height:settings.height+'px',marginLeft:settings.marginLeft+'px',marginTop:settings.marginTop+'px'},{complete:callback,duration:400})}function updateBgColor(elts,settings,callback){if(!$.fx.step.backgroundColor){elts.bg.css({backgroundColor:settings.bgColor});callback()}else elts.bg.animate({backgroundColor:settings.bgColor},{complete:callback,duration:400})}$($.fn.nyroModal.settings.openSelector).nyroModal()});var tmpDebug='';function nyroModalDebug(msg,elts,settings){if(elts.full&&elts.bg){elts.bg.prepend(msg+'<br />'+tmpDebug);tmpDebug=''}else tmpDebug+=msg+'<br />'}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/jquery.qtip.min.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,1 @@
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('"6t 6u";(j($){$(31).3x(j(){R i;$(2e).1J(\'3L 3E\',j(r){1V(i=0;i<$.18.g.O.Q;i++){R T=$.18.g.O[i];c(T&&T.V&&T.V.1b&&T.8.k.17!==\'29\'&&T.d.h.2r(\':28\')&&(T.8.k.1e.3E&&r.17===\'3E\'||T.8.k.1e.3L&&r.17===\'3L\')){T.2h(r,H)}}});$(31).1J(\'5j.g\',j(r){c($(r.s).5g(\'12.g\').Q===0){R h=$(\'.6w\'),T=h.g(\'T\');c(h.2r(\':28\')&&T&&T.V&&!T.V.23&&$(r.s).2m(T.d.s).Q>1){T.D(r)}}})});j 2D(w){c(!w){B p}A.x=5a(w).3l(/5x/i,\'1j\').5y(/M|25|1j/i)[0].2F();A.y=5a(w).3l(/5x/i,\'1j\').5y(/K|26|1j/i)[0].2F();A.1k={M:0,K:0};A.2y=(w.2H(0).6L(/^(t|b)/)>-1)?\'y\':\'x\';A.1w=j(){B(A.2y===\'y\')?A.y+A.x:A.x+A.y}}j 4t(w,o,G){R 1N={5B:[[0,0],[o,G],[o,0]],6a:[[0,0],[o,0],[0,G]],5K:[[0,G],[o,0],[o,G]],5N:[[0,0],[0,G],[o,G]],6y:[[0,G],[o/2,0],[o,G]],6v:[[0,0],[o,0],[o/2,G]],6i:[[0,0],[o,G/2],[0,G]],6J:[[o,0],[o,G],[0,G/2]]};1N.6M=1N.5B;1N.6z=1N.6a;1N.6x=1N.5K;1N.6C=1N.5N;B 1N[w]}j 4e(E){R 2j;c($(\'<1f />\').1q(0).1E){2j={3K:[E,E],40:[0,E],4I:[E,0],3P:[0,0]}}C c($.16.1d){2j={3K:[-2z,2z,0],40:[-2z,2z,-E],4I:[2z,5D,0],3P:[2z,5D,-E]}}B 2j}j 2G(e,4b){R 2U,i;2U=$.2p(H,{},e);1V(i 5R 2U){c(4b===H&&(/(f|1g)/i).1Y(i)){3z 2U[i]}C c(!4b&&(/(o|I|f|U|1g|4v)/i).1Y(i)){3z 2U[i]}}B 2U}j 4i(e){c(P e.f!==\'19\'){e.f={w:e.f}}c(P e.f.N!==\'19\'){e.f.N={o:e.f.N,G:e.f.N}}c(P e.I!==\'19\'){e.I={o:e.I}}c(P e.o!==\'19\'){e.o={2Z:e.o}}c(P e.o.1H===\'1w\'){e.o.1H=1A(e.o.1H.3l(/([0-9]+)/i,"$1"),10)}c(P e.o.2b===\'1w\'){e.o.2b=1A(e.o.2b.3l(/([0-9]+)/i,"$1"),10)}c(P e.f.N.x===\'2s\'){e.f.N.o=e.f.N.x;3z e.f.N.x}c(P e.f.N.y===\'2s\'){e.f.N.G=e.f.N.y;3z e.f.N.y}B e}j 4l(){R 7,i,3A,2v,1D,1P;7=A;3A=[H,{}];1V(i=0;i<3b.Q;i++){3A.5h(3b[i])}2v=[$.2p.4s($,3A)];6F(P 2v[0].21===\'1w\'){2v.5O(4i($.18.g.3c[2v[0].21]))}2v.5O(H,{1g:{h:\'g-\'+(3b[0].21||\'39\')}},$.18.g.3c.39);1D=$.2p.4s($,2v);1P=($.16.1d)?1:0;1D.f.N.o+=1P;1D.f.N.G+=1P;c(1D.f.N.o%2>0){1D.f.N.o+=1}c(1D.f.N.G%2>0){1D.f.N.G+=1}c(1D.f.w===H){c(7.8.k.w.h===\'1j\'&&7.8.k.w.s===\'1j\'){1D.f.w=p}C{1D.f.w=7.8.k.w.h}}B 1D}j 46(1f,X,E,J){R 1n=1f.1q(0).1E(\'2d\');1n.5G=J;1n.5U();1n.3p(X[0],X[1],E,0,1u.6N*2,p);1n.5Y()}j 59(){R 7,i,o,E,J,X,1Q,N,4O,2k,3e,3i,4g,4q,4G;7=A;7.d.1t.1M(\'.g-3i, .g-3e\').3W();o=7.8.e.I.o;E=7.8.e.I.E;J=7.8.e.I.J||7.8.e.f.J;X=4e(E);1Q={};1V(i 5R X){1Q[i]=\'<12 1S="\'+i+\'" e="\'+((/6n/).1Y(i)?\'M\':\'25\')+\':0; \'+\'k:34; G:\'+E+\'1a; o:\'+E+\'1a; 2u:1F; 2S-G:0.1B; 2Y-N:1B">\';c($(\'<1f />\').1q(0).1E){1Q[i]+=\'<1f G="\'+E+\'" o="\'+E+\'" e="4Q-3o: K"></1f>\'}C c($.16.1d){N=E*2+3;1Q[i]+=\'<v:3p 6f="p" 3t="\'+J+\'" 6s="\'+X[i][0]+\'" 6r="\'+X[i][1]+\'" \'+\'e="o:\'+N+\'1a; G:\'+N+\'1a; 2q-K:\'+((/26/).1Y(i)?-2:-1)+\'1a; \'+\'2q-M:\'+((/6m/).1Y(i)?X[i][2]-3.5:-1)+\'1a; \'+\'4Q-3o:K; 2a:53-4E; 3I:1x(#2L#3R)"></v:3p>\'}1Q[i]+=\'</12>\'}4O=7.3d().o-(1u.1H(o,E)*2);2k=\'<12 1I="g-2k" e="G:\'+E+\'1a; o:\'+4O+\'1a; \'+\'2u:1F; 1s-J:\'+J+\'; 2S-G:0.1B; 2Y-N:1B;">\';3e=\'<12 1I="g-3e" 4k="4f" e="G:\'+E+\'1a; \'+\'2q-M:\'+E+\'1a; 2S-G:0.1B; 2Y-N:1B; 2x:0;">\'+1Q.3K+1Q.40+2k;7.d.1t.3B(3e);3i=\'<12 1I="g-3i" 4k="4f" e="G:\'+E+\'1a; \'+\'2q-M:\'+E+\'1a; 2S-G:0.1B; 2Y-N:1B; 2x:0;">\'+1Q.4I+1Q.3P+2k;7.d.1t.5s(3i);c($(\'<1f />\').1q(0).1E){7.d.1t.1M(\'1f\').1L(j(){4g=X[$(A).3O(\'[1S]:1R\').W(\'1S\')];46.S(7,$(A),4g,E,J)})}C c($.16.1d){7.d.h.5s(\'<v:3C e="3I:1x(#2L#3R);"></v:3C>\')}4q=1u.1H(E,(E+(o-E)));4G=1u.1H(o-E,0);7.d.1y.F({I:\'6D 3q \'+J,6H:4G+\'1a \'+4q+\'1a\'})}j 4u(1f,X,J){R 1n=1f.1q(0).1E(\'2d\');1n.5G=J;1n.5U();1n.6o(X[0][0],X[0][1]);1n.5Q(X[1][0],X[1][1]);1n.5Q(X[2][0],X[2][1]);1n.5Y()}j 42(w){R 7,1P,24,4n,4h,3Q;7=A;c(7.8.e.f.w===p||!7.d.f){B}c(!w){w=2T 2D(7.d.f.W(\'1S\'))}1P=24=($.16.1d)?1:0;7.d.f.F(w[w.2y],0);c(w.2y===\'y\'){c($.16.1d){c(1A($.16.2X.2H(0),10)===6){24=w.y===\'K\'?-3:1}C{24=w.y===\'K\'?1:2}}c(w.x===\'1j\'){7.d.f.F({M:\'50%\',6K:-(7.8.e.f.N.o/2)})}C c(w.x===\'M\'){7.d.f.F({M:7.8.e.I.E-1P})}C{7.d.f.F({25:7.8.e.I.E+1P})}c(w.y===\'K\'){7.d.f.F({K:-24})}C{7.d.f.F({26:24})}}C{c($.16.1d){24=(1A($.16.2X.2H(0),10)===6)?1:(w.x===\'M\'?1:2)}c(w.y===\'1j\'){7.d.f.F({K:\'50%\',49:-(7.8.e.f.N.G/2)})}C c(w.y===\'K\'){7.d.f.F({K:7.8.e.I.E-1P})}C{7.d.f.F({26:7.8.e.I.E+1P})}c(w.x===\'M\'){7.d.f.F({M:-24})}C{7.d.f.F({25:24})}}4n=\'2x-\'+w[w.2y];4h=7.8.e.f.N[w.2y===\'x\'?\'o\':\'G\'];7.d.h.F(\'2x\',0).F(4n,4h);c($.16.1d&&1A($.16.2X.2H(0),6)===6){3Q=1A(7.d.f.F(\'2q-K\'),10)||0;3Q+=1A(7.d.u.F(\'2q-K\'),10)||0;7.d.f.F({49:3Q})}}j 44(w){R 7,J,X,3J,2o,f;7=A;c(7.d.f!==1z){7.d.f.3W()}J=7.8.e.f.J||7.8.e.I.J;c(7.8.e.f.w===p){B}C c(!w){w=2T 2D(7.8.e.f.w)}X=4t(w.1w(),7.8.e.f.N.o,7.8.e.f.N.G);7.d.f=\'<12 1I="\'+7.8.e.1g.f+\'" 4k="4f" 1S="\'+w.1w()+\'" e="k:34; \'+\'G:\'+7.8.e.f.N.G+\'1a; o:\'+7.8.e.f.N.o+\'1a; \'+\'2q:0 6e; 2S-G:0.1B; 2Y-N:1B;"></12>\';7.d.h.3B(7.d.f);c($(\'<1f />\').1q(0).1E){f=\'<1f G="\'+7.8.e.f.N.G+\'" o="\'+7.8.e.f.N.o+\'"></1f>\'}C c($.16.1d){3J=7.8.e.f.N.o+\',\'+7.8.e.f.N.G;2o=\'m\'+X[0][0]+\',\'+X[0][1];2o+=\' l\'+X[1][0]+\',\'+X[1][1];2o+=\' \'+X[2][0]+\',\'+X[2][1];2o+=\' 6I\';f=\'<v:3M 3t="\'+J+\'" 6f="p" 6p="H" 2o="\'+2o+\'" 3J="\'+3J+\'" \'+\'e="o:\'+7.8.e.f.N.o+\'1a; G:\'+7.8.e.f.N.G+\'1a; \'+\'2S-G:0.1B; 2a:53-4E; 3I:1x(#2L#3R); \'+\'4Q-3o:\'+(w.y===\'K\'?\'26\':\'K\')+\'"></v:3M>\';f+=\'<v:3C e="3I:1x(#2L#3R);"></v:3C>\';7.d.1y.F(\'k\',\'4y\')}7.d.f=7.d.h.1M(\'.\'+7.8.e.1g.f).6B(0);7.d.f.2l(f);c($(\'<1f  />\').1q(0).1E){4u.S(7,7.d.f.1M(\'1f:1R\'),X,J)}c(w.y===\'K\'&&$.16.1d&&1A($.16.2X.2H(0),10)===6){7.d.f.F({49:-4})}42.S(7,w)}j 5b(){R 7=A;c(7.d.U!==1z){7.d.U.3W()}7.d.h.W(\'3r-6E\',\'g-\'+7.11+\'-U\');7.d.U=$(\'<12 11="g-\'+7.11+\'-U" 1I="\'+7.8.e.1g.U+\'"></12>\').F(2G(7.8.e.U,H)).F({2f:($.16.1d)?1:0}).58(7.d.1y);c(7.8.u.U.1m){7.5W.S(7,7.8.u.U.1m)}c(7.8.u.U.1i!==p&&P 7.8.u.U.1i===\'1w\'){7.d.1i=$(\'<a 1I="\'+7.8.e.1g.1i+\'" 5e="1i" e="6G:25; k: 4y"></a>\').F(2G(7.8.e.1i,H)).2l(7.8.u.U.1i).58(7.d.U).5d(j(r){c(!7.V.23){7.D(r)}})}}j 5l(){R 7,3h,2i,3u;7=A;3h=7.8.q.L.s;2i=7.8.D.L.s;c(7.8.D.3g){2i=2i.2m(7.d.h)}3u=[\'5d\',\'6h\',\'6k\',\'6j\',\'4C\',\'4x\',\'5j\',\'6l\',\'35\'];j 3v(r){c(7.V.23===H){B}2g(7.1G.1W);7.1G.1W=4M(j(){$(3u).1L(j(){2i.1O(A+\'.g-1W\');7.d.u.1O(A+\'.g-1W\')});7.D(r)},7.8.D.2V)}c(7.8.D.3g===H){7.d.h.1J(\'35.g\',j(){c(7.V.23===H){B}2g(7.1G.D)})}j 4S(r){c(7.V.23===H){B}c(7.8.D.L.r===\'1W\'){$(3u).1L(j(){2i.1J(A+\'.g-1W\',3v);7.d.u.1J(A+\'.g-1W\',3v)});3v()}2g(7.1G.q);2g(7.1G.D);c(7.8.q.2V>0){7.1G.q=4M(j(){7.q(r)},7.8.q.2V)}C{7.q(r)}}j 4P(r){c(7.V.23===H){B}c(7.8.D.3g===H&&(/1K(6q|6A)/i).1Y(7.8.D.L.r)&&$(r.70).5g(\'12.g[11^="g"]\').Q>0){r.7L();r.7K();2g(7.1G.D);B p}2g(7.1G.q);2g(7.1G.D);7.d.h.3S(H,H);7.1G.D=4M(j(){7.D(r)},7.8.D.2V)}c(7.8.k.s===\'1K\'&&7.8.k.17!==\'29\'){3h.1J(\'4C.g\',j(r){7.1v.1K={M:r.3Y,K:r.4c};c(7.V.23===p&&7.8.k.1e.1K===H&&7.8.k.17!==\'29\'&&7.d.h.F(\'2a\')!==\'3a\'){7.2h(r)}})}c((7.8.q.L.s.2m(7.8.D.L.s).Q===1&&7.8.q.L.r===7.8.D.L.r&&7.8.D.L.r!==\'1W\')||7.8.D.L.r===\'4R\'){7.1v.2I=0;3h.1J(7.8.q.L.r+\'.g\',j(r){c(7.1v.2I===0){4S(r)}C{4P(r)}})}C{3h.1J(7.8.q.L.r+\'.g\',4S);c(7.8.D.L.r!==\'1W\'){2i.1J(7.8.D.L.r+\'.g\',4P)}}c((/(3g|34)/).1Y(7.8.k.17)){7.d.h.1J(\'35.g\',7.2E)}}j 22(){R 7,2l,2t;7=A;2t=7.3d();2l=\'<7J 1I="g-22" 7I="0" 7M="-1" 4T="7N:p" \'+\'e="2a:4E; k:34; z-3s:-1; 5m:7R(2B=\\\'0\\\'); I: 1B 3q 4H; \'+\'G:\'+2t.G+\'1a; o:\'+2t.o+\'1a" />\';7.d.22=7.d.1t.3B(2l).2w(\'.g-22:1R\')}j 4w(){R 7,u,1x,Y,2A;7=A;7.5J.S(7);7.V.1b=2;7.d.h=\'<12 g="\'+7.11+\'" 11="g-\'+7.11+\'" 5e="h" \'+\'3r-7Q="g-\'+7.11+\'-u" 1I="g \'+(7.8.e.1g.h||7.8.e)+\'" \'+\'e="2a:3a; -7P-I-E:0; -7O-I-E:0; I-E:0; k:\'+7.8.k.17+\';"> \'+\'  <12 1I="g-1t" e="k:4y; 2u:1F; 1m-3o:M;"> \'+\'    <12 1I="g-1y" e="2u:1F;"> \'+\'       <12 11="g-\'+7.11+\'-u" 1I="g-u \'+7.8.e.1g.u+\'"></12> \'+\'</12></12></12>\';7.d.h=$(7.d.h);7.d.h.5P(7.8.k.3U);7.d.h.Y(\'g\',{3k:0,O:[7]});7.d.1t=7.d.h.2w(\'12:1R\');7.d.1y=7.d.1t.2w(\'12:1R\');7.d.u=7.d.1y.2w(\'12:1R\').F(2G(7.8.e));c($.16.1d){7.d.1t.2m(7.d.u).F({2f:1})}c(7.8.D.L.r===\'4R\'){7.d.h.W(\'4R\',H)}c(P 7.8.e.o.2Z===\'2s\'){7.4d()}c($(\'<1f />\').1q(0).1E||$.16.1d){c(7.8.e.I.E>0){59.S(7)}C{7.d.1y.F({I:7.8.e.I.o+\'1a 3q \'+7.8.e.I.J})}c(7.8.e.f.w!==p){44.S(7)}}C{7.d.1y.F({I:7.8.e.I.o+\'1a 3q \'+7.8.e.I.J});7.8.e.I.E=0;7.8.e.f.w=p}c((P 7.8.u.1m===\'1w\'&&7.8.u.1m.Q>0)||(7.8.u.1m.4r&&7.8.u.1m.Q>0)){u=7.8.u.1m}C{u=\' \'}c(7.8.u.U.1m!==p){5b.S(7)}7.4A(u,p);5l.S(7);c(7.8.q.3x===H){7.q()}c(7.8.u.1x!==p){1x=7.8.u.1x;Y=7.8.u.Y;2A=7.8.u.2A||\'1q\';7.5Z(1x,Y,2A)}7.V.1b=H;7.5f.S(7)}j 56(s,8,11){R 7=A;7.11=11;7.8=8;7.V={4j:p,1b:p,23:p,3Z:p};7.d={s:s.5v(7.8.e.1g.s),h:1z,1t:1z,u:1z,1y:1z,U:1z,1i:1z,f:1z,22:1z};7.1v={W:p,1K:{},2I:0,2u:{M:p,K:p}};7.1G={};$.2p(7,7.8.T,{q:j(r){R 1c,1X;c(!7.V.1b){B p}c(7.d.h.F(\'2a\')!==\'3a\'){B 7}7.d.h.3S(H,p);1c=7.5n.S(7,r);c(1c===p){B 7}j 2M(){7.d.h.W(\'3r-1F\',H);c(7.8.k.17!==\'29\'){7.2E()}7.5q.S(7,r);c($.16.1d){R 4a=7.d.h.1q(0).e;4a.43(\'5m\');4a.43(\'2B\')}C{7.d.h.F({2B:\'\'})}}7.1v.2I=1;c(7.8.k.17!==\'29\'){7.2h(r,(7.8.q.Z.Q>0&&7.1b!==2))}c(P 7.8.q.1X===\'19\'){1X=$(7.8.q.1X)}C c(7.8.q.1X===H){1X=$(\'12.g\').5S(7.d.h)}c(1X){1X.1L(j(){c($(A).g(\'T\').V.1b===H){$(A).g(\'T\').D()}})}c(P 7.8.q.Z.17===\'j\'){7.8.q.Z.17.S(7.d.h,7.8.q.Z.Q);7.d.h.5u(j(){2M();$(A).5t()})}C{4N(7.8.q.Z.17.2F()){1Z\'3w\':7.d.h.7H(7.8.q.Z.Q,2M);1C;1Z\'5o\':7.d.h.7G(7.8.q.Z.Q,j(){2M();c(7.8.k.17!==\'29\'){7.2h(r,H)}});1C;1Z\'5p\':7.d.h.q(7.8.q.Z.Q,2M);1C;2L:7.d.h.q(1z,2M);1C}7.d.h.5v(7.8.e.1g.3T)}B 7},D:j(r){R 1c;c(!7.V.1b){B p}C c(7.d.h.F(\'2a\')===\'3a\'){B 7}2g(7.1G.q);7.d.h.3S(H,p);1c=7.5A.S(7,r);c(1c===p){B 7}j 2K(){7.d.h.W(\'3r-1F\',H);c($.16.1d){7.d.h.1q(0).e.43(\'2B\')}C{7.d.h.F({2B:\'\'})}7.4Z.S(7,r)}7.1v.2I=0;c(P 7.8.D.Z.17===\'j\'){7.8.D.Z.17.S(7.d.h,7.8.D.Z.Q);7.d.h.5u(j(){2K();$(A).5t()})}C{4N(7.8.D.Z.17.2F()){1Z\'3w\':7.d.h.7z(7.8.D.Z.Q,2K);1C;1Z\'5o\':7.d.h.7y(7.8.D.Z.Q,2K);1C;1Z\'5p\':7.d.h.D(7.8.D.Z.Q,2K);1C;2L:7.d.h.D(1z,2K);1C}7.d.h.7x(7.8.e.1g.3T)}B 7},2I:j(r,38){R 5r=/7w|2s/.1Y(P 38)?38:!7.d.h.2r(\':28\');7[5r?\'q\':\'D\'](r);B 7},2h:j(r,4o){c(!7.V.1b){B p}R 1U=8.k,s=$(1U.s),2Q=7.d.h.47(),2P=7.d.h.48(),1p,1l,k,1o=1U.w.h,2R=1U.w.s,1c,14,i,4L,27,45={M:j(){R 3j=$(2e).3D(),3n=$(2e).o()+$(2e).3D(),2J=1o.x===\'1j\'?2Q/2:2Q,2N=1o.x===\'1j\'?1p/2:1p,2O=(1o.x===\'1j\'?1:2)*7.8.e.I.E,1k=-2*1U.1e.x,3m=k.M+2Q,1h;c(3m>3n){1h=1k-2J-2N+2O;c(k.M+1h>3j||3j-(k.M+1h)<3m-3n){B{1e:1h,f:\'25\'}}}c(k.M<3j){1h=1k+2J+2N-2O;c(3m+1h<3n||3m+1h-3n<3j-k.M){B{1e:1h,f:\'M\'}}}B{1e:0,f:1o.x}},K:j(){R 30=$(2e).3G(),33=$(2e).G()+$(2e).3G(),2J=1o.y===\'1j\'?2P/2:2P,2N=1o.y===\'1j\'?1l/2:1l,2O=(1o.y===\'1j\'?1:2)*7.8.e.I.E,1k=-2*1U.1e.y,32=k.K+2P,1h;c(32>33){1h=1k-2J-2N+2O;c(k.K+1h>30||30-(k.K+1h)<32-33){B{1e:1h,f:\'26\'}}}c(k.K<30){1h=1k+2J+2N-2O;c(32+1h<33||32+1h-33<30-k.K){B{1e:1h,f:\'K\'}}}B{1e:0,f:1o.y}}};c(r&&8.k.s===\'1K\'){2R={x:\'M\',y:\'K\'};1p=1l=0;c(!r.3Y){k=7.1v.1K}C{k={K:r.4c,M:r.3Y}}}C{c(s[0]===31){1p=s.o();1l=s.G();k={K:0,M:0}}C c(s[0]===2e){1p=s.o();1l=s.G();k={K:s.3G(),M:s.3D()}}C c(s.2r(\'7A\')){14=7.8.k.s.W(\'14\').7B(\',\');1V(i=0;i<14.Q;i++){14[i]=1A(14[i],10)}4L=7.8.k.s.3O(\'7F\').W(\'21\');27=$(\'4U[7E="#\'+4L+\'"]:1R\').1k();k={M:1u.3H(27.M+14[0]),K:1u.3H(27.K+14[1])};4N(7.8.k.s.W(\'3M\').2F()){1Z\'7T\':1p=1u.4V(1u.5z(14[2]-14[0]));1l=1u.4V(1u.5z(14[3]-14[1]));1C;1Z\'7C\':1p=14[2]+1;1l=14[2]+1;1C;1Z\'7S\':1p=14[0];1l=14[1];1V(i=0;i<14.Q;i++){c(i%2===0){c(14[i]>1p){1p=14[i]}c(14[i]<14[0]){k.M=1u.3H(27.M+14[i])}}C{c(14[i]>1l){1l=14[i]}c(14[i]<14[1]){k.K=1u.3H(27.K+14[i])}}}1p=1p-(k.M-27.M);1l=1l-(k.K-27.K);1C}1p-=2;1l-=2}C{1p=s.47();1l=s.48();c(!7.d.h.2r(\':28\')){7.d.h.F({M:\'-81\'}).q()}c(!1U.1e.1k||7.d.h.4F()[0]===31.4X){k=s.1k()}C{k=s.k();k.K+=s.4F().3G();k.M+=s.4F().3D()}}k.M+=2R.x===\'25\'?1p:2R.x===\'1j\'?1p/2:0;k.K+=2R.y===\'26\'?1l:2R.y===\'1j\'?1l/2:0}k.M+=1U.1e.x+(1o.x===\'25\'?-2Q:1o.x===\'1j\'?-2Q/2:0);k.K+=1U.1e.y+(1o.y===\'26\'?-2P:1o.y===\'1j\'?-2P/2:0);c(7.8.e.I.E>0){c(1o.x===\'M\'){k.M-=7.8.e.I.E}C c(1o.x===\'25\'){k.M+=7.8.e.I.E}c(1o.y===\'K\'){k.K-=7.8.e.I.E}C c(1o.y===\'26\'){k.K+=7.8.e.I.E}}c(1U.1e.55){(j(){R 2W={x:0,y:0},2n={x:45.M(),y:45.K()},f=2T 2D(8.e.f.w);c(7.d.f&&f){c(2n.y.1e!==0){k.K+=2n.y.1e;f.y=2W.y=2n.y.f}c(2n.x.1e!==0){k.M+=2n.x.1e;f.x=2W.x=2n.x.f}7.1v.2u={M:2W.x===p,K:2W.y===p};c(7.d.f.W(\'1S\')!==f.1w()){44.S(7,f)}}}())}c(!7.d.22&&$.16.1d&&1A($.16.2X.2H(0),10)===6){22.S(7)}1c=7.57.S(7,r);c(1c===p){B 7}c(8.k.s!==\'1K\'&&4o===H){7.V.4j=H;7.d.h.3S().4o(k,7V,\'80\',j(){7.V.4j=p})}C{7.d.h.F(k)}7.5c.S(7,r);B 7},4d:j(1r){c(!7.V.1b||(1r&&P 1r!==\'2s\')){B p}R 1F=7.d.1y.7W().2m(7.d.f).2m(7.d.1i),2f=7.d.1t.2m(7.d.1y.2w()),h=7.d.h,1H=7.8.e.o.1H,2b=7.8.e.o.2b;c(!1r){c(P 7.8.e.o.2Z===\'2s\'){1r=7.8.e.o.2Z}C{7.d.h.F({o:\'6e\'});1F.D();h.o(1r);c($.16.1d){2f.F({2f:\'\'})}1r=7.3d().o;c(!7.8.e.o.2Z){1r=1u.2b(1u.1H(1r,2b),1H)}}}c(1r%2){1r+=1}7.d.h.o(1r);1F.q();c(7.8.e.I.E){7.d.h.1M(\'.g-2k\').1L(j(i){$(A).o(1r-(7.8.e.I.E*2))})}c($.16.1d){2f.F({2f:1});7.d.1t.o(1r);c(7.d.22){7.d.22.o(1r).G(7.3d.G)}}B 7},7Y:j(21){R f,2j,1n,w,X;c(!7.V.1b||P 21!==\'1w\'||!$.18.g.3c[21]){B p}7.8.e=4l.S(7,$.18.g.3c[21],7.8.4v.e);7.d.u.F(2G(7.8.e));c(7.8.u.U.1m!==p){7.d.U.F(2G(7.8.e.U,H))}7.d.1y.F({7U:7.8.e.I.J});c(7.8.e.f.w!==p){c($(\'<1f />\').1q(0).1E){f=7.d.h.1M(\'.g-f 1f:1R\');1n=f.1q(0).1E(\'2d\');1n.5I(0,0,3N,3N);w=f.3O(\'12[1S]:1R\').W(\'1S\');X=4t(w,7.8.e.f.N.o,7.8.e.f.N.G);4u.S(7,f,X,7.8.e.f.J||7.8.e.I.J)}C c($.16.1d){f=7.d.h.1M(\'.g-f [5E="3M"]\');f.W(\'3t\',7.8.e.f.J||7.8.e.I.J)}}c(7.8.e.I.E>0){7.d.h.1M(\'.g-2k\').F({7X:7.8.e.I.J});c($(\'<1f />\').1q(0).1E){2j=4e(7.8.e.I.E);7.d.h.1M(\'.g-1t 1f\').1L(j(){1n=$(A).1q(0).1E(\'2d\');1n.5I(0,0,3N,3N);w=$(A).3O(\'12[1S]:1R\').W(\'1S\');46.S(7,$(A),2j[w],7.8.e.I.E,7.8.e.I.J)})}C c($.16.1d){7.d.h.1M(\'.g-1t [5E="3p"]\').1L(j(){$(A).W(\'3t\',7.8.e.I.J)})}}B 7},4A:j(u,5F){R 36,37,4K;j 4J(){7.4d();c(5F!==p){c(7.8.k.17!==\'29\'){7.2h(7.d.h.2r(\':28\'),H)}c(7.8.e.f.w!==p){42.S(7)}}}c(!u){B p}36=7.54.S(7,u);c(P 36===\'1w\'){u=36}C c(36===p){B}c(7.V.1b){c($.16.1d){7.d.1y.2w().F({2f:\'7Z\'})}c(u.4r&&u.Q>0){u.5V(H).5P(7.d.u).q()}C{7.d.u.2l(u)}37=7.d.u.1M(\'4U[6O=p]\');c(37.Q>0){4K=0;37.1L(j(i){$(\'<4U 4T="\'+$(A).W(\'4T\')+\'" />\').7D(j(){c(++4K===37.Q){4J()}})})}C{4J()}}C{7.8.u.1m=u}7.4Y.S(7);B 7},5Z:j(1x,Y,2A){R 1c;j 4D(u){7.63.S(7);7.4A(u)}c(!7.V.1b){B p}1c=7.51.S(7);c(1c===p){B 7}c(2A===\'60\'){$.60(1x,Y,4D)}C{$.1q(1x,Y,4D)}B 7},5W:j(u){R 1c;c(!7.V.1b||!u){B p}1c=7.64.S(7);c(1c===p){B 7}c(7.d.1i){7.d.1i=7.d.1i.5V(H)}7.d.U.2l(u);c(7.d.1i){7.d.U.3B(7.d.1i)}7.65.S(7);B 7},2E:j(r){R 4B,3F,3y,1c;c(!7.V.1b||7.8.k.17===\'29\'){B p}4B=1A(7.d.h.F(\'z-3s\'),10);3F=7u+$(\'12.g[11^="g"]\').Q-1;c(!7.V.3Z&&4B!==3F){1c=7.5H.S(7,r);c(1c===p){B 7}$(\'12.g[11^="g"]\').5S(7.d.h).1L(j(){c($(A).g(\'T\').V.1b===H){3y=1A($(A).F(\'z-3s\'),10);c(P 3y===\'2s\'&&3y>-1){$(A).F({68:1A($(A).F(\'z-3s\'),10)-1})}$(A).g(\'T\').V.3Z=p}});7.d.h.F({68:3F});7.V.3Z=H;7.5C.S(7,r)}B 7},3X:j(38){7.V.23=38?H:p;B 7},3f:j(){R i,1c,O,4z=7.d.s.Y(\'4p\'+7.1v.W[0]);1c=7.61.S(7);c(1c===p){B 7}c(7.V.1b){7.8.q.L.s.1O(\'4C.g\',7.2h);7.8.q.L.s.1O(\'4x.g\',7.D);7.8.q.L.s.1O(7.8.q.L.r+\'.g\');7.8.D.L.s.1O(7.8.D.L.r+\'.g\');7.d.h.1O(7.8.D.L.r+\'.g\');7.d.h.1O(\'35.g\',7.2E);7.d.h.3W()}C{7.8.q.L.s.1O(7.8.q.L.r+\'.g-\'+7.11+\'-4m\')}c(P 7.d.s.Y(\'g\')===\'19\'){O=7.d.s.Y(\'g\').O;c(P O===\'19\'&&O.Q>0){1V(i=0;i<O.Q-1;i++){c(O[i].11===7.11){O.5X(i,1)}}}}$.18.g.O.5X(7.11,1);c(P O===\'19\'&&O.Q>0){7.d.s.Y(\'g\').3k=O.Q-1}C{7.d.s.73(\'g\')}c(4z){7.d.s.W(7.1v.W[0],4z)}7.62.S(7);B 7.d.s},72:j(){R q,1k;c(!7.V.1b){B p}q=(7.d.h.F(\'2a\')!==\'3a\')?p:H;c(q){7.d.h.F({3V:\'1F\'}).q()}1k=7.d.h.1k();c(q){7.d.h.F({3V:\'28\'}).D()}B 1k},3d:j(){R q,2t;c(!7.V.1b){B p}q=(!7.d.h.2r(\':28\'))?H:p;c(q){7.d.h.F({3V:\'1F\'}).q()}2t={G:7.d.h.48(),o:7.d.h.47()};c(q){7.d.h.F({3V:\'28\'}).D()}B 2t}})}$.18.g=j(8,41){R i,11,O,20,2c,1T,15,T;c(P 8===\'1w\'){c($(A).Y(\'g\')){c(8===\'T\'){B $(A).Y(\'g\').O[$(A).Y(\'g\').3k]}C c(8===\'O\'){B $(A).Y(\'g\').O}}C{B $(A)}}C{c(!8){8={}}c(P 8.u!==\'19\'||(8.u.4r&&8.u.Q>0)){8.u={1m:8.u}}c(P 8.u.U!==\'19\'){8.u.U={1m:8.u.U}}c(P 8.k!==\'19\'){8.k={w:8.k}}c(P 8.k.w!==\'19\'){8.k.w={s:8.k.w,h:8.k.w}}c(P 8.q!==\'19\'){8.q={L:8.q}}c(P 8.q.L!==\'19\'){8.q.L={r:8.q.L}}c(P 8.q.Z!==\'19\'){8.q.Z={17:8.q.Z}}c(P 8.D!==\'19\'){8.D={L:8.D}}c(P 8.D.L!==\'19\'){8.D.L={r:8.D.L}}c(P 8.D.Z!==\'19\'){8.D.Z={17:8.D.Z}}c(P 8.e!==\'19\'){8.e={21:8.e}}8.e=4i(8.e);20=$.2p(H,{},$.18.g.39,8);20.e=4l.S({8:20},20.e);20.4v=$.2p(H,{},8)}B $(A).1L(j(){R 7=$(A),u=p;c(P 8===\'1w\'){1T=8.2F();O=$(A).g(\'O\');c(P O===\'19\'){c(41===H&&1T===\'3f\'){1V(i=O.Q-1;i>-1;i--){c(\'19\'===P O[i]){O[i].3f()}}}C{c(41!==H){O=[$(A).g(\'T\')]}1V(i=0;i<O.Q;i++){c(1T===\'3f\'){O[i].3f()}C c(O[i].V.1b===H){c(1T===\'q\'){O[i].q()}C c(1T===\'D\'){O[i].D()}C c(1T===\'2E\'){O[i].2E()}C c(1T===\'3X\'){O[i].3X(H)}C c(1T===\'71\'){O[i].3X(p)}C c(1T===\'7v\'){O[i].2h()}}}}}}C{15=$.2p(H,{},20);15.D.Z.Q=20.D.Z.Q;15.q.Z.Q=20.q.Z.Q;c(15.k.3U===p){15.k.3U=$(31.4X)}c(15.k.s===p){15.k.s=$(A)}c(15.q.L.s===p){15.q.L.s=$(A)}c(15.D.L.s===p){15.D.L.s=$(A)}15.k.w.h=2T 2D(15.k.w.h);15.k.w.s=2T 2D(15.k.w.s);c(!15.u.1m.Q){$([\'U\',\'6b\']).1L(j(i,W){R 2C=7.W(W);c(2C&&2C.Q){u=[W,2C];7.Y(\'4p\'+W,2C).74(W);15.u.1m=2C.3l(/\\n/75,\'<78 />\');B p}})}11=$.18.g.O.Q;1V(i=0;i<11;i++){c(P $.18.g.O[i]===\'5i\'){11=i;1C}}2c=2T 56($(A),15,11);$.18.g.O[11]=2c;2c.1v.W=u;c(P $(A).Y(\'g\')===\'19\'&&$(A).Y(\'g\')){c(P $(A).W(\'g\')===\'5i\'){$(A).Y(\'g\').3k=$(A).Y(\'g\').O.Q}$(A).Y(\'g\').O.5h(2c)}C{$(A).Y(\'g\',{3k:0,O:[2c]})}c(15.u.5w===p&&15.q.L.r!==p&&15.q.3x!==H){15.q.L.s.1J(15.q.L.r+\'.g-\'+11+\'-4m\',{g:11},j(r){T=$.18.g.O[r.Y.g];T.8.q.L.s.1O(T.8.q.L.r+\'.g-\'+r.Y.g+\'-4m\');T.1v.1K={M:r.3Y,K:r.4c};4w.S(T);T.8.q.L.s.77(T.8.q.L.r)})}C{2c.1v.1K={M:15.q.L.s.1k().M,K:15.q.L.s.1k().K};4w.S(2c)}}})};$.18.g.O=[];$.18.g.18={W:$.18.W};$.18.W=j(W){R T=$(A).g(\'T\');B(3b.Q===1&&(/U|6b/i).1Y(W)&&T.V&&T.V.1b===H)?$(A).Y(\'4p\'+T.1v.W[0]):$.18.g.18.W.4s(A,3b)};$.18.g.39={u:{5w:p,1m:p,1x:p,Y:1z,U:{1m:p,1i:p}},k:{s:p,w:{s:\'3P\',h:\'3K\'},1e:{x:0,y:0,1K:H,55:p,3E:H,3L:H,1k:p},17:\'34\',3U:p},q:{L:{s:p,r:\'35\'},Z:{17:\'3w\',Q:5T},2V:76,1X:p,3x:p},D:{L:{s:p,r:\'4x\'},Z:{17:\'3w\',Q:5T},2V:0,3g:p},T:{5J:j(){},5f:j(){},57:j(){},5c:j(){},5n:j(){},5q:j(){},5A:j(){},4Z:j(){},54:j(){},4Y:j(){},51:j(){},63:j(){},64:j(){},65:j(){},61:j(){},62:j(){},5H:j(){},5C:j(){}}};$.18.g.3c={39:{1s:\'66\',J:\'#6Z\',2u:\'1F\',6Y:\'M\',o:{2b:0,1H:6S},2x:\'6R 6Q\',I:{o:1,E:0,J:\'#6P\'},f:{w:p,J:p,N:{o:13,G:13},2B:1},U:{1s:\'#6T\',6U:\'6X\',2x:\'6W 6V\'},1i:{79:\'7a\'},1g:{s:\'\',f:\'g-f\',U:\'g-U\',1i:\'g-1i\',u:\'g-u\',3T:\'g-3T\'}},5L:{I:{o:3,E:0,J:\'#7o\'},U:{1s:\'#7n\',J:\'#5M\'},1s:\'#7m\',J:\'#5M\',1g:{h:\'g-5L\'}},6d:{I:{o:3,E:0,J:\'#7p\'},U:{1s:\'#7q\',J:\'#6c\'},1s:\'66\',J:\'#6c\',1g:{h:\'g-6d\'}},69:{I:{o:3,E:0,J:\'#7t\'},U:{1s:\'#7s\',J:\'#67\'},1s:\'#7r\',J:\'#67\',1g:{h:\'g-69\'}},4H:{I:{o:3,E:0,J:\'#7l\'},U:{1s:\'#7k\',J:\'#6g\'},1s:\'#7e\',J:\'#6g\',1g:{h:\'g-4H\'}},52:{I:{o:3,E:0,J:\'#7d\'},U:{1s:\'#7c\',J:\'#4W\'},1s:\'#7b\',J:\'#4W\',1g:{h:\'g-52\'}},5k:{I:{o:3,E:0,J:\'#7f\'},U:{1s:\'#7g\',J:\'#7j\'},1s:\'#7i\',J:\'#7h\',1g:{h:\'g-5k\'}}}}(82));',62,499,'|||||||self|options||||if|elements|style|tip|qtip|tooltip||function|position||||width|false|show|event|target||content||corner||||this|return|else|hide|radius|css|height|true|border|color|top|when|left|size|interfaces|typeof|length|var|call|api|title|status|attr|coordinates|data|effect||id|div||coords|config|browser|type|fn|object|px|rendered|returned|msie|adjust|canvas|classes|adj|button|center|offset|targetHeight|text|context|my|targetWidth|get|newWidth|background|wrapper|Math|cache|string|url|contentWrapper|null|parseInt|1px|break|finalStyle|getContext|hidden|timers|max|class|bind|mouse|each|find|tips|unbind|ieAdjust|containers|first|rel|command|posOptions|for|inactive|solo|test|case|opts|name|bgiframe|disabled|positionAdjust|right|bottom|imagePos|visible|static|display|min|obj||window|zoom|clearTimeout|updatePosition|hideTarget|borders|betweenCorners|html|add|adapted|path|extend|margin|is|number|dimensions|overflow|styleExtend|children|padding|precedance|90|method|opacity|val|Corner|focus|toLowerCase|jQueryStyle|charAt|toggle|myOffset|afterHide|default|afterShow|atOffset|borderAdjust|elemHeight|elemWidth|at|line|new|styleObj|delay|adjusted|version|font|value|topEdge|document|pBottom|bottomEdge|absolute|mouseover|parsedContent|images|state|defaults|none|arguments|styles|getDimensions|borderTop|destroy|fixed|showTarget|borderBottom|leftEdge|current|replace|pRight|rightEdge|align|arc|solid|aria|index|fillcolor|inactiveEvents|inactiveMethod|fade|ready|elemIndex|delete|styleArray|prepend|image|scrollLeft|scroll|newIndex|scrollTop|floor|behavior|coordsize|topLeft|resize|shape|300|parent|bottomRight|newMargin|VML|stop|active|container|visiblity|remove|disable|pageX|focused|topRight|blanket|positionTip|removeAttribute|createTip|adapt|drawBorder|outerWidth|outerHeight|marginTop|ieStyle|sub|pageY|updateWidth|calculateBorders|ltr|borderCoord|paddingSize|sanitizeStyle|animated|dir|buildStyle|create|paddingCorner|animate|old|sideWidth|jquery|apply|calculateTip|drawTip|user|construct|mouseout|relative|oldattr|updateContent|curIndex|mousemove|setupContent|block|offsetParent|vertWidth|red|bottomLeft|afterLoad|loadedImages|mapName|setTimeout|switch|betweenWidth|hideMethod|vertical|unfocus|showMethod|src|img|ceil|58792E|body|onContentUpdate|onHide||beforeContentLoad|green|inline|beforeContentUpdate|screen|QTip|beforePositionUpdate|prependTo|createBorder|String|createTitle|onPositionUpdate|click|role|onRender|parents|push|undefined|mouseenter|blue|assignEvents|filter|beforeShow|slide|grow|onShow|condition|append|dequeue|queue|addClass|prerender|middle|match|abs|beforeHide|bottomright|onFocus|270|nodeName|reposition|fillStyle|beforeFocus|clearRect|beforeRender|topright|cream|A27D35|topleft|unshift|appendTo|lineTo|in|not|100|beginPath|clone|updateTitle|splice|fill|loadContent|post|beforeDestroy|onDestroy|onContentLoad|beforeTitleUpdate|onTitleUpdate|white|f3f3f3|zIndex|dark|bottomleft|alt|454545|light|auto|stroked|9C2F2F|dblclick|rightcenter|mouseup|mousedown|mouseleave|Right|Left|moveTo|filled|out|endangle|startangle|use|strict|bottomcenter|qtipSelector|leftbottom|topcenter|righttop|leave|eq|rightbottom|0px|labelledby|while|float|borderWidth|xe|leftcenter|marginLeft|search|lefttop|PI|complete|d3d3d3|9px|5px|250|e1e1e1|fontWeight|12px|7px|bold|textAlign|111|relatedTarget|enable|getPosition|removeData|removeAttr|gi|140|trigger|br|cursor|pointer|CDE6AC|b9db8c|A9DB66|F79992|ADD9ED|D0E9F5|4D9FBF|E5F6FE|5E99BD|f28279|CE6F6F|FBF7AA|F0DE7D|F9E98E|E2E2E2|f1f1f1|505050|404040|303030|15000|update|boolean|removeClass|slideUp|fadeOut|area|split|circle|load|usemap|map|slideDown|fadeIn|frameborder|iframe|preventDefault|stopPropagation|tabindex|javascript|webkit|moz|describedby|alpha|poly|rect|borderColor|200|siblings|backgroundColor|updateStyle|normal|swing|10000000em|jQuery'.split('|'),0,{}))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/jquery.tools.min.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,116 @@
+/*
+ * jQuery Tools 1.2.4 - The missing UI library for the Web
+ * 
+ * [toolbox.flashembed, toolbox.history, toolbox.expose, toolbox.mousewheel, tabs, tabs.slideshow, tooltip, tooltip.slide, tooltip.dynamic, scrollable, scrollable.autoscroll, scrollable.navigator, overlay, overlay.apple, dateinput, rangeinput, validator]
+ * 
+ * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
+ * 
+ * http://flowplayer.org/tools/
+ * 
+ * jquery.event.wheel.js - rev 1 
+ * Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
+ * Liscensed under the MIT License (MIT-LICENSE.txt)
+ * http://www.opensource.org/licenses/mit-license.php
+ * Created: 2008-07-01 | Updated: 2008-07-14
+ * 
+ * -----
+ * 
+ * File generated: Wed Aug 18 09:10:10 GMT 2010
+ */
+(function(){function f(a,b){if(b)for(var c in b)if(b.hasOwnProperty(c))a[c]=b[c];return a}function l(a,b){var c=[];for(var d in a)if(a.hasOwnProperty(d))c[d]=b(a[d]);return c}function m(a,b,c){if(e.isSupported(b.version))a.innerHTML=e.getHTML(b,c);else if(b.expressInstall&&e.isSupported([6,65]))a.innerHTML=e.getHTML(f(b,{src:b.expressInstall}),{MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title});else{if(!a.innerHTML.replace(/\s/g,"")){a.innerHTML="<h2>Flash version "+b.version+
+" or greater is required</h2><h3>"+(g[0]>0?"Your version is "+g:"You have no flash plugin installed")+"</h3>"+(a.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='"+k+"'>here</a></p>");if(a.tagName=="A")a.onclick=function(){location.href=k}}if(b.onFail){var d=b.onFail.call(this);if(typeof d=="string")a.innerHTML=d}}if(i)window[b.id]=document.getElementById(b.id);f(this,{getRoot:function(){return a},getOptions:function(){return b},getConf:function(){return c},
+getApi:function(){return a.firstChild}})}var i=document.all,k="http://www.adobe.com/go/getflashplayer",n=typeof jQuery=="function",o=/(\d+)[^\d]+(\d+)[^\d]*(\d*)/,j={width:"100%",height:"100%",id:"_"+(""+Math.random()).slice(9),allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:[3,0],onFail:null,expressInstall:null,w3c:false,cachebusting:false};window.attachEvent&&window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}});
+window.flashembed=function(a,b,c){if(typeof a=="string")a=document.getElementById(a.replace("#",""));if(a){if(typeof b=="string")b={src:b};return new m(a,f(f({},j),b),c)}};var e=f(window.flashembed,{conf:j,getVersion:function(){var a,b;try{b=navigator.plugins["Shockwave Flash"].description.slice(16)}catch(c){try{b=(a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"))&&a.GetVariable("$version")}catch(d){try{b=(a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"))&&a.GetVariable("$version")}catch(h){}}}return(b=
+o.exec(b))?[b[1],b[3]]:[0,0]},asString:function(a){if(a===null||a===undefined)return null;var b=typeof a;if(b=="object"&&a.push)b="array";switch(b){case "string":a=a.replace(new RegExp('(["\\\\])',"g"),"\\$1");a=a.replace(/^\s?(\d+\.?\d+)%/,"$1pct");return'"'+a+'"';case "array":return"["+l(a,function(d){return e.asString(d)}).join(",")+"]";case "function":return'"function()"';case "object":b=[];for(var c in a)a.hasOwnProperty(c)&&b.push('"'+c+'":'+e.asString(a[c]));return"{"+b.join(",")+"}"}return String(a).replace(/\s/g,
+" ").replace(/\'/g,'"')},getHTML:function(a,b){a=f({},a);var c='<object width="'+a.width+'" height="'+a.height+'" id="'+a.id+'" name="'+a.id+'"';if(a.cachebusting)a.src+=(a.src.indexOf("?")!=-1?"&":"?")+Math.random();c+=a.w3c||!i?' data="'+a.src+'" type="application/x-shockwave-flash"':' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';c+=">";if(a.w3c||i)c+='<param name="movie" value="'+a.src+'" />';a.width=a.height=a.id=a.w3c=a.src=null;a.onFail=a.version=a.expressInstall=null;for(var d in a)if(a[d])c+=
+'<param name="'+d+'" value="'+a[d]+'" />';a="";if(b){for(var h in b)if(b[h]){d=b[h];a+=h+"="+(/function|object/.test(typeof d)?e.asString(d):d)+"&"}a=a.slice(0,-1);c+='<param name="flashvars" value=\''+a+"' />"}c+="</object>";return c},isSupported:function(a){return g[0]>a[0]||g[0]==a[0]&&g[1]>=a[1]}}),g=e.getVersion();if(n){jQuery.tools=jQuery.tools||{version:"1.2.4"};jQuery.tools.flashembed={conf:j};jQuery.fn.flashembed=function(a,b){return this.each(function(){$(this).data("flashembed",flashembed(this,
+a,b))})}}})();
+(function(b){function h(c){if(c){var a=d.contentWindow.document;a.open().close();a.location.hash=c}}var g,d,f,i;b.tools=b.tools||{version:"1.2.4"};b.tools.history={init:function(c){if(!i){if(b.browser.msie&&b.browser.version<"8"){if(!d){d=b("<iframe/>").attr("src","javascript:false;").hide().get(0);b("body").append(d);setInterval(function(){var a=d.contentWindow.document;a=a.location.hash;g!==a&&b.event.trigger("hash",a)},100);h(location.hash||"#")}}else setInterval(function(){var a=location.hash;
+a!==g&&b.event.trigger("hash",a)},100);f=!f?c:f.add(c);c.click(function(a){var e=b(this).attr("href");d&&h(e);if(e.slice(0,1)!="#"){location.href="#"+e;return a.preventDefault()}});i=true}}};b(window).bind("hash",function(c,a){a?f.filter(function(){var e=b(this).attr("href");return e==a||e==a.replace("#","")}).trigger("history",[a]):f.eq(0).trigger("history",[a]);g=a;window.location.hash=g});b.fn.history=function(c){b.tools.history.init(this);return this.bind("history",c)}})(jQuery);
+(function(b){function k(){if(b.browser.msie){var a=b(document).height(),d=b(window).height();return[window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,a-d<20?d:a]}return[b(document).width(),b(document).height()]}function h(a){if(a)return a.call(b.mask)}b.tools=b.tools||{version:"1.2.4"};var l;l=b.tools.expose={conf:{maskId:"exposeMask",loadSpeed:"slow",closeSpeed:"fast",closeOnClick:true,closeOnEsc:true,zIndex:9998,opacity:0.8,startOpacity:0,color:"#fff",onLoad:null,
+onClose:null}};var c,i,e,g,j;b.mask={load:function(a,d){if(e)return this;if(typeof a=="string")a={color:a};a=a||g;g=a=b.extend(b.extend({},l.conf),a);c=b("#"+a.maskId);if(!c.length){c=b("<div/>").attr("id",a.maskId);b("body").append(c)}var m=k();c.css({position:"absolute",top:0,left:0,width:m[0],height:m[1],display:"none",opacity:a.startOpacity,zIndex:a.zIndex});a.color&&c.css("backgroundColor",a.color);if(h(a.onBeforeLoad)===false)return this;a.closeOnEsc&&b(document).bind("keydown.mask",function(f){f.keyCode==
+27&&b.mask.close(f)});a.closeOnClick&&c.bind("click.mask",function(f){b.mask.close(f)});b(window).bind("resize.mask",function(){b.mask.fit()});if(d&&d.length){j=d.eq(0).css("zIndex");b.each(d,function(){var f=b(this);/relative|absolute|fixed/i.test(f.css("position"))||f.css("position","relative")});i=d.css({zIndex:Math.max(a.zIndex+1,j=="auto"?0:j)})}c.css({display:"block"}).fadeTo(a.loadSpeed,a.opacity,function(){b.mask.fit();h(a.onLoad);e="full"});e=true;return this},close:function(){if(e){if(h(g.onBeforeClose)===
+false)return this;c.fadeOut(g.closeSpeed,function(){h(g.onClose);i&&i.css({zIndex:j});e=false});b(document).unbind("keydown.mask");c.unbind("click.mask");b(window).unbind("resize.mask")}return this},fit:function(){if(e){var a=k();c.css({width:a[0],height:a[1]})}},getMask:function(){return c},isLoaded:function(a){return a?e=="full":e},getConf:function(){return g},getExposed:function(){return i}};b.fn.mask=function(a){b.mask.load(a);return this};b.fn.expose=function(a){b.mask.load(a,this);return this}})(jQuery);
+(function(b){function c(a){switch(a.type){case "mousemove":return b.extend(a.data,{clientX:a.clientX,clientY:a.clientY,pageX:a.pageX,pageY:a.pageY});case "DOMMouseScroll":b.extend(a,a.data);a.delta=-a.detail/3;break;case "mousewheel":a.delta=a.wheelDelta/120;break}a.type="wheel";return b.event.handle.call(this,a,a.delta)}b.fn.mousewheel=function(a){return this[a?"bind":"trigger"]("wheel",a)};b.event.special.wheel={setup:function(){b.event.add(this,d,c,{})},teardown:function(){b.event.remove(this,
+d,c)}};var d=!b.browser.mozilla?"mousewheel":"DOMMouseScroll"+(b.browser.version<"1.9"?" mousemove":"")})(jQuery);
+(function(c){function p(d,b,a){var e=this,l=d.add(this),h=d.find(a.tabs),i=b.jquery?b:d.children(b),j;h.length||(h=d.children());i.length||(i=d.parent().find(b));i.length||(i=c(b));c.extend(this,{click:function(f,g){var k=h.eq(f);if(typeof f=="string"&&f.replace("#","")){k=h.filter("[href*="+f.replace("#","")+"]");f=Math.max(h.index(k),0)}if(a.rotate){var n=h.length-1;if(f<0)return e.click(n,g);if(f>n)return e.click(0,g)}if(!k.length){if(j>=0)return e;f=a.initialIndex;k=h.eq(f)}if(f===j)return e;
+g=g||c.Event();g.type="onBeforeClick";l.trigger(g,[f]);if(!g.isDefaultPrevented()){o[a.effect].call(e,f,function(){g.type="onClick";l.trigger(g,[f])});j=f;h.removeClass(a.current);k.addClass(a.current);return e}},getConf:function(){return a},getTabs:function(){return h},getPanes:function(){return i},getCurrentPane:function(){return i.eq(j)},getCurrentTab:function(){return h.eq(j)},getIndex:function(){return j},next:function(){return e.click(j+1)},prev:function(){return e.click(j-1)},destroy:function(){h.unbind(a.event).removeClass(a.current);
+i.find("a[href^=#]").unbind("click.T");return e}});c.each("onBeforeClick,onClick".split(","),function(f,g){c.isFunction(a[g])&&c(e).bind(g,a[g]);e[g]=function(k){k&&c(e).bind(g,k);return e}});if(a.history&&c.fn.history){c.tools.history.init(h);a.event="history"}h.each(function(f){c(this).bind(a.event,function(g){e.click(f,g);return g.preventDefault()})});i.find("a[href^=#]").bind("click.T",function(f){e.click(c(this).attr("href"),f)});if(location.hash&&a.tabs==="a"&&d.find(a.tabs+location.hash).length)e.click(location.hash);
+else if(a.initialIndex===0||a.initialIndex>0)e.click(a.initialIndex)}c.tools=c.tools||{version:"1.2.4"};c.tools.tabs={conf:{tabs:"a",current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",rotate:false,history:false},addEffect:function(d,b){o[d]=b}};var o={"default":function(d,b){this.getPanes().hide().eq(d).show();b.call()},fade:function(d,b){var a=this.getConf(),e=a.fadeOutSpeed,l=this.getPanes();e?l.fadeOut(e):l.hide();l.eq(d).fadeIn(a.fadeInSpeed,b)},slide:function(d,
+b){this.getPanes().slideUp(200);this.getPanes().eq(d).slideDown(400,b)},ajax:function(d,b){this.getPanes().eq(0).load(this.getTabs().eq(d).attr("href"),b)}},m;c.tools.tabs.addEffect("horizontal",function(d,b){m||(m=this.getPanes().eq(0).width());this.getCurrentPane().animate({width:0},function(){c(this).hide()});this.getPanes().eq(d).animate({width:m},function(){c(this).show();b.call()})});c.fn.tabs=function(d,b){var a=this.data("tabs");if(a){a.destroy();this.removeData("tabs")}if(c.isFunction(b))b=
+{onBeforeClick:b};b=c.extend({},c.tools.tabs.conf,b);this.each(function(){a=new p(c(this),d,b);c(this).data("tabs",a)});return b.api?a:this}})(jQuery);
+(function(d){function r(g,a){function p(f){var e=d(f);return e.length<2?e:g.parent().find(f)}var c=this,j=g.add(this),b=g.data("tabs"),h,m,k,n=false,o=p(a.next).click(function(){b.next()}),l=p(a.prev).click(function(){b.prev()});d.extend(c,{getTabs:function(){return b},getConf:function(){return a},play:function(){if(!h){var f=d.Event("onBeforePlay");j.trigger(f);if(f.isDefaultPrevented())return c;n=false;h=setInterval(b.next,a.interval);j.trigger("onPlay");b.next()}},pause:function(){if(!h&&!k)return c;
+var f=d.Event("onBeforePause");j.trigger(f);if(f.isDefaultPrevented())return c;h=clearInterval(h);k=clearInterval(k);j.trigger("onPause")},stop:function(){c.pause();n=true}});d.each("onBeforePlay,onPlay,onBeforePause,onPause".split(","),function(f,e){d.isFunction(a[e])&&c.bind(e,a[e]);c[e]=function(s){return c.bind(e,s)}});if(a.autopause){var t=b.getTabs().add(o).add(l).add(b.getPanes());t.hover(function(){c.pause();m=clearInterval(m)},function(){n||(m=setTimeout(c.play,a.interval))})}if(a.autoplay)k=
+setTimeout(c.play,a.interval);else c.stop();a.clickable&&b.getPanes().click(function(){b.next()});if(!b.getConf().rotate){var i=a.disabledClass;b.getIndex()||l.addClass(i);b.onBeforeClick(function(f,e){if(e){l.removeClass(i);e==b.getTabs().length-1?o.addClass(i):o.removeClass(i)}else l.addClass(i)})}}var q;q=d.tools.tabs.slideshow={conf:{next:".forward",prev:".backward",disabledClass:"disabled",autoplay:false,autopause:true,interval:3E3,clickable:true,api:false}};d.fn.slideshow=function(g){var a=
+this.data("slideshow");if(a)return a;g=d.extend({},q.conf,g);this.each(function(){a=new r(d(this),g);d(this).data("slideshow",a)});return g.api?a:this}})(jQuery);
+(function(f){function p(a,b,c){var h=c.relative?a.position().top:a.offset().top,e=c.relative?a.position().left:a.offset().left,i=c.position[0];h-=b.outerHeight()-c.offset[0];e+=a.outerWidth()+c.offset[1];var j=b.outerHeight()+a.outerHeight();if(i=="center")h+=j/2;if(i=="bottom")h+=j;i=c.position[1];a=b.outerWidth()+a.outerWidth();if(i=="center")e-=a/2;if(i=="left")e-=a;return{top:h,left:e}}function u(a,b){var c=this,h=a.add(c),e,i=0,j=0,m=a.attr("title"),q=a.attr("data-tooltip"),r=n[b.effect],l,s=
+a.is(":input"),v=s&&a.is(":checkbox, :radio, select, :button, :submit"),t=a.attr("type"),k=b.events[t]||b.events[s?v?"widget":"input":"def"];if(!r)throw'Nonexistent effect "'+b.effect+'"';k=k.split(/,\s*/);if(k.length!=2)throw"Tooltip: bad events configuration for "+t;a.bind(k[0],function(d){clearTimeout(i);if(b.predelay)j=setTimeout(function(){c.show(d)},b.predelay);else c.show(d)}).bind(k[1],function(d){clearTimeout(j);if(b.delay)i=setTimeout(function(){c.hide(d)},b.delay);else c.hide(d)});if(m&&
+b.cancelDefault){a.removeAttr("title");a.data("title",m)}f.extend(c,{show:function(d){if(!e){if(q)e=f(q);else if(m)e=f(b.layout).addClass(b.tipClass).appendTo(document.body).hide().append(m);else if(b.tip)e=f(b.tip).eq(0);else{e=a.next();e.length||(e=a.parent().next())}if(!e.length)throw"Cannot find tooltip for "+a;}if(c.isShown())return c;e.stop(true,true);var g=p(a,e,b);d=d||f.Event();d.type="onBeforeShow";h.trigger(d,[g]);if(d.isDefaultPrevented())return c;g=p(a,e,b);e.css({position:"absolute",
+top:g.top,left:g.left});l=true;r[0].call(c,function(){d.type="onShow";l="full";h.trigger(d)});g=b.events.tooltip.split(/,\s*/);e.bind(g[0],function(){clearTimeout(i);clearTimeout(j)});g[1]&&!a.is("input:not(:checkbox, :radio), textarea")&&e.bind(g[1],function(o){o.relatedTarget!=a[0]&&a.trigger(k[1].split(" ")[0])});return c},hide:function(d){if(!e||!c.isShown())return c;d=d||f.Event();d.type="onBeforeHide";h.trigger(d);if(!d.isDefaultPrevented()){l=false;n[b.effect][1].call(c,function(){d.type="onHide";
+h.trigger(d)});return c}},isShown:function(d){return d?l=="full":l},getConf:function(){return b},getTip:function(){return e},getTrigger:function(){return a}});f.each("onHide,onBeforeShow,onShow,onBeforeHide".split(","),function(d,g){f.isFunction(b[g])&&f(c).bind(g,b[g]);c[g]=function(o){f(c).bind(g,o);return c}})}f.tools=f.tools||{version:"1.2.4"};f.tools.tooltip={conf:{effect:"toggle",fadeOutSpeed:"fast",predelay:0,delay:30,opacity:1,tip:0,position:["top","center"],offset:[0,0],relative:false,cancelDefault:true,
+events:{def:"mouseenter,mouseleave",input:"focus,blur",widget:"focus mouseenter,blur mouseleave",tooltip:"mouseenter,mouseleave"},layout:"<div/>",tipClass:"tooltip"},addEffect:function(a,b,c){n[a]=[b,c]}};var n={toggle:[function(a){var b=this.getConf(),c=this.getTip();b=b.opacity;b<1&&c.css({opacity:b});c.show();a.call()},function(a){this.getTip().hide();a.call()}],fade:[function(a){var b=this.getConf();this.getTip().fadeTo(b.fadeInSpeed,b.opacity,a)},function(a){this.getTip().fadeOut(this.getConf().fadeOutSpeed,
+a)}]};f.fn.tooltip=function(a){var b=this.data("tooltip");if(b)return b;a=f.extend(true,{},f.tools.tooltip.conf,a);if(typeof a.position=="string")a.position=a.position.split(/,?\s/);this.each(function(){b=new u(f(this),a);f(this).data("tooltip",b)});return a.api?b:this}})(jQuery);
+(function(d){var i=d.tools.tooltip;d.extend(i.conf,{direction:"up",bounce:false,slideOffset:10,slideInSpeed:200,slideOutSpeed:200,slideFade:!d.browser.msie});var e={up:["-","top"],down:["+","top"],left:["-","left"],right:["+","left"]};i.addEffect("slide",function(g){var a=this.getConf(),f=this.getTip(),b=a.slideFade?{opacity:a.opacity}:{},c=e[a.direction]||e.up;b[c[1]]=c[0]+"="+a.slideOffset;a.slideFade&&f.css({opacity:0});f.show().animate(b,a.slideInSpeed,g)},function(g){var a=this.getConf(),f=a.slideOffset,
+b=a.slideFade?{opacity:0}:{},c=e[a.direction]||e.up,h=""+c[0];if(a.bounce)h=h=="+"?"-":"+";b[c[1]]=h+"="+f;this.getTip().animate(b,a.slideOutSpeed,function(){d(this).hide();g.call()})})})(jQuery);
+(function(g){function j(a){var c=g(window),d=c.width()+c.scrollLeft(),h=c.height()+c.scrollTop();return[a.offset().top<=c.scrollTop(),d<=a.offset().left+a.width(),h<=a.offset().top+a.height(),c.scrollLeft()>=a.offset().left]}function k(a){for(var c=a.length;c--;)if(a[c])return false;return true}var i=g.tools.tooltip;i.dynamic={conf:{classNames:"top right bottom left"}};g.fn.dynamic=function(a){if(typeof a=="number")a={speed:a};a=g.extend({},i.dynamic.conf,a);var c=a.classNames.split(/\s/),d;this.each(function(){var h=
+g(this).tooltip().onBeforeShow(function(e,f){e=this.getTip();var b=this.getConf();d||(d=[b.position[0],b.position[1],b.offset[0],b.offset[1],g.extend({},b)]);g.extend(b,d[4]);b.position=[d[0],d[1]];b.offset=[d[2],d[3]];e.css({visibility:"hidden",position:"absolute",top:f.top,left:f.left}).show();f=j(e);if(!k(f)){if(f[2]){g.extend(b,a.top);b.position[0]="top";e.addClass(c[0])}if(f[3]){g.extend(b,a.right);b.position[1]="right";e.addClass(c[1])}if(f[0]){g.extend(b,a.bottom);b.position[0]="bottom";e.addClass(c[2])}if(f[1]){g.extend(b,
+a.left);b.position[1]="left";e.addClass(c[3])}if(f[0]||f[2])b.offset[0]*=-1;if(f[1]||f[3])b.offset[1]*=-1}e.css({visibility:"visible"}).hide()});h.onBeforeShow(function(){var e=this.getConf();this.getTip();setTimeout(function(){e.position=[d[0],d[1]];e.offset=[d[2],d[3]]},0)});h.onHide(function(){var e=this.getTip();e.removeClass(a.classNames)});ret=h});return a.api?ret:this}})(jQuery);
+(function(e){function n(f,c){var a=e(c);return a.length<2?a:f.parent().find(c)}function t(f,c){var a=this,l=f.add(a),g=f.children(),k=0,m=c.vertical;j||(j=a);if(g.length>1)g=e(c.items,f);e.extend(a,{getConf:function(){return c},getIndex:function(){return k},getSize:function(){return a.getItems().size()},getNaviButtons:function(){return o.add(p)},getRoot:function(){return f},getItemWrap:function(){return g},getItems:function(){return g.children(c.item).not("."+c.clonedClass)},move:function(b,d){return a.seekTo(k+
+b,d)},next:function(b){return a.move(1,b)},prev:function(b){return a.move(-1,b)},begin:function(b){return a.seekTo(0,b)},end:function(b){return a.seekTo(a.getSize()-1,b)},focus:function(){return j=a},addItem:function(b){b=e(b);if(c.circular){g.children("."+c.clonedClass+":last").before(b);g.children("."+c.clonedClass+":first").replaceWith(b.clone().addClass(c.clonedClass))}else g.append(b);l.trigger("onAddItem",[b]);return a},seekTo:function(b,d,h){b.jquery||(b*=1);if(c.circular&&b===0&&k==-1&&d!==
+0)return a;if(!c.circular&&b<0||b>a.getSize()||b<-1)return a;var i=b;if(b.jquery)b=a.getItems().index(b);else i=a.getItems().eq(b);var q=e.Event("onBeforeSeek");if(!h){l.trigger(q,[b,d]);if(q.isDefaultPrevented()||!i.length)return a}i=m?{top:-i.position().top}:{left:-i.position().left};k=b;j=a;if(d===undefined)d=c.speed;g.animate(i,d,c.easing,h||function(){l.trigger("onSeek",[b])});return a}});e.each(["onBeforeSeek","onSeek","onAddItem"],function(b,d){e.isFunction(c[d])&&e(a).bind(d,c[d]);a[d]=function(h){e(a).bind(d,
+h);return a}});if(c.circular){var r=a.getItems().slice(-1).clone().prependTo(g),s=a.getItems().eq(1).clone().appendTo(g);r.add(s).addClass(c.clonedClass);a.onBeforeSeek(function(b,d,h){if(!b.isDefaultPrevented())if(d==-1){a.seekTo(r,h,function(){a.end(0)});return b.preventDefault()}else d==a.getSize()&&a.seekTo(s,h,function(){a.begin(0)})});a.seekTo(0,0,function(){})}var o=n(f,c.prev).click(function(){a.prev()}),p=n(f,c.next).click(function(){a.next()});!c.circular&&a.getSize()>1&&a.onBeforeSeek(function(b,
+d){setTimeout(function(){if(!b.isDefaultPrevented()){o.toggleClass(c.disabledClass,d<=0);p.toggleClass(c.disabledClass,d>=a.getSize()-1)}},1)});c.mousewheel&&e.fn.mousewheel&&f.mousewheel(function(b,d){if(c.mousewheel){a.move(d<0?1:-1,c.wheelSpeed||50);return false}});c.keyboard&&e(document).bind("keydown.scrollable",function(b){if(!(!c.keyboard||b.altKey||b.ctrlKey||e(b.target).is(":input")))if(!(c.keyboard!="static"&&j!=a)){var d=b.keyCode;if(m&&(d==38||d==40)){a.move(d==38?-1:1);return b.preventDefault()}if(!m&&
+(d==37||d==39)){a.move(d==37?-1:1);return b.preventDefault()}}});c.initialIndex&&a.seekTo(c.initialIndex,0,function(){})}e.tools=e.tools||{version:"1.2.4"};e.tools.scrollable={conf:{activeClass:"active",circular:false,clonedClass:"cloned",disabledClass:"disabled",easing:"swing",initialIndex:0,item:null,items:".items",keyboard:true,mousewheel:false,next:".next",prev:".prev",speed:400,vertical:false,wheelSpeed:0}};var j;e.fn.scrollable=function(f){var c=this.data("scrollable");if(c)return c;f=e.extend({},
+e.tools.scrollable.conf,f);this.each(function(){c=new t(e(this),f);e(this).data("scrollable",c)});return f.api?c:this}})(jQuery);
+(function(c){var g=c.tools.scrollable;g.autoscroll={conf:{autoplay:true,interval:3E3,autopause:true}};c.fn.autoscroll=function(d){if(typeof d=="number")d={interval:d};var b=c.extend({},g.autoscroll.conf,d),h;this.each(function(){var a=c(this).data("scrollable");if(a)h=a;var e,i,f=true;a.play=function(){if(!e){f=false;e=setInterval(function(){a.next()},b.interval);a.next()}};a.pause=function(){e=clearInterval(e)};a.stop=function(){a.pause();f=true};b.autopause&&a.getRoot().add(a.getNaviButtons()).hover(function(){a.pause();
+clearInterval(i)},function(){f||(i=setTimeout(a.play,b.interval))});b.autoplay&&setTimeout(a.play,b.interval)});return b.api?h:this}})(jQuery);
+(function(d){function p(b,g){var h=d(g);return h.length<2?h:b.parent().find(g)}var m=d.tools.scrollable;m.navigator={conf:{navi:".navi",naviItem:null,activeClass:"active",indexed:false,idPrefix:null,history:false}};d.fn.navigator=function(b){if(typeof b=="string")b={navi:b};b=d.extend({},m.navigator.conf,b);var g;this.each(function(){function h(a,c,i){e.seekTo(c);if(j){if(location.hash)location.hash=a.attr("href").replace("#","")}else return i.preventDefault()}function f(){return k.find(b.naviItem||
+"> *")}function n(a){var c=d("<"+(b.naviItem||"a")+"/>").click(function(i){h(d(this),a,i)}).attr("href","#"+a);a===0&&c.addClass(l);b.indexed&&c.text(a+1);b.idPrefix&&c.attr("id",b.idPrefix+a);return c.appendTo(k)}function o(a,c){a=f().eq(c.replace("#",""));a.length||(a=f().filter("[href="+c+"]"));a.click()}var e=d(this).data("scrollable"),k=b.navi.jquery?b.navi:p(e.getRoot(),b.navi),q=e.getNaviButtons(),l=b.activeClass,j=b.history&&d.fn.history;if(e)g=e;e.getNaviButtons=function(){return q.add(k)};
+f().length?f().each(function(a){d(this).click(function(c){h(d(this),a,c)})}):d.each(e.getItems(),function(a){n(a)});e.onBeforeSeek(function(a,c){setTimeout(function(){if(!a.isDefaultPrevented()){var i=f().eq(c);!a.isDefaultPrevented()&&i.length&&f().removeClass(l).eq(c).addClass(l)}},1)});e.onAddItem(function(a,c){c=n(e.getItems().index(c));j&&c.history(o)});j&&f().history(o)});return b.api?g:this}})(jQuery);
+(function(a){function t(d,b){var c=this,i=d.add(c),o=a(window),k,f,m,g=a.tools.expose&&(b.mask||b.expose),n=Math.random().toString().slice(10);if(g){if(typeof g=="string")g={color:g};g.closeOnClick=g.closeOnEsc=false}var p=b.target||d.attr("rel");f=p?a(p):d;if(!f.length)throw"Could not find Overlay: "+p;d&&d.index(f)==-1&&d.click(function(e){c.load(e);return e.preventDefault()});a.extend(c,{load:function(e){if(c.isOpened())return c;var h=q[b.effect];if(!h)throw'Overlay: cannot find effect : "'+b.effect+
+'"';b.oneInstance&&a.each(s,function(){this.close(e)});e=e||a.Event();e.type="onBeforeLoad";i.trigger(e);if(e.isDefaultPrevented())return c;m=true;g&&a(f).expose(g);var j=b.top,r=b.left,u=f.outerWidth({margin:true}),v=f.outerHeight({margin:true});if(typeof j=="string")j=j=="center"?Math.max((o.height()-v)/2,0):parseInt(j,10)/100*o.height();if(r=="center")r=Math.max((o.width()-u)/2,0);h[0].call(c,{top:j,left:r},function(){if(m){e.type="onLoad";i.trigger(e)}});g&&b.closeOnClick&&a.mask.getMask().one("click",
+c.close);b.closeOnClick&&a(document).bind("click."+n,function(l){a(l.target).parents(f).length||c.close(l)});b.closeOnEsc&&a(document).bind("keydown."+n,function(l){l.keyCode==27&&c.close(l)});return c},close:function(e){if(!c.isOpened())return c;e=e||a.Event();e.type="onBeforeClose";i.trigger(e);if(!e.isDefaultPrevented()){m=false;q[b.effect][1].call(c,function(){e.type="onClose";i.trigger(e)});a(document).unbind("click."+n).unbind("keydown."+n);g&&a.mask.close();return c}},getOverlay:function(){return f},
+getTrigger:function(){return d},getClosers:function(){return k},isOpened:function(){return m},getConf:function(){return b}});a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","),function(e,h){a.isFunction(b[h])&&a(c).bind(h,b[h]);c[h]=function(j){a(c).bind(h,j);return c}});k=f.find(b.close||".close");if(!k.length&&!b.close){k=a('<a class="close"></a>');f.prepend(k)}k.click(function(e){c.close(e)});b.load&&c.load()}a.tools=a.tools||{version:"1.2.4"};a.tools.overlay={addEffect:function(d,
+b,c){q[d]=[b,c]},conf:{close:null,closeOnClick:true,closeOnEsc:true,closeSpeed:"fast",effect:"default",fixed:!a.browser.msie||a.browser.version>6,left:"center",load:false,mask:null,oneInstance:true,speed:"normal",target:null,top:"10%"}};var s=[],q={};a.tools.overlay.addEffect("default",function(d,b){var c=this.getConf(),i=a(window);if(!c.fixed){d.top+=i.scrollTop();d.left+=i.scrollLeft()}d.position=c.fixed?"fixed":"absolute";this.getOverlay().css(d).fadeIn(c.speed,b)},function(d){this.getOverlay().fadeOut(this.getConf().closeSpeed,
+d)});a.fn.overlay=function(d){var b=this.data("overlay");if(b)return b;if(a.isFunction(d))d={onBeforeLoad:d};d=a.extend(true,{},a.tools.overlay.conf,d);this.each(function(){b=new t(a(this),d);s.push(b);a(this).data("overlay",b)});return d.api?b:this}})(jQuery);
+(function(i){function j(b){var d=b.offset();return{top:d.top+b.height()/2,left:d.left+b.width()/2}}var k=i.tools.overlay,f=i(window);i.extend(k.conf,{start:{top:null,left:null},fadeInSpeed:"fast",zIndex:9999});function n(b,d){var a=this.getOverlay(),c=this.getConf(),g=this.getTrigger(),o=this,l=a.outerWidth({margin:true}),h=a.data("img");if(!h){var e=a.css("backgroundImage");if(!e)throw"background-image CSS property not set for overlay";e=e.slice(e.indexOf("(")+1,e.indexOf(")")).replace(/\"/g,"");
+a.css("backgroundImage","none");h=i('<img src="'+e+'"/>');h.css({border:0,display:"none"}).width(l);i("body").append(h);a.data("img",h)}e=c.start.top||Math.round(f.height()/2);var m=c.start.left||Math.round(f.width()/2);if(g){g=j(g);e=g.top;m=g.left}h.css({position:"absolute",top:e,left:m,width:0,zIndex:c.zIndex}).show();b.top+=f.scrollTop();b.left+=f.scrollLeft();b.position="absolute";a.css(b);h.animate({top:a.css("top"),left:a.css("left"),width:l},c.speed,function(){if(c.fixed){b.top-=f.scrollTop();
+b.left-=f.scrollLeft();b.position="fixed";h.add(a).css(b)}a.css("zIndex",c.zIndex+1).fadeIn(c.fadeInSpeed,function(){o.isOpened()&&!i(this).index(a)?d.call():a.hide()})})}function p(b){var d=this.getOverlay().hide(),a=this.getConf(),c=this.getTrigger();d=d.data("img");var g={top:a.start.top,left:a.start.left,width:0};c&&i.extend(g,j(c));a.fixed&&d.css({position:"absolute"}).animate({top:"+="+f.scrollTop(),left:"+="+f.scrollLeft()},0);d.animate(g,a.closeSpeed,b)}k.addEffect("apple",n,p)})(jQuery);
+(function(d){function R(b,c){return 32-(new Date(b,c,32)).getDate()}function S(b,c){b=""+b;for(c=c||2;b.length<c;)b="0"+b;return b}function T(b,c,i){var p=b.getDate(),h=b.getDay(),q=b.getMonth();b=b.getFullYear();var f={d:p,dd:S(p),ddd:B[i].shortDays[h],dddd:B[i].days[h],m:q+1,mm:S(q+1),mmm:B[i].shortMonths[q],mmmm:B[i].months[q],yy:String(b).slice(2),yyyy:b};c=c.replace(X,function(r){return r in f?f[r]:r.slice(1,r.length-1)});return Y.html(c).html()}function y(b){return parseInt(b,10)}function U(b,
+c){return b.getFullYear()===c.getFullYear()&&b.getMonth()==c.getMonth()&&b.getDate()==c.getDate()}function C(b){if(b){if(b.constructor==Date)return b;if(typeof b=="string"){var c=b.split("-");if(c.length==3)return new Date(y(c[0]),y(c[1])-1,y(c[2]));if(!/^-?\d+$/.test(b))return;b=y(b)}c=new Date;c.setDate(c.getDate()+b);return c}}function Z(b,c){function i(a,e,g){m=a;D=a.getFullYear();E=a.getMonth();G=a.getDate();g=g||d.Event("api");g.type="change";H.trigger(g,[a]);if(!g.isDefaultPrevented()){b.val(T(a,
+e.format,e.lang));b.data("date",a);h.hide(g)}}function p(a){a.type="onShow";H.trigger(a);d(document).bind("keydown.d",function(e){if(e.ctrlKey)return true;var g=e.keyCode;if(g==8){b.val("");return h.hide(e)}if(g==27)return h.hide(e);if(d(V).index(g)>=0){if(!v){h.show(e);return e.preventDefault()}var j=d("#"+f.weeks+" a"),s=d("."+f.focus),n=j.index(s);s.removeClass(f.focus);if(g==74||g==40)n+=7;else if(g==75||g==38)n-=7;else if(g==76||g==39)n+=1;else if(g==72||g==37)n-=1;if(n>41){h.addMonth();s=d("#"+
+f.weeks+" a:eq("+(n-42)+")")}else if(n<0){h.addMonth(-1);s=d("#"+f.weeks+" a:eq("+(n+42)+")")}else s=j.eq(n);s.addClass(f.focus);return e.preventDefault()}if(g==34)return h.addMonth();if(g==33)return h.addMonth(-1);if(g==36)return h.today();if(g==13)d(e.target).is("select")||d("."+f.focus).click();return d([16,17,18,9]).index(g)>=0});d(document).bind("click.d",function(e){var g=e.target;if(!d(g).parents("#"+f.root).length&&g!=b[0]&&(!L||g!=L[0]))h.hide(e)})}var h=this,q=new Date,f=c.css,r=B[c.lang],
+k=d("#"+f.root),M=k.find("#"+f.title),L,I,J,D,E,G,m=b.attr("data-value")||c.value||b.val(),o=b.attr("min")||c.min,t=b.attr("max")||c.max,v;if(o===0)o="0";m=C(m)||q;o=C(o||c.yearRange[0]*365);t=C(t||c.yearRange[1]*365);if(!r)throw"Dateinput: invalid language: "+c.lang;if(b.attr("type")=="date"){var N=d("<input/>");d.each("class,disabled,id,maxlength,name,readonly,required,size,style,tabindex,title,value".split(","),function(a,e){N.attr(e,b.attr(e))});b.replaceWith(N);b=N}b.addClass(f.input);var H=
+b.add(h);if(!k.length){k=d("<div><div><a/><div/><a/></div><div><div/><div/></div></div>").hide().css({position:"absolute"}).attr("id",f.root);k.children().eq(0).attr("id",f.head).end().eq(1).attr("id",f.body).children().eq(0).attr("id",f.days).end().eq(1).attr("id",f.weeks).end().end().end().find("a").eq(0).attr("id",f.prev).end().eq(1).attr("id",f.next);M=k.find("#"+f.head).find("div").attr("id",f.title);if(c.selectors){var z=d("<select/>").attr("id",f.month),A=d("<select/>").attr("id",f.year);M.append(z.add(A))}for(var $=
+k.find("#"+f.days),O=0;O<7;O++)$.append(d("<span/>").text(r.shortDays[(O+c.firstDay)%7]));d("body").append(k)}if(c.trigger)L=d("<a/>").attr("href","#").addClass(f.trigger).click(function(a){h.show();return a.preventDefault()}).insertAfter(b);var K=k.find("#"+f.weeks);A=k.find("#"+f.year);z=k.find("#"+f.month);d.extend(h,{show:function(a){if(!(b.is("[readonly]")||v)){a=a||d.Event();a.type="onBeforeShow";H.trigger(a);if(!a.isDefaultPrevented()){d.each(W,function(){this.hide()});v=true;z.unbind("change").change(function(){h.setValue(A.val(),
+d(this).val())});A.unbind("change").change(function(){h.setValue(d(this).val(),z.val())});I=k.find("#"+f.prev).unbind("click").click(function(){I.hasClass(f.disabled)||h.addMonth(-1);return false});J=k.find("#"+f.next).unbind("click").click(function(){J.hasClass(f.disabled)||h.addMonth();return false});h.setValue(m);var e=b.position();k.css({top:e.top+b.outerHeight({margins:true})+c.offset[0],left:e.left+c.offset[1]});if(c.speed)k.show(c.speed,function(){p(a)});else{k.show();p(a)}return h}}},setValue:function(a,
+e,g){var j;if(parseInt(e,10)>=-1){a=y(a);e=y(e);g=y(g);j=new Date(a,e,g)}else{j=a||m;a=j.getFullYear();e=j.getMonth();g=j.getDate()}if(e==-1){e=11;a--}else if(e==12){e=0;a++}if(!v){i(j,c);return h}E=e;D=a;g=new Date(a,e,1-c.firstDay);g=g.getDay();var s=R(a,e),n=R(a,e-1),P;if(c.selectors){z.empty();d.each(r.months,function(w,F){o<new Date(a,w+1,-1)&&t>new Date(a,w,0)&&z.append(d("<option/>").html(F).attr("value",w))});A.empty();j=q.getFullYear();for(var l=j+c.yearRange[0];l<j+c.yearRange[1];l++)o<
+new Date(l+1,-1,0)&&t>new Date(l,0,0)&&A.append(d("<option/>").text(l));z.val(e);A.val(a)}else M.html(r.months[e]+" "+a);K.empty();I.add(J).removeClass(f.disabled);l=!g?-7:0;for(var u,x;l<(!g?35:42);l++){u=d("<a/>");if(l%7===0){P=d("<div/>").addClass(f.week);K.append(P)}if(l<g){u.addClass(f.off);x=n-g+l+1;j=new Date(a,e-1,x)}else if(l>=g+s){u.addClass(f.off);x=l-s-g+1;j=new Date(a,e+1,x)}else{x=l-g+1;j=new Date(a,e,x);if(U(m,j))u.attr("id",f.current).addClass(f.focus);else U(q,j)&&u.attr("id",f.today)}o&&
+j<o&&u.add(I).addClass(f.disabled);t&&j>t&&u.add(J).addClass(f.disabled);u.attr("href","#"+x).text(x).data("date",j);P.append(u)}K.find("a").click(function(w){var F=d(this);if(!F.hasClass(f.disabled)){d("#"+f.current).removeAttr("id");F.attr("id",f.current);i(F.data("date"),c,w)}return false});f.sunday&&K.find(f.week).each(function(){var w=c.firstDay?7-c.firstDay:0;d(this).children().slice(w,w+1).addClass(f.sunday)});return h},setMin:function(a,e){o=C(a);e&&m<o&&h.setValue(o);return h},setMax:function(a,
+e){t=C(a);e&&m>t&&h.setValue(t);return h},today:function(){return h.setValue(q)},addDay:function(a){return this.setValue(D,E,G+(a||1))},addMonth:function(a){return this.setValue(D,E+(a||1),G)},addYear:function(a){return this.setValue(D+(a||1),E,G)},hide:function(a){if(v){a=d.Event();a.type="onHide";H.trigger(a);d(document).unbind("click.d").unbind("keydown.d");if(a.isDefaultPrevented())return;k.hide();v=false}return h},getConf:function(){return c},getInput:function(){return b},getCalendar:function(){return k},
+getValue:function(a){return a?T(m,a,c.lang):m},isOpen:function(){return v}});d.each(["onBeforeShow","onShow","change","onHide"],function(a,e){d.isFunction(c[e])&&d(h).bind(e,c[e]);h[e]=function(g){d(h).bind(e,g);return h}});b.bind("focus click",h.show).keydown(function(a){var e=a.keyCode;if(!v&&d(V).index(e)>=0){h.show(a);return a.preventDefault()}return a.shiftKey||a.ctrlKey||a.altKey||e==9?true:a.preventDefault()});C(b.val())&&i(m,c)}d.tools=d.tools||{version:"1.2.4"};var W=[],Q,V=[75,76,38,39,
+74,72,40,37],B={};Q=d.tools.dateinput={conf:{format:"mm/dd/yy",selectors:false,yearRange:[-5,5],lang:"en",offset:[0,0],speed:0,firstDay:0,min:undefined,max:undefined,trigger:false,css:{prefix:"cal",input:"date",root:0,head:0,title:0,prev:0,next:0,month:0,year:0,days:0,body:0,weeks:0,today:0,current:0,week:0,off:0,sunday:0,focus:0,disabled:0,trigger:0}},localize:function(b,c){d.each(c,function(i,p){c[i]=p.split(",")});B[b]=c}};Q.localize("en",{months:"January,February,March,April,May,June,July,August,September,October,November,December",
+shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",days:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday",shortDays:"Sun,Mon,Tue,Wed,Thu,Fri,Sat"});var X=/d{1,4}|m{1,4}|yy(?:yy)?|"[^"]*"|'[^']*'/g,Y=d("<a/>");d.expr[":"].date=function(b){var c=b.getAttribute("type");return c&&c=="date"||!!d(b).data("dateinput")};d.fn.dateinput=function(b){if(this.data("dateinput"))return this;b=d.extend(true,{},Q.conf,b);d.each(b.css,function(i,p){if(!p&&i!="prefix")b.css[i]=(b.css.prefix||"")+
+(p||i)});var c;this.each(function(){var i=new Z(d(this),b);W.push(i);i=i.getInput().data("dateinput",i);c=c?c.add(i):i});return c?c:this}})(jQuery);
+(function(e){function F(d,a){a=Math.pow(10,a);return Math.round(d*a)/a}function p(d,a){if(a=parseInt(d.css(a),10))return a;return(d=d[0].currentStyle)&&d.width&&parseInt(d.width,10)}function C(d){return(d=d.data("events"))&&d.onSlide}function G(d,a){function h(c,b,f,j){if(f===undefined)f=b/k*z;else if(j)f-=a.min;if(r)f=Math.round(f/r)*r;if(b===undefined||r)b=f*k/z;if(isNaN(f))return g;b=Math.max(0,Math.min(b,k));f=b/k*z;if(j||!n)f+=a.min;if(n)if(j)b=k-b;else f=a.max-f;f=F(f,t);var q=c.type=="click";
+if(D&&l!==undefined&&!q){c.type="onSlide";A.trigger(c,[f,b]);if(c.isDefaultPrevented())return g}j=q?a.speed:0;q=q?function(){c.type="change";A.trigger(c,[f])}:null;if(n){m.animate({top:b},j,q);a.progress&&B.animate({height:k-b+m.width()/2},j)}else{m.animate({left:b},j,q);a.progress&&B.animate({width:b+m.width()/2},j)}l=f;H=b;d.val(f);return g}function s(){if(n=a.vertical||p(i,"height")>p(i,"width")){k=p(i,"height")-p(m,"height");u=i.offset().top+k}else{k=p(i,"width")-p(m,"width");u=i.offset().left}}
+function v(){s();g.setValue(a.value||a.min)}var g=this,o=a.css,i=e("<div><div/><a href='#'/></div>").data("rangeinput",g),n,l,u,k,H;d.before(i);var m=i.addClass(o.slider).find("a").addClass(o.handle),B=i.find("div").addClass(o.progress);e.each("min,max,step,value".split(","),function(c,b){c=d.attr(b);if(parseFloat(c))a[b]=parseFloat(c,10)});var z=a.max-a.min,r=a.step=="any"?0:a.step,t=a.precision;if(t===undefined)try{t=r.toString().split(".")[1].length}catch(I){t=0}if(d.attr("type")=="range"){var w=
+e("<input/>");e.each("class,disabled,id,maxlength,name,readonly,required,size,style,tabindex,title,value".split(","),function(c,b){w.attr(b,d.attr(b))});w.val(a.value);d.replaceWith(w);d=w}d.addClass(o.input);var A=e(g).add(d),D=true;e.extend(g,{getValue:function(){return l},setValue:function(c,b){return h(b||e.Event("api"),undefined,c,true)},getConf:function(){return a},getProgress:function(){return B},getHandle:function(){return m},getInput:function(){return d},step:function(c,b){b=b||e.Event();
+var f=a.step=="any"?1:a.step;g.setValue(l+f*(c||1),b)},stepUp:function(c){return g.step(c||1)},stepDown:function(c){return g.step(-c||-1)}});e.each("onSlide,change".split(","),function(c,b){e.isFunction(a[b])&&e(g).bind(b,a[b]);g[b]=function(f){e(g).bind(b,f);return g}});m.drag({drag:false}).bind("dragStart",function(){D=C(e(g))||C(d)}).bind("drag",function(c,b,f){if(d.is(":disabled"))return false;h(c,n?b:f)}).bind("dragEnd",function(c){if(!c.isDefaultPrevented()){c.type="change";A.trigger(c,[l])}}).click(function(c){return c.preventDefault()});
+i.click(function(c){if(d.is(":disabled")||c.target==m[0])return c.preventDefault();s();var b=m.width()/2;h(c,n?k-u-b+c.pageY:c.pageX-u-b)});a.keyboard&&d.keydown(function(c){if(!d.attr("readonly")){var b=c.keyCode,f=e([75,76,38,33,39]).index(b)!=-1,j=e([74,72,40,34,37]).index(b)!=-1;if((f||j)&&!(c.shiftKey||c.altKey||c.ctrlKey)){if(f)g.step(b==33?10:1,c);else if(j)g.step(b==34?-10:-1,c);return c.preventDefault()}}});d.blur(function(c){var b=e(this).val();b!==l&&g.setValue(b,c)});e.extend(d[0],{stepUp:g.stepUp,
+stepDown:g.stepDown});v();k||e(window).load(v)}e.tools=e.tools||{version:"1.2.4"};var E;E=e.tools.rangeinput={conf:{min:0,max:100,step:"any",steps:0,value:0,precision:undefined,vertical:0,keyboard:true,progress:false,speed:100,css:{input:"range",slider:"slider",progress:"progress",handle:"handle"}}};var x,y;e.fn.drag=function(d){document.ondragstart=function(){return false};d=e.extend({x:true,y:true,drag:true},d);x=x||e(document).bind("mousedown mouseup",function(a){var h=e(a.target);if(a.type=="mousedown"&&
+h.data("drag")){var s=h.position(),v=a.pageX-s.left,g=a.pageY-s.top,o=true;x.bind("mousemove.drag",function(i){var n=i.pageX-v;i=i.pageY-g;var l={};if(d.x)l.left=n;if(d.y)l.top=i;if(o){h.trigger("dragStart");o=false}d.drag&&h.css(l);h.trigger("drag",[i,n]);y=h});a.preventDefault()}else try{y&&y.trigger("dragEnd")}finally{x.unbind("mousemove.drag");y=null}});return this.data("drag",true)};e.expr[":"].range=function(d){var a=d.getAttribute("type");return a&&a=="range"||!!e(d).filter("input").data("rangeinput")};
+e.fn.rangeinput=function(d){if(this.data("rangeinput"))return this;d=e.extend(true,{},E.conf,d);var a;this.each(function(){var h=new G(e(this),e.extend(true,{},d));h=h.getInput().data("rangeinput",h);a=a?a.add(h):h});return a?a:this}})(jQuery);
+(function(e){function t(a,b,c){var k=a.offset().top,f=a.offset().left,l=c.position.split(/,?\s+/),p=l[0];l=l[1];k-=b.outerHeight()-c.offset[0];f+=a.outerWidth()+c.offset[1];c=b.outerHeight()+a.outerHeight();if(p=="center")k+=c/2;if(p=="bottom")k+=c;a=a.outerWidth();if(l=="center")f-=(a+b.outerWidth())/2;if(l=="left")f-=a;return{top:k,left:f}}function x(a){function b(){return this.getAttribute("type")==a}b.key="[type="+a+"]";return b}function u(a,b,c){function k(g,d,j){if(!(!c.grouped&&g.length)){var h;
+if(j===false||e.isArray(j)){h=i.messages[d.key||d]||i.messages["*"];h=h[c.lang]||i.messages["*"].en;(d=h.match(/\$\d/g))&&e.isArray(j)&&e.each(d,function(n){h=h.replace(this,j[n])})}else h=j[c.lang]||j;g.push(h)}}var f=this,l=b.add(f);a=a.not(":button, :image, :reset, :submit");e.extend(f,{getConf:function(){return c},getForm:function(){return b},getInputs:function(){return a},reflow:function(){a.each(function(){var g=e(this),d=g.data("msg.el");if(d){g=t(g,d,c);d.css({top:g.top,left:g.left})}});return f},
+invalidate:function(g,d){if(!d){var j=[];e.each(g,function(h,n){h=a.filter("[name='"+h+"']");if(h.length){h.trigger("OI",[n]);j.push({input:h,messages:[n]})}});g=j;d=e.Event()}d.type="onFail";l.trigger(d,[g]);d.isDefaultPrevented()||r[c.effect][0].call(f,g,d);return f},reset:function(g){g=g||a;g.removeClass(c.errorClass).each(function(){var d=e(this).data("msg.el");if(d){d.remove();e(this).data("msg.el",null)}}).unbind(c.errorInputEvent||"");return f},destroy:function(){b.unbind(c.formEvent).unbind("reset.V");
+a.unbind(c.inputEvent||"").unbind("change.V");return f.reset()},checkValidity:function(g,d){g=g||a;g=g.not(":disabled");if(!g.length)return true;d=d||e.Event();d.type="onBeforeValidate";l.trigger(d,[g]);if(d.isDefaultPrevented())return d.result;var j=[],h=c.errorInputEvent+".v";g.not(":radio:not(:checked)").each(function(){var q=[],m=e(this).unbind(h).data("messages",q);e.each(v,function(){var o=this,s=o[0];if(m.filter(s).length){o=o[1].call(f,m,m.val());if(o!==true){d.type="onBeforeFail";l.trigger(d,
+[m,s]);if(d.isDefaultPrevented())return false;var w=m.attr(c.messageAttr);if(w){q=[w];return false}else k(q,s,o)}}});if(q.length){j.push({input:m,messages:q});m.trigger("OI",[q]);c.errorInputEvent&&m.bind(h,function(o){f.checkValidity(m,o)})}if(c.singleError&&j.length)return false});var n=r[c.effect];if(!n)throw'Validator: cannot find effect "'+c.effect+'"';if(j.length){f.invalidate(j,d);return false}else{n[1].call(f,g,d);d.type="onSuccess";l.trigger(d,[g]);g.unbind(h)}return true}});e.each("onBeforeValidate,onBeforeFail,onFail,onSuccess".split(","),
+function(g,d){e.isFunction(c[d])&&e(f).bind(d,c[d]);f[d]=function(j){e(f).bind(d,j);return f}});c.formEvent&&b.bind(c.formEvent,function(g){if(!f.checkValidity(null,g))return g.preventDefault()});b.bind("reset.V",function(){f.reset()});a[0]&&a[0].validity&&a.each(function(){this.oninvalid=function(){return false}});if(b[0])b[0].checkValidity=f.checkValidity;c.inputEvent&&a.bind(c.inputEvent,function(g){f.checkValidity(e(this),g)});a.filter(":checkbox, select").filter("[required]").bind("change.V",
+function(g){var d=e(this);if(this.checked||d.is("select")&&e(this).val())r[c.effect][1].call(f,d,g)});var p=a.filter(":radio").change(function(g){f.checkValidity(p,g)});e(window).resize(function(){f.reflow()})}e.tools=e.tools||{version:"1.2.4"};var y=/\[type=([a-z]+)\]/,z=/^-?[0-9]*(\.[0-9]+)?$/,A=/^([a-z0-9_\.\-\+]+)@([\da-z\.\-]+)\.([a-z\.]{2,6})$/i,B=/^(https?:\/\/)?[\da-z\.\-]+\.[a-z\.]{2,6}[#\?\/\w \.\-=]*$/i,i;i=e.tools.validator={conf:{grouped:false,effect:"default",errorClass:"invalid",inputEvent:null,
+errorInputEvent:"keyup",formEvent:"submit",lang:"en",message:"<div/>",messageAttr:"data-message",messageClass:"error",offset:[0,0],position:"center right",singleError:false,speed:"normal"},messages:{"*":{en:"Please correct this value"}},localize:function(a,b){e.each(b,function(c,k){i.messages[c]=i.messages[c]||{};i.messages[c][a]=k})},localizeFn:function(a,b){i.messages[a]=i.messages[a]||{};e.extend(i.messages[a],b)},fn:function(a,b,c){if(e.isFunction(b))c=b;else{if(typeof b=="string")b={en:b};this.messages[a.key||
+a]=b}if(b=y.exec(a))a=x(b[1]);v.push([a,c])},addEffect:function(a,b,c){r[a]=[b,c]}};var v=[],r={"default":[function(a){var b=this.getConf();e.each(a,function(c,k){c=k.input;c.addClass(b.errorClass);var f=c.data("msg.el");if(!f){f=e(b.message).addClass(b.messageClass).appendTo(document.body);c.data("msg.el",f)}f.css({visibility:"hidden",display:"none"}).find("span").remove();e.each(k.messages,function(l,p){e("<span/>").html(p).appendTo(f)});f.outerWidth()==f.parent().width()&&f.add(f.find("p")).css({display:"inline"});
+k=t(c,f,b);f.css({visibility:"visible",position:"absolute",top:k.top,left:k.left}).fadeIn(b.speed)})},function(a){var b=this.getConf();a.removeClass(b.errorClass).each(function(){var c=e(this).data("msg.el");c&&c.css({visibility:"hidden"})})}]};e.each("email,url,number".split(","),function(a,b){e.expr[":"][b]=function(c){return c.getAttribute("type")===b}});e.fn.oninvalid=function(a){return this[a?"bind":"trigger"]("OI",a)};i.fn(":email","Please enter a valid email address",function(a,b){return!b||
+A.test(b)});i.fn(":url","Please enter a valid URL",function(a,b){return!b||B.test(b)});i.fn(":number","Please enter a numeric value.",function(a,b){return z.test(b)});i.fn("[max]","Please enter a value smaller than $1",function(a,b){if(b===""||e.tools.dateinput&&a.is(":date"))return true;a=a.attr("max");return parseFloat(b)<=parseFloat(a)?true:[a]});i.fn("[min]","Please enter a value larger than $1",function(a,b){if(b===""||e.tools.dateinput&&a.is(":date"))return true;a=a.attr("min");return parseFloat(b)>=
+parseFloat(a)?true:[a]});i.fn("[required]","Please complete this mandatory field.",function(a,b){if(a.is(":checkbox"))return a.is(":checked");return!!b});i.fn("[pattern]",function(a){var b=new RegExp("^"+a.attr("pattern")+"$");return b.test(a.val())});e.fn.validator=function(a){var b=this.data("validator");if(b){b.destroy();this.removeData("validator")}a=e.extend(true,{},i.conf,a);if(this.is("form"))return this.each(function(){var c=e(this);b=new u(c.find(":input"),c,a);c.data("validator",b)});else{b=
+new u(this,this.eq(0).closest("form"),a);return this.data("validator",b)}}})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/jquery.validate.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,1131 @@
+/*
+ * jQuery validation plug-in 1.5.5
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
+ * http://docs.jquery.com/Plugins/Validation
+ *
+ * Copyright (c) 2006 - 2008 Jörn Zaefferer
+ *
+ * $Id: jquery.validate.js 6403 2009-06-17 14:27:16Z joern.zaefferer $
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ */
+
+(function($) {
+
+$.extend($.fn, {
+	// http://docs.jquery.com/Plugins/Validation/validate
+	validate: function( options ) {
+
+		// if nothing is selected, return nothing; can't chain anyway
+		if (!this.length) {
+			options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" );
+			return;
+		}
+
+		// check if a validator for this form was already created
+		var validator = $.data(this[0], 'validator');
+		if ( validator ) {
+			return validator;
+		}
+		
+		validator = new $.validator( options, this[0] );
+		$.data(this[0], 'validator', validator); 
+		
+		if ( validator.settings.onsubmit ) {
+		
+			// allow suppresing validation by adding a cancel class to the submit button
+			this.find("input, button").filter(".cancel").click(function() {
+				validator.cancelSubmit = true;
+			});
+			
+			// when a submitHandler is used, capture the submitting button
+			if (validator.settings.submitHandler) {
+				this.find("input, button").filter(":submit").click(function() {
+					validator.submitButton = this;
+				});
+			}
+		
+			// validate the form on submit
+			this.submit( function( event ) {
+				if ( validator.settings.debug )
+					// prevent form submit to be able to see console output
+					event.preventDefault();
+					
+				function handle() {
+					if ( validator.settings.submitHandler ) {
+						if (validator.submitButton) {
+							// insert a hidden input as a replacement for the missing submit button
+							var hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
+						}
+						validator.settings.submitHandler.call( validator, validator.currentForm );
+						if (validator.submitButton) {
+							// and clean up afterwards; thanks to no-block-scope, hidden can be referenced
+							hidden.remove();
+						}
+						return false;
+					}
+					return true;
+				}
+					
+				// prevent submit for invalid forms or custom submit handlers
+				if ( validator.cancelSubmit ) {
+					validator.cancelSubmit = false;
+					return handle();
+				}
+				if ( validator.form() ) {
+					if ( validator.pendingRequest ) {
+						validator.formSubmitted = true;
+						return false;
+					}
+					return handle();
+				} else {
+					validator.focusInvalid();
+					return false;
+				}
+			});
+		}
+		
+		return validator;
+	},
+	// http://docs.jquery.com/Plugins/Validation/valid
+	valid: function() {
+        if ( $(this[0]).is('form')) {
+            return this.validate().form();
+        } else {
+            var valid = true;
+            var validator = $(this[0].form).validate();
+            this.each(function() {
+				valid &= validator.element(this);
+            });
+            return valid;
+        }
+    },
+	// attributes: space seperated list of attributes to retrieve and remove
+	removeAttrs: function(attributes) {
+		var result = {},
+			$element = this;
+		$.each(attributes.split(/\s/), function(index, value) {
+			result[value] = $element.attr(value);
+			$element.removeAttr(value);
+		});
+		return result;
+	},
+	// http://docs.jquery.com/Plugins/Validation/rules
+	rules: function(command, argument) {
+		var element = this[0];
+		
+		if (command) {
+			var settings = $.data(element.form, 'validator').settings;
+			var staticRules = settings.rules;
+			var existingRules = $.validator.staticRules(element);
+			switch(command) {
+			case "add":
+				$.extend(existingRules, $.validator.normalizeRule(argument));
+				staticRules[element.name] = existingRules;
+				if (argument.messages)
+					settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
+				break;
+			case "remove":
+				if (!argument) {
+					delete staticRules[element.name];
+					return existingRules;
+				}
+				var filtered = {};
+				$.each(argument.split(/\s/), function(index, method) {
+					filtered[method] = existingRules[method];
+					delete existingRules[method];
+				});
+				return filtered;
+			}
+		}
+		
+		var data = $.validator.normalizeRules(
+		$.extend(
+			{},
+			$.validator.metadataRules(element),
+			$.validator.classRules(element),
+			$.validator.attributeRules(element),
+			$.validator.staticRules(element)
+		), element);
+		
+		// make sure required is at front
+		if (data.required) {
+			var param = data.required;
+			delete data.required;
+			data = $.extend({required: param}, data);
+		}
+		
+		return data;
+	}
+});
+
+// Custom selectors
+$.extend($.expr[":"], {
+	// http://docs.jquery.com/Plugins/Validation/blank
+	blank: function(a) {return !$.trim(a.value);},
+	// http://docs.jquery.com/Plugins/Validation/filled
+	filled: function(a) {return !!$.trim(a.value);},
+	// http://docs.jquery.com/Plugins/Validation/unchecked
+	unchecked: function(a) {return !a.checked;}
+});
+
+// constructor for validator
+$.validator = function( options, form ) {
+	this.settings = $.extend( {}, $.validator.defaults, options );
+	this.currentForm = form;
+	this.init();
+};
+
+$.validator.format = function(source, params) {
+	if ( arguments.length == 1 ) 
+		return function() {
+			var args = $.makeArray(arguments);
+			args.unshift(source);
+			return $.validator.format.apply( this, args );
+		};
+	if ( arguments.length > 2 && params.constructor != Array  ) {
+		params = $.makeArray(arguments).slice(1);
+	}
+	if ( params.constructor != Array ) {
+		params = [ params ];
+	}
+	$.each(params, function(i, n) {
+		source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
+	});
+	return source;
+};
+
+$.extend($.validator, {
+	
+	defaults: {
+		messages: {},
+		groups: {},
+		rules: {},
+		errorClass: "error",
+		validClass: "valid",
+		errorElement: "label",
+		focusInvalid: true,
+		errorContainer: $( [] ),
+		errorLabelContainer: $( [] ),
+		onsubmit: true,
+		ignore: [],
+		ignoreTitle: false,
+		onfocusin: function(element) {
+			this.lastActive = element;
+				
+			// hide error label and remove error class on focus if enabled
+			if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
+				this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
+				this.errorsFor(element).hide();
+			}
+		},
+		onfocusout: function(element) {
+			if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
+				this.element(element);
+			}
+		},
+		onkeyup: function(element) {
+			if ( element.name in this.submitted || element == this.lastElement ) {
+				this.element(element);
+			}
+		},
+		onclick: function(element) {
+			if ( element.name in this.submitted )
+				this.element(element);
+		},
+		highlight: function( element, errorClass, validClass ) {
+			$(element).addClass(errorClass).removeClass(validClass);
+		},
+		unhighlight: function( element, errorClass, validClass ) {
+			$(element).removeClass(errorClass).addClass(validClass);
+		}
+	},
+
+	// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
+	setDefaults: function(settings) {
+		$.extend( $.validator.defaults, settings );
+	},
+
+	messages: {
+		required: "This field is required.",
+		remote: "Please fix this field.",
+		email: "Please enter a valid email address.",
+		url: "Please enter a valid URL.",
+		date: "Please enter a valid date.",
+		dateISO: "Please enter a valid date (ISO).",
+		dateDE: "Bitte geben Sie ein gültiges Datum ein.",
+		number: "Please enter a valid number.",
+		numberDE: "Bitte geben Sie eine Nummer ein.",
+		digits: "Please enter only digits",
+		creditcard: "Please enter a valid credit card number.",
+		equalTo: "Please enter the same value again.",
+		accept: "Please enter a value with a valid extension.",
+		maxlength: $.validator.format("Please enter no more than {0} characters."),
+		minlength: $.validator.format("Please enter at least {0} characters."),
+		rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
+		range: $.validator.format("Please enter a value between {0} and {1}."),
+		max: $.validator.format("Please enter a value less than or equal to {0}."),
+		min: $.validator.format("Please enter a value greater than or equal to {0}.")
+	},
+	
+	autoCreateRanges: false,
+	
+	prototype: {
+		
+		init: function() {
+			this.labelContainer = $(this.settings.errorLabelContainer);
+			this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
+			this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
+			this.submitted = {};
+			this.valueCache = {};
+			this.pendingRequest = 0;
+			this.pending = {};
+			this.invalid = {};
+			this.reset();
+			
+			var groups = (this.groups = {});
+			$.each(this.settings.groups, function(key, value) {
+				$.each(value.split(/\s/), function(index, name) {
+					groups[name] = key;
+				});
+			});
+			var rules = this.settings.rules;
+			$.each(rules, function(key, value) {
+				rules[key] = $.validator.normalizeRule(value);
+			});
+			
+			function delegate(event) {
+				var validator = $.data(this[0].form, "validator");
+				validator.settings["on" + event.type] && validator.settings["on" + event.type].call(validator, this[0] );
+			}
+			$(this.currentForm)
+				.delegate("focusin focusout keyup", ":text, :password, :file, select, textarea", delegate)
+				.delegate("click", ":radio, :checkbox", delegate);
+
+			if (this.settings.invalidHandler)
+				$(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Validator/form
+		form: function() {
+			this.checkForm();
+			$.extend(this.submitted, this.errorMap);
+			this.invalid = $.extend({}, this.errorMap);
+			if (!this.valid())
+				$(this.currentForm).triggerHandler("invalid-form", [this]);
+			this.showErrors();
+			return this.valid();
+		},
+		
+		checkForm: function() {
+			this.prepareForm();
+			for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
+				this.check( elements[i] );
+			}
+			return this.valid(); 
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Validator/element
+		element: function( element ) {
+			element = this.clean( element );
+			this.lastElement = element;
+			this.prepareElement( element );
+			this.currentElements = $(element);
+			var result = this.check( element );
+			if ( result ) {
+				delete this.invalid[element.name];
+			} else {
+				this.invalid[element.name] = true;
+			}
+			if ( !this.numberOfInvalids() ) {
+				// Hide error containers on last error
+				this.toHide = this.toHide.add( this.containers );
+			}
+			this.showErrors();
+			return result;
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Validator/showErrors
+		showErrors: function(errors) {
+			if(errors) {
+				// add items to error list and map
+				$.extend( this.errorMap, errors );
+				this.errorList = [];
+				for ( var name in errors ) {
+					this.errorList.push({
+						message: errors[name],
+						element: this.findByName(name)[0]
+					});
+				}
+				// remove items from success list
+				this.successList = $.grep( this.successList, function(element) {
+					return !(element.name in errors);
+				});
+			}
+			this.settings.showErrors
+				? this.settings.showErrors.call( this, this.errorMap, this.errorList )
+				: this.defaultShowErrors();
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Validator/resetForm
+		resetForm: function() {
+			if ( $.fn.resetForm )
+				$( this.currentForm ).resetForm();
+			this.submitted = {};
+			this.prepareForm();
+			this.hideErrors();
+			this.elements().removeClass( this.settings.errorClass );
+		},
+		
+		numberOfInvalids: function() {
+			return this.objectLength(this.invalid);
+		},
+		
+		objectLength: function( obj ) {
+			var count = 0;
+			for ( var i in obj )
+				count++;
+			return count;
+		},
+		
+		hideErrors: function() {
+			this.addWrapper( this.toHide ).hide();
+		},
+		
+		valid: function() {
+			return this.size() == 0;
+		},
+		
+		size: function() {
+			return this.errorList.length;
+		},
+		
+		focusInvalid: function() {
+			if( this.settings.focusInvalid ) {
+				try {
+					$(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").focus();
+				} catch(e) {
+					// ignore IE throwing errors when focusing hidden elements
+				}
+			}
+		},
+		
+		findLastActive: function() {
+			var lastActive = this.lastActive;
+			return lastActive && $.grep(this.errorList, function(n) {
+				return n.element.name == lastActive.name;
+			}).length == 1 && lastActive;
+		},
+		
+		elements: function() {
+			var validator = this,
+				rulesCache = {};
+			
+			// select all valid inputs inside the form (no submit or reset buttons)
+			// workaround $Query([]).add until http://dev.jquery.com/ticket/2114 is solved
+			return $([]).add(this.currentForm.elements)
+			.filter(":input")
+			.not(":submit, :reset, :image, [disabled]")
+			.not( this.settings.ignore )
+			.filter(function() {
+				!this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);
+			
+				// select only the first element for each name, and only those with rules specified
+				if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
+					return false;
+				
+				rulesCache[this.name] = true;
+				return true;
+			});
+		},
+		
+		clean: function( selector ) {
+			return $( selector )[0];
+		},
+		
+		errors: function() {
+			return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext );
+		},
+		
+		reset: function() {
+			this.successList = [];
+			this.errorList = [];
+			this.errorMap = {};
+			this.toShow = $([]);
+			this.toHide = $([]);
+			this.formSubmitted = false;
+			this.currentElements = $([]);
+		},
+		
+		prepareForm: function() {
+			this.reset();
+			this.toHide = this.errors().add( this.containers );
+		},
+		
+		prepareElement: function( element ) {
+			this.reset();
+			this.toHide = this.errorsFor(element);
+		},
+	
+		check: function( element ) {
+			element = this.clean( element );
+			
+			// if radio/checkbox, validate first element in group instead
+			if (this.checkable(element)) {
+				element = this.findByName( element.name )[0];
+			}
+			
+			var rules = $(element).rules();
+			var dependencyMismatch = false;
+			for( method in rules ) {
+				var rule = { method: method, parameters: rules[method] };
+				try {
+					var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
+					
+					// if a method indicates that the field is optional and therefore valid,
+					// don't mark it as valid when there are no other rules
+					if ( result == "dependency-mismatch" ) {
+						dependencyMismatch = true;
+						continue;
+					}
+					dependencyMismatch = false;
+					
+					if ( result == "pending" ) {
+						this.toHide = this.toHide.not( this.errorsFor(element) );
+						return;
+					}
+					
+					if( !result ) {
+						this.formatAndAdd( element, rule );
+						return false;
+					}
+				} catch(e) {
+					this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
+						 + ", check the '" + rule.method + "' method");
+					throw e;
+				}
+			}
+			if (dependencyMismatch)
+				return;
+			if ( this.objectLength(rules) )
+				this.successList.push(element);
+			return true;
+		},
+		
+		// return the custom message for the given element and validation method
+		// specified in the element's "messages" metadata
+		customMetaMessage: function(element, method) {
+			if (!$.metadata)
+				return;
+			
+			var meta = this.settings.meta
+				? $(element).metadata()[this.settings.meta]
+				: $(element).metadata();
+			
+			return meta && meta.messages && meta.messages[method];
+		},
+		
+		// return the custom message for the given element name and validation method
+		customMessage: function( name, method ) {
+			var m = this.settings.messages[name];
+			return m && (m.constructor == String
+				? m
+				: m[method]);
+		},
+		
+		// return the first defined argument, allowing empty strings
+		findDefined: function() {
+			for(var i = 0; i < arguments.length; i++) {
+				if (arguments[i] !== undefined)
+					return arguments[i];
+			}
+			return undefined;
+		},
+		
+		defaultMessage: function( element, method) {
+			return this.findDefined(
+				this.customMessage( element.name, method ),
+				this.customMetaMessage( element, method ),
+				// title is never undefined, so handle empty string as undefined
+				!this.settings.ignoreTitle && element.title || undefined,
+				$.validator.messages[method],
+				"<strong>Warning: No message defined for " + element.name + "</strong>"
+			);
+		},
+		
+		formatAndAdd: function( element, rule ) {
+			var message = this.defaultMessage( element, rule.method );
+			if ( typeof message == "function" ) 
+				message = message.call(this, rule.parameters, element);
+			this.errorList.push({
+				message: message,
+				element: element
+			});
+			this.errorMap[element.name] = message;
+			this.submitted[element.name] = message;
+		},
+		
+		addWrapper: function(toToggle) {
+			if ( this.settings.wrapper )
+				toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
+			return toToggle;
+		},
+		
+		defaultShowErrors: function() {
+			for ( var i = 0; this.errorList[i]; i++ ) {
+				var error = this.errorList[i];
+				this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
+				this.showLabel( error.element, error.message );
+			}
+			if( this.errorList.length ) {
+				this.toShow = this.toShow.add( this.containers );
+			}
+			if (this.settings.success) {
+				for ( var i = 0; this.successList[i]; i++ ) {
+					this.showLabel( this.successList[i] );
+				}
+			}
+			if (this.settings.unhighlight) {
+				for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
+					this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
+				}
+			}
+			this.toHide = this.toHide.not( this.toShow );
+			this.hideErrors();
+			this.addWrapper( this.toShow ).show();
+		},
+		
+		validElements: function() {
+			return this.currentElements.not(this.invalidElements());
+		},
+		
+		invalidElements: function() {
+			return $(this.errorList).map(function() {
+				return this.element;
+			});
+		},
+		
+		showLabel: function(element, message) {
+			var label = this.errorsFor( element );
+			if ( label.length ) {
+				// refresh error/success class
+				label.removeClass().addClass( this.settings.errorClass );
+			
+				// check if we have a generated label, replace the message then
+				label.attr("generated") && label.html(message);
+			} else {
+				// create label
+				label = $("<" + this.settings.errorElement + "/>")
+					.attr({"for":  this.idOrName(element), generated: true})
+					.addClass(this.settings.errorClass)
+					.html(message || "");
+				if ( this.settings.wrapper ) {
+					// make sure the element is visible, even in IE
+					// actually showing the wrapped element is handled elsewhere
+					label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
+				}
+				if ( !this.labelContainer.append(label).length )
+					this.settings.errorPlacement
+						? this.settings.errorPlacement(label, $(element) )
+						: label.insertAfter(element);
+			}
+			if ( !message && this.settings.success ) {
+				label.text("");
+				typeof this.settings.success == "string"
+					? label.addClass( this.settings.success )
+					: this.settings.success( label );
+			}
+			this.toShow = this.toShow.add(label);
+		},
+		
+		errorsFor: function(element) {
+			return this.errors().filter("[for='" + this.idOrName(element) + "']");
+		},
+		
+		idOrName: function(element) {
+			return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
+		},
+
+		checkable: function( element ) {
+			return /radio|checkbox/i.test(element.type);
+		},
+		
+		findByName: function( name ) {
+			// select by name and filter by form for performance over form.find("[name=...]")
+			var form = this.currentForm;
+			return $(document.getElementsByName(name)).map(function(index, element) {
+				return element.form == form && element.name == name && element  || null;
+			});
+		},
+		
+		getLength: function(value, element) {
+			switch( element.nodeName.toLowerCase() ) {
+			case 'select':
+				return $("option:selected", element).length;
+			case 'input':
+				if( this.checkable( element) )
+					return this.findByName(element.name).filter(':checked').length;
+			}
+			return value.length;
+		},
+	
+		depend: function(param, element) {
+			return this.dependTypes[typeof param]
+				? this.dependTypes[typeof param](param, element)
+				: true;
+		},
+	
+		dependTypes: {
+			"boolean": function(param, element) {
+				return param;
+			},
+			"string": function(param, element) {
+				return !!$(param, element.form).length;
+			},
+			"function": function(param, element) {
+				return param(element);
+			}
+		},
+		
+		optional: function(element) {
+			return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch";
+		},
+		
+		startRequest: function(element) {
+			if (!this.pending[element.name]) {
+				this.pendingRequest++;
+				this.pending[element.name] = true;
+			}
+		},
+		
+		stopRequest: function(element, valid) {
+			this.pendingRequest--;
+			// sometimes synchronization fails, make sure pendingRequest is never < 0
+			if (this.pendingRequest < 0)
+				this.pendingRequest = 0;
+			delete this.pending[element.name];
+			if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {
+				$(this.currentForm).submit();
+			} else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {
+				$(this.currentForm).triggerHandler("invalid-form", [this]);
+			}
+		},
+		
+		previousValue: function(element) {
+			return $.data(element, "previousValue") || $.data(element, "previousValue", previous = {
+				old: null,
+				valid: true,
+				message: this.defaultMessage( element, "remote" )
+			});
+		}
+		
+	},
+	
+	classRuleSettings: {
+		required: {required: true},
+		email: {email: true},
+		url: {url: true},
+		date: {date: true},
+		dateISO: {dateISO: true},
+		dateDE: {dateDE: true},
+		number: {number: true},
+		numberDE: {numberDE: true},
+		digits: {digits: true},
+		creditcard: {creditcard: true}
+	},
+	
+	addClassRules: function(className, rules) {
+		className.constructor == String ?
+			this.classRuleSettings[className] = rules :
+			$.extend(this.classRuleSettings, className);
+	},
+	
+	classRules: function(element) {
+		var rules = {};
+		var classes = $(element).attr('class');
+		classes && $.each(classes.split(' '), function() {
+			if (this in $.validator.classRuleSettings) {
+				$.extend(rules, $.validator.classRuleSettings[this]);
+			}
+		});
+		return rules;
+	},
+	
+	attributeRules: function(element) {
+		var rules = {};
+		var $element = $(element);
+		
+		for (method in $.validator.methods) {
+			var value = $element.attr(method);
+			if (value) {
+				rules[method] = value;
+			}
+		}
+		
+		// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
+		if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
+			delete rules.maxlength;
+		}
+		
+		return rules;
+	},
+	
+	metadataRules: function(element) {
+		if (!$.metadata) return {};
+		
+		var meta = $.data(element.form, 'validator').settings.meta;
+		return meta ?
+			$(element).metadata()[meta] :
+			$(element).metadata();
+	},
+	
+	staticRules: function(element) {
+		var rules = {};
+		var validator = $.data(element.form, 'validator');
+		if (validator.settings.rules) {
+			rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
+		}
+		return rules;
+	},
+	
+	normalizeRules: function(rules, element) {
+		// handle dependency check
+		$.each(rules, function(prop, val) {
+			// ignore rule when param is explicitly false, eg. required:false
+			if (val === false) {
+				delete rules[prop];
+				return;
+			}
+			if (val.param || val.depends) {
+				var keepRule = true;
+				switch (typeof val.depends) {
+					case "string":
+						keepRule = !!$(val.depends, element.form).length;
+						break;
+					case "function":
+						keepRule = val.depends.call(element, element);
+						break;
+				}
+				if (keepRule) {
+					rules[prop] = val.param !== undefined ? val.param : true;
+				} else {
+					delete rules[prop];
+				}
+			}
+		});
+		
+		// evaluate parameters
+		$.each(rules, function(rule, parameter) {
+			rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
+		});
+		
+		// clean number parameters
+		$.each(['minlength', 'maxlength', 'min', 'max'], function() {
+			if (rules[this]) {
+				rules[this] = Number(rules[this]);
+			}
+		});
+		$.each(['rangelength', 'range'], function() {
+			if (rules[this]) {
+				rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
+			}
+		});
+		
+		if ($.validator.autoCreateRanges) {
+			// auto-create ranges
+			if (rules.min && rules.max) {
+				rules.range = [rules.min, rules.max];
+				delete rules.min;
+				delete rules.max;
+			}
+			if (rules.minlength && rules.maxlength) {
+				rules.rangelength = [rules.minlength, rules.maxlength];
+				delete rules.minlength;
+				delete rules.maxlength;
+			}
+		}
+		
+		// To support custom messages in metadata ignore rule methods titled "messages"
+		if (rules.messages) {
+			delete rules.messages
+		}
+		
+		return rules;
+	},
+	
+	// Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
+	normalizeRule: function(data) {
+		if( typeof data == "string" ) {
+			var transformed = {};
+			$.each(data.split(/\s/), function() {
+				transformed[this] = true;
+			});
+			data = transformed;
+		}
+		return data;
+	},
+	
+	// http://docs.jquery.com/Plugins/Validation/Validator/addMethod
+	addMethod: function(name, method, message) {
+		$.validator.methods[name] = method;
+		$.validator.messages[name] = message || $.validator.messages[name];
+		if (method.length < 3) {
+			$.validator.addClassRules(name, $.validator.normalizeRule(name));
+		}
+	},
+
+	methods: {
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/required
+		required: function(value, element, param) {
+			// check if dependency is met
+			if ( !this.depend(param, element) )
+				return "dependency-mismatch";
+			switch( element.nodeName.toLowerCase() ) {
+			case 'select':
+				var options = $("option:selected", element);
+				return options.length > 0 && ( element.type == "select-multiple" || ($.browser.msie && !(options[0].attributes['value'].specified) ? options[0].text : options[0].value).length > 0);
+			case 'input':
+				if ( this.checkable(element) )
+					return this.getLength(value, element) > 0;
+			default:
+				return $.trim(value).length > 0;
+			}
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Methods/remote
+		remote: function(value, element, param) {
+			if ( this.optional(element) )
+				return "dependency-mismatch";
+			
+			var previous = this.previousValue(element);
+			
+			if (!this.settings.messages[element.name] )
+				this.settings.messages[element.name] = {};
+			this.settings.messages[element.name].remote = typeof previous.message == "function" ? previous.message(value) : previous.message;
+			
+			param = typeof param == "string" && {url:param} || param; 
+			
+			if ( previous.old !== value ) {
+				previous.old = value;
+				var validator = this;
+				this.startRequest(element);
+				var data = {};
+				data[element.name] = value;
+				$.ajax($.extend(true, {
+					url: param,
+					mode: "abort",
+					port: "validate" + element.name,
+					dataType: "json",
+					data: data,
+					success: function(response) {
+						var valid = response === true;
+						if ( valid ) {
+							var submitted = validator.formSubmitted;
+							validator.prepareElement(element);
+							validator.formSubmitted = submitted;
+							validator.successList.push(element);
+							validator.showErrors();
+						} else {
+							var errors = {};
+							errors[element.name] = previous.message = response || validator.defaultMessage( element, "remote" );
+							validator.showErrors(errors);
+						}
+						previous.valid = valid;
+						validator.stopRequest(element, valid);
+					}
+				}, param));
+				return "pending";
+			} else if( this.pending[element.name] ) {
+				return "pending";
+			}
+			return previous.valid;
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/minlength
+		minlength: function(value, element, param) {
+			return this.optional(element) || this.getLength($.trim(value), element) >= param;
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Methods/maxlength
+		maxlength: function(value, element, param) {
+			return this.optional(element) || this.getLength($.trim(value), element) <= param;
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Methods/rangelength
+		rangelength: function(value, element, param) {
+			var length = this.getLength($.trim(value), element);
+			return this.optional(element) || ( length >= param[0] && length <= param[1] );
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Methods/min
+		min: function( value, element, param ) {
+			return this.optional(element) || value >= param;
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Methods/max
+		max: function( value, element, param ) {
+			return this.optional(element) || value <= param;
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Methods/range
+		range: function( value, element, param ) {
+			return this.optional(element) || ( value >= param[0] && value <= param[1] );
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Methods/email
+		email: function(value, element) {
+			// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
+			return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
+		},
+	
+		// http://docs.jquery.com/Plugins/Validation/Methods/url
+		url: function(value, element) {
+			// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
+			return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
+		},
+        
+		// http://docs.jquery.com/Plugins/Validation/Methods/date
+		date: function(value, element) {
+			return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
+		},
+	
+		// http://docs.jquery.com/Plugins/Validation/Methods/dateISO
+		dateISO: function(value, element) {
+			return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);
+		},
+	
+		// http://docs.jquery.com/Plugins/Validation/Methods/dateDE
+		dateDE: function(value, element) {
+			return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value);
+		},
+	
+		// http://docs.jquery.com/Plugins/Validation/Methods/number
+		number: function(value, element) {
+			return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
+		},
+	
+		// http://docs.jquery.com/Plugins/Validation/Methods/numberDE
+		numberDE: function(value, element) {
+			return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Methods/digits
+		digits: function(value, element) {
+			return this.optional(element) || /^\d+$/.test(value);
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Methods/creditcard
+		// based on http://en.wikipedia.org/wiki/Luhn
+		creditcard: function(value, element) {
+			if ( this.optional(element) )
+				return "dependency-mismatch";
+			// accept only digits and dashes
+			if (/[^0-9-]+/.test(value))
+				return false;
+			var nCheck = 0,
+				nDigit = 0,
+				bEven = false;
+
+			value = value.replace(/\D/g, "");
+
+			for (n = value.length - 1; n >= 0; n--) {
+				var cDigit = value.charAt(n);
+				var nDigit = parseInt(cDigit, 10);
+				if (bEven) {
+					if ((nDigit *= 2) > 9)
+						nDigit -= 9;
+				}
+				nCheck += nDigit;
+				bEven = !bEven;
+			}
+
+			return (nCheck % 10) == 0;
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Methods/accept
+		accept: function(value, element, param) {
+			param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif";
+			return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i")); 
+		},
+		
+		// http://docs.jquery.com/Plugins/Validation/Methods/equalTo
+		equalTo: function(value, element, param) {
+			return value == $(param).val();
+		}
+		
+	}
+	
+});
+
+// deprecated, use $.validator.format instead
+$.format = $.validator.format;
+
+})(jQuery);
+
+// ajax mode: abort
+// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
+// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() 
+;(function($) {
+	var ajax = $.ajax;
+	var pendingRequests = {};
+	$.ajax = function(settings) {
+		// create settings for compatibility with ajaxSetup
+		settings = $.extend(settings, $.extend({}, $.ajaxSettings, settings));
+		var port = settings.port;
+		if (settings.mode == "abort") {
+			if ( pendingRequests[port] ) {
+				pendingRequests[port].abort();
+			}
+			return (pendingRequests[port] = ajax.apply(this, arguments));
+		}
+		return ajax.apply(this, arguments);
+	};
+})(jQuery);
+
+// provides cross-browser focusin and focusout events
+// IE has native support, in other browsers, use event caputuring (neither bubbles)
+
+// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
+// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target 
+
+// provides triggerEvent(type: String, target: Element) to trigger delegated events
+;(function($) {
+	$.each({
+		focus: 'focusin',
+		blur: 'focusout'	
+	}, function( original, fix ){
+		$.event.special[fix] = {
+			setup:function() {
+				if ( $.browser.msie ) return false;
+				this.addEventListener( original, $.event.special[fix].handler, true );
+			},
+			teardown:function() {
+				if ( $.browser.msie ) return false;
+				this.removeEventListener( original,
+				$.event.special[fix].handler, true );
+			},
+			handler: function(e) {
+				arguments[0] = $.event.fix(e);
+				arguments[0].type = fix;
+				return $.event.handle.apply(this, arguments);
+			}
+		};
+	});
+	$.extend($.fn, {
+		delegate: function(type, delegate, handler) {
+			return this.bind(type, function(event) {
+				var target = $(event.target);
+				if (target.is(delegate)) {
+					return handler.apply(target, arguments);
+				}
+			});
+		},
+		triggerEvent: function(type, target) {
+			return this.triggerHandler(type, [$.event.fix({ type: type, target: target })]);
+		}
+	})
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/login_ajax/jquery.login.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,77 @@
+$(document).ready(function() {
+     $('#password').keypress(function(e) {
+            if(e.which == 13) {
+                jQuery('#submit').focus().click();
+            }
+        });
+
+
+    $("#submit").click(function() {
+        var username=$("#username").val();
+        var password=$("#password").val();
+        var data = {'username': username, 'password': password, 'reload': reload};
+        if(username=="" && password=="")
+        {
+            $("#login_form_username_error").show();
+            $("#login_form_password_error").show();
+            $("#username").addClass("ajaxform_invalid");
+            $("#password").addClass("ajaxform_invalid");
+        }
+        else if(username=="" && password!="")
+        {
+            $("#login_form_username_error").show();
+            $("#username").addClass("ajaxform_invalid");
+        }
+        else if(password=="" && username!="")
+        {
+            $("#login_form_password_error").show();
+            $("#password").addClass("ajaxform_invalid");
+        }
+        else{
+    
+        $.ajax({
+        type: "POST",  
+        url : url_login_ajax,
+        dataType:'json',
+        data: data,
+        error: function (){
+            $("#msg").html("fail to connect");
+            },
+        success: function(data, reload){ //if success, refrash un bout de page pour afficher le nom de utilisateur et déconnecter.
+                            if (data.message!="successful")
+                            {
+                                $("#msg").html(data.message).show();
+                            }
+                            else{
+                            // $("#floatdialog_mask_loginform").hide();
+                            //window.location.reload();
+                                if (data.reload=='true'){
+                                    window.location.reload();
+                                }
+                                else{
+                                    //$("#loginstate").html('<a href ="'+url_userspace+'">'+data.username+'</a> | <a href="'+url_logout+'">déconnection</a>');
+                                    //$("#loginstate").html('<ul class="usertool"><li id="user">'+data.username+'</li><li><a href ="'+url_userprofile+'">Profiles</a></li><li><a href ="'+url_userspace+'">Space</a></li><li><a href="'+url_logout+'">déconnection</a></li></ul>');
+                                    var $DOMWindowOverlay = $('#DOMWindowOverlay');
+                                    var $DOMWindow = $('#DOMWindow');
+                                    $DOMWindowOverlay.fadeOut('fast',function(){
+                                        $DOMWindowOverlay.trigger('unload').unbind().remove();																	  
+                                    });
+                                    $DOMWindow.fadeOut('fast',function(){
+                                        if($.fn.draggable){
+                                            $DOMWindow.draggable("destroy").trigger("unload").remove();
+                                        }else{
+                                            $DOMWindow.trigger("unload").remove();
+                                        }
+                                    });
+                                    $("#loginstate").html(data.html);
+                                }
+                            }
+                         
+                           
+                }  
+        });
+        }
+    });
+})
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/login_ajax/login_ajax.css	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,75 @@
+#loginform
+{
+    font-size: 16px;
+    background: #ffffff scroll repeat 0 0;
+    /*border: 2px solid #666666;*/
+    text-align: left;
+    /*width: 400px;*/
+}
+
+#loginform .title
+{
+    color: #FFFFFF;
+    background: #990000 scroll repeat left top;
+    font-weight:bold;
+    height:34px;
+    position: relative;
+    line-height: 34px;
+    overflow: hidden;
+    text-transform: uppercase;
+}
+
+#loginform .title div
+{
+    font-size: 16px;
+    margin-left:12px;
+}
+
+#loginform .title .closeDOMWindow
+{
+    float: right;
+    text-decoration: none;
+    color:#ffffff;
+    padding-right:2px;
+}
+
+#loginform .ajaxform_invalid{
+    background: #ffdddd none repeat scroll 0 0;
+}
+
+#loginform .ajaxform_error{
+    display: none;
+    color:red;
+    font-size: 11px;
+    line-height: 13px;
+}
+
+#loginform #msg{
+    display:none;
+    background:#FBE3E4 none repeat scroll 0 0;
+    color: red;
+    padding:0.5em;
+    border-color:#FBC2C4;
+    font-size: 13px;
+    font-weight:bold;
+}
+
+#loginform dl {
+    font-size:13px;
+    line-height:22px;
+}
+
+#loginform dl dt{
+    clear:left;
+    color:#666666;
+    float:left;
+    font-weight:bold;
+    width:100px
+}
+
+#loginform dl dd {
+    margin-left: 110px;
+    padding-bottom: 8px;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/projectscontents.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,357 @@
+$.fn.realVal = function() {
+	var obj = $(this[0]);
+	if(obj.val) {
+		if(obj.val() == obj.attr('defaultText')) {
+			return '';
+		}
+		else {
+			return obj.val();
+		}
+	}
+	else {
+		return null;
+	}
+};
+
+function init_events_base(base_node, embed_url) {
+
+	$('.ldt_link',base_node).nyroModal({
+       	type: 'iframe',
+       	forceType: 'iframe',
+       	windowResize: false,
+   		height:662, 
+   		width:1022,
+   		bgColor: 'rgb(239, 239, 239)',
+   		padding: 5,
+   		titleFromIframe: false,
+        beforeHideContent: function(elts, settings, callback){
+	        try {
+	             var res = $('#ldtInitSwf',$('#nyroModalIframe').contents());
+	             if(res.length > 0)
+	             {
+	             	   res.get(0).forceSave();
+	             }
+	        }
+	        catch(err)
+	        {
+	         // do nothing
+	        }                   
+	        callback();
+   		}
+
+      	});
+    	
+
+	$('.ldt_link_embed',base_node).click(function(e) {
+		e.preventDefault();
+		var link = $(e.target);
+		var json_url = link.attr("href");
+		var player_id = link.attr("id");
+		var ldt_id = player_id.substring(15);
+		/*$.nyroModalSettings({
+		 	ajax: { data: ({ json_url:json_url, player_id:player_id }) }
+		  	});*/
+		   $.nyroModalManual({
+		       type: 'iframe',
+		       forceType: 'iframe',
+		       titleFromIframe: false,
+		       height:662, 
+               width:750,
+               bgColor: 'rgb(239, 239, 239)',
+               padding: 5,
+		       url: embed_url+'?json_url='+escape(json_url)+'&player_id='+escape(player_id)+'&ldt_id='+escape(ldt_id)
+		   });
+		   return false;
+	});
+
+
+	$('.imageline',base_node).each(function(i) {
+	    var tr = $(this);
+		tr.mouseover(function() {
+	    	$('.cellimgdiv',this).css('visibility', 'visible');
+		}); 
+		tr.mouseout(function() {
+	    	$('.cellimgdiv',this).css('visibility', 'hidden');
+		});
+	});
+	
+	$('.cellimgdiv img').qtip({ 
+		style: { 
+			'name': 'dark',
+			'filter':'alpha(opacity=70)',
+			'-moz-opacity':'0.7',
+			'-khtml-opacity': '0.7',
+			'opacity': '0.7',
+			'border': {
+				'width' : '0',
+				'color': '#505050'
+			}, 
+			'tip': true
+		} 
+	});
+	
+
+};
+
+
+function searchCallback(target, container_selector, url, timeout) {
+
+	timeout = typeof(timeout) != 'undefined' ? timeout : 0;
+	var target = $(target);
+	
+	// remove all qtip
+	$(".qtip").remove();
+	
+	if(target.realVal().length > 0) {
+		target.nextAll(".searchclear").show();
+	}
+
+	if(target.attr('timer')) {
+		clearTimeout(target.attr('timer'));
+	}
+
+	target.attr(
+		'timer',
+		setTimeout(function() {
+			target.next(".searchajaxloader").show();
+			target.nextAll(".searchclear").hide();
+			var filterVal = "_" + escape(target.realVal());
+			url = url.replace('__FILTER__',filterVal);
+			$.ajax({
+				url: url,
+				cache: false,
+				success: function(data, status, request) {
+					$(container_selector).html(data);
+					target.next(".searchajaxloader").hide();
+					if(target.realVal().length > 0) {
+						target.nextAll(".searchclear").show();
+					}
+					init_events($(container_selector));
+					target.removeAttr('timer');
+				}
+			});	
+		},
+		300)
+	);
+};
+
+
+function init_events_contents(base_node, embed_url, content_filter_url) {
+
+	init_events_base(base_node, embed_url);
+	
+	$('.content_link_create').nyroModal({
+	    type: 'iframe',
+	    forceType: 'iframe',
+	    height:500, 
+	    width:765,
+	    bgColor: 'rgb(239, 239, 239)',
+	    padding: 5,
+	    titleFromIframe: false,
+	    endRemove: function(elts, settings) {
+	    	searchCallback($("#searchcontentsinput"),"#contentslistcontainer",content_filter_url)
+		},
+	  	endShowContent: function(elts, settings) {
+		  	$('#nyroModalIframe', elts.content).load(function() {
+			  	var form_status = $(this).contents().find("#content_form_status").val(); 
+			  	if(form_status == 'saved' || form_status == 'deleted' ) {
+			  		$.nyroModalRemove();
+			  	}
+		  	});
+		}
+	});
+	
+	$('.contenttitlelink').nyroModal({
+	    type: 'iframe',
+	    forceType: 'iframe',
+	    height:500, 
+	    width:765,
+	    bgColor: 'rgb(239, 239, 239)',
+	    padding: 5,
+	    titleFromIframe: false,
+	    endRemove: function(elts, settings) {
+	    	searchCallback($("#searchcontentsinput"),"#contentslistcontainer",content_filter_url,0);
+		},
+	  	endShowContent: function(elts, settings) {
+		  	$('#nyroModalIframe', elts.content).load(function() {
+			  	var form_status = $(this).contents().find("#content_form_status").val(); 
+			  	if(form_status == 'saved' || form_status == 'deleted') {
+			  		$.nyroModalRemove();
+			  	}
+		  	});
+		}
+	});
+
+
+}
+
+function init_events_base_projects(base_node, embed_url, searchprojectfilterurl, publishprojecturl, unpublishprojecturl) {
+
+ 	$('.ldt_link_create',base_node).nyroModal({
+        type: 'iframe',
+        forceType: 'iframe',
+        windowResize: false,
+        height:680, 
+        width:500,
+        bgColor: 'rgb(239, 239, 239)',
+        padding: 5,
+        titleFromIframe: false,
+	    endRemove: function(elts, settings) {
+ 			searchCallback($('#searchprojectsinput'), "#projectslistcontainer", searchprojectfilterurl, 0);
+		},
+        beforeHideContent: function(elts, settings, callback){
+             try {
+	              var res = $('#ldtInitSwf',$('#nyroModalIframe').contents());
+	              if(res.length > 0)
+	              {
+	              	   res.get(0).forceSave();
+	              }
+             }
+             catch(err)
+             {
+              // do nothing
+             }                   
+             callback();
+        	},
+        endShowContent: function(elts, settings){
+    		var iframe = $('#nyroModalIframe', elts.content);
+			iframe.load(function(){
+			  	var form_status = $(this).contents().find("#project_form_status").val(); 
+			  	if(form_status == 'saved' || form_status == 'deleted' ) {
+			  		$.nyroModalRemove();
+			  	}
+				var swfobject = $(this).contents().find("#ldtInitSwf"); 
+				if (swfobject.length) {
+					$.nyroModalSettings({
+						height: swfobject.height() + 31,
+						width: swfobject.width() + 21
+					});
+				}
+			});
+        	}
+    	});
+
+	
+	$('.publishedproject', base_node).click(function(e) {
+		e.preventDefault();
+		var target = $(e.target);
+		var project_id = target.attr('id').replace('project_','');
+		var url = unpublishprojecturl.replace('__PROJECT_ID__', project_id);
+		$.ajax({
+			url: url,
+			type: 'POST',
+			dataType: 'json',
+			success: function(json, textStatus, XMLHttpRequest){
+				if(json.res) {
+					searchCallback($('#searchprojectsinput'), "#projectslistcontainer", searchprojectfilterurl, 0);
+				}
+			}
+		});
+	});
+
+	$('.unpublishedproject', base_node).click(function(e) {
+		e.preventDefault();
+		var target = $(e.target);
+		var project_id = target.attr('id').replace('project_','');
+		var url = publishprojecturl.replace('__PROJECT_ID__', project_id);
+		$.ajax({
+			url: url,
+			type: 'POST',
+			dataType: 'json',
+			success: function(json, textStatus, XMLHttpRequest){
+				if(json.res) {
+					searchCallback($('#searchprojectsinput'), "#projectslistcontainer", searchprojectfilterurl, 0);
+				}
+			}
+		});
+	});
+
+	$('.projecttitlelink').nyroModal({
+	    type: 'iframe',
+	    forceType: 'iframe',
+        height:680, 
+        width:500,
+	    bgColor: 'rgb(239, 239, 239)',
+	    padding: 5,
+	    titleFromIframe: false,
+	    endRemove: function(elts, settings) {
+			searchCallback($('#searchprojectsinput'), "#projectslistcontainer", searchprojectfilterurl, 0);
+		},
+	  	endShowContent: function(elts, settings) {
+		  	$('#nyroModalIframe', elts.content).load(function() {
+			  	var form_status = $(this).contents().find("#project_form_status").val(); 
+			  	if(form_status == 'saved' || form_status == 'deleted') {
+			  		$.nyroModalRemove();
+			  	}
+		  	});
+		}
+	});
+	
+}
+
+function init_events_projects(base_node, embed_url, searchprojectfilterurl, publishprojecturl, unpublishprojecturl) {
+	
+	init_events_base(base_node, embed_url);
+	init_events_base_projects(base_node, embed_url, searchprojectfilterurl, publishprojecturl, unpublishprojecturl);
+}
+
+function init_events_all(base_node, embed_url, searchcontentfilterurl, searchprojectfilterurl, publishprojecturl, unpublishprojecturl) {
+	
+	init_events_contents(base_node, embed_url, searchcontentfilterurl);
+	init_events_base_projects(base_node, embed_url, searchprojectfilterurl, publishprojecturl, unpublishprojecturl);	
+}
+
+
+
+function searchFieldInit(input_list_init) {
+
+	$(".searchfieldinputbase").keydown(function (e) {
+	 	if(e.which == 27) {
+	 	 	$(e.target).blur();
+	 	 	$(e.target).next(".searchajaxloader").hide();
+	 	}
+	});		
+	 
+	$('.searchfieldinput').each(function(i) {
+	     var sbox = $(this);
+	     if(sbox.val() != '') {
+	    	 sbox.attr('defaultText', sbox.val());
+	     }
+	
+	     sbox.focus(function() {
+	         box = $(this);
+	         if(box.val() == box.attr('defaultText')) {
+	             box.val('');
+	             box.toggleClass("searchfieldinput");
+	         }
+	     });
+	
+	     sbox.blur(function() {
+	         var box = $(this);
+	         if(box.val() == '' && box.attr('defaultText')) {
+	             box.val(box.attr('defaultText'));
+	             box.toggleClass("searchfieldinput");
+	         }
+	     });
+	     	     
+	});
+
+	$.each(input_list_init, function(index, value) {
+		$(value['input_selector']).keyup(function (e) {
+			searchCallback(e.target, value['container_selector'], value['url']);
+		});
+	});
+	
+	$('.searchclear').click(function(e) {
+		var box = $(e.target).parent().find("input");
+		box.val(box.attr('defaultText'));
+		box.addClass("searchfieldinput");
+		box.blur();
+		box.keyup();
+	});
+	
+	$('.searchclear').each(function(i) {
+		$(this).hide();
+	});
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/js/swfobject.js	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,5 @@
+/* SWFObject v2.1 <http://code.google.com/p/swfobject/>
+	Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis
+	This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
+*/
+var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return }f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return }if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return }}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&&h.win){var AF="";for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()=="data"){AE.movie=AG[AB]}else{if(AB.toLowerCase()=="styleclass"){AF+=' class="'+AG[AB]+'"'}else{if(AB.toLowerCase()!="classid"){AF+=" "+AB+'="'+AG[AB]+'"'}}}}}var AD="";for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='<param name="'+AA+'" value="'+AE[AA]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AF+">"+AD+"</object>";i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&&h.webkit<312){var AC=a("embed");AC.setAttribute("type",P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){AC.setAttribute("src",AG[z])}else{if(z.toLowerCase()=="styleclass"){AC.setAttribute("class",AG[z])}else{if(z.toLowerCase()!="classid"){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute("type",P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",AG[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return }var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return }var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return }AB+="";AD+="";if(c(q)){W(AE,false);var AA={};if(AC&&typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();
\ No newline at end of file
Binary file web/ldt/media/swf/expressInstall.swf has changed
Binary file web/ldt/media/swf/ldt/LignesDeTempsFlex.swf has changed
Binary file web/ldt/media/swf/ldt/pkg/SkinBoutABout.swf has changed
Binary file web/ldt/media/swf/ldt/pkg/SkinUnderPlaySeekMuteVol.swf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/swf/ldt/pkg/color.xml	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<iri>
+	<menuColor>
+		<color id="de_PPP" value="0x675260"/>
+		<color id="de_SEQU" value="0x9933CC"/>
+		<color id="ve_PERS" value="0xCA3300"/>
+		<color id="ve_ECHPL" value="0x003399"/>
+		<color id="ve_MOUVC" value="0x336600"/>
+        
+        <color id="ve_AXE" value="0x229600"/>
+		<color id="ve_RACCORDF" value="0xCA3300"/>
+		<color id="ve_RACCORDO" value="0xCA3300"/>
+		<color id="ve_TYPETAB" value="0x003399"/>
+		<color id="ve_CADRAGE_TABLEAU" value="0x9933CC"/>
+        
+		<color id="perso" value="0x999999"/>
+
+        <color id="ve_LIEU" value="0x661100"/>
+		<color id="ve_LIEUP" value="0xCC11AA"/>
+		<color id="ve_RACCORDF" value="0xCA3300"/>
+		<color id="ve_RACCORDO" value="0xCA3300"/>
+		<color id="ve_TYPETAB" value="0x003399"/>
+		<color id="ve_CADRAGE_TABLEAU" value="0x9933CC"/>
+
+		
+		<color label="Lieu" value="0x003399"/>
+		<color label="Lieu (précision)" value="0x9933CC"/>
+		<color label="Sujet" value="0x003399"/>
+		<color label="Type image" value="0x336600"/>
+		<color label="Dialogue" value="0xCA3300"/>
+		<color label="Plan par plan" value="0x675260"/>
+		<color label="Séquences" value="0x9933CC"/>
+		<color label="Personnages" value="0xCA3300"/>
+		<color label="Echelle de plan" value="0x003399"/>
+		<color label="Mouvement de caméra" value="0x336600"/>
+		<color label="perso" value="0x999999"/>
+	</menuColor>
+</iri>
\ No newline at end of file
Binary file web/ldt/media/swf/ldt/pkg/i18n/en/messages.mo has changed
Binary file web/ldt/media/swf/ldt/pkg/i18n/es/messages.mo has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/swf/ldt/pkg/i18n/es/messages.po	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,750 @@
+# Spanish translations for PACKAGE package.
+# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Ales Zabala Alava (Shagi) <shagi@gisa-elkartea.org>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-12-08 13:17+0100\n"
+"PO-Revision-Date: 2009-10-19 10:14+0100\n"
+"Last-Translator: Ales Zabala Alava (Shagi) <shagi@gisa-elkartea.org>\n"
+"Language-Team: Spanish\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-Language: Spanish\n"
+
+#: src/InfoWindow/BoutABoutTab.as:51
+msgid "Choose one of your bout à bout (edits)"
+msgstr "Elige uno de tus bout à bouts (ediciones)"
+
+#: src/InfoWindow/BoutABoutTab.as:66
+#: src/sequencer/tools/edit/BoutABout.mxml:116
+msgid "New bout à bout (edit)"
+msgstr "Nuevo bout à bout (edición)"
+
+#: src/InfoWindow/BoutABoutTab.as:73
+msgid "Delete the selected bout à bout (edit)"
+msgstr "¿Borrar la bout à bout (edición) seleccionada?"
+
+#: src/InfoWindow/BoutABoutTab.as:80
+#: src/InfoWindow/ProjectTab.as:52
+#: src/sequencer/tools/create/TLUser.mxml:105
+#: src/tools/ImportMedia.mxml:43
+msgid "Title"
+msgstr "Título"
+
+#: src/InfoWindow/BoutABoutTab.as:95
+#: src/InfoWindow/CuttingsTab.as:132
+#: src/InfoWindow/InformationsTab.as:391
+#: src/InfoWindow/InformationsTab.as:515
+#: src/InfoWindow/InformationsTab.as:547
+#: src/InfoWindow/InformationsTab.as:550
+#: src/InfoWindow/ProjectTab.as:83
+#: src/tools/ImportMedia.mxml:49
+msgid "Description"
+msgstr "Descripción"
+
+#: src/InfoWindow/BoutABoutTab.as:163
+#: src/InfoWindow/InformationsTab.as:791
+#: src/InfoWindow/ProjectTab.as:181
+#: src/InfoWindow/ViewsTab.as:245
+#: src/sequencer/tools/create/TLUser.mxml:434
+#: src/sequencer/tools/edit/BoutABout.mxml:475
+msgid "Yes"
+msgstr "Sí"
+
+#: src/InfoWindow/BoutABoutTab.as:164
+#: src/InfoWindow/InformationsTab.as:792
+#: src/InfoWindow/ProjectTab.as:182
+#: src/InfoWindow/ViewsTab.as:246
+#: src/sequencer/tools/create/TLUser.mxml:435
+#: src/sequencer/tools/edit/BoutABout.mxml:476
+msgid "No"
+msgstr "No"
+
+#: src/InfoWindow/BoutABoutTab.as:165
+msgid "Do you confirm you delete the bout à bout (edit) ?"
+msgstr "¿Confirmas que quieres borrar la bout à bout (edición)?"
+
+#: src/InfoWindow/CuttingsTab.as:108
+msgid "List"
+msgstr "Lista"
+
+#: src/InfoWindow/CuttingsTab.as:118
+#: src/sequencer/ui/Content.as:96
+msgid "New cutting"
+msgstr "Nuevo corte"
+
+#: src/InfoWindow/CuttingsTab.as:134
+#: src/sequencer/tools/create/TLUser.mxml:81
+#: src/tools/ImportCuttings.mxml:18
+msgid "Cutting's title"
+msgstr "Título del corte"
+
+#: src/InfoWindow/CuttingsTab.as:147
+msgid "Cutting's description"
+msgstr "Descripción del corte"
+
+#: src/InfoWindow/CuttingsTab.as:164
+msgid "Marks and segments"
+msgstr "Marcas y segmentos"
+
+#: src/InfoWindow/CuttingsTab.as:166
+#: src/InfoWindow/InformationsTab.as:399
+#: src/sequencer/tools/edit/AddTextPict.mxml:77
+msgid "Begin"
+msgstr "Principio"
+
+#: src/InfoWindow/CuttingsTab.as:178
+#: src/InfoWindow/InformationsTab.as:399
+#: src/sequencer/tools/edit/AddTextPict.mxml:79
+msgid "End"
+msgstr "Fin"
+
+#: src/InfoWindow/CuttingsTab.as:190
+#: src/sequencer/tools/create/TLUser.mxml:108
+msgid "Segment's title"
+msgstr "Título del segmento"
+
+#: src/InfoWindow/CuttingsTab.as:205
+msgid "Segment's description"
+msgstr "Descripción del segmento"
+
+#: src/InfoWindow/CuttingsTab.as:219
+msgid "Tags (separated by a comma)"
+msgstr "Etiquetas (separadas por comas)"
+
+#: src/InfoWindow/CuttingsTab.as:237
+#: src/InfoWindow/CuttingsTab.as:582
+msgid "Timeline's tags"
+msgstr "Etiquetas de la línea de tiempo"
+
+#: src/InfoWindow/CuttingsTab.as:243
+#: src/InfoWindow/InformationsTab.as:150
+msgid "Previous"
+msgstr "Anterior"
+
+#: src/InfoWindow/CuttingsTab.as:252
+#: src/InfoWindow/InformationsTab.as:159
+msgid "Next"
+msgstr "Siguiente"
+
+#: src/InfoWindow/CuttingsTab.as:273
+msgid "Audio annotation"
+msgstr "Anotación de audio"
+
+#: src/InfoWindow/CuttingsTab.as:273
+msgid "choose a mp3 file."
+msgstr "elige un fichero mp3."
+
+#: src/InfoWindow/CuttingsTab.as:280
+#: src/sequencer/tools/edit/AddTextPict.mxml:65
+#: src/tools/ImportMedia.mxml:41
+msgid "Browse..."
+msgstr "Examinar..."
+
+#: src/InfoWindow/InfoWindow.as:110
+msgid "Project"
+msgstr "Proyecto"
+
+#: src/InfoWindow/InfoWindow.as:116
+msgid "Cuttings"
+msgstr "Cortes"
+
+#: src/InfoWindow/InfoWindow.as:121
+msgid "Informations"
+msgstr "Informaciones"
+
+#: src/InfoWindow/InfoWindow.as:125
+#: src/sequencer/tools/edit/BoutABout.mxml:815
+#: src/sequencer/tools/edit/BoutABout.mxml:816
+#: src/sequencer/tools/edit/BoutABout.mxml:905
+msgid "Bout à bout"
+msgstr "Bout à bout"
+
+#: src/InfoWindow/InfoWindow.as:131
+msgid "Views"
+msgstr "Vistas"
+
+#: src/InfoWindow/InfoWindow.as:136
+msgid "Note-taking"
+msgstr "Toma de notas"
+
+#: src/InfoWindow/InformationsTab.as:172
+#: src/sequencer/tools/edit/AddTextPict.mxml:75
+msgid "Modify"
+msgstr "Modificar"
+
+#: src/InfoWindow/InformationsTab.as:178
+#: src/InfoWindow/ProjectTab.as:162
+#: src/InfoWindow/ViewTreeItem.mxml:24
+msgid "Delete"
+msgstr "Borrar"
+
+#: src/InfoWindow/InformationsTab.as:184
+msgid "Duplicate"
+msgstr "Duplicar"
+
+#: src/InfoWindow/InformationsTab.as:190
+#: src/LignesDeTempsFlex.mxml:619
+msgid "Unhighlight all the timelines's segments"
+msgstr "Deseleccionar los segmentos de todas las líneas de tiempo"
+
+#: src/InfoWindow/InformationsTab.as:204
+msgid "Duplicate only the highlighted segments"
+msgstr "Duplicar únicamente los segmentos remarcados"
+
+#: src/InfoWindow/InformationsTab.as:211
+msgid "Unhighlight this timeline's segments"
+msgstr "Deseleccionar los segmentos de esta línea de tiempo"
+
+#: src/InfoWindow/InformationsTab.as:218
+msgid "Create a bout à bout (edit) from the complete timeline"
+msgstr "Crear una bout à bout (edición) de toda la línea de tiempo"
+
+#: src/InfoWindow/InformationsTab.as:225
+msgid "Create a bout à bout (edit) from the highlighted segments"
+msgstr "Crear una bout à bout (edición) de los segmentos seleccionados"
+
+#: src/InfoWindow/InformationsTab.as:232
+msgid "Create a bout à bout (edit) from all the timelines's highlighted segments"
+msgstr "Crear una bout à bout (edición) de los segmentos seleccionados de todas las líneas de tiempo"
+
+#: src/InfoWindow/InformationsTab.as:239
+msgid "See all the segments' titles and descriptions in one text"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:397
+#: src/InfoWindow/InformationsTab.as:524
+#: src/InfoWindow/InformationsTab.as:558
+msgid "Duration"
+msgstr "Duración"
+
+#: src/InfoWindow/InformationsTab.as:404
+msgid "Indexation"
+msgstr "Indexación"
+
+#: src/InfoWindow/InformationsTab.as:517
+#: src/InfoWindow/InformationsTab.as:553
+#: src/tools/ImportCuttings.mxml:20
+msgid "Nb elements"
+msgstr "Num. de elementos"
+
+#: src/InfoWindow/InformationsTab.as:521
+#: src/InfoWindow/InformationsTab.as:556
+msgid "Average length of segments"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:524
+#: src/InfoWindow/InformationsTab.as:553
+#: src/InfoWindow/InformationsTab.as:558
+msgid "on"
+msgstr "activo"
+
+#: src/InfoWindow/InformationsTab.as:525
+#: src/InfoWindow/InformationsTab.as:559
+#: src/InfoWindow/ProjectTab.as:67
+#: src/tools/ImportMedia.mxml:45
+msgid "Authors"
+msgstr "Autores"
+
+#: src/InfoWindow/InformationsTab.as:525
+#: src/InfoWindow/InformationsTab.as:559
+#: src/tools/ImportMedia.mxml:47
+msgid "Date"
+msgstr "Fecha"
+
+#: src/InfoWindow/InformationsTab.as:546
+msgid "View"
+msgstr "Vista"
+
+#: src/InfoWindow/InformationsTab.as:548
+msgid "Criterion"
+msgstr "Criterio"
+
+#: src/InfoWindow/InformationsTab.as:563
+msgid "Summary"
+msgstr "Resumen"
+
+#: src/InfoWindow/InformationsTab.as:564
+msgid "Segments"
+msgstr "Segmentos"
+
+#: src/InfoWindow/InformationsTab.as:565
+msgid "Marks"
+msgstr "Marcas"
+
+#: src/InfoWindow/InformationsTab.as:566
+msgid "All"
+msgstr "Todo"
+
+#: src/InfoWindow/InformationsTab.as:794
+msgid "Do you confirm you delete the cutting ?"
+msgstr "¿Confirmas que quieres borrar el corte?"
+
+#: src/InfoWindow/InformationsTab.as:854
+msgid "copy"
+msgstr "copiar"
+
+#: src/InfoWindow/NoteTakingTab.as:61
+msgid "Start note-taking"
+msgstr "Empezar a tomar notas"
+
+#: src/InfoWindow/NoteTakingTab.as:68
+msgid "Put a separator (Shift + Enter)"
+msgstr "Poner un separador (Shift + Enter)"
+
+#: src/InfoWindow/NoteTakingTab.as:75
+msgid "Create a cutting from these notes"
+msgstr "Crear un corte a partir de estas notas"
+
+#: src/InfoWindow/NoteTakingTab.as:169
+msgid "The media's current timecode must be superior to your last separator's timecode."
+msgstr "El código de tiempo del media actual tiene que ser superior al código de tiempo del separador."
+
+#: src/InfoWindow/NoteTakingTab.as:169
+#: src/InfoWindow/NoteTakingTab.as:259
+#: src/LignesDeTempsFlex.mxml:278
+#: src/LignesDeTempsFlex.mxml:530
+#: src/LignesDeTempsFlex.mxml:730
+#: src/app/Python.as:49
+#: src/app/Python.as:54
+#: src/app/Python.as:64
+#: src/app/Python.as:200
+#: src/sequencer/Sequencer.mxml:209
+#: src/sequencer/tools/create/TLUser.mxml:413
+#: src/sequencer/tools/create/TLUser.mxml:692
+#: src/sequencer/tools/edit/BoutABout.mxml:477
+#: src/tools/ImportMedia.mxml:124
+msgid "Attention"
+msgstr "Atención"
+
+#: src/InfoWindow/NoteTakingTab.as:230
+msgid "My notes"
+msgstr "Mis notas"
+
+#: src/InfoWindow/NoteTakingTab.as:233
+#: src/app/XMLInOut.as:1058
+#: src/sequencer/tools/create/TLUser.mxml:1082
+msgid "Personnal cuttings"
+msgstr "Cortes personales"
+
+#: src/InfoWindow/NoteTakingTab.as:259
+msgid "No content is selected for these notes."
+msgstr "No hay contenido seleccionado para estas notas."
+
+#: src/InfoWindow/ProjectTab.as:99
+msgid "Project's medias"
+msgstr "Medias del proyecto."
+
+#: src/InfoWindow/ProjectTab.as:183
+msgid "Do you really want to take this content out of your project ?"
+msgstr "¿Realmente quieres sacar este contenido de tu proyecto?"
+
+#: src/InfoWindow/ViewTreeItem.mxml:25
+msgid "Rename"
+msgstr "Renombrar"
+
+#: src/InfoWindow/ViewTreeItem.mxml:26
+msgid "Save the current display"
+msgstr "Guardar la visualización actual"
+
+#: src/InfoWindow/ViewsTab.as:65
+msgid "Saved display states :"
+msgstr "Estados de visualización guardados:"
+
+#: src/InfoWindow/ViewsTab.as:93
+msgid "New view"
+msgstr "Nueva vista"
+
+#: src/InfoWindow/ViewsTab.as:100
+msgid "Delete the selected view"
+msgstr "Borrar la vista seleccionada"
+
+#: src/InfoWindow/ViewsTab.as:107
+msgid "Save the current display in the selected view"
+msgstr "Guardar la visualización actual en la vista seleccionada"
+
+#: src/InfoWindow/ViewsTab.as:247
+msgid "Do you confirm you delete this view ?"
+msgstr "¿Confirmas que quieres borrar esta vista?"
+
+#: src/InfoWindow/ViewsTab.as:268
+msgid "No name view"
+msgstr "Vista sin nombre"
+
+#: src/LignesDeTempsFlex.mxml:118
+#: src/media/FlvPlayer.as:172
+#: src/tools/ImportMedia.mxml:57
+msgid "Loading"
+msgstr "Cargando"
+
+#: src/LignesDeTempsFlex.mxml:253
+#: src/LignesDeTempsFlex.mxml:629
+#: src/LignesDeTempsFlex.mxml:646
+#: src/LignesDeTempsFlex.mxml:694
+#: src/LignesDeTempsFlex.mxml:715
+msgid "Selected tags"
+msgstr "Etiquetas seleccionadas"
+
+#: src/LignesDeTempsFlex.mxml:278
+msgid "No project file is defined. You need to define a project file to save your datas."
+msgstr "No se ha definido fichero de proyecto. Tienes que definir un fichero de proyecto para guardar tus datos."
+
+#: src/LignesDeTempsFlex.mxml:282
+msgid "Save the project in"
+msgstr "Guardar proyecto en"
+
+#: src/LignesDeTempsFlex.mxml:290
+#: src/LignesDeTempsFlex.mxml:296
+#: src/LignesDeTempsFlex.mxml:303
+msgid "File"
+msgstr "Fichero"
+
+#: src/LignesDeTempsFlex.mxml:291
+msgid "Read only project"
+msgstr "Proyecto de sólo lectura"
+
+#: src/LignesDeTempsFlex.mxml:297
+msgid "Save the project"
+msgstr "Guardar proyecto"
+
+#: src/LignesDeTempsFlex.mxml:304
+msgid "New project"
+msgstr "Nuevo proyecto"
+
+#: src/LignesDeTempsFlex.mxml:305
+msgid "Open a project (.ldt)"
+msgstr "Abrir un proyecto (.ldt)"
+
+#: src/LignesDeTempsFlex.mxml:307
+msgid "Save the project as..."
+msgstr "Guardar proyecto como..."
+
+#: src/LignesDeTempsFlex.mxml:309
+#: src/tools/ImportMedia.mxml:37
+msgid "Import a new media"
+msgstr "Importar un nuevo media"
+
+#: src/LignesDeTempsFlex.mxml:310
+msgid "Open a description (.iri file)"
+msgstr "Abrir una descripción (fichero .iri)"
+
+#: src/LignesDeTempsFlex.mxml:311
+msgid "Import cuttings from an other .ldt file"
+msgstr "Importar cortes desde otro fichero .ldt"
+
+#: src/LignesDeTempsFlex.mxml:313
+msgid "Quit"
+msgstr "Salir"
+
+#: src/LignesDeTempsFlex.mxml:325
+msgid "Medias"
+msgstr "Medias"
+
+#: src/LignesDeTempsFlex.mxml:330
+msgid "Library"
+msgstr "Biblioteca"
+
+#: src/LignesDeTempsFlex.mxml:353
+msgid "Display"
+msgstr "Visualización"
+
+#: src/LignesDeTempsFlex.mxml:354
+msgid "Fullscreen"
+msgstr "Pantalla completa"
+
+#: src/LignesDeTempsFlex.mxml:355
+msgid "Replace windows"
+msgstr "Recolocar ventanas"
+
+#: src/LignesDeTempsFlex.mxml:356
+msgid "Display all the project's tags"
+msgstr "Mostrar todas las etiquetas del proyecto"
+
+#: src/LignesDeTempsFlex.mxml:362
+msgid "Remember the selected language"
+msgstr "Recordar el idioma seleccionado"
+
+#: src/LignesDeTempsFlex.mxml:372
+#: src/tools/HelpPanel.mxml:12
+msgid "Help"
+msgstr "Ayuda"
+
+#: src/LignesDeTempsFlex.mxml:373
+#: src/tools/AboutPanel.mxml:13
+msgid "About"
+msgstr "Acerca de"
+
+#: src/LignesDeTempsFlex.mxml:530
+msgid "The fullscreen mode is not allowed."
+msgstr "No está permitido el modo a pantalla completa."
+
+#: src/LignesDeTempsFlex.mxml:618
+msgid "Click on the tag to unhighlight it"
+msgstr "Haz click en la etiqueta para deseleccionarla"
+
+#: src/LignesDeTempsFlex.mxml:730
+msgid "Please select a media before importing cuttings."
+msgstr "Por favor selecciona un media antes de importar cortes."
+
+#: src/app/Python.as:49
+msgid "Lost connection"
+msgstr "Conexión perdida"
+
+#: src/app/Python.as:49
+#: src/app/Python.as:54
+#: src/app/Python.as:64
+msgid "Your datas can not be saved anymore. Please close and restart Lignes de temps."
+msgstr "Tus datos ya no pueden guardarse más. Por favor cierra y reinicia Lignes de temps."
+
+#: src/app/Python.as:54
+#: src/app/Python.as:64
+#: src/app/Python.as:200
+msgid "Connection Problem"
+msgstr "Problema de Conexión"
+
+#: src/app/XMLInOut.as:116
+#: src/tools/SimpleMp3Player.as:121
+msgid "Impossible to load the file"
+msgstr "Imposible cargar el fichero"
+
+#: src/app/XMLInOut.as:116
+#: src/app/XMLInOut.as:221
+#: src/app/XMLInOut.as:1014
+msgid "Error"
+msgstr "Error"
+
+#: src/app/XMLInOut.as:221
+#: src/app/XMLInOut.as:1014
+msgid "Your project file was not found. Please locate it."
+msgstr "No se puede encontrar tu fichero de proyecto. Por favor localízalo."
+
+#: src/app/XMLInOut.as:439
+msgid "Wave form"
+msgstr "Forma de onda"
+
+#: src/app/XMLInOut.as:440
+msgid "Wave form of the sound track"
+msgstr "Forma de onda de la pista de sonido"
+
+#: src/app/XMLInOut.as:450
+msgid "Color signal"
+msgstr ""
+
+#: src/app/XMLInOut.as:451
+msgid "Drawing of the video stream's main color"
+msgstr ""
+
+#: src/media/FlvPlayer.as:628
+msgid "Loading picture"
+msgstr "Cargando imagen"
+
+#: src/sequencer/Sequencer.mxml:209
+msgid "Unknown content identifier"
+msgstr "Identificador de contenido desconocido"
+
+#: src/sequencer/tools/create/TLUser.mxml:77
+msgid "Add the cutting (Shift + E)"
+msgstr "Añadir corte (Shift+ E)"
+
+#: src/sequencer/tools/create/TLUser.mxml:82
+#: src/sequencer/tools/create/TLUser.mxml:226
+#: src/sequencer/tools/create/TLUser.mxml:229
+msgid "My cutting"
+msgstr "Mi corte"
+
+#: src/sequencer/tools/create/TLUser.mxml:87
+msgid "Open or close a segment (Shift + Space)"
+msgstr "Abrir o cerrar un segmento (Shift+ Space)"
+
+#: src/sequencer/tools/create/TLUser.mxml:89
+msgid "Add a mark (Shift + M)"
+msgstr "Añadir una marca (Shift + M)"
+
+#: src/sequencer/tools/create/TLUser.mxml:91
+msgid "Change the segment or mark's color"
+msgstr "Cambiar el color del segmento o la marca"
+
+#: src/sequencer/tools/create/TLUser.mxml:93
+msgid "Delete the selected segment (Shift + Del)"
+msgstr "Borrar el segmento seleccionado (Shift+ Del)"
+
+#: src/sequencer/tools/create/TLUser.mxml:95
+msgid "Split a segment (Shift + X)"
+msgstr "Dividir un segmento (Shift + X)"
+
+#: src/sequencer/tools/create/TLUser.mxml:99
+msgid "Segments linked"
+msgstr "Segmentos unidos"
+
+#: src/sequencer/tools/create/TLUser.mxml:101
+msgid "If this box is checked, the end of a segment is also the beginning of the next one"
+msgstr "Si esta caja está seleccionada, el final de un segmento es también el principio del siguiente"
+
+#: src/sequencer/tools/create/TLUser.mxml:413
+#: src/sequencer/tools/create/TLUser.mxml:688
+msgid "You can not cover a segment."
+msgstr "No puedes cubrir un segmento."
+
+#: src/sequencer/tools/create/TLUser.mxml:436
+msgid "Do you confirm you delete this segment ?"
+msgstr "¿Confirmas que quieres borrar este segmento?"
+
+#: src/sequencer/tools/create/TLUser.mxml:676
+msgid "You can not add a mark in the middle of a segment."
+msgstr "No puedes añadir una marca en medio de un segmento."
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:67
+msgid "Duration (sec)"
+msgstr "Duración (segs)"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:69
+msgid "Line N°"
+msgstr "Nº de línea"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:71
+msgid "Background color"
+msgstr "Color de fondo"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:73
+msgid "Add"
+msgstr "Añadir"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:115
+#: src/sequencer/tools/edit/BoutABout.mxml:111
+msgid "Add a caption/title"
+msgstr "Añadir un epígrafe/título"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:120
+#: src/sequencer/tools/edit/BoutABout.mxml:112
+msgid "Add a picture"
+msgstr "Añadir una imagen"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:126
+msgid "Modify a caption/title"
+msgstr "Modificar un epígrafe título"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:134
+msgid "Modify a picture"
+msgstr "Modificar una imagen"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:142
+#: src/sequencer/tools/edit/BoutABout.mxml:114
+msgid "Modify the selected segment"
+msgstr "Modificar el segmento seleccionado"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:166
+msgid "The file is being copied"
+msgstr "El fichero se está copiando"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:113
+msgid "Delete the selected segment from the bout à bout (edit)"
+msgstr "Borrar el segmento seleccionado de la bout à bout (edición)"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:115
+msgid "Play the bout à bout (edit)"
+msgstr "Reproducir la bout à bout (edición)"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:477
+msgid "Do you confirm you delete the segment ?"
+msgstr "¿Confirmas que quieres borrar el segmento?"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:637
+#: src/sequencer/tools/edit/BoutABout.mxml:641
+msgid "Segment added at"
+msgstr "Segmento añadido en"
+
+#: src/sequencer/ui/Content.as:90
+msgid "Hide this content"
+msgstr "Ocultar este contenido"
+
+#: src/sequencer/ui/timeline/SeqTL.as:70
+msgid "Modify this timeline"
+msgstr "Modificar esta línea de tiempo"
+
+#: src/sequencer/ui/timeline/SeqTL.as:80
+msgid "Hide this timeline"
+msgstr "Ocultar esta línea de tiempo"
+
+#: src/tools/HelpPanel.mxml:14
+msgid "Download the userguide in pdf format."
+msgstr "Descargar la guía de usuario en formato pdf."
+
+#: src/tools/HelpPanel.mxml:16
+msgid "English"
+msgstr "Inglés"
+
+#: src/tools/HelpPanel.mxml:18
+msgid "French"
+msgstr "Francés"
+
+#: src/tools/HelpPanel.mxml:20
+msgid "Japanese"
+msgstr "Japonés"
+
+#: src/tools/HelpPanel.mxml:57
+msgid "The link opens a new window or a new tab."
+msgstr "El enlace abre una nueva ventana o pestaña."
+
+#: src/tools/HelpPanel.mxml:64
+msgid "The link opens a navigator."
+msgstr "El enlace abre un navegador."
+
+#: src/tools/ImportCuttings.mxml:14
+msgid "Import"
+msgstr "Importar"
+
+#: src/tools/ImportCuttings.mxml:16
+msgid "Content's id"
+msgstr "Id del contenido"
+
+#: src/tools/ImportCuttings.mxml:50
+msgid "Import cuttings in"
+msgstr "Importar cortes en"
+
+#: src/tools/ImportCuttings.mxml:79
+#, csharp-format
+msgid "Do you want to import {0} cuttings in {1} ?"
+msgstr "¿Quieres importart {0} cortes en {1}?"
+
+#: src/tools/ImportCuttings.mxml:79
+msgid "Confirmation"
+msgstr "Confirmación"
+
+#: src/tools/ImportMedia.mxml:39
+msgid "Select a video file (avi-mpg-mov-flv) or an audio file (mp3)"
+msgstr "Elige un fichero de vídeo (avi-mpg-mov-flv) o de audio (mp3)"
+
+#: src/tools/ImportMedia.mxml:51
+msgid "Optional complements"
+msgstr "Complementos opcionales"
+
+#: src/tools/ImportMedia.mxml:53
+msgid "Generate the sound wave form"
+msgstr "Generar la forma de onda del sonido"
+
+#: src/tools/ImportMedia.mxml:55
+msgid "Run import"
+msgstr "Importar"
+
+#: src/tools/ImportMedia.mxml:59
+msgid "Import running. This operation can last several minutes."
+msgstr "Importando. La operación puede llevar varios minutos."
+
+#: src/tools/ImportMedia.mxml:124
+msgid "At least the title and the author have to be filled to run the import."
+msgstr "Por lo menos el título y el autor tienen que haberse rellenado para importar."
+
+#: src/tools/SimpleMp3Player.as:43
+msgid "Play/Pause the sound annotation"
+msgstr "Reproducir/Parar la anotación de sonido"
+
+#: src/tools/SimpleMp3Player.as:121
+msgid "Audio annotation error"
+msgstr "Error de anotación de audio"
+
Binary file web/ldt/media/swf/ldt/pkg/i18n/eu/messages.mo has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/swf/ldt/pkg/i18n/eu/messages.po	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,749 @@
+# Basque translations for PACKAGE package.
+# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Ales Zabala Alava (Shagi) <shagi@gisa-elkartea.org>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-12-08 13:17+0100\n"
+"PO-Revision-Date: 2009-10-19 10:07+0100\n"
+"Last-Translator: Ales Zabala Alava (Shagi) <shagi@gisa-elkartea.org>\n"
+"Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Basque\n"
+
+#: src/InfoWindow/BoutABoutTab.as:51
+msgid "Choose one of your bout à bout (edits)"
+msgstr "Aukeratu zure bout à bout-etako bat (editatzeak)"
+
+#: src/InfoWindow/BoutABoutTab.as:66
+#: src/sequencer/tools/edit/BoutABout.mxml:116
+msgid "New bout à bout (edit)"
+msgstr "Bout à bout berria (editatzea)"
+
+#: src/InfoWindow/BoutABoutTab.as:73
+msgid "Delete the selected bout à bout (edit)"
+msgstr "Ezabatu hautatutako bout à bout-a (editatzea)"
+
+#: src/InfoWindow/BoutABoutTab.as:80
+#: src/InfoWindow/ProjectTab.as:52
+#: src/sequencer/tools/create/TLUser.mxml:105
+#: src/tools/ImportMedia.mxml:43
+msgid "Title"
+msgstr "Izenburua"
+
+#: src/InfoWindow/BoutABoutTab.as:95
+#: src/InfoWindow/CuttingsTab.as:132
+#: src/InfoWindow/InformationsTab.as:391
+#: src/InfoWindow/InformationsTab.as:515
+#: src/InfoWindow/InformationsTab.as:547
+#: src/InfoWindow/InformationsTab.as:550
+#: src/InfoWindow/ProjectTab.as:83
+#: src/tools/ImportMedia.mxml:49
+msgid "Description"
+msgstr "Deskribapena"
+
+#: src/InfoWindow/BoutABoutTab.as:163
+#: src/InfoWindow/InformationsTab.as:791
+#: src/InfoWindow/ProjectTab.as:181
+#: src/InfoWindow/ViewsTab.as:245
+#: src/sequencer/tools/create/TLUser.mxml:434
+#: src/sequencer/tools/edit/BoutABout.mxml:475
+msgid "Yes"
+msgstr "Bai"
+
+#: src/InfoWindow/BoutABoutTab.as:164
+#: src/InfoWindow/InformationsTab.as:792
+#: src/InfoWindow/ProjectTab.as:182
+#: src/InfoWindow/ViewsTab.as:246
+#: src/sequencer/tools/create/TLUser.mxml:435
+#: src/sequencer/tools/edit/BoutABout.mxml:476
+msgid "No"
+msgstr "Ez"
+
+#: src/InfoWindow/BoutABoutTab.as:165
+msgid "Do you confirm you delete the bout à bout (edit) ?"
+msgstr "Ziur zaude bout à bout-a (editatzea) ezabatu nahi duzula?"
+
+#: src/InfoWindow/CuttingsTab.as:108
+msgid "List"
+msgstr "Zerrenda"
+
+#: src/InfoWindow/CuttingsTab.as:118
+#: src/sequencer/ui/Content.as:96
+msgid "New cutting"
+msgstr "Mozketa berria"
+
+#: src/InfoWindow/CuttingsTab.as:134
+#: src/sequencer/tools/create/TLUser.mxml:81
+#: src/tools/ImportCuttings.mxml:18
+msgid "Cutting's title"
+msgstr "Mozketaren izenburua"
+
+#: src/InfoWindow/CuttingsTab.as:147
+msgid "Cutting's description"
+msgstr "Mozketaren deskribapena"
+
+#: src/InfoWindow/CuttingsTab.as:164
+msgid "Marks and segments"
+msgstr "Markak eta segmentuak"
+
+#: src/InfoWindow/CuttingsTab.as:166
+#: src/InfoWindow/InformationsTab.as:399
+#: src/sequencer/tools/edit/AddTextPict.mxml:77
+msgid "Begin"
+msgstr "Hasiera"
+
+#: src/InfoWindow/CuttingsTab.as:178
+#: src/InfoWindow/InformationsTab.as:399
+#: src/sequencer/tools/edit/AddTextPict.mxml:79
+msgid "End"
+msgstr "Bukaera"
+
+#: src/InfoWindow/CuttingsTab.as:190
+#: src/sequencer/tools/create/TLUser.mxml:108
+msgid "Segment's title"
+msgstr "Segmentuaren izenburua"
+
+#: src/InfoWindow/CuttingsTab.as:205
+msgid "Segment's description"
+msgstr "Segmentuaren deskribapena"
+
+#: src/InfoWindow/CuttingsTab.as:219
+msgid "Tags (separated by a comma)"
+msgstr "Etiketak (komaz banatuta)"
+
+#: src/InfoWindow/CuttingsTab.as:237
+#: src/InfoWindow/CuttingsTab.as:582
+msgid "Timeline's tags"
+msgstr "Denbora lerroaren etiketak"
+
+#: src/InfoWindow/CuttingsTab.as:243
+#: src/InfoWindow/InformationsTab.as:150
+msgid "Previous"
+msgstr "Aurrekoa"
+
+#: src/InfoWindow/CuttingsTab.as:252
+#: src/InfoWindow/InformationsTab.as:159
+msgid "Next"
+msgstr "Hurrengoa"
+
+#: src/InfoWindow/CuttingsTab.as:273
+msgid "Audio annotation"
+msgstr "Audio anotazioa"
+
+#: src/InfoWindow/CuttingsTab.as:273
+msgid "choose a mp3 file."
+msgstr "mp3 fitxategia aukeratu."
+
+#: src/InfoWindow/CuttingsTab.as:280
+#: src/sequencer/tools/edit/AddTextPict.mxml:65
+#: src/tools/ImportMedia.mxml:41
+msgid "Browse..."
+msgstr "Arakatu..."
+
+#: src/InfoWindow/InfoWindow.as:110
+msgid "Project"
+msgstr "Proiektua"
+
+#: src/InfoWindow/InfoWindow.as:116
+msgid "Cuttings"
+msgstr "Mozketak"
+
+#: src/InfoWindow/InfoWindow.as:121
+msgid "Informations"
+msgstr "Informazioak"
+
+#: src/InfoWindow/InfoWindow.as:125
+#: src/sequencer/tools/edit/BoutABout.mxml:815
+#: src/sequencer/tools/edit/BoutABout.mxml:816
+#: src/sequencer/tools/edit/BoutABout.mxml:905
+msgid "Bout à bout"
+msgstr "Bout à bout"
+
+#: src/InfoWindow/InfoWindow.as:131
+msgid "Views"
+msgstr "Ikuspegiak"
+
+#: src/InfoWindow/InfoWindow.as:136
+msgid "Note-taking"
+msgstr "Ohar-hartzea"
+
+#: src/InfoWindow/InformationsTab.as:172
+#: src/sequencer/tools/edit/AddTextPict.mxml:75
+msgid "Modify"
+msgstr "Aldatu"
+
+#: src/InfoWindow/InformationsTab.as:178
+#: src/InfoWindow/ProjectTab.as:162
+#: src/InfoWindow/ViewTreeItem.mxml:24
+msgid "Delete"
+msgstr "Ezabatu"
+
+#: src/InfoWindow/InformationsTab.as:184
+msgid "Duplicate"
+msgstr "Bikoiztu"
+
+#: src/InfoWindow/InformationsTab.as:190
+#: src/LignesDeTempsFlex.mxml:619
+msgid "Unhighlight all the timelines's segments"
+msgstr "Denbora lerro guztietako segmentuei nabarmentzea kendu"
+
+#: src/InfoWindow/InformationsTab.as:204
+msgid "Duplicate only the highlighted segments"
+msgstr "Nabarmedutako segmentuak bakarrik bikoiztu"
+
+#: src/InfoWindow/InformationsTab.as:211
+msgid "Unhighlight this timeline's segments"
+msgstr "Denbora lerro honetako segmentuei nabarmentzea kendu"
+
+#: src/InfoWindow/InformationsTab.as:218
+msgid "Create a bout à bout (edit) from the complete timeline"
+msgstr "Denbora lerro osoarekin bout à bout-a sortu"
+
+#: src/InfoWindow/InformationsTab.as:225
+msgid "Create a bout à bout (edit) from the highlighted segments"
+msgstr "Nabarmendutako segmentuekin bout à bout-a sortu"
+
+#: src/InfoWindow/InformationsTab.as:232
+msgid "Create a bout à bout (edit) from all the timelines's highlighted segments"
+msgstr "Denbora lerro guztietako nabarmendutako segmentu guztiekin bout à bout-a sortu"
+
+#: src/InfoWindow/InformationsTab.as:239
+msgid "See all the segments' titles and descriptions in one text"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:397
+#: src/InfoWindow/InformationsTab.as:524
+#: src/InfoWindow/InformationsTab.as:558
+msgid "Duration"
+msgstr "Iraupena"
+
+#: src/InfoWindow/InformationsTab.as:404
+msgid "Indexation"
+msgstr "Indexazioa"
+
+#: src/InfoWindow/InformationsTab.as:517
+#: src/InfoWindow/InformationsTab.as:553
+#: src/tools/ImportCuttings.mxml:20
+msgid "Nb elements"
+msgstr "Elementu Kop."
+
+#: src/InfoWindow/InformationsTab.as:521
+#: src/InfoWindow/InformationsTab.as:556
+msgid "Average length of segments"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:524
+#: src/InfoWindow/InformationsTab.as:553
+#: src/InfoWindow/InformationsTab.as:558
+msgid "on"
+msgstr "gaituta"
+
+#: src/InfoWindow/InformationsTab.as:525
+#: src/InfoWindow/InformationsTab.as:559
+#: src/InfoWindow/ProjectTab.as:67
+#: src/tools/ImportMedia.mxml:45
+msgid "Authors"
+msgstr "Egileak"
+
+#: src/InfoWindow/InformationsTab.as:525
+#: src/InfoWindow/InformationsTab.as:559
+#: src/tools/ImportMedia.mxml:47
+msgid "Date"
+msgstr "Data"
+
+#: src/InfoWindow/InformationsTab.as:546
+msgid "View"
+msgstr "Ikusi"
+
+#: src/InfoWindow/InformationsTab.as:548
+msgid "Criterion"
+msgstr "Irizpidea"
+
+#: src/InfoWindow/InformationsTab.as:563
+msgid "Summary"
+msgstr "Laburpena"
+
+#: src/InfoWindow/InformationsTab.as:564
+msgid "Segments"
+msgstr "Segmentuak"
+
+#: src/InfoWindow/InformationsTab.as:565
+msgid "Marks"
+msgstr "Markak"
+
+#: src/InfoWindow/InformationsTab.as:566
+msgid "All"
+msgstr "Guztia"
+
+#: src/InfoWindow/InformationsTab.as:794
+msgid "Do you confirm you delete the cutting ?"
+msgstr "Ziur zaude mozketa ezabatu nahi duzula?"
+
+#: src/InfoWindow/InformationsTab.as:854
+msgid "copy"
+msgstr "kopiatu"
+
+#: src/InfoWindow/NoteTakingTab.as:61
+msgid "Start note-taking"
+msgstr "Oharrak hartzen hasi"
+
+#: src/InfoWindow/NoteTakingTab.as:68
+msgid "Put a separator (Shift + Enter)"
+msgstr "Bereizlea jarri (Shift+ Enter)"
+
+#: src/InfoWindow/NoteTakingTab.as:75
+msgid "Create a cutting from these notes"
+msgstr "Ohar hauetatik mozketa sortu"
+
+#: src/InfoWindow/NoteTakingTab.as:169
+msgid "The media's current timecode must be superior to your last separator's timecode."
+msgstr "Media-ren uneko denbora kodea zure azken bereizlearen denbora kodea baino handiago izan behar du"
+
+#: src/InfoWindow/NoteTakingTab.as:169
+#: src/InfoWindow/NoteTakingTab.as:259
+#: src/LignesDeTempsFlex.mxml:278
+#: src/LignesDeTempsFlex.mxml:530
+#: src/LignesDeTempsFlex.mxml:730
+#: src/app/Python.as:49
+#: src/app/Python.as:54
+#: src/app/Python.as:64
+#: src/app/Python.as:200
+#: src/sequencer/Sequencer.mxml:209
+#: src/sequencer/tools/create/TLUser.mxml:413
+#: src/sequencer/tools/create/TLUser.mxml:692
+#: src/sequencer/tools/edit/BoutABout.mxml:477
+#: src/tools/ImportMedia.mxml:124
+msgid "Attention"
+msgstr "Adi"
+
+#: src/InfoWindow/NoteTakingTab.as:230
+msgid "My notes"
+msgstr "Nire oharrak"
+
+#: src/InfoWindow/NoteTakingTab.as:233
+#: src/app/XMLInOut.as:1058
+#: src/sequencer/tools/create/TLUser.mxml:1082
+msgid "Personnal cuttings"
+msgstr "Mozketa pertsonalak"
+
+#: src/InfoWindow/NoteTakingTab.as:259
+msgid "No content is selected for these notes."
+msgstr "Ohar hauentzako ez da edukirik zehaztu."
+
+#: src/InfoWindow/ProjectTab.as:99
+msgid "Project's medias"
+msgstr "Proiektuaren media-k"
+
+#: src/InfoWindow/ProjectTab.as:183
+msgid "Do you really want to take this content out of your project ?"
+msgstr "Eduki hau zure proiektutik benetan kendu nahi duzu?"
+
+#: src/InfoWindow/ViewTreeItem.mxml:25
+msgid "Rename"
+msgstr "Berrizendatu"
+
+#: src/InfoWindow/ViewTreeItem.mxml:26
+msgid "Save the current display"
+msgstr "Uneko bistaratzea gorde"
+
+#: src/InfoWindow/ViewsTab.as:65
+msgid "Saved display states :"
+msgstr "Gordetako bistaratze egoerak :"
+
+#: src/InfoWindow/ViewsTab.as:93
+msgid "New view"
+msgstr "Ikuspegi berria"
+
+#: src/InfoWindow/ViewsTab.as:100
+msgid "Delete the selected view"
+msgstr "Hautatutako ikuspegia ezabatu"
+
+#: src/InfoWindow/ViewsTab.as:107
+msgid "Save the current display in the selected view"
+msgstr "Gorde uneko bistaratzea hautatutako bistan"
+
+#: src/InfoWindow/ViewsTab.as:247
+msgid "Do you confirm you delete this view ?"
+msgstr "Ziur zaude ikuspegi hau ezabatu nahi duzula?"
+
+#: src/InfoWindow/ViewsTab.as:268
+msgid "No name view"
+msgstr "Izenik gabeko ikuspegia"
+
+#: src/LignesDeTempsFlex.mxml:118
+#: src/media/FlvPlayer.as:172
+#: src/tools/ImportMedia.mxml:57
+msgid "Loading"
+msgstr "Kargatzen"
+
+#: src/LignesDeTempsFlex.mxml:253
+#: src/LignesDeTempsFlex.mxml:629
+#: src/LignesDeTempsFlex.mxml:646
+#: src/LignesDeTempsFlex.mxml:694
+#: src/LignesDeTempsFlex.mxml:715
+msgid "Selected tags"
+msgstr "Hautatutako etiketak"
+
+#: src/LignesDeTempsFlex.mxml:278
+msgid "No project file is defined. You need to define a project file to save your datas."
+msgstr "Ez da proiektu fitxategirik definitu. Zure datuak gordetzeko proiektu fitxategia definitu behar duzu."
+
+#: src/LignesDeTempsFlex.mxml:282
+msgid "Save the project in"
+msgstr "Proiektua hemen gorde:"
+
+#: src/LignesDeTempsFlex.mxml:290
+#: src/LignesDeTempsFlex.mxml:296
+#: src/LignesDeTempsFlex.mxml:303
+msgid "File"
+msgstr "Fitxategia"
+
+#: src/LignesDeTempsFlex.mxml:291
+msgid "Read only project"
+msgstr "Irakurketa soileko proiektua"
+
+#: src/LignesDeTempsFlex.mxml:297
+msgid "Save the project"
+msgstr "Proiektua gorde"
+
+#: src/LignesDeTempsFlex.mxml:304
+msgid "New project"
+msgstr "Proiektu berria"
+
+#: src/LignesDeTempsFlex.mxml:305
+msgid "Open a project (.ldt)"
+msgstr "Proiektua ireki (.ldt)"
+
+#: src/LignesDeTempsFlex.mxml:307
+msgid "Save the project as..."
+msgstr "Gorde proiektua honela..."
+
+#: src/LignesDeTempsFlex.mxml:309
+#: src/tools/ImportMedia.mxml:37
+msgid "Import a new media"
+msgstr "Media berri bat inportatu"
+
+#: src/LignesDeTempsFlex.mxml:310
+msgid "Open a description (.iri file)"
+msgstr "Deskribapen fitxategi bat ireki (.iri fitxategia)"
+
+#: src/LignesDeTempsFlex.mxml:311
+msgid "Import cuttings from an other .ldt file"
+msgstr "Mozketak inportatu beste .ldt fitxategi batetik"
+
+#: src/LignesDeTempsFlex.mxml:313
+msgid "Quit"
+msgstr "Irten"
+
+#: src/LignesDeTempsFlex.mxml:325
+msgid "Medias"
+msgstr "Media-k"
+
+#: src/LignesDeTempsFlex.mxml:330
+msgid "Library"
+msgstr "Liburutegia"
+
+#: src/LignesDeTempsFlex.mxml:353
+msgid "Display"
+msgstr "Bistaratzea"
+
+#: src/LignesDeTempsFlex.mxml:354
+msgid "Fullscreen"
+msgstr "Pantaila-osoa"
+
+#: src/LignesDeTempsFlex.mxml:355
+msgid "Replace windows"
+msgstr "Leihoak birkokatu"
+
+#: src/LignesDeTempsFlex.mxml:356
+msgid "Display all the project's tags"
+msgstr "Erakutsi proiektuaren etiketa guztiak"
+
+#: src/LignesDeTempsFlex.mxml:362
+msgid "Remember the selected language"
+msgstr "Aukeratutako hizkuntza gogoratu"
+
+#: src/LignesDeTempsFlex.mxml:372
+#: src/tools/HelpPanel.mxml:12
+msgid "Help"
+msgstr "Laguntza"
+
+#: src/LignesDeTempsFlex.mxml:373
+#: src/tools/AboutPanel.mxml:13
+msgid "About"
+msgstr "Honi buruz"
+
+#: src/LignesDeTempsFlex.mxml:530
+msgid "The fullscreen mode is not allowed."
+msgstr "Pantaila osoko modua ez dago baimenduta."
+
+#: src/LignesDeTempsFlex.mxml:618
+msgid "Click on the tag to unhighlight it"
+msgstr "Etiketan klikatu nabarmentzea kentzeko."
+
+#: src/LignesDeTempsFlex.mxml:730
+msgid "Please select a media before importing cuttings."
+msgstr "Mesedez, media bat hautatu mozketak inportatu baino lehen."
+
+#: src/app/Python.as:49
+msgid "Lost connection"
+msgstr "Konexioa galdu da"
+
+#: src/app/Python.as:49
+#: src/app/Python.as:54
+#: src/app/Python.as:64
+msgid "Your datas can not be saved anymore. Please close and restart Lignes de temps."
+msgstr "Zure datuak ezin dira jadanik gorde. Mesedez Lignes de temps itxi eta berrabiarazi."
+
+#: src/app/Python.as:54
+#: src/app/Python.as:64
+#: src/app/Python.as:200
+msgid "Connection Problem"
+msgstr "Konexio Arazoa"
+
+#: src/app/XMLInOut.as:116
+#: src/tools/SimpleMp3Player.as:121
+msgid "Impossible to load the file"
+msgstr "Ezin da fitxategia kargatu"
+
+#: src/app/XMLInOut.as:116
+#: src/app/XMLInOut.as:221
+#: src/app/XMLInOut.as:1014
+msgid "Error"
+msgstr "Errorea"
+
+#: src/app/XMLInOut.as:221
+#: src/app/XMLInOut.as:1014
+msgid "Your project file was not found. Please locate it."
+msgstr "Ez da zure proiektu fitxategia topatu. Lokalizatu mesedez."
+
+#: src/app/XMLInOut.as:439
+msgid "Wave form"
+msgstr "Uhinaren forma"
+
+#: src/app/XMLInOut.as:440
+msgid "Wave form of the sound track"
+msgstr "Soinu pistaren uhin forma"
+
+#: src/app/XMLInOut.as:450
+msgid "Color signal"
+msgstr "Seinalea koloreztatu"
+
+#: src/app/XMLInOut.as:451
+msgid "Drawing of the video stream's main color"
+msgstr ""
+
+#: src/media/FlvPlayer.as:628
+msgid "Loading picture"
+msgstr "Irudia kargatzen"
+
+#: src/sequencer/Sequencer.mxml:209
+msgid "Unknown content identifier"
+msgstr "edukiaren identifikadore ezezaguna"
+
+#: src/sequencer/tools/create/TLUser.mxml:77
+msgid "Add the cutting (Shift + E)"
+msgstr "Mozketa gehitu (Shift + E)"
+
+#: src/sequencer/tools/create/TLUser.mxml:82
+#: src/sequencer/tools/create/TLUser.mxml:226
+#: src/sequencer/tools/create/TLUser.mxml:229
+msgid "My cutting"
+msgstr "Nire mozketa"
+
+#: src/sequencer/tools/create/TLUser.mxml:87
+msgid "Open or close a segment (Shift + Space)"
+msgstr "Segmentua ireki edo itxi (Shift + Zuriunea)"
+
+#: src/sequencer/tools/create/TLUser.mxml:89
+msgid "Add a mark (Shift + M)"
+msgstr "Marka gehitu (Shift + M)"
+
+#: src/sequencer/tools/create/TLUser.mxml:91
+msgid "Change the segment or mark's color"
+msgstr "Aldatu segmentu edo markaren kolorea"
+
+#: src/sequencer/tools/create/TLUser.mxml:93
+msgid "Delete the selected segment (Shift + Del)"
+msgstr "Hautatutako segmentua ezabatu (Shift + Del)"
+
+#: src/sequencer/tools/create/TLUser.mxml:95
+msgid "Split a segment (Shift + X)"
+msgstr "Segmentua zatitu (Shift + X)"
+
+#: src/sequencer/tools/create/TLUser.mxml:99
+msgid "Segments linked"
+msgstr "Estekatutako segmentuak"
+
+#: src/sequencer/tools/create/TLUser.mxml:101
+msgid "If this box is checked, the end of a segment is also the beginning of the next one"
+msgstr "Kutxa hau markatuta badago, segmentu baten bukaera hurrengoaren hasiera izango da ere"
+
+#: src/sequencer/tools/create/TLUser.mxml:413
+#: src/sequencer/tools/create/TLUser.mxml:688
+msgid "You can not cover a segment."
+msgstr "Ezin duzu segmentu bat estaldu"
+
+#: src/sequencer/tools/create/TLUser.mxml:436
+msgid "Do you confirm you delete this segment ?"
+msgstr "Ziur zaude segmentu hau ezabatu nahi duzula?"
+
+#: src/sequencer/tools/create/TLUser.mxml:676
+msgid "You can not add a mark in the middle of a segment."
+msgstr "Ezin duzu marka bat gehitu segmentu baten erdian."
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:67
+msgid "Duration (sec)"
+msgstr "Iraupena (seg)"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:69
+msgid "Line N°"
+msgstr "Lerro Zkia"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:71
+msgid "Background color"
+msgstr "Atzeko planoko kolorea"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:73
+msgid "Add"
+msgstr "Gehitu"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:115
+#: src/sequencer/tools/edit/BoutABout.mxml:111
+msgid "Add a caption/title"
+msgstr "Epigrafea/Izenburua gehitu"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:120
+#: src/sequencer/tools/edit/BoutABout.mxml:112
+msgid "Add a picture"
+msgstr "Irudia gehitu"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:126
+msgid "Modify a caption/title"
+msgstr "Epigrafea/Izenburua aldatu"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:134
+msgid "Modify a picture"
+msgstr "Irudia aldatu"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:142
+#: src/sequencer/tools/edit/BoutABout.mxml:114
+msgid "Modify the selected segment"
+msgstr "Hautatutako segmentua aldatu"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:166
+msgid "The file is being copied"
+msgstr "Fitxategia kopiatzen ari da"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:113
+msgid "Delete the selected segment from the bout à bout (edit)"
+msgstr "Bout à bout-etik (editatzetik) hautatutako segmentuak ezabatu"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:115
+msgid "Play the bout à bout (edit)"
+msgstr "Bout à bout-a (editatzea) erreproduzitu"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:477
+msgid "Do you confirm you delete the segment ?"
+msgstr "Ziur zaude segmentua ezabatu nahi duzula?"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:637
+#: src/sequencer/tools/edit/BoutABout.mxml:641
+msgid "Segment added at"
+msgstr "Segmentua hemen gehituta: "
+
+#: src/sequencer/ui/Content.as:90
+msgid "Hide this content"
+msgstr "Eduki hau ezkutatu"
+
+#: src/sequencer/ui/timeline/SeqTL.as:70
+msgid "Modify this timeline"
+msgstr "Denbora lerro hau aldatu"
+
+#: src/sequencer/ui/timeline/SeqTL.as:80
+msgid "Hide this timeline"
+msgstr "Denbora lerro hau ezkutatu"
+
+#: src/tools/HelpPanel.mxml:14
+msgid "Download the userguide in pdf format."
+msgstr "Erabiltzaile gida pdf formatuan jaitsi."
+
+#: src/tools/HelpPanel.mxml:16
+msgid "English"
+msgstr "Ingelesa"
+
+#: src/tools/HelpPanel.mxml:18
+msgid "French"
+msgstr "Frantsesa"
+
+#: src/tools/HelpPanel.mxml:20
+msgid "Japanese"
+msgstr "Japoniera"
+
+#: src/tools/HelpPanel.mxml:57
+msgid "The link opens a new window or a new tab."
+msgstr "Esteka honek leiho edo fitxa berri bat irekitzen du."
+
+#: src/tools/HelpPanel.mxml:64
+msgid "The link opens a navigator."
+msgstr "Estekak nabigatzaile bat irekitzen du."
+
+#: src/tools/ImportCuttings.mxml:14
+msgid "Import"
+msgstr "Inportatu"
+
+#: src/tools/ImportCuttings.mxml:16
+msgid "Content's id"
+msgstr "Edukiaren id-a"
+
+#: src/tools/ImportCuttings.mxml:50
+msgid "Import cuttings in"
+msgstr "Mozketak hemen importatu: "
+
+#: src/tools/ImportCuttings.mxml:79
+#, csharp-format
+msgid "Do you want to import {0} cuttings in {1} ?"
+msgstr "{0} mozketak {1}-(e)n inportatu nahi dituzu?"
+
+#: src/tools/ImportCuttings.mxml:79
+msgid "Confirmation"
+msgstr "Berrespena"
+
+#: src/tools/ImportMedia.mxml:39
+msgid "Select a video file (avi-mpg-mov-flv) or an audio file (mp3)"
+msgstr "Hautatu bideo fitxategi bat (avi-mpg-mov-flv) edo audio fitxategi bat (mp3)"
+
+#: src/tools/ImportMedia.mxml:51
+msgid "Optional complements"
+msgstr "Aukerazko gehigarriak"
+
+#: src/tools/ImportMedia.mxml:53
+msgid "Generate the sound wave form"
+msgstr "Soinuaren uhin forma sortu"
+
+#: src/tools/ImportMedia.mxml:55
+msgid "Run import"
+msgstr "Inportazioa abiarazi"
+
+#: src/tools/ImportMedia.mxml:59
+msgid "Import running. This operation can last several minutes."
+msgstr "Inportazioa martxan. Eragiketa honek hainbat minutu iraun ditzake."
+
+#: src/tools/ImportMedia.mxml:124
+msgid "At least the title and the author have to be filled to run the import."
+msgstr "Izenburua eta egilea zehaztu behar dira gutxienez inportazioa abiarazteko."
+
+#: src/tools/SimpleMp3Player.as:43
+msgid "Play/Pause the sound annotation"
+msgstr "Audio anotazioa erreproduzitu/pausarazi"
+
+#: src/tools/SimpleMp3Player.as:121
+msgid "Audio annotation error"
+msgstr "Errorea audioa anotazioan"
+
Binary file web/ldt/media/swf/ldt/pkg/i18n/fr/messages.mo has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/swf/ldt/pkg/i18n/fr/messages.po	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,749 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-12-08 13:02+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/InfoWindow/BoutABoutTab.as:51
+msgid "Choose one of your bout à bout (edits)"
+msgstr "Choisissez un de vos bout à bout"
+
+#: src/InfoWindow/BoutABoutTab.as:66
+#: src/sequencer/tools/edit/BoutABout.mxml:116
+msgid "New bout à bout (edit)"
+msgstr "Nouveau bout à bout"
+
+#: src/InfoWindow/BoutABoutTab.as:73
+msgid "Delete the selected bout à bout (edit)"
+msgstr "Supprimer le bout à bout sélectionné"
+
+#: src/InfoWindow/BoutABoutTab.as:80
+#: src/InfoWindow/ProjectTab.as:52
+#: src/sequencer/tools/create/TLUser.mxml:105
+#: src/tools/ImportMedia.mxml:43
+msgid "Title"
+msgstr "Titre"
+
+#: src/InfoWindow/BoutABoutTab.as:95
+#: src/InfoWindow/CuttingsTab.as:132
+#: src/InfoWindow/InformationsTab.as:391
+#: src/InfoWindow/InformationsTab.as:515
+#: src/InfoWindow/InformationsTab.as:547
+#: src/InfoWindow/InformationsTab.as:550
+#: src/InfoWindow/ProjectTab.as:83
+#: src/tools/ImportMedia.mxml:49
+msgid "Description"
+msgstr "Description"
+
+#: src/InfoWindow/BoutABoutTab.as:163
+#: src/InfoWindow/InformationsTab.as:791
+#: src/InfoWindow/ProjectTab.as:181
+#: src/InfoWindow/ViewsTab.as:245
+#: src/sequencer/tools/create/TLUser.mxml:434
+#: src/sequencer/tools/edit/BoutABout.mxml:475
+msgid "Yes"
+msgstr "Oui"
+
+#: src/InfoWindow/BoutABoutTab.as:164
+#: src/InfoWindow/InformationsTab.as:792
+#: src/InfoWindow/ProjectTab.as:182
+#: src/InfoWindow/ViewsTab.as:246
+#: src/sequencer/tools/create/TLUser.mxml:435
+#: src/sequencer/tools/edit/BoutABout.mxml:476
+msgid "No"
+msgstr "Non"
+
+#: src/InfoWindow/BoutABoutTab.as:165
+msgid "Do you confirm you delete the bout à bout (edit) ?"
+msgstr "Confirmez-vous la suppression du bout à bout ?"
+
+#: src/InfoWindow/CuttingsTab.as:108
+msgid "List"
+msgstr "Liste"
+
+#: src/InfoWindow/CuttingsTab.as:118
+#: src/sequencer/ui/Content.as:96
+msgid "New cutting"
+msgstr "Nouveau découpage"
+
+#: src/InfoWindow/CuttingsTab.as:134
+#: src/sequencer/tools/create/TLUser.mxml:81
+#: src/tools/ImportCuttings.mxml:18
+msgid "Cutting's title"
+msgstr "Titre du découpage"
+
+#: src/InfoWindow/CuttingsTab.as:147
+msgid "Cutting's description"
+msgstr "Description du découpage"
+
+#: src/InfoWindow/CuttingsTab.as:164
+msgid "Marks and segments"
+msgstr "Marqueurs et segments"
+
+#: src/InfoWindow/CuttingsTab.as:166
+#: src/InfoWindow/InformationsTab.as:399
+#: src/sequencer/tools/edit/AddTextPict.mxml:77
+msgid "Begin"
+msgstr "Début"
+
+#: src/InfoWindow/CuttingsTab.as:178
+#: src/InfoWindow/InformationsTab.as:399
+#: src/sequencer/tools/edit/AddTextPict.mxml:79
+msgid "End"
+msgstr "Fin"
+
+#: src/InfoWindow/CuttingsTab.as:190
+#: src/sequencer/tools/create/TLUser.mxml:108
+msgid "Segment's title"
+msgstr "Titre du segment"
+
+#: src/InfoWindow/CuttingsTab.as:205
+msgid "Segment's description"
+msgstr "Description du segment"
+
+#: src/InfoWindow/CuttingsTab.as:219
+msgid "Tags (separated by a comma)"
+msgstr "Tags (séparés par une virgule)"
+
+#: src/InfoWindow/CuttingsTab.as:237
+#: src/InfoWindow/CuttingsTab.as:582
+msgid "Timeline's tags"
+msgstr "Tags de la ligne de temps"
+
+#: src/InfoWindow/CuttingsTab.as:243
+#: src/InfoWindow/InformationsTab.as:150
+msgid "Previous"
+msgstr "Précédent"
+
+#: src/InfoWindow/CuttingsTab.as:252
+#: src/InfoWindow/InformationsTab.as:159
+msgid "Next"
+msgstr "Suivant"
+
+#: src/InfoWindow/CuttingsTab.as:273
+msgid "Audio annotation"
+msgstr "Annotation audio"
+
+#: src/InfoWindow/CuttingsTab.as:273
+msgid "choose a mp3 file."
+msgstr "choississez un fichier mp3."
+
+#: src/InfoWindow/CuttingsTab.as:280
+#: src/sequencer/tools/edit/AddTextPict.mxml:65
+#: src/tools/ImportMedia.mxml:41
+msgid "Browse..."
+msgstr "Parcourir..."
+
+#: src/InfoWindow/InfoWindow.as:110
+msgid "Project"
+msgstr "Projet"
+
+#: src/InfoWindow/InfoWindow.as:116
+msgid "Cuttings"
+msgstr "Découpages"
+
+#: src/InfoWindow/InfoWindow.as:121
+msgid "Informations"
+msgstr "Informations"
+
+#: src/InfoWindow/InfoWindow.as:125
+#: src/sequencer/tools/edit/BoutABout.mxml:815
+#: src/sequencer/tools/edit/BoutABout.mxml:816
+#: src/sequencer/tools/edit/BoutABout.mxml:905
+msgid "Bout à bout"
+msgstr "Bout à bout"
+
+#: src/InfoWindow/InfoWindow.as:131
+msgid "Views"
+msgstr "Vues"
+
+#: src/InfoWindow/InfoWindow.as:136
+msgid "Note-taking"
+msgstr "Prise de notes"
+
+#: src/InfoWindow/InformationsTab.as:172
+#: src/sequencer/tools/edit/AddTextPict.mxml:75
+msgid "Modify"
+msgstr "Modifier"
+
+#: src/InfoWindow/InformationsTab.as:178
+#: src/InfoWindow/ProjectTab.as:162
+#: src/InfoWindow/ViewTreeItem.mxml:24
+msgid "Delete"
+msgstr "Supprimer"
+
+#: src/InfoWindow/InformationsTab.as:184
+msgid "Duplicate"
+msgstr "Dupliquer"
+
+#: src/InfoWindow/InformationsTab.as:190
+#: src/LignesDeTempsFlex.mxml:619
+msgid "Unhighlight all the timelines's segments"
+msgstr "Effacer la surbrillance des segments pour toutes les lignes"
+
+#: src/InfoWindow/InformationsTab.as:204
+msgid "Duplicate only the highlighted segments"
+msgstr "Dupliquer seulement les segments en surbrillance"
+
+#: src/InfoWindow/InformationsTab.as:211
+msgid "Unhighlight this timeline's segments"
+msgstr "Effacer la surbrillance des segments pour cette ligne"
+
+#: src/InfoWindow/InformationsTab.as:218
+msgid "Create a bout à bout (edit) from the complete timeline"
+msgstr "Créer un bout à bout à partir de la ligne de temps complète"
+
+#: src/InfoWindow/InformationsTab.as:225
+msgid "Create a bout à bout (edit) from the highlighted segments"
+msgstr "Créer un bout à bout à partir des éléments en surbrillance"
+
+#: src/InfoWindow/InformationsTab.as:232
+msgid "Create a bout à bout (edit) from all the timelines's highlighted segments"
+msgstr "Créer un bout à bout à partir des segments en surbrillance de toutes les timelines"
+
+#: src/InfoWindow/InformationsTab.as:239
+msgid "See all the segments' titles and descriptions in one text"
+msgstr "Voir les titres et descriptions de tous les segments dans un texte"
+
+#: src/InfoWindow/InformationsTab.as:397
+#: src/InfoWindow/InformationsTab.as:524
+#: src/InfoWindow/InformationsTab.as:558
+msgid "Duration"
+msgstr "Durée"
+
+#: src/InfoWindow/InformationsTab.as:404
+msgid "Indexation"
+msgstr "Indexation"
+
+#: src/InfoWindow/InformationsTab.as:517
+#: src/InfoWindow/InformationsTab.as:553
+#: src/tools/ImportCuttings.mxml:20
+msgid "Nb elements"
+msgstr "Nb élements"
+
+#: src/InfoWindow/InformationsTab.as:521
+#: src/InfoWindow/InformationsTab.as:556
+msgid "Average length of segments"
+msgstr "Durée moyenne des segments"
+
+#: src/InfoWindow/InformationsTab.as:524
+#: src/InfoWindow/InformationsTab.as:553
+#: src/InfoWindow/InformationsTab.as:558
+msgid "on"
+msgstr "sur"
+
+#: src/InfoWindow/InformationsTab.as:525
+#: src/InfoWindow/InformationsTab.as:559
+#: src/InfoWindow/ProjectTab.as:67
+#: src/tools/ImportMedia.mxml:45
+msgid "Authors"
+msgstr "Auteurs"
+
+#: src/InfoWindow/InformationsTab.as:525
+#: src/InfoWindow/InformationsTab.as:559
+#: src/tools/ImportMedia.mxml:47
+msgid "Date"
+msgstr "Date"
+
+#: src/InfoWindow/InformationsTab.as:546
+msgid "View"
+msgstr "Vue"
+
+#: src/InfoWindow/InformationsTab.as:548
+msgid "Criterion"
+msgstr "Critère"
+
+#: src/InfoWindow/InformationsTab.as:563
+msgid "Summary"
+msgstr "Sommaire"
+
+#: src/InfoWindow/InformationsTab.as:564
+msgid "Segments"
+msgstr "Segments"
+
+#: src/InfoWindow/InformationsTab.as:565
+msgid "Marks"
+msgstr "Marqueurs"
+
+#: src/InfoWindow/InformationsTab.as:566
+msgid "All"
+msgstr "Tous"
+
+#: src/InfoWindow/InformationsTab.as:794
+msgid "Do you confirm you delete the cutting ?"
+msgstr "Confirmez-vous la suppression du découpage ?"
+
+#: src/InfoWindow/InformationsTab.as:854
+msgid "copy"
+msgstr "copie"
+
+#: src/InfoWindow/NoteTakingTab.as:61
+msgid "Start note-taking"
+msgstr "Démarrer la prise de notes"
+
+#: src/InfoWindow/NoteTakingTab.as:68
+msgid "Put a separator (Shift + Enter)"
+msgstr "Mettre un séparateur (Shift + Enter)"
+
+#: src/InfoWindow/NoteTakingTab.as:75
+msgid "Create a cutting from these notes"
+msgstr "Créer un découpage à partir de ces notes"
+
+#: src/InfoWindow/NoteTakingTab.as:169
+msgid "The media's current timecode must be superior to your last separator's timecode."
+msgstr "Le time code courant du média doit être supérieur à celui de votre dernier séparateur."
+
+#: src/InfoWindow/NoteTakingTab.as:169
+#: src/InfoWindow/NoteTakingTab.as:259
+#: src/LignesDeTempsFlex.mxml:278
+#: src/LignesDeTempsFlex.mxml:530
+#: src/LignesDeTempsFlex.mxml:730
+#: src/app/Python.as:49
+#: src/app/Python.as:54
+#: src/app/Python.as:64
+#: src/app/Python.as:200
+#: src/sequencer/Sequencer.mxml:209
+#: src/sequencer/tools/create/TLUser.mxml:413
+#: src/sequencer/tools/create/TLUser.mxml:692
+#: src/sequencer/tools/edit/BoutABout.mxml:477
+#: src/tools/ImportMedia.mxml:124
+msgid "Attention"
+msgstr "Attention"
+
+#: src/InfoWindow/NoteTakingTab.as:230
+msgid "My notes"
+msgstr "Mes notes"
+
+#: src/InfoWindow/NoteTakingTab.as:233
+#: src/app/XMLInOut.as:1058
+#: src/sequencer/tools/create/TLUser.mxml:1082
+msgid "Personnal cuttings"
+msgstr "Découpages personnels"
+
+#: src/InfoWindow/NoteTakingTab.as:259
+msgid "No content is selected for these notes."
+msgstr "Aucun contenu n'est sélectionné pour ces notes."
+
+#: src/InfoWindow/ProjectTab.as:99
+msgid "Project's medias"
+msgstr "Médias du projet"
+
+#: src/InfoWindow/ProjectTab.as:183
+msgid "Do you really want to take this content out of your project ?"
+msgstr "Voulez-vous vraiment retirer ce contenu de votre projet ?"
+
+#: src/InfoWindow/ViewTreeItem.mxml:25
+msgid "Rename"
+msgstr "Renommer"
+
+#: src/InfoWindow/ViewTreeItem.mxml:26
+msgid "Save the current display"
+msgstr "Enregistrer l'affichage actuel"
+
+#: src/InfoWindow/ViewsTab.as:65
+msgid "Saved display states :"
+msgstr "Sauvegardes de l'état d'affichage :"
+
+#: src/InfoWindow/ViewsTab.as:93
+msgid "New view"
+msgstr "Nouvelle vue"
+
+#: src/InfoWindow/ViewsTab.as:100
+msgid "Delete the selected view"
+msgstr "Supprimer la vue sélectionnée"
+
+#: src/InfoWindow/ViewsTab.as:107
+msgid "Save the current display in the selected view"
+msgstr "Enregistrer l'affichage actuel dans la vue sélectionnée"
+
+#: src/InfoWindow/ViewsTab.as:247
+msgid "Do you confirm you delete this view ?"
+msgstr "Confirmez-vous la suppression de cette vue ?"
+
+#: src/InfoWindow/ViewsTab.as:268
+msgid "No name view"
+msgstr "Vue sans nom"
+
+#: src/LignesDeTempsFlex.mxml:118
+#: src/media/FlvPlayer.as:172
+#: src/tools/ImportMedia.mxml:57
+msgid "Loading"
+msgstr "Chargement"
+
+#: src/LignesDeTempsFlex.mxml:253
+#: src/LignesDeTempsFlex.mxml:629
+#: src/LignesDeTempsFlex.mxml:646
+#: src/LignesDeTempsFlex.mxml:694
+#: src/LignesDeTempsFlex.mxml:715
+msgid "Selected tags"
+msgstr "Tags sélectionnés"
+
+#: src/LignesDeTempsFlex.mxml:278
+msgid "No project file is defined. You need to define a project file to save your datas."
+msgstr "Aucun fichier projet n'est défini. Vous devez définir un fichier projet pour sauvegarder vos données."
+
+#: src/LignesDeTempsFlex.mxml:282
+msgid "Save the project in"
+msgstr "Enregistrer le projet dans"
+
+#: src/LignesDeTempsFlex.mxml:290
+#: src/LignesDeTempsFlex.mxml:296
+#: src/LignesDeTempsFlex.mxml:303
+msgid "File"
+msgstr "Fichier"
+
+#: src/LignesDeTempsFlex.mxml:291
+msgid "Read only project"
+msgstr "Projet en lecture seule"
+
+#: src/LignesDeTempsFlex.mxml:297
+msgid "Save the project"
+msgstr "Enregistrer le projet"
+
+#: src/LignesDeTempsFlex.mxml:304
+msgid "New project"
+msgstr "Nouveau Projet"
+
+#: src/LignesDeTempsFlex.mxml:305
+msgid "Open a project (.ldt)"
+msgstr "Ouvrir un projet (.ldt)"
+
+#: src/LignesDeTempsFlex.mxml:307
+msgid "Save the project as..."
+msgstr "Enregistrer le projet sous..."
+
+#: src/LignesDeTempsFlex.mxml:309
+#: src/tools/ImportMedia.mxml:37
+msgid "Import a new media"
+msgstr "Importer un nouveau média"
+
+#: src/LignesDeTempsFlex.mxml:310
+msgid "Open a description (.iri file)"
+msgstr "Ouvrir une description (fichier .iri)"
+
+#: src/LignesDeTempsFlex.mxml:311
+msgid "Import cuttings from an other .ldt file"
+msgstr "Importer des découpages depuis un autre fichier .ldt"
+
+#: src/LignesDeTempsFlex.mxml:313
+msgid "Quit"
+msgstr "Quitter"
+
+#: src/LignesDeTempsFlex.mxml:325
+msgid "Medias"
+msgstr "Médias"
+
+#: src/LignesDeTempsFlex.mxml:330
+msgid "Library"
+msgstr "Librairie"
+
+#: src/LignesDeTempsFlex.mxml:353
+msgid "Display"
+msgstr "Affichage"
+
+#: src/LignesDeTempsFlex.mxml:354
+msgid "Fullscreen"
+msgstr "Plein écran"
+
+#: src/LignesDeTempsFlex.mxml:355
+msgid "Replace windows"
+msgstr "Replacer les fenêtres"
+
+#: src/LignesDeTempsFlex.mxml:356
+msgid "Display all the project's tags"
+msgstr "Afficher tous les tags du projet"
+
+#: src/LignesDeTempsFlex.mxml:362
+msgid "Remember the selected language"
+msgstr "Se souvenir de la langue sélectionnée"
+
+#: src/LignesDeTempsFlex.mxml:372
+#: src/tools/HelpPanel.mxml:12
+msgid "Help"
+msgstr "Aide"
+
+#: src/LignesDeTempsFlex.mxml:373
+#: src/tools/AboutPanel.mxml:13
+msgid "About"
+msgstr "A propos"
+
+#: src/LignesDeTempsFlex.mxml:530
+msgid "The fullscreen mode is not allowed."
+msgstr "Le plein écran n'est pas autorisé."
+
+#: src/LignesDeTempsFlex.mxml:618
+msgid "Click on the tag to unhighlight it"
+msgstr "Cliquer sur le tag pour effacer la surbrillance"
+
+#: src/LignesDeTempsFlex.mxml:730
+msgid "Please select a media before importing cuttings."
+msgstr "Sélectionnez un media avant d'importer des découpages."
+
+#: src/app/Python.as:49
+msgid "Lost connection"
+msgstr "Connexion perdue"
+
+#: src/app/Python.as:49
+#: src/app/Python.as:54
+#: src/app/Python.as:64
+msgid "Your datas can not be saved anymore. Please close and restart Lignes de temps."
+msgstr "Vos données ne peuvent plus être sauvegardées. Fermez et relancez Lignes de temps."
+
+#: src/app/Python.as:54
+#: src/app/Python.as:64
+#: src/app/Python.as:200
+msgid "Connection Problem"
+msgstr "Problème de connexion"
+
+#: src/app/XMLInOut.as:116
+#: src/tools/SimpleMp3Player.as:121
+msgid "Impossible to load the file"
+msgstr "Impossible de charger le fichier"
+
+#: src/app/XMLInOut.as:116
+#: src/app/XMLInOut.as:221
+#: src/app/XMLInOut.as:1014
+msgid "Error"
+msgstr "Erreur"
+
+#: src/app/XMLInOut.as:221
+#: src/app/XMLInOut.as:1014
+msgid "Your project file was not found. Please locate it."
+msgstr "Votre fichier projet est introuvable, veuillez indiquer son emplacement."
+
+#: src/app/XMLInOut.as:439
+msgid "Wave form"
+msgstr "Forme d'onde"
+
+#: src/app/XMLInOut.as:440
+msgid "Wave form of the sound track"
+msgstr "Forme d'onde (tracé) du signal sonore"
+
+#: src/app/XMLInOut.as:450
+msgid "Color signal"
+msgstr "Couleur dominante"
+
+#: src/app/XMLInOut.as:451
+msgid "Drawing of the video stream's main color"
+msgstr "Tracé de la couleur dominante du flux vidéo"
+
+#: src/media/FlvPlayer.as:628
+msgid "Loading picture"
+msgstr "Chargement de l'image"
+
+#: src/sequencer/Sequencer.mxml:209
+msgid "Unknown content identifier"
+msgstr "Identifiant de contenu inconnu"
+
+#: src/sequencer/tools/create/TLUser.mxml:77
+msgid "Add the cutting (Shift + E)"
+msgstr "Ajouter le découpage (Shift + E)"
+
+#: src/sequencer/tools/create/TLUser.mxml:82
+#: src/sequencer/tools/create/TLUser.mxml:226
+#: src/sequencer/tools/create/TLUser.mxml:229
+msgid "My cutting"
+msgstr "Mon découpage"
+
+#: src/sequencer/tools/create/TLUser.mxml:87
+msgid "Open or close a segment (Shift + Space)"
+msgstr "Ouvrir ou fermer un segment (Shift + Espace)"
+
+#: src/sequencer/tools/create/TLUser.mxml:89
+msgid "Add a mark (Shift + M)"
+msgstr "Ajouter un marqueur (Shift + M)"
+
+#: src/sequencer/tools/create/TLUser.mxml:91
+msgid "Change the segment or mark's color"
+msgstr "Changer la couleur d'un segment ou d'un marqueur"
+
+#: src/sequencer/tools/create/TLUser.mxml:93
+msgid "Delete the selected segment (Shift + Del)"
+msgstr "Supprimer le segment sélectionné (Shift + Suppr)"
+
+#: src/sequencer/tools/create/TLUser.mxml:95
+msgid "Split a segment (Shift + X)"
+msgstr "Scinder le segment (Shift + X)"
+
+#: src/sequencer/tools/create/TLUser.mxml:99
+msgid "Segments linked"
+msgstr "Segments liés"
+
+#: src/sequencer/tools/create/TLUser.mxml:101
+msgid "If this box is checked, the end of a segment is also the beginning of the next one"
+msgstr "Si cette case est cochée, la fin d'un segment correspond au début du suivant"
+
+#: src/sequencer/tools/create/TLUser.mxml:413
+#: src/sequencer/tools/create/TLUser.mxml:688
+msgid "You can not cover a segment."
+msgstr "Vous ne pouvez pas recouvrir un segment déjà existant."
+
+#: src/sequencer/tools/create/TLUser.mxml:436
+msgid "Do you confirm you delete this segment ?"
+msgstr "Confirmez-vous la suppression du segment ?"
+
+#: src/sequencer/tools/create/TLUser.mxml:676
+msgid "You can not add a mark in the middle of a segment."
+msgstr "Vous ne pouvez pas poser de marqueur au milieu d'un segment déjà existant."
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:67
+msgid "Duration (sec)"
+msgstr "Durée (sec)"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:69
+msgid "Line N°"
+msgstr "Ligne N°"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:71
+msgid "Background color"
+msgstr "Couleur de fond"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:73
+msgid "Add"
+msgstr "Ajouter"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:115
+#: src/sequencer/tools/edit/BoutABout.mxml:111
+msgid "Add a caption/title"
+msgstr "Ajouter un intertitre"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:120
+#: src/sequencer/tools/edit/BoutABout.mxml:112
+msgid "Add a picture"
+msgstr "Ajouter une image"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:126
+msgid "Modify a caption/title"
+msgstr "Modifier un intertitre"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:134
+msgid "Modify a picture"
+msgstr "Modifier une image"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:142
+#: src/sequencer/tools/edit/BoutABout.mxml:114
+msgid "Modify the selected segment"
+msgstr "Modifier le segment sélectionné"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:166
+msgid "The file is being copied"
+msgstr "Copie du fichier en cours"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:113
+msgid "Delete the selected segment from the bout à bout (edit)"
+msgstr "Effacer le segment sélectionné du bout à bout"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:115
+msgid "Play the bout à bout (edit)"
+msgstr "Lire le bout à bout"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:477
+msgid "Do you confirm you delete the segment ?"
+msgstr "Confirmez-vous la suppression du segment ?"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:637
+#: src/sequencer/tools/edit/BoutABout.mxml:641
+msgid "Segment added at"
+msgstr "Segment ajouté à"
+
+#: src/sequencer/ui/Content.as:90
+msgid "Hide this content"
+msgstr "Masquer ce contenu"
+
+#: src/sequencer/ui/timeline/SeqTL.as:70
+msgid "Modify this timeline"
+msgstr "Modifier cette ligne de temps"
+
+#: src/sequencer/ui/timeline/SeqTL.as:80
+msgid "Hide this timeline"
+msgstr "Masquer cette ligne de temps"
+
+#: src/tools/HelpPanel.mxml:14
+msgid "Download the userguide in pdf format."
+msgstr "Télécharger le mode d'emploi au format pdf."
+
+#: src/tools/HelpPanel.mxml:16
+msgid "English"
+msgstr "Anglais"
+
+#: src/tools/HelpPanel.mxml:18
+msgid "French"
+msgstr "Français"
+
+#: src/tools/HelpPanel.mxml:20
+msgid "Japanese"
+msgstr "Japonais"
+
+#: src/tools/HelpPanel.mxml:57
+msgid "The link opens a new window or a new tab."
+msgstr "Le lien ouvre une nouvelle fenêtre ou un nouvel onglet."
+
+#: src/tools/HelpPanel.mxml:64
+msgid "The link opens a navigator."
+msgstr "Le lien ouvre un navigateur."
+
+#: src/tools/ImportCuttings.mxml:14
+msgid "Import"
+msgstr "Importer"
+
+#: src/tools/ImportCuttings.mxml:16
+msgid "Content's id"
+msgstr "Identifiant du contenu"
+
+#: src/tools/ImportCuttings.mxml:50
+msgid "Import cuttings in"
+msgstr "Importer des découpages dans"
+
+#: src/tools/ImportCuttings.mxml:79
+#, csharp-format
+msgid "Do you want to import {0} cuttings in {1} ?"
+msgstr "Voulez-vous importer {0} découpages dans {1} ?"
+
+#: src/tools/ImportCuttings.mxml:79
+msgid "Confirmation"
+msgstr "Confirmation"
+
+#: src/tools/ImportMedia.mxml:39
+msgid "Select a video file (avi-mpg-mov-flv) or an audio file (mp3)"
+msgstr "Sélectionner un fichier vidéo (avi-mpg-mov-flv) ou audio (mp3)"
+
+#: src/tools/ImportMedia.mxml:51
+msgid "Optional complements"
+msgstr "Compléments optionnels"
+
+#: src/tools/ImportMedia.mxml:53
+msgid "Generate the sound wave form"
+msgstr "Générer la forme d'onde du signal sonore"
+
+#: src/tools/ImportMedia.mxml:55
+msgid "Run import"
+msgstr "Lancer l'import"
+
+#: src/tools/ImportMedia.mxml:59
+msgid "Import running. This operation can last several minutes."
+msgstr "Traitement de l'import. Cette opération peut durer plusieurs minutes."
+
+#: src/tools/ImportMedia.mxml:124
+msgid "At least the title and the author have to be filled to run the import."
+msgstr "Il faut indiquer au moins le titre et l'auteur pour lancer l'import."
+
+#: src/tools/SimpleMp3Player.as:43
+msgid "Play/Pause the sound annotation"
+msgstr "Lecture/Pause de l'annotation audio"
+
+#: src/tools/SimpleMp3Player.as:121
+msgid "Audio annotation error"
+msgstr "Erreur pour l'annotation audio"
+
Binary file web/ldt/media/swf/ldt/pkg/i18n/ja/messages.mo has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/swf/ldt/pkg/i18n/ja/messages.po	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,707 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-12-08 13:02+0100\n"
+"PO-Revision-Date: 2009-03-30 22:58+0900\n"
+"Last-Translator: Takuya Abe <abe3028@remus.dti.ne.jp>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/InfoWindow/BoutABoutTab.as:51
+msgid "Choose one of your bout à bout (edits)"
+msgstr "ラフ編集(bout à bout)を選択"
+
+#: src/InfoWindow/BoutABoutTab.as:66
+#: src/sequencer/tools/edit/BoutABout.mxml:116
+msgid "New bout à bout (edit)"
+msgstr "新規ラフ編集"
+
+#: src/InfoWindow/BoutABoutTab.as:73
+msgid "Delete the selected bout à bout (edit)"
+msgstr "選択中のラフ編集(bout à bout)を削除"
+
+#: src/InfoWindow/BoutABoutTab.as:80 src/InfoWindow/ProjectTab.as:52
+#: src/sequencer/tools/create/TLUser.mxml:105 src/tools/ImportMedia.mxml:43
+msgid "Title"
+msgstr "タイトル"
+
+#: src/InfoWindow/BoutABoutTab.as:95 src/InfoWindow/CuttingsTab.as:132
+#: src/InfoWindow/InformationsTab.as:391 src/InfoWindow/InformationsTab.as:515
+#: src/InfoWindow/InformationsTab.as:547 src/InfoWindow/InformationsTab.as:550
+#: src/InfoWindow/ProjectTab.as:83 src/tools/ImportMedia.mxml:49
+msgid "Description"
+msgstr "説明"
+
+#: src/InfoWindow/BoutABoutTab.as:163 src/InfoWindow/InformationsTab.as:791
+#: src/InfoWindow/ProjectTab.as:181 src/InfoWindow/ViewsTab.as:245
+#: src/sequencer/tools/create/TLUser.mxml:434
+#: src/sequencer/tools/edit/BoutABout.mxml:475
+msgid "Yes"
+msgstr "はい"
+
+#: src/InfoWindow/BoutABoutTab.as:164 src/InfoWindow/InformationsTab.as:792
+#: src/InfoWindow/ProjectTab.as:182 src/InfoWindow/ViewsTab.as:246
+#: src/sequencer/tools/create/TLUser.mxml:435
+#: src/sequencer/tools/edit/BoutABout.mxml:476
+msgid "No"
+msgstr "いいえ"
+
+#: src/InfoWindow/BoutABoutTab.as:165
+msgid "Do you confirm you delete the bout à bout (edit) ?"
+msgstr "本当にこのラフ編集(bout à bout)を削除してよろしいですか?"
+
+#: src/InfoWindow/CuttingsTab.as:108
+msgid "List"
+msgstr "リスト"
+
+#: src/InfoWindow/CuttingsTab.as:118 src/sequencer/ui/Content.as:96
+msgid "New cutting"
+msgstr "新規タイムライン"
+
+#: src/InfoWindow/CuttingsTab.as:134 src/sequencer/tools/create/TLUser.mxml:81
+#: src/tools/ImportCuttings.mxml:18
+msgid "Cutting's title"
+msgstr "タイムラインのタイトル"
+
+#: src/InfoWindow/CuttingsTab.as:147
+msgid "Cutting's description"
+msgstr "タイムラインの説明"
+
+#: src/InfoWindow/CuttingsTab.as:164
+msgid "Marks and segments"
+msgstr "セグメントとマーカー"
+
+#: src/InfoWindow/CuttingsTab.as:166 src/InfoWindow/InformationsTab.as:399
+#: src/sequencer/tools/edit/AddTextPict.mxml:77
+msgid "Begin"
+msgstr "開始点"
+
+#: src/InfoWindow/CuttingsTab.as:178 src/InfoWindow/InformationsTab.as:399
+#: src/sequencer/tools/edit/AddTextPict.mxml:79
+msgid "End"
+msgstr "終点"
+
+#: src/InfoWindow/CuttingsTab.as:190
+#: src/sequencer/tools/create/TLUser.mxml:108
+msgid "Segment's title"
+msgstr "セグメントのタイトル"
+
+#: src/InfoWindow/CuttingsTab.as:205
+msgid "Segment's description"
+msgstr "セグメントの説明"
+
+#: src/InfoWindow/CuttingsTab.as:219
+msgid "Tags (separated by a comma)"
+msgstr "タグ(半角コンマで区切る)"
+
+#: src/InfoWindow/CuttingsTab.as:237 src/InfoWindow/CuttingsTab.as:582
+msgid "Timeline's tags"
+msgstr "タイムライン内のタグ一覧"
+
+#: src/InfoWindow/CuttingsTab.as:243 src/InfoWindow/InformationsTab.as:150
+msgid "Previous"
+msgstr "前へ"
+
+#: src/InfoWindow/CuttingsTab.as:252 src/InfoWindow/InformationsTab.as:159
+msgid "Next"
+msgstr "次へ"
+
+#: src/InfoWindow/CuttingsTab.as:273
+msgid "Audio annotation"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:273
+msgid "choose a mp3 file."
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:280
+#: src/sequencer/tools/edit/AddTextPict.mxml:65 src/tools/ImportMedia.mxml:41
+msgid "Browse..."
+msgstr "ファイルを選択..."
+
+#: src/InfoWindow/InfoWindow.as:110
+msgid "Project"
+msgstr "プロジェクト"
+
+#: src/InfoWindow/InfoWindow.as:116
+msgid "Cuttings"
+msgstr "タイムライン"
+
+#: src/InfoWindow/InfoWindow.as:121
+msgid "Informations"
+msgstr "情報"
+
+#: src/InfoWindow/InfoWindow.as:125
+#: src/sequencer/tools/edit/BoutABout.mxml:815
+#: src/sequencer/tools/edit/BoutABout.mxml:816
+#: src/sequencer/tools/edit/BoutABout.mxml:905
+msgid "Bout à bout"
+msgstr "ラフ編集"
+
+#: src/InfoWindow/InfoWindow.as:131
+msgid "Views"
+msgstr "表示設定"
+
+#: src/InfoWindow/InfoWindow.as:136
+msgid "Note-taking"
+msgstr "ノート"
+
+#: src/InfoWindow/InformationsTab.as:172
+#: src/sequencer/tools/edit/AddTextPict.mxml:75
+msgid "Modify"
+msgstr "修正"
+
+#: src/InfoWindow/InformationsTab.as:178 src/InfoWindow/ProjectTab.as:162
+#: src/InfoWindow/ViewTreeItem.mxml:24
+msgid "Delete"
+msgstr "削除"
+
+#: src/InfoWindow/InformationsTab.as:184
+msgid "Duplicate"
+msgstr "複製"
+
+#: src/InfoWindow/InformationsTab.as:190 src/LignesDeTempsFlex.mxml:619
+msgid "Unhighlight all the timelines's segments"
+msgstr "すべてのタイムラインのセグメントのハイライトを解除"
+
+#: src/InfoWindow/InformationsTab.as:204
+#, fuzzy
+msgid "Duplicate only the highlighted segments"
+msgstr "ハイライトされたセグメントからラフ編集(bout à bout)を作成"
+
+#: src/InfoWindow/InformationsTab.as:211
+msgid "Unhighlight this timeline's segments"
+msgstr "このタイムラインのセグメントのハイライトを解除"
+
+#: src/InfoWindow/InformationsTab.as:218
+msgid "Create a bout à bout (edit) from the complete timeline"
+msgstr "タイムラインの中の全セグメントからラフ編集(bout à bout)を作成"
+
+#: src/InfoWindow/InformationsTab.as:225
+msgid "Create a bout à bout (edit) from the highlighted segments"
+msgstr "ハイライトされたセグメントからラフ編集(bout à bout)を作成"
+
+#: src/InfoWindow/InformationsTab.as:232
+msgid "Create a bout à bout (edit) from all the timelines's highlighted segments"
+msgstr "すべてのタイムライン上のハイライトされたセグメントからテスト編集(bout à bout)を作成"
+
+#: src/InfoWindow/InformationsTab.as:239
+msgid "See all the segments' titles and descriptions in one text"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:397 src/InfoWindow/InformationsTab.as:524
+#: src/InfoWindow/InformationsTab.as:558
+msgid "Duration"
+msgstr "持続"
+
+#: src/InfoWindow/InformationsTab.as:404
+msgid "Indexation"
+msgstr "インデキシング"
+
+#: src/InfoWindow/InformationsTab.as:517 src/InfoWindow/InformationsTab.as:553
+#: src/tools/ImportCuttings.mxml:20
+msgid "Nb elements"
+msgstr "エレメント番号"
+
+#: src/InfoWindow/InformationsTab.as:521 src/InfoWindow/InformationsTab.as:556
+msgid "Average length of segments"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:524 src/InfoWindow/InformationsTab.as:553
+#: src/InfoWindow/InformationsTab.as:558
+msgid "on"
+msgstr "オン"
+
+#: src/InfoWindow/InformationsTab.as:525 src/InfoWindow/InformationsTab.as:559
+#: src/InfoWindow/ProjectTab.as:67 src/tools/ImportMedia.mxml:45
+msgid "Authors"
+msgstr "作成者"
+
+#: src/InfoWindow/InformationsTab.as:525 src/InfoWindow/InformationsTab.as:559
+#: src/tools/ImportMedia.mxml:47
+msgid "Date"
+msgstr "日付"
+
+#: src/InfoWindow/InformationsTab.as:546
+msgid "View"
+msgstr "表示"
+
+#: src/InfoWindow/InformationsTab.as:548
+msgid "Criterion"
+msgstr "判断基準"
+
+#: src/InfoWindow/InformationsTab.as:563
+msgid "Summary"
+msgstr "概要"
+
+#: src/InfoWindow/InformationsTab.as:564
+msgid "Segments"
+msgstr "セグメント"
+
+#: src/InfoWindow/InformationsTab.as:565
+msgid "Marks"
+msgstr "マーカー"
+
+#: src/InfoWindow/InformationsTab.as:566
+msgid "All"
+msgstr "すべて"
+
+#: src/InfoWindow/InformationsTab.as:794
+msgid "Do you confirm you delete the cutting ?"
+msgstr "本当にこのタイムラインを削除してよろしいですか?"
+
+#: src/InfoWindow/InformationsTab.as:854
+msgid "copy"
+msgstr "コピー"
+
+#: src/InfoWindow/NoteTakingTab.as:61
+msgid "Start note-taking"
+msgstr "ノートの執筆を開始"
+
+#: src/InfoWindow/NoteTakingTab.as:68
+msgid "Put a separator (Shift + Enter)"
+msgstr "区切りを入れる"
+
+#: src/InfoWindow/NoteTakingTab.as:75
+msgid "Create a cutting from these notes"
+msgstr "このノートからタイムラインを作成"
+
+#: src/InfoWindow/NoteTakingTab.as:169
+#, fuzzy
+msgid "The media's current timecode must be superior to your last separator's timecode."
+msgstr "メディアの現在のタイムコードはあなたが最後に作成した区切りのタイムコードよりも優先される必要があります"
+
+#: src/InfoWindow/NoteTakingTab.as:169 src/InfoWindow/NoteTakingTab.as:259
+#: src/LignesDeTempsFlex.mxml:278 src/LignesDeTempsFlex.mxml:530
+#: src/LignesDeTempsFlex.mxml:730 src/app/Python.as:49 src/app/Python.as:54
+#: src/app/Python.as:64 src/app/Python.as:200 src/sequencer/Sequencer.mxml:209
+#: src/sequencer/tools/create/TLUser.mxml:413
+#: src/sequencer/tools/create/TLUser.mxml:692
+#: src/sequencer/tools/edit/BoutABout.mxml:477 src/tools/ImportMedia.mxml:124
+msgid "Attention"
+msgstr "注意"
+
+#: src/InfoWindow/NoteTakingTab.as:230
+msgid "My notes"
+msgstr "マイノート"
+
+#: src/InfoWindow/NoteTakingTab.as:233 src/app/XMLInOut.as:1058
+#: src/sequencer/tools/create/TLUser.mxml:1082
+msgid "Personnal cuttings"
+msgstr "みんなのタイムライン"
+
+#: src/InfoWindow/NoteTakingTab.as:259
+msgid "No content is selected for these notes."
+msgstr "ノートするためのコンテンツが選択されていません"
+
+#: src/InfoWindow/ProjectTab.as:99
+msgid "Project's medias"
+msgstr "プロジェクトが参照中のメディア"
+
+#: src/InfoWindow/ProjectTab.as:183
+msgid "Do you really want to take this content out of your project ?"
+msgstr "本当にこのコンテンツをプロジェクトから除外してよろしいですか?"
+
+#: src/InfoWindow/ViewTreeItem.mxml:25
+msgid "Rename"
+msgstr "名称変更"
+
+#: src/InfoWindow/ViewTreeItem.mxml:26
+msgid "Save the current display"
+msgstr "現在の表示設定を保存"
+
+#: src/InfoWindow/ViewsTab.as:65
+msgid "Saved display states :"
+msgstr "保存済みの表示設定 :"
+
+#: src/InfoWindow/ViewsTab.as:93
+msgid "New view"
+msgstr "新規表示設定"
+
+#: src/InfoWindow/ViewsTab.as:100
+msgid "Delete the selected view"
+msgstr "選択中の表示設定を削除"
+
+#: src/InfoWindow/ViewsTab.as:107
+msgid "Save the current display in the selected view"
+msgstr "現在のウィンドウの状態を、選択中の表示設定に上書きして保存"
+
+#: src/InfoWindow/ViewsTab.as:247
+msgid "Do you confirm you delete this view ?"
+msgstr "本当にこの表示設定を削除してよろしいですか?"
+
+#: src/InfoWindow/ViewsTab.as:268
+msgid "No name view"
+msgstr "名称未設定の表示設定"
+
+#: src/LignesDeTempsFlex.mxml:118 src/media/FlvPlayer.as:172
+#: src/tools/ImportMedia.mxml:57
+msgid "Loading"
+msgstr "読み込み中..."
+
+#: src/LignesDeTempsFlex.mxml:253 src/LignesDeTempsFlex.mxml:629
+#: src/LignesDeTempsFlex.mxml:646 src/LignesDeTempsFlex.mxml:694
+#: src/LignesDeTempsFlex.mxml:715
+msgid "Selected tags"
+msgstr "選択されたタグ"
+
+#: src/LignesDeTempsFlex.mxml:278
+#, fuzzy
+msgid "No project file is defined. You need to define a project file to save your datas."
+msgstr "プロジェクトファイルが指定されていません。保存するためにはプロジェクトファイルを指定する必要があります"
+
+#: src/LignesDeTempsFlex.mxml:282
+msgid "Save the project in"
+msgstr "プロジェクトを上書き保存"
+
+#: src/LignesDeTempsFlex.mxml:290 src/LignesDeTempsFlex.mxml:296
+#: src/LignesDeTempsFlex.mxml:303
+msgid "File"
+msgstr "ファイル"
+
+#: src/LignesDeTempsFlex.mxml:291
+msgid "Read only project"
+msgstr "読み出しのみ(書き込み不可)のプロジェクト"
+
+#: src/LignesDeTempsFlex.mxml:297
+#, fuzzy
+msgid "Save the project"
+msgstr "プロジェクトを上書き保存"
+
+#: src/LignesDeTempsFlex.mxml:304
+msgid "New project"
+msgstr "新規プロジェクト"
+
+#: src/LignesDeTempsFlex.mxml:305
+msgid "Open a project (.ldt)"
+msgstr "プロジェクト (.ldt) を開く"
+
+#: src/LignesDeTempsFlex.mxml:307
+msgid "Save the project as..."
+msgstr "プロジェクトを別名で保存"
+
+#: src/LignesDeTempsFlex.mxml:309 src/tools/ImportMedia.mxml:37
+msgid "Import a new media"
+msgstr "新規メディアのインポート"
+
+#: src/LignesDeTempsFlex.mxml:310
+msgid "Open a description (.iri file)"
+msgstr "ディスクリプション (.iri) を開く"
+
+#: src/LignesDeTempsFlex.mxml:311
+#, fuzzy
+msgid "Import cuttings from an other .ldt file"
+msgstr "このノートからタイムラインを作成"
+
+#: src/LignesDeTempsFlex.mxml:313
+msgid "Quit"
+msgstr "終了"
+
+#: src/LignesDeTempsFlex.mxml:325
+msgid "Medias"
+msgstr "メディア"
+
+#: src/LignesDeTempsFlex.mxml:330
+msgid "Library"
+msgstr "ライブラリ"
+
+#: src/LignesDeTempsFlex.mxml:353
+msgid "Display"
+msgstr "表示"
+
+#: src/LignesDeTempsFlex.mxml:354
+msgid "Fullscreen"
+msgstr "フルスクリーン"
+
+#: src/LignesDeTempsFlex.mxml:355
+msgid "Replace windows"
+msgstr "ウィンドウの整列"
+
+#: src/LignesDeTempsFlex.mxml:356
+msgid "Display all the project's tags"
+msgstr "このプロジェクトのタグをすべて表示"
+
+#: src/LignesDeTempsFlex.mxml:362
+#, fuzzy
+msgid "Remember the selected language"
+msgstr "選択中の表示設定を削除"
+
+#: src/LignesDeTempsFlex.mxml:372 src/tools/HelpPanel.mxml:12
+msgid "Help"
+msgstr "ヘルプ"
+
+#: src/LignesDeTempsFlex.mxml:373 src/tools/AboutPanel.mxml:13
+msgid "About"
+msgstr "Lignes de tempsについて"
+
+#: src/LignesDeTempsFlex.mxml:530
+msgid "The fullscreen mode is not allowed."
+msgstr "フルスクリーンモードは許可されていません"
+
+#: src/LignesDeTempsFlex.mxml:618
+msgid "Click on the tag to unhighlight it"
+msgstr "タグをクリックしてハイライトを解除"
+
+#: src/LignesDeTempsFlex.mxml:730
+msgid "Please select a media before importing cuttings."
+msgstr ""
+
+#: src/app/Python.as:49
+msgid "Lost connection"
+msgstr "コネクションのロスト"
+
+#: src/app/Python.as:49 src/app/Python.as:54 src/app/Python.as:64
+#, fuzzy
+msgid "Your datas can not be saved anymore. Please close and restart Lignes de temps."
+msgstr "これ以上データを保存できません。Lignes de tempsを終了して再起動してください"
+
+#: src/app/Python.as:54 src/app/Python.as:64 src/app/Python.as:200
+msgid "Connection Problem"
+msgstr "コネクションに問題"
+
+#: src/app/XMLInOut.as:116 src/tools/SimpleMp3Player.as:121
+msgid "Impossible to load the file"
+msgstr "ファイルが読み込めません"
+
+#: src/app/XMLInOut.as:116 src/app/XMLInOut.as:221 src/app/XMLInOut.as:1014
+msgid "Error"
+msgstr "エラー"
+
+#: src/app/XMLInOut.as:221 src/app/XMLInOut.as:1014
+msgid "Your project file was not found. Please locate it."
+msgstr "プロジェクトファイルが見つかりません。ファイルの場所を指定してください"
+
+#: src/app/XMLInOut.as:439
+msgid "Wave form"
+msgstr "波形"
+
+#: src/app/XMLInOut.as:440
+msgid "Wave form of the sound track"
+msgstr "音声トラックの波形"
+
+#: src/app/XMLInOut.as:450
+msgid "Color signal"
+msgstr "色信号"
+
+#: src/app/XMLInOut.as:451
+msgid "Drawing of the video stream's main color"
+msgstr "ビデオストリームの主要色の描画"
+
+#: src/media/FlvPlayer.as:628
+msgid "Loading picture"
+msgstr "ピクチャの読み込み"
+
+#: src/sequencer/Sequencer.mxml:209
+msgid "Unknown content identifier"
+msgstr "不明なコンテンツ識別子"
+
+#: src/sequencer/tools/create/TLUser.mxml:77
+msgid "Add the cutting (Shift + E)"
+msgstr "このタイムラインを追加 (Shift + E)"
+
+#: src/sequencer/tools/create/TLUser.mxml:82
+#: src/sequencer/tools/create/TLUser.mxml:226
+#: src/sequencer/tools/create/TLUser.mxml:229
+msgid "My cutting"
+msgstr "マイ・タイムライン"
+
+#: src/sequencer/tools/create/TLUser.mxml:87
+msgid "Open or close a segment (Shift + Space)"
+msgstr "セグメントの開閉 (Shift + Space)"
+
+#: src/sequencer/tools/create/TLUser.mxml:89
+msgid "Add a mark (Shift + M)"
+msgstr "マーカーを追加 (Shift + M)"
+
+#: src/sequencer/tools/create/TLUser.mxml:91
+msgid "Change the segment or mark's color"
+msgstr "セグメントやマーカーのカラーを変更"
+
+#: src/sequencer/tools/create/TLUser.mxml:93
+msgid "Delete the selected segment (Shift + Del)"
+msgstr "選択中のセグメントを削除 (Shift + Del)"
+
+#: src/sequencer/tools/create/TLUser.mxml:95
+msgid "Split a segment (Shift + X)"
+msgstr "セグメントの分割 (Shift + X)"
+
+#: src/sequencer/tools/create/TLUser.mxml:99
+msgid "Segments linked"
+msgstr "リンク付けされたセグメント"
+
+#: src/sequencer/tools/create/TLUser.mxml:101
+#, fuzzy
+msgid "If this box is checked, the end of a segment is also the beginning of the next one"
+msgstr "このチェックボックスをオンにすると、セグメントの終点が自動で次のセグメントの開始点になります"
+
+#: src/sequencer/tools/create/TLUser.mxml:413
+#: src/sequencer/tools/create/TLUser.mxml:688
+msgid "You can not cover a segment."
+msgstr "すでにあるセグメントを覆うようなセグメントは作成できません"
+
+#: src/sequencer/tools/create/TLUser.mxml:436
+msgid "Do you confirm you delete this segment ?"
+msgstr "本当にこのセグメントを削除してよろしいですか?"
+
+#: src/sequencer/tools/create/TLUser.mxml:676
+msgid "You can not add a mark in the middle of a segment."
+msgstr "セグメントの内側にマーカーを置くことはできません"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:67
+msgid "Duration (sec)"
+msgstr "持続 (秒)"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:69
+msgid "Line N°"
+msgstr "ラインNo."
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:71
+msgid "Background color"
+msgstr "背景色"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:73
+msgid "Add"
+msgstr "追加"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:115
+#: src/sequencer/tools/edit/BoutABout.mxml:111
+msgid "Add a caption/title"
+msgstr "タイトル/キャプションを追加"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:120
+#: src/sequencer/tools/edit/BoutABout.mxml:112
+msgid "Add a picture"
+msgstr "ピクチャを追加"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:126
+msgid "Modify a caption/title"
+msgstr "キャプション/タイトルを修正"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:134
+msgid "Modify a picture"
+msgstr "ピクチャを修正"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:142
+#: src/sequencer/tools/edit/BoutABout.mxml:114
+msgid "Modify the selected segment"
+msgstr "選択中のセグメントを修正"
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:166
+msgid "The file is being copied"
+msgstr "ファイルのコピー中..."
+
+#: src/sequencer/tools/edit/BoutABout.mxml:113
+msgid "Delete the selected segment from the bout à bout (edit)"
+msgstr "選択中のセグメントをラフ編集(bout à bout)から削除"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:115
+msgid "Play the bout à bout (edit)"
+msgstr "ラフ編集(bout à bout)を再生"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:477
+msgid "Do you confirm you delete the segment ?"
+msgstr "本当にこのセグメントを削除してよろしいですか?"
+
+#: src/sequencer/tools/edit/BoutABout.mxml:637
+#: src/sequencer/tools/edit/BoutABout.mxml:641
+msgid "Segment added at"
+msgstr "セグメントを追加"
+
+#: src/sequencer/ui/Content.as:90
+msgid "Hide this content"
+msgstr "このコンテンツを閉じる"
+
+#: src/sequencer/ui/timeline/SeqTL.as:70
+msgid "Modify this timeline"
+msgstr "このタイムラインを修正"
+
+#: src/sequencer/ui/timeline/SeqTL.as:80
+msgid "Hide this timeline"
+msgstr "このタイムラインを閉じる"
+
+#: src/tools/HelpPanel.mxml:14
+msgid "Download the userguide in pdf format."
+msgstr "PDFマニュアルをダウンロード"
+
+#: src/tools/HelpPanel.mxml:16
+msgid "English"
+msgstr ""
+
+#: src/tools/HelpPanel.mxml:18
+msgid "French"
+msgstr ""
+
+#: src/tools/HelpPanel.mxml:20
+msgid "Japanese"
+msgstr ""
+
+#: src/tools/HelpPanel.mxml:57
+msgid "The link opens a new window or a new tab."
+msgstr "リンクが新しいウィンドウやタブを開きます"
+
+#: src/tools/HelpPanel.mxml:64
+msgid "The link opens a navigator."
+msgstr "リンクがナビゲータを開きます"
+
+#: src/tools/ImportCuttings.mxml:14
+#, fuzzy
+msgid "Import"
+msgstr "メディアのインポート..."
+
+#: src/tools/ImportCuttings.mxml:16
+msgid "Content's id"
+msgstr ""
+
+#: src/tools/ImportCuttings.mxml:50
+msgid "Import cuttings in"
+msgstr ""
+
+#: src/tools/ImportCuttings.mxml:79
+#, csharp-format
+msgid "Do you want to import {0} cuttings in {1} ?"
+msgstr ""
+
+#: src/tools/ImportCuttings.mxml:79
+#, fuzzy
+msgid "Confirmation"
+msgstr "情報"
+
+#: src/tools/ImportMedia.mxml:39
+msgid "Select a video file (avi-mpg-mov-flv) or an audio file (mp3)"
+msgstr "動画ファイル (avi, mpg, mov, flv) または音声ファイル (mp3)を選択"
+
+#: src/tools/ImportMedia.mxml:51
+msgid "Optional complements"
+msgstr "インポート時の追加オプション"
+
+#: src/tools/ImportMedia.mxml:53
+msgid "Generate the sound wave form"
+msgstr "音声の波形データを作成"
+
+#: src/tools/ImportMedia.mxml:55
+msgid "Run import"
+msgstr "インポートの実行"
+
+#: src/tools/ImportMedia.mxml:59
+msgid "Import running. This operation can last several minutes."
+msgstr "インポートの実行中...(この処理には時間がかかることがあります)"
+
+#: src/tools/ImportMedia.mxml:124
+msgid "At least the title and the author have to be filled to run the import."
+msgstr "インポートを実行するにはタイトルと作成者の入力が必須です"
+
+#: src/tools/SimpleMp3Player.as:43
+msgid "Play/Pause the sound annotation"
+msgstr ""
+
+#: src/tools/SimpleMp3Player.as:121
+msgid "Audio annotation error"
+msgstr ""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/swf/ldt/pkg/i18n/lang.xml	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<iri>
+	<lang label="English" data="en"/>
+	<lang label="Français" data="fr"/>
+	<lang label="日本語" data="ja"/>
+	<lang label="Español" data="es"/>
+	<lang label="Basque" data="eu"/>
+</iri>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/swf/ldt/pkg/i18n/messages.po	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,698 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-12-08 13:02+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/InfoWindow/BoutABoutTab.as:51
+msgid "Choose one of your bout à bout (edits)"
+msgstr ""
+
+#: src/InfoWindow/BoutABoutTab.as:66
+#: src/sequencer/tools/edit/BoutABout.mxml:116
+msgid "New bout à bout (edit)"
+msgstr ""
+
+#: src/InfoWindow/BoutABoutTab.as:73
+msgid "Delete the selected bout à bout (edit)"
+msgstr ""
+
+#: src/InfoWindow/BoutABoutTab.as:80 src/InfoWindow/ProjectTab.as:52
+#: src/sequencer/tools/create/TLUser.mxml:105 src/tools/ImportMedia.mxml:43
+msgid "Title"
+msgstr ""
+
+#: src/InfoWindow/BoutABoutTab.as:95 src/InfoWindow/CuttingsTab.as:132
+#: src/InfoWindow/InformationsTab.as:391 src/InfoWindow/InformationsTab.as:515
+#: src/InfoWindow/InformationsTab.as:547 src/InfoWindow/InformationsTab.as:550
+#: src/InfoWindow/ProjectTab.as:83 src/tools/ImportMedia.mxml:49
+msgid "Description"
+msgstr ""
+
+#: src/InfoWindow/BoutABoutTab.as:163 src/InfoWindow/InformationsTab.as:791
+#: src/InfoWindow/ProjectTab.as:181 src/InfoWindow/ViewsTab.as:245
+#: src/sequencer/tools/create/TLUser.mxml:434
+#: src/sequencer/tools/edit/BoutABout.mxml:475
+msgid "Yes"
+msgstr ""
+
+#: src/InfoWindow/BoutABoutTab.as:164 src/InfoWindow/InformationsTab.as:792
+#: src/InfoWindow/ProjectTab.as:182 src/InfoWindow/ViewsTab.as:246
+#: src/sequencer/tools/create/TLUser.mxml:435
+#: src/sequencer/tools/edit/BoutABout.mxml:476
+msgid "No"
+msgstr ""
+
+#: src/InfoWindow/BoutABoutTab.as:165
+msgid "Do you confirm you delete the bout à bout (edit) ?"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:108
+msgid "List"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:118 src/sequencer/ui/Content.as:96
+msgid "New cutting"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:134 src/sequencer/tools/create/TLUser.mxml:81
+#: src/tools/ImportCuttings.mxml:18
+msgid "Cutting's title"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:147
+msgid "Cutting's description"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:164
+msgid "Marks and segments"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:166 src/InfoWindow/InformationsTab.as:399
+#: src/sequencer/tools/edit/AddTextPict.mxml:77
+msgid "Begin"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:178 src/InfoWindow/InformationsTab.as:399
+#: src/sequencer/tools/edit/AddTextPict.mxml:79
+msgid "End"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:190
+#: src/sequencer/tools/create/TLUser.mxml:108
+msgid "Segment's title"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:205
+msgid "Segment's description"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:219
+msgid "Tags (separated by a comma)"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:237 src/InfoWindow/CuttingsTab.as:582
+msgid "Timeline's tags"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:243 src/InfoWindow/InformationsTab.as:150
+msgid "Previous"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:252 src/InfoWindow/InformationsTab.as:159
+msgid "Next"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:273
+msgid "Audio annotation"
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:273
+msgid "choose a mp3 file."
+msgstr ""
+
+#: src/InfoWindow/CuttingsTab.as:280
+#: src/sequencer/tools/edit/AddTextPict.mxml:65 src/tools/ImportMedia.mxml:41
+msgid "Browse..."
+msgstr ""
+
+#: src/InfoWindow/InfoWindow.as:110
+msgid "Project"
+msgstr ""
+
+#: src/InfoWindow/InfoWindow.as:116
+msgid "Cuttings"
+msgstr ""
+
+#: src/InfoWindow/InfoWindow.as:121
+msgid "Informations"
+msgstr ""
+
+#: src/InfoWindow/InfoWindow.as:125
+#: src/sequencer/tools/edit/BoutABout.mxml:815
+#: src/sequencer/tools/edit/BoutABout.mxml:816
+#: src/sequencer/tools/edit/BoutABout.mxml:905
+msgid "Bout à bout"
+msgstr ""
+
+#: src/InfoWindow/InfoWindow.as:131
+msgid "Views"
+msgstr ""
+
+#: src/InfoWindow/InfoWindow.as:136
+msgid "Note-taking"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:172
+#: src/sequencer/tools/edit/AddTextPict.mxml:75
+msgid "Modify"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:178 src/InfoWindow/ProjectTab.as:162
+#: src/InfoWindow/ViewTreeItem.mxml:24
+msgid "Delete"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:184
+msgid "Duplicate"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:190 src/LignesDeTempsFlex.mxml:619
+msgid "Unhighlight all the timelines's segments"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:204
+msgid "Duplicate only the highlighted segments"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:211
+msgid "Unhighlight this timeline's segments"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:218
+msgid "Create a bout à bout (edit) from the complete timeline"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:225
+msgid "Create a bout à bout (edit) from the highlighted segments"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:232
+msgid "Create a bout à bout (edit) from all the timelines's highlighted segments"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:239
+msgid "See all the segments' titles and descriptions in one text"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:397 src/InfoWindow/InformationsTab.as:524
+#: src/InfoWindow/InformationsTab.as:558
+msgid "Duration"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:404
+msgid "Indexation"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:517 src/InfoWindow/InformationsTab.as:553
+#: src/tools/ImportCuttings.mxml:20
+msgid "Nb elements"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:521 src/InfoWindow/InformationsTab.as:556
+msgid "Average length of segments"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:524 src/InfoWindow/InformationsTab.as:553
+#: src/InfoWindow/InformationsTab.as:558
+msgid "on"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:525 src/InfoWindow/InformationsTab.as:559
+#: src/InfoWindow/ProjectTab.as:67 src/tools/ImportMedia.mxml:45
+msgid "Authors"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:525 src/InfoWindow/InformationsTab.as:559
+#: src/tools/ImportMedia.mxml:47
+msgid "Date"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:546
+msgid "View"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:548
+msgid "Criterion"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:563
+msgid "Summary"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:564
+msgid "Segments"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:565
+msgid "Marks"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:566
+msgid "All"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:794
+msgid "Do you confirm you delete the cutting ?"
+msgstr ""
+
+#: src/InfoWindow/InformationsTab.as:854
+msgid "copy"
+msgstr ""
+
+#: src/InfoWindow/NoteTakingTab.as:61
+msgid "Start note-taking"
+msgstr ""
+
+#: src/InfoWindow/NoteTakingTab.as:68
+msgid "Put a separator (Shift + Enter)"
+msgstr ""
+
+#: src/InfoWindow/NoteTakingTab.as:75
+msgid "Create a cutting from these notes"
+msgstr ""
+
+#: src/InfoWindow/NoteTakingTab.as:169
+msgid "The media's current timecode must be superior to your last separator's timecode."
+msgstr ""
+
+#: src/InfoWindow/NoteTakingTab.as:169 src/InfoWindow/NoteTakingTab.as:259
+#: src/LignesDeTempsFlex.mxml:278 src/LignesDeTempsFlex.mxml:530
+#: src/LignesDeTempsFlex.mxml:730 src/app/Python.as:49 src/app/Python.as:54
+#: src/app/Python.as:64 src/app/Python.as:200 src/sequencer/Sequencer.mxml:209
+#: src/sequencer/tools/create/TLUser.mxml:413
+#: src/sequencer/tools/create/TLUser.mxml:692
+#: src/sequencer/tools/edit/BoutABout.mxml:477 src/tools/ImportMedia.mxml:124
+msgid "Attention"
+msgstr ""
+
+#: src/InfoWindow/NoteTakingTab.as:230
+msgid "My notes"
+msgstr ""
+
+#: src/InfoWindow/NoteTakingTab.as:233 src/app/XMLInOut.as:1058
+#: src/sequencer/tools/create/TLUser.mxml:1082
+msgid "Personnal cuttings"
+msgstr ""
+
+#: src/InfoWindow/NoteTakingTab.as:259
+msgid "No content is selected for these notes."
+msgstr ""
+
+#: src/InfoWindow/ProjectTab.as:99
+msgid "Project's medias"
+msgstr ""
+
+#: src/InfoWindow/ProjectTab.as:183
+msgid "Do you really want to take this content out of your project ?"
+msgstr ""
+
+#: src/InfoWindow/ViewTreeItem.mxml:25
+msgid "Rename"
+msgstr ""
+
+#: src/InfoWindow/ViewTreeItem.mxml:26
+msgid "Save the current display"
+msgstr ""
+
+#: src/InfoWindow/ViewsTab.as:65
+msgid "Saved display states :"
+msgstr ""
+
+#: src/InfoWindow/ViewsTab.as:93
+msgid "New view"
+msgstr ""
+
+#: src/InfoWindow/ViewsTab.as:100
+msgid "Delete the selected view"
+msgstr ""
+
+#: src/InfoWindow/ViewsTab.as:107
+msgid "Save the current display in the selected view"
+msgstr ""
+
+#: src/InfoWindow/ViewsTab.as:247
+msgid "Do you confirm you delete this view ?"
+msgstr ""
+
+#: src/InfoWindow/ViewsTab.as:268
+msgid "No name view"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:118 src/media/FlvPlayer.as:172
+#: src/tools/ImportMedia.mxml:57
+msgid "Loading"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:253 src/LignesDeTempsFlex.mxml:629
+#: src/LignesDeTempsFlex.mxml:646 src/LignesDeTempsFlex.mxml:694
+#: src/LignesDeTempsFlex.mxml:715
+msgid "Selected tags"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:278
+msgid "No project file is defined. You need to define a project file to save your datas."
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:282
+msgid "Save the project in"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:290 src/LignesDeTempsFlex.mxml:296
+#: src/LignesDeTempsFlex.mxml:303
+msgid "File"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:291
+msgid "Read only project"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:297
+msgid "Save the project"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:304
+msgid "New project"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:305
+msgid "Open a project (.ldt)"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:307
+msgid "Save the project as..."
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:309 src/tools/ImportMedia.mxml:37
+msgid "Import a new media"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:310
+msgid "Open a description (.iri file)"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:311
+msgid "Import cuttings from an other .ldt file"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:313
+msgid "Quit"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:325
+msgid "Medias"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:330
+msgid "Library"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:353
+msgid "Display"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:354
+msgid "Fullscreen"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:355
+msgid "Replace windows"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:356
+msgid "Display all the project's tags"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:362
+msgid "Remember the selected language"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:372 src/tools/HelpPanel.mxml:12
+msgid "Help"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:373 src/tools/AboutPanel.mxml:13
+msgid "About"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:530
+msgid "The fullscreen mode is not allowed."
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:618
+msgid "Click on the tag to unhighlight it"
+msgstr ""
+
+#: src/LignesDeTempsFlex.mxml:730
+msgid "Please select a media before importing cuttings."
+msgstr ""
+
+#: src/app/Python.as:49
+msgid "Lost connection"
+msgstr ""
+
+#: src/app/Python.as:49 src/app/Python.as:54 src/app/Python.as:64
+msgid "Your datas can not be saved anymore. Please close and restart Lignes de temps."
+msgstr ""
+
+#: src/app/Python.as:54 src/app/Python.as:64 src/app/Python.as:200
+msgid "Connection Problem"
+msgstr ""
+
+#: src/app/XMLInOut.as:116 src/tools/SimpleMp3Player.as:121
+msgid "Impossible to load the file"
+msgstr ""
+
+#: src/app/XMLInOut.as:116 src/app/XMLInOut.as:221 src/app/XMLInOut.as:1014
+msgid "Error"
+msgstr ""
+
+#: src/app/XMLInOut.as:221 src/app/XMLInOut.as:1014
+msgid "Your project file was not found. Please locate it."
+msgstr ""
+
+#: src/app/XMLInOut.as:439
+msgid "Wave form"
+msgstr ""
+
+#: src/app/XMLInOut.as:440
+msgid "Wave form of the sound track"
+msgstr ""
+
+#: src/app/XMLInOut.as:450
+msgid "Color signal"
+msgstr ""
+
+#: src/app/XMLInOut.as:451
+msgid "Drawing of the video stream's main color"
+msgstr ""
+
+#: src/media/FlvPlayer.as:628
+msgid "Loading picture"
+msgstr ""
+
+#: src/sequencer/Sequencer.mxml:209
+msgid "Unknown content identifier"
+msgstr ""
+
+#: src/sequencer/tools/create/TLUser.mxml:77
+msgid "Add the cutting (Shift + E)"
+msgstr ""
+
+#: src/sequencer/tools/create/TLUser.mxml:82
+#: src/sequencer/tools/create/TLUser.mxml:226
+#: src/sequencer/tools/create/TLUser.mxml:229
+msgid "My cutting"
+msgstr ""
+
+#: src/sequencer/tools/create/TLUser.mxml:87
+msgid "Open or close a segment (Shift + Space)"
+msgstr ""
+
+#: src/sequencer/tools/create/TLUser.mxml:89
+msgid "Add a mark (Shift + M)"
+msgstr ""
+
+#: src/sequencer/tools/create/TLUser.mxml:91
+msgid "Change the segment or mark's color"
+msgstr ""
+
+#: src/sequencer/tools/create/TLUser.mxml:93
+msgid "Delete the selected segment (Shift + Del)"
+msgstr ""
+
+#: src/sequencer/tools/create/TLUser.mxml:95
+msgid "Split a segment (Shift + X)"
+msgstr ""
+
+#: src/sequencer/tools/create/TLUser.mxml:99
+msgid "Segments linked"
+msgstr ""
+
+#: src/sequencer/tools/create/TLUser.mxml:101
+msgid "If this box is checked, the end of a segment is also the beginning of the next one"
+msgstr ""
+
+#: src/sequencer/tools/create/TLUser.mxml:413
+#: src/sequencer/tools/create/TLUser.mxml:688
+msgid "You can not cover a segment."
+msgstr ""
+
+#: src/sequencer/tools/create/TLUser.mxml:436
+msgid "Do you confirm you delete this segment ?"
+msgstr ""
+
+#: src/sequencer/tools/create/TLUser.mxml:676
+msgid "You can not add a mark in the middle of a segment."
+msgstr ""
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:67
+msgid "Duration (sec)"
+msgstr ""
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:69
+msgid "Line N°"
+msgstr ""
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:71
+msgid "Background color"
+msgstr ""
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:73
+msgid "Add"
+msgstr ""
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:115
+#: src/sequencer/tools/edit/BoutABout.mxml:111
+msgid "Add a caption/title"
+msgstr ""
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:120
+#: src/sequencer/tools/edit/BoutABout.mxml:112
+msgid "Add a picture"
+msgstr ""
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:126
+msgid "Modify a caption/title"
+msgstr ""
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:134
+msgid "Modify a picture"
+msgstr ""
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:142
+#: src/sequencer/tools/edit/BoutABout.mxml:114
+msgid "Modify the selected segment"
+msgstr ""
+
+#: src/sequencer/tools/edit/AddTextPict.mxml:166
+msgid "The file is being copied"
+msgstr ""
+
+#: src/sequencer/tools/edit/BoutABout.mxml:113
+msgid "Delete the selected segment from the bout à bout (edit)"
+msgstr ""
+
+#: src/sequencer/tools/edit/BoutABout.mxml:115
+msgid "Play the bout à bout (edit)"
+msgstr ""
+
+#: src/sequencer/tools/edit/BoutABout.mxml:477
+msgid "Do you confirm you delete the segment ?"
+msgstr ""
+
+#: src/sequencer/tools/edit/BoutABout.mxml:637
+#: src/sequencer/tools/edit/BoutABout.mxml:641
+msgid "Segment added at"
+msgstr ""
+
+#: src/sequencer/ui/Content.as:90
+msgid "Hide this content"
+msgstr ""
+
+#: src/sequencer/ui/timeline/SeqTL.as:70
+msgid "Modify this timeline"
+msgstr ""
+
+#: src/sequencer/ui/timeline/SeqTL.as:80
+msgid "Hide this timeline"
+msgstr ""
+
+#: src/tools/HelpPanel.mxml:14
+msgid "Download the userguide in pdf format."
+msgstr ""
+
+#: src/tools/HelpPanel.mxml:16
+msgid "English"
+msgstr ""
+
+#: src/tools/HelpPanel.mxml:18
+msgid "French"
+msgstr ""
+
+#: src/tools/HelpPanel.mxml:20
+msgid "Japanese"
+msgstr ""
+
+#: src/tools/HelpPanel.mxml:57
+msgid "The link opens a new window or a new tab."
+msgstr ""
+
+#: src/tools/HelpPanel.mxml:64
+msgid "The link opens a navigator."
+msgstr ""
+
+#: src/tools/ImportCuttings.mxml:14
+msgid "Import"
+msgstr ""
+
+#: src/tools/ImportCuttings.mxml:16
+msgid "Content's id"
+msgstr ""
+
+#: src/tools/ImportCuttings.mxml:50
+msgid "Import cuttings in"
+msgstr ""
+
+#: src/tools/ImportCuttings.mxml:79
+#, csharp-format
+msgid "Do you want to import {0} cuttings in {1} ?"
+msgstr ""
+
+#: src/tools/ImportCuttings.mxml:79
+msgid "Confirmation"
+msgstr ""
+
+#: src/tools/ImportMedia.mxml:39
+msgid "Select a video file (avi-mpg-mov-flv) or an audio file (mp3)"
+msgstr ""
+
+#: src/tools/ImportMedia.mxml:51
+msgid "Optional complements"
+msgstr ""
+
+#: src/tools/ImportMedia.mxml:53
+msgid "Generate the sound wave form"
+msgstr ""
+
+#: src/tools/ImportMedia.mxml:55
+msgid "Run import"
+msgstr ""
+
+#: src/tools/ImportMedia.mxml:59
+msgid "Import running. This operation can last several minutes."
+msgstr ""
+
+#: src/tools/ImportMedia.mxml:124
+msgid "At least the title and the author have to be filled to run the import."
+msgstr ""
+
+#: src/tools/SimpleMp3Player.as:43
+msgid "Play/Pause the sound annotation"
+msgstr ""
+
+#: src/tools/SimpleMp3Player.as:121
+msgid "Audio annotation error"
+msgstr ""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/media/swf/ldt/pkg/init.xml	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<iri>
+	<files>
+		<init>
+			<file src="chapters_ALL.xml"/>
+		</init>
+	</files>
+</iri>
Binary file web/ldt/media/swf/player.swf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/settings.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,83 @@
+import os
+import os.path
+import logging
+from django.conf import settings
+
+
+# EMAIL_HOST='smtp.gmail.com'
+# EMAIL_HOST_USER = 'wujingwen1112@gmail.com'
+# EMAIL_HOST_PASSWORD='jingwen1112'
+# EMAIL_PORT='587'
+# EMAIL_USE_TLS = True
+#DEFAULT_FROM_EMAIL = "admin@domain.com"
+#SERVER_EMAIL = "admin@domain.com"
+
+INSTALLED_APPS = (
+    'jogging',
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.sites',
+    'django.contrib.messages',
+    'django.contrib.admin',
+    'registration',
+    'tagging',
+    'ldt',
+    'ldt.core',
+    'ldt.ldt_utils',
+    'ldt.user',
+    'ldt.management',
+)
+
+MIDDLEWARE_CLASSES = (
+    'django.middleware.common.CommonMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.middleware.csrf.CsrfViewMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+    'django.middleware.locale.LocaleMiddleware',
+    'django.contrib.messages.middleware.MessageMiddleware',
+    'jogging.middleware.LoggingMiddleware',
+)
+
+TEMPLATE_CONTEXT_PROCESSORS = ( 
+    "django.core.context_processors.request",
+    "django.core.context_processors.auth",
+    "django.core.context_processors.debug",
+    "django.core.context_processors.i18n",
+    "django.core.context_processors.media",
+    "ldt.utils.context_processors.ldt",
+    "ldt.utils.context_processors.base",
+    "ldt.utils.context_processors.web",
+    "ldt.utils.context_processors.version",
+)
+
+
+
+WEB_URL = getattr(settings, 'WEB_URL', '')
+BASE_URL = getattr(settings, 'BASE_URL', '')
+MEDIA_URL = getattr(settings, 'MEDIA_URL', '')
+MEDIA_ROOT = getattr(settings, 'MEDIA_ROOT', '')
+SITE_ID = getattr(settings, 'SITE_ID', 1)
+DEBUG = getattr(settings, 'DEBUG', False)
+MANAGERS = settings.MANAGERS
+INSTALLED_APPS = settings.INSTALLED_APPS
+LANGUAGES = settings.LANGUAGES
+DECOUPAGE_BLACKLIST =getattr(settings, 'DECOUPAGE_BLACKLIST', 'de_PPP')
+STREAM_URL = getattr(settings, 'STREAM_URL', '')
+STREAM_PATH = getattr(settings, 'STREAM_PATH', '')
+STREAM_SRC_PREFIX = getattr(settings, 'STREAM_SRC_PREFIX', '')
+LOG_FILE = getattr(settings, 'LOG_FILE', '')
+LOG_LEVEL = getattr(settings, 'LOG_LEVEL', logging.INFO)
+EMPTY_MEDIA_EXTERNALID = getattr(settings, 'EMPTY_MEDIA_EXTERNALID', None)
+
+GLOBAL_LOG_LEVEL = LOG_LEVEL
+GLOBAL_LOG_HANDLERS = [logging.FileHandler(LOG_FILE)]
+
+
+ACCOUNT_ACTIVATION_DAYS =  getattr(settings, 'ACCOUNT_ACTIVATION_DAYS', 7)
+LDT_MEDIA_PREFIX =  getattr(settings, 'LDT_MEDIA_PREFIX', MEDIA_URL + 'ldt/')
+LDT_MAX_SEARCH_NUMBER = 50
+LDT_JSON_DEFAULT_INDENT = 2
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/templatetags/ldtmedia.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,14 @@
+from django.template import Library
+
+register = Library()
+
+def ldt_media_prefix():
+    """ 
+    Returns the string contained in the setting LDT_MEDIA_PREFIX.
+    """
+    try:
+        from django.conf import settings
+    except ImportError:
+        return ''
+    return settings.LDT_MEDIA_PREFIX
+ldt_media_prefix = register.simple_tag(ldt_media_prefix)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/templatetags/navigation.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,19 @@
+from django.template import Library
+import re
+
+register = Library()
+
+
+@register.simple_tag
+def active(request, css_class, pattern, exact=True):
+    """
+    a simple tag to test the current path and return a given css class.
+    Useful for navigation tabs
+    """
+    if pattern:
+        if exact:
+            pattern = "^%s$" % pattern.lstrip("^").rstrip("$")
+     
+        if re.search(pattern, request.path):
+            return css_class
+    return ''
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/admin.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,42 @@
+from django.contrib import admin
+from django.contrib.auth.admin import UserAdmin, GroupAdmin
+from django.utils.translation import ugettext as _
+from ldt import settings
+from copy import deepcopy
+from forms import ldtForm, IriGroupForm
+from models import ldt, IriGroup
+
+
+class ldtAdmin(UserAdmin):    
+    list_display = ('username', 'email', 'first_name', 'last_name')
+    
+    fieldsets = [
+        (None, {'fields': ('username', ('password1', 'password2'))}),
+        (_('User details'), {'fields': (('first_name', 'last_name'), 'email')}),
+        (_('Groups'), {'fields': ('groups',)}),
+        (_('Permissions'), {'fields': ('is_staff', 'user_permissions')}),        
+    ]    
+    form = ldtForm
+    model = ldt
+    filter_horizontal = ('user_permissions',)
+    
+    def get_fieldsets(self, request, obj=None): 
+        fieldsets = deepcopy(self.fieldsets)
+        if not '/add' in request.path:
+            fieldsets[0] = (None, {'fields': ('username',)})
+            fieldsets.append((_('Password'), {'fields': ('password1', 'password2'), 'classes': ('collapse',)}))
+        return fieldsets
+        
+    def add_view(self, request):
+        return super(UserAdmin, self).add_view(request)               
+        
+admin.site.unregister(ldt)
+admin.site.register(ldt, ldtAdmin)
+
+class IriGroupAdmin(admin.ModelAdmin):
+    form = IriGroupForm
+    model = IriGroup
+    filter_horizontal = ('permissions',)
+    
+admin.site.unregister(IriGroup)
+admin.site.register(IriGroup, IriGroupAdmin)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/forms.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,98 @@
+from django import forms
+from django.contrib.auth.models import User, Permission, Group
+from django.forms.util import ErrorList
+from django.contrib.auth.forms import UserCreationForm
+from django.utils.translation import gettext as _
+from models import ldt, IriGroup
+from ldt.management import get_content_type_list
+
+
+class ldtForm(UserCreationForm):
+        
+    class Meta:
+        model = ldt
+        
+    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
+                 initial=None, error_class=ErrorList, label_suffix=':',
+                 empty_permitted=False, instance=None):
+                 
+        if instance:
+            initial = initial or {}           
+        
+        super(ldtForm, self).__init__(data, files, auto_id, prefix, 
+            initial, error_class, label_suffix, empty_permitted, instance)
+            
+        # filtre les permissions necessaires
+        content_type_list = get_content_type_list()
+        self.fields['user_permissions'].queryset = Permission.objects.filter(content_type__in = content_type_list)
+        
+        if instance:
+            self.fields['password1'].required = False
+            self.fields['password1'].label = _('New password')
+            self.fields['password2'].required = False
+            self.fields['password2'].label = _('New password confirmation')
+        
+        self._password_change = True
+        
+    def clean_username(self):
+        if self.instance:
+            return self.cleaned_data['username']
+        return super(ldtForm, self).clean_username()
+    
+    def clean_password2(self): 
+        if self.instance and self.cleaned_data['password1'] == '' and self.cleaned_data['password2'] == '':
+            self._password_change = False
+            return u''
+        return super(ldtForm, self).clean_password2()
+    
+   
+    def save(self, commit=True):
+        Super = self._password_change and ldtForm  or UserCreationForm  
+        user = super(Super, self).save(commit=False)
+        # if user.pk != None:
+            # self.save_m2m()
+        
+        if commit:
+            user.save()
+        
+        return user
+        
+class IriGroupForm(forms.ModelForm):
+    class meta:
+        model = IriGroup
+        
+    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
+                 initial=None, error_class=ErrorList, label_suffix=':',
+                 empty_permitted=False, instance=None):
+        if instance:
+            initial = initial or {}                               
+        
+        super(IriGroupForm, self).__init__(data, files, auto_id, prefix, 
+            initial, error_class, label_suffix, empty_permitted, instance)
+            
+        # filtre les permissions necessaires
+        content_type_list = get_content_type_list()
+        self.fields['permissions'].queryset = Permission.objects.filter(content_type__in = content_type_list)
+        
+class EmailChangeForm(forms.Form):
+    email1 = forms.EmailField(label=_("E-mail"), max_length=75)
+    email2 = forms.EmailField(label=_("E-mail"), max_length=75)
+    
+    def __init__(self, user=None, *args, **kwargs):
+        self.user = user
+        super(EmailChangeForm, self).__init__(*args, **kwargs)
+        
+    def clean_email2(self):
+        email1 = self.cleaned_data.get('email1')
+        email2 = self.cleaned_data.get('email2')
+        if email1 and email2:
+            if email1 != email2:
+                raise forms.ValidationError(_("The two emails didn't match."))
+        return email2
+
+    
+    def save(self):
+        self.user.email=self.cleaned_data['email1']
+        self.user.save()
+        return self.user
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/models.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,42 @@
+from django.db import models
+from django.contrib.auth.models import User, Group, UserManager
+from django.utils.translation import gettext as _
+from django.contrib import admin
+import datetime
+
+
+class IriGroup(Group):
+    description = models.TextField(null=True, blank=True)
+    
+    def __unicode__(self):
+        return self.name
+
+            
+class ldt(User):
+    irigroups = models.ManyToManyField(IriGroup, blank=True)
+    
+    class Meta:
+        verbose_name = 'iri user'
+        verbose_name_plural = 'iri users'
+    
+    def __unicode__(self):
+        return self.username
+        
+
+class ldtManager(UserManager):
+    def create_user(self, username, email, password=None):
+        "Creates and saves a User with the given username, e-mail and password."
+        now = datetime.datetime.now()
+        user = ldt(None, username, '', '', email.strip().lower(), 'placeholder', False, True, False, now, now)
+        if password:
+            user.set_password(password)
+        else:
+            user.set_unusable_password()
+        user.save()
+        return user   
+
+User.objects = ldtManager()
+User.objects.contribute_to_class(User, "objects")
+
+admin.site.register(ldt)
+admin.site.register(IriGroup)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/ldt/user/change_email.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,51 @@
+{% extends "ldt/user/user_base.html" %}
+{# form of email address's change #}
+{% load i18n %}
+{% block breadcrumb %}
+    <li></li>
+    <li><a href="{% url ldt.user.views.profile %}">{% trans "Profiles" %}</a></li>
+    <li>{% trans "Modification de l'adresse émail" %}</li>
+{% endblock %}
+
+{% block content_title %}{% trans "Modification de l'adresse émail" %}{% endblock %}
+{% block js_declaration %}{{ block.super }}
+    <script type="text/javascript">
+        $(document).ready(function() {
+            $("#change_email").validate();
+        });
+    </script>
+{% endblock %}
+{% block css_import %}
+{{ block.super }}
+    <style type="text/css">
+        label.error { float: none; color: red; padding-left: .5em; vertical-align: middle; }
+    </style>
+{% endblock %}
+
+{% block iricontent %}
+<p>{% trans "Please enter your new e-mail twice so we can verify you typed it in correctly." %}</p>
+<form action="" method="POST" id="change_email">
+{% csrf_token %}
+    <table>
+       <tr>
+            <td>
+                <label for="id_email1">{% trans "email" %}:</label>
+            </td>
+            <td>
+                <input id="id_email1" type="text" maxlength="75" name="email1" class="required email"/>
+            </td>
+            <td>{{form.email1.errors}}</td>
+        <tr>
+        </tr>
+            <td>
+                <label for="id_email2">{% trans "Confirmation de l'adresse émail" %}:</label>
+            </td>
+            <td>
+                 <input id="id_email2" type="text" maxlength="75" name="email2" class="required email"/>
+            </td>
+            <td>{{form.email1.errors}}</td>
+        </tr>
+        <tr><th></th><td><input type="submit" class="button" name="submit" value="{% trans 'change my e-mail' %}" /></td></tr>
+    </table>
+</form>
+{% endblock%}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/ldt/user/change_email_done.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,14 @@
+{% extends "ldt/user/user_base.html" %}
+{# if email is changed successfully, retrun this page #}
+{% load i18n %}
+{% block breadcrumb %}
+    <li></li>
+    <li><a href="{% url ldt.user.views.profile %}">{% trans "Profiles" %}</a></li>
+    <li>{% trans "email change" %}</li>
+{% endblock %}
+
+{% block content_title %}{% trans "email change" %}{% endblock %}
+{% block iricontent %}
+<p> {% trans "email changed" %}</p>
+<a href="{% url ldt.user.views.profile %}">{% trans "back to profile" %}</a>
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/ldt/user/home.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,14 @@
+{% extends "ldt/ldt_base.html" %}
+{% load i18n %}
+
+{% block title %}Home{% endblock %}
+
+{% block content_base %}
+
+<p>Welcome</p>
+<li><a href="{% url django.contrib.auth.views.login  %}" >{% trans "Se connecter" %}</a></li>
+<li><a href="{% url registration.views.register  %}" >{% trans "Créer un compte" %}</a></li>
+<li><a href="{% url django.contrib.auth.views.password_reset  %}" >{% trans "récupérer mot de passe" %}</a></li>
+
+{% endblock %} 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/ldt/user/login_form.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,75 @@
+{% load i18n %}
+{# print user's state and form of login #}
+{% block js_import %}
+{{block.super}}
+
+    <script language="javascript">
+    var url_login_ajax='{{WEB_URL}}{% url ldt.user.views.loginAjax %}';
+    {% if reload %}    
+        var reload=true;    
+    {% else %}
+        var reload=false;  
+    {% endif %}
+
+    $(document).ready(function(){
+        $('.login_link').nyroModal({
+                height:235, 
+                width:430, 
+                padding:0,
+                bgColor: 'rgb(239, 239, 239)',
+                });
+        })
+
+    </script>
+{% endblock %}
+{% block css_import %}
+{{block.super}}
+{% endblock %}
+<div id="loginstate" class="block span-24 last">
+    <ul class="usertool">
+        {% if user.is_authenticated %}    
+            <li id="user">{{user.username}}</li>
+            <li><a href="{% url ldt.user.views.profile  %}" >{% trans "Profiles" %}</a> </li>
+            <li><a href="{% url ldt.user.views.space %}">{% trans "Space" %}</a></li>
+            <li><a href="{% url ldt.user.views.logout_view %}" >{% trans "Log out" %}</a></li>  
+        
+        {% else %}     
+            <li><a href="#inlineContent" class="login_link">{% trans "Log in" %}</li>
+        {% endif %}
+    </ul>
+</div>
+<div id="inlineContent" style="display: none;">
+    <div id="loginform">
+            <div class="title">
+                <a href="#" class="nyroModalClose">X</a>
+                <div>{% trans "Log in" %}</div>             
+            </div>
+            <div id="msg"></div>
+            <div id="login_form" style="padding: 8px;" method="POST" action="">
+                <div style="float: right; padding-bottom: 8px;">
+                    <a href="{% url registration.views.register  %}" >{% trans "create account" %}</a>
+                </div>
+                <dl style="clear: both;">
+                    
+                    <dt><label for="username">{% trans "Pseudo" %}:</label></dt>
+                    <dd>
+                        <input class= "inputbox" type="text" style="width:148px" name="username" value="" id="username">
+                        <div id="login_form_username_error" class="ajaxform_error">{% trans "this field is compulsory" %}</div>
+                    </dd>
+               
+                
+                    <dt><label for="password">{% trans "Password" %}: </label></dt>
+                    <dd>
+                        <input class= "inputbox" type="password" style="width:148px" name="password" value="" id="password" >
+                        <div id="login_form_password_error" class="ajaxform_error">{% trans "this field is compulsory" %}</div>
+                    </dd>
+                    <dt/>
+                    <dd>
+                        <a href="{% url django.contrib.auth.views.password_reset  %}" >{% trans "reset password" %}</a>
+                    </dd>
+                </dl>
+                <input class="button" id="submit" type="submit" value="{% trans 'Connection' %}"/>  
+            </div>
+
+        </div>
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/ldt/user/profile.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,9 @@
+{% extends "ldt/user/user_base.html" %}
+{# user's profiles(change password, change email) #}
+{% load i18n %}
+{% block  iricontent %}
+<ul>
+    <li><a href="{% url django.contrib.auth.views.password_change %}" >{% trans "Password change" %}</a></li>
+    <li><a href="{% url ldt.user.views.change_email%}">{% trans "Mail change" %}</a></li>
+</ul>
+{% endblock %} 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/ldt/user/space.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,19 @@
+{% extends "ldt/user/user_base.html" %}
+{# user's space (edit page or project lignes de temps) #}
+{% load i18n %}
+{% block breadcrumb %}
+    <li></li>
+    <li>{% trans "Space" %}</li>    
+{% endblock %}
+
+{% block content_title %}{% trans "Space" %}{% endblock %}
+{% block iricontent%}
+<ul>
+{% if cms %}
+    <li><a href="{% url admin:page %}">{% trans "Page" %}</a></li>
+{% endif %}
+{% if ldt %}
+    <li><a href="{% url ldt.ldt_utils.views.list_ldt %}">{% trans "Projets Lignes de temps" %}</a></li>
+{% endif %}
+</ul>      
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/ldt/user/user_base.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,11 @@
+{% extends "ldt/ldt_base.html" %}
+{# this page inherit base html, all pages of ldt inherit this page. #}
+{# all contents are writed in the "iricontent" block  #}
+{% load i18n %}
+
+
+{% block content %}
+    <div id="iri-user-content" class="span-24 last">
+        {% block iricontent %}{% endblock %}
+    </div>
+{% endblock%}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/activate.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,14 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+
+{% block breadcrumb %}
+    <li></li>
+    <li>{% trans "Activate account" %}</li>
+{% endblock %}
+
+{% block content_title %}{% trans 'Activate account' %}{% endblock %}
+
+{% block iricontent %}
+<p>{% trans "You have activated your account" %}</p>
+<a href="{% url django.contrib.auth.views.login%}">{% trans "Go back to login page" %}</a>
+{% endblock %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/activation_complete.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,8 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+
+{% block content_title %}{% trans 'Sign up successfully' %}{% endblock %}
+{% block iricontent %}
+<p> {% trans "activation completed" %}</p>
+
+{% endblock%}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/activation_email.txt	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,4 @@
+Pour confirmer que ce compte vous appartient vraiment et afin
+d’activer les fonctions,
+veuillez suivre ce lien dans votre navigateur dans {{expiration_days}} jours:
+http://{{site }}{% url registration.views.activate activation_key %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/activation_email_subject.txt	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,1 @@
+Confirmation d’adresse de email pour ldt
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/base.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,9 @@
+{% extends "ldt/user/user_base.html" %}
+{% block js_import %}
+	{{ block.super }}
+{% endblock %}
+{% block css_import %}
+	{{ block.super }}
+	<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/registration.css" />
+{% endblock %}
+{% block pageclass %}profile{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/logged_out.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,12 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+
+<a href="../">{% trans 'Home' %}</a>
+
+{% block iricontent %}
+
+<p>{% trans "Thanks for spending some quality time with the Web site today." %}</p>
+
+<p><a href="../">{% trans 'Log in again' %}</a></p>
+
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/login.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,54 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+{% block js_declaration %}{{ block.super }}
+    <script type="text/javascript">
+        $(document).ready(function() {
+            $("#login-form").validate();
+        });
+    </script>
+{% endblock %}
+
+{% block css_import %}
+	{{ block.super }}
+	<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/ldt.css" />
+	<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/ldtform.css" />
+{% endblock %}
+
+
+{% block login %}
+{% endblock %}
+
+{% block content_title %}{% trans 'Log in' %}{% endblock %}
+{% block iricontent %}
+    {% if form.errors %}
+   	<p class="error">{% trans "Sorry, that's not a valid username or password." %}</p>
+   {% endif %}
+  	<div class="span-24 last">
+        <form action="" method='post' id="login-form">
+        	<div id="loginform_div" class="span-12">
+            {% csrf_token %}
+            <input type="hidden" name="next" value="{{ next }}" />
+                        
+	        <ul id="login_fields_list">
+	        {{form.as_ul}}
+	        </ul>
+	        </div>
+	       	<div id="login_links" class="span-12 last">
+		       	<div id="login_links_list" class="span-12 last">
+		       	<ul>
+		       		<li><a href="{% url registration.views.register  %}" >{% trans "Create an account" %}</a></li>
+		       	    <li><a href="{% url django.contrib.auth.views.password_reset  %}" >{% trans "Forget password?" %}</a></li>
+	            </ul>
+	            </div>
+        	</div>
+	        <div id="submitcontent" class="span-24 last">
+				<div id="submitcontent-buttons" class="span-24 last">
+	        		<button class="button"type="submit" value="login">{% trans "login" %}</button>
+	        	</div>
+	        </div>
+	    </form>
+	</div> 
+
+{% endblock %}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/password_change_done.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,17 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+{% block title %}{% trans 'password change successful' %}{% endblock %}
+
+{% block breadcrumb %}
+    <li></li>
+    <li><a href="{% url ldt.user.views.profile %}">{% trans "Profiles" %}</a></li>
+    <li>{% trans "password change" %}</li>
+{% endblock %}
+
+{% block content_title %}{% trans "password change successful" %}{% endblock %}
+{% block iricontent %}
+
+<p>{% trans 'Your password has been changed.' %}</p>
+<a href="{% url ldt.user.views.profile %}">{% trans 'Go back to profiles' %}</a>
+
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/password_change_form.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,47 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+{% block js_import %}{{ block.super }}
+    
+    <script type="text/javascript">
+        $(document).ready(function() {
+            $("#pwd_change_form").validate();
+        });
+    </script>
+{% endblock %}
+{% block breadcrumb %}
+    <li></li>
+    <li><a href="{% url ldt.user.views.profile %}">{% trans "Profiles" %}</a></li>
+    <li>{% trans 'Password change' %}</li>
+{% endblock %}
+
+{% block content_title %}{% trans 'Password change' %}{% endblock %}
+{% block iricontent %}
+
+<p>{% trans "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly." %}</p>
+
+<form action="" method="post" id="pwd_change_form">
+    <table cellspacing="10px">
+        
+        <tr>
+            <td><label for="id_old_password">{% trans 'Old password:' %}</label></td>
+            <td><input id="id_old_password"  name="old_password" type="password" class="required"/></td>
+            <td>{{ form.old_password.errors }}</td>
+        </tr>
+   
+        <tr>
+            <td><label for="id_new_password1">{% trans 'New password:' %}</label></td>
+            <td><input id="id_new_password1" type="password" name="new_password1" class="required"/></td>
+            <td>{{ form.new_password1.errors }}</td>
+        </tr>
+        
+        <tr>
+            <td><label for="id_new_password2">{% trans 'Confirm password:' %}</label></td>
+            <td><input id="id_new_password2" type="password" name="new_password2" class="required"/></td>
+            <td>{{ form.new_password2.errors }}</td>
+        </tr>
+    </table>
+
+    <input type="submit" class="button" value="{% trans 'Change my password' %}"/>
+</form>
+
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/password_reset_complete.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,16 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+
+{% block breadcrumb %}
+    <li></li>
+    <li>{% trans 'Password reset' %}</li>
+{% endblock %}
+
+{% block content_title %}{% trans 'Password reset complete' %}{% endblock %}
+{% block iricontent %}
+
+<p>{% trans "Your password has been set.  You may go ahead and log in now." %}</p>
+
+<p><a href="{{ login_url }}">{% trans 'Log in' %}</a></p>
+
+{% endblock %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/password_reset_confirm.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,33 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+
+{% block breadcrumb %}
+    <li></li>
+    <li>{% trans 'Password reset' %}</li>
+{% endblock %}
+
+{% block content_title %}{% trans 'Password reset' %}{% endblock %}
+
+{% block iricontent %}
+
+{% if validlink %}
+
+<p>{% trans "Please enter your new password twice so we can verify you typed it in correctly." %}</p>
+
+<form action="" method="post">
+{{ form.new_password1.errors }}
+<p class="aligned wide"><label for="id_new_password1">{% trans 'New password:' %}</label>{{ form.new_password1 }}</p>
+{{ form.new_password2.errors }}
+<p class="aligned wide"><label for="id_new_password2">{% trans 'Confirm password:' %}</label>{{ form.new_password2 }}</p>
+<p><input type="submit" value="{% trans 'Change my password' %}" /></p>
+</form>
+
+{% else %}
+
+<h1>{% trans 'Password reset unsuccessful' %}</h1>
+
+<p>{% trans "The password reset link was invalid, possibly because it has already been used.  Please request a new password reset." %}</p>
+
+{% endif %}
+
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/password_reset_done.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,14 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+
+{% block breadcrumb %}
+    <li></li>
+    <li>{% trans 'Password reset' %}</li>
+{% endblock %}
+{% block content_title %}{% trans 'Password reset successful' %}{% endblock %}
+
+{% block iricontent %}
+
+<p>{% trans "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly." %}</p>
+
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/password_reset_email.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,15 @@
+{% load i18n %}{% autoescape off %}
+{% trans "You're receiving this e-mail because you requested a password reset" %}
+{% blocktrans %}for your user account at {{ site_name }}{% endblocktrans %}.
+
+{% trans "Please 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 %}
+{% trans "Your username, in case you've forgotten:" %} {{ user.username }}
+
+{% trans "Thanks for using our site!" %}
+
+{% blocktrans %}The {{ site_name }} team{% endblocktrans %}
+
+{% endautoescape %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/password_reset_form.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,36 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+{% block js_import %}{{ block.super }}
+    <script type="text/javascript">
+        $(document).ready(function() {
+            $("#pwd_reset_form").validate();
+        });
+    </script>
+{% endblock %}
+
+{% block breadcrumb %}
+    <li></li>
+    <li>{% trans 'Password reset' %}</li>
+{% endblock %}
+{% block content_title %}{% trans 'Password reset' %}{% endblock %}
+
+
+{% block title %}{% trans "Password reset" %}{% endblock %}
+
+{% block iricontent%}
+
+<p>{% trans "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one." %}</p>
+
+<form action="" method="post" id="pwd_reset_form">
+<table>
+    <tr>
+        <th><label for="id_email">{% trans 'Adresse émail' %}:</label></th>
+        <td><input id="id_email" type="text" maxlength="75" class="required" name="email"/></td>
+        
+    </tr>
+    <tr><td></td><td>{{ form.email.errors }}</td></tr>
+    <tr><td></td><td><input type="submit" class="button" value="{% trans 'Reset my password' %}" /></td></tr>
+</table>
+</form>
+
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/registration_active.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,11 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+{% block breadcrumb %}
+    <li></li>
+    <li>{% trans 'Activate the account' %}</li>
+{% endblock %}
+{% block content_title %}{% trans 'Activate the account' %}{% endblock %}
+{% block iricontent%}
+<p> {% trans 'Vous avez bien activé votre compte, vous pouvez accedez à votre espace personnel.' %}</p>
+<a href="{ url django.contrib.auth.views.login }">{% trans 'retourner à la page de connexion' %}</a>
+{% endblock %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/registration_complete.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,12 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+
+{% block breadcrumb %}
+    <li></li>
+    <li>{% trans 'Sign up' %}</li>
+{% endblock %}
+{% block content_title %}{% trans 'Sign up successfully' %}{% endblock %}
+{% block iricontent %}
+<p> {% trans "We've e-mailed you instructions for activate your account to the e-mail address you submitted. You should be receiving it shortly." %}</p>
+
+{% endblock%}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templates/registration/registration_form.html	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,20 @@
+{% extends "registration/base.html" %}
+{% load i18n %}
+{% block js_import %}{{ block.super }}
+    <script type="text/javascript">
+        $(document).ready(function() {
+            $("#signup_form").validate();
+        });
+    </script>
+{% endblock %}
+
+{% block content_title %}{% trans 'Sign up' %}{% endblock %}
+{% block iricontent%}
+<form class="signupform" id="signup_form" method="post" action=""> {% csrf_token %}
+                <ul>
+				{{form.as_ul}}
+                <li><input class="button" type="submit" value="{% trans 'Save' %} "/></li>
+                </ul>
+</form>
+
+{% endblock%}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/templatetags/logintag.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,9 @@
+from django import template
+from django.template.loader import get_template
+
+register = template.Library() 
+
+def loginAjax(user, reload=None):
+    return {'user': user, 'reload': reload}
+    
+register.inclusion_tag('ldt/user/login_form.html')(loginAjax)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/tests.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,23 @@
+"""
+This file demonstrates two different styles of tests (one doctest and one
+unittest). These will both pass when you run "manage.py test".
+
+Replace these with more appropriate tests for your application.
+"""
+
+from django.test import TestCase
+
+class SimpleTest(TestCase):
+    def test_basic_addition(self):
+        """
+        Tests that 1 + 1 always equals 2.
+        """
+        self.failUnlessEqual(1 + 1, 2)
+
+__test__ = {"doctest": """
+Another way to test that 1 + 1 is equal to 2.
+
+>>> 1 + 1 == 2
+True
+"""}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/urls.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,19 @@
+from django.conf.urls.defaults import *
+
+urlpatterns = patterns('',
+    url(r'^loginAjax/$', 'ldt.user.views.loginAjax'), 
+    url(r'^profile/', 'ldt.user.views.profile'),
+    url(r'^logout/', 'ldt.user.views.logout_view'),
+    url(r'^space/$', 'ldt.user.views.space'),
+    url(r'^emailchange/$', 'ldt.user.views.change_email'),
+    url(r'^emailchange/done/$', 'ldt.user.views.change_email_done'),
+#    url(r'^space/ldt/$', 'ldt.ldt_utils.views.list_ldt'),
+#    url(r'^space/ldt/indexproject/(?P<id>.*)$', 'ldt.ldt_utils.views.indexProject'),
+#    url(r'^space/ldt/init/(?P<method>.*)/(?P<url>.*)$', 'ldt.ldt_utils.views.init'),
+#    url(r'^space/ldt/project/(?P<id>.*)$', 'ldt.ldt_utils.views.ldtProject'),
+#    url(r'^space/ldt/create/$', 'ldt.ldt_utils.views.create_ldt_view'),
+#    url(r'^space/ldt/created_done/$', 'ldt.ldt_utils.views.created_ldt'),
+#    url(r'^space/ldt/save/$', 'ldt.ldt_utils.views.save_ldtProject'),
+#    url(r'^space/ldt/publish/(?P<id>.*)$', 'ldt.ldt_utils.views.publish'),
+#    url(r'^space/ldt/unpublish/(?P<id>.*)$', 'ldt.ldt_utils.views.unpublish'),
+)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/views.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,75 @@
+from django.conf import settings
+from django.http import HttpResponse, HttpResponseRedirect
+from django.shortcuts import render_to_response
+from django.contrib.auth import authenticate, login, logout
+from django.contrib.auth.decorators import login_required
+# from django.contrib.sites.models import Site, RequestSite
+from django.template import RequestContext, Context, loader
+from django.utils.translation import ugettext as _
+from django.core.urlresolvers import reverse
+from forms import EmailChangeForm
+from django.utils import simplejson
+from ldt.management import test_cms, test_ldt
+
+
+def home(request):
+    return render_to_response('ldt/user/home.html',context_instance=RequestContext(request))
+    
+@login_required   
+def profile(request):
+    return render_to_response('ldt/user/profile.html', context_instance=RequestContext(request))
+
+@login_required     
+def space(request, page_id=None, slug=None):
+    cms = test_cms()
+    ldt = test_ldt()
+    context={
+        'cms': cms,
+        'ldt': ldt
+    }
+    return render_to_response('ldt/user/space.html', context, context_instance=RequestContext(request))
+    
+
+    
+def logout_view(request):
+    logout(request)
+    return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
+    #return HttpResponseRedirect(settings.LOGOUT_URL)
+
+    
+def loginAjax(request, loginstate_template_name='ldt/user/login_form.html'):
+    if request.method == "POST":
+        username=request.POST["username"]
+        password=request.POST["password"]
+        user = authenticate(username=username, password=password)
+        error_message = _(u"Sorry, that's not a valid username or password.")
+        if user is not None:
+            if user.is_active:
+                login(request, user)
+                context = RequestContext(request, { 'username': user.username,})
+                template = loader.get_template(loginstate_template_name)
+                html = template.render(context)
+                return HttpResponse(simplejson.dumps({'message': u'successful', 'username': user.username, 'html': html, 'reload': request.POST["reload"],}))               
+            else:
+                return HttpResponse(simplejson.dumps({'message': error_message,}))
+        else:
+            return HttpResponse(simplejson.dumps({'message': error_message,}))
+    return render_to_response('ldt/user/login_ajax.html', context_instance=RequestContext(request))
+            
+@login_required              
+def change_email(request, post_change_redirect=None):
+    if post_change_redirect is None:
+        post_change_redirect = reverse('ldt.user.views.change_email_done')
+    if request.method == "POST":
+        form = EmailChangeForm(request.user, request.POST)
+        if form.is_valid():
+            form.save()
+            return HttpResponseRedirect(post_change_redirect)
+    else:
+        form = EmailChangeForm(request.user)
+    return render_to_response('ldt/user/change_email.html', {'form': form,}, context_instance=RequestContext(request))
+    
+@login_required    
+def change_email_done(request, template_name='ldt/user/change_email_done.html'):
+    return render_to_response(template_name, context_instance=RequestContext(request))
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/utils/__init__.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,2 @@
+
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/utils/context_processors.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,16 @@
+from django.conf import settings
+
+import ldt
+
+def ldt(request):
+    return {'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX }
+
+def base(request):
+    return {'BASE_URL': settings.BASE_URL, 'MEDIA_URL': settings.MEDIA_URL }
+
+def web(request):
+    return {'WEB_URL': settings.WEB_URL }
+
+def version(request):
+    return {'VERSION': ldt.get_version() }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/utils/path.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,14 @@
+"""
+Some small file related utilities
+"""
+
+import unicodedata
+import string
+
+validFilenameChars = "-_.() %s%s" % (string.ascii_letters, string.digits)
+
+
+def sanitize_filename(filename):
+    cleanedFilename = unicodedata.normalize('NFKD', filename).encode('ASCII', 'ignore').lower()
+    return ''.join(c for c in cleanedFilename if c in validFilenameChars).replace(' ','_')
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/utils/xml.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,7 @@
+def getText(anode):
+	nodelist = anode.childNodes
+	rc = ""
+	for node in nodelist:
+		if node.nodeType == node.TEXT_NODE:
+			rc = rc + node.data
+	return rc
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/utils/zipfileext.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,14 @@
+import zipfile, os, os.path
+
+class ZipFileExt(zipfile.ZipFile):
+    def unzip_into_dir(self, dir):
+        if not os.path.exists(dir):
+            os.mkdir(dir, 0777)
+        for name in self.namelist():
+            if name.endswith('/'):
+                os.mkdir(os.path.join(dir,name))
+            else:
+                outfile = open(os.path.join(dir,name), 'wb')
+                outfile.write(self.read(name))
+                outfile.close()
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/leezam/.htaccess.mod_python.tmpl	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,12 @@
+SetHandler python-program
+PythonHandler ldt.core.handlers.modpython
+SetEnv DJANGO_SETTINGS_MODULE leezam.settings
+SetEnv PY_USE_XMLPLUS true
+PythonInterpreter leezam
+PythonOption django.root /~wakimd/leezam/leezam
+PythonOption virtualenv.activate_path /iridata/users/wakimd/Env/Efculture/bin/activate_this.py
+PythonDebug on
+PythonPath "['/iridata/users/wakimd/Env/Efculture/lib/python2.6/sites-packages'] + sys.path"
+Header set Pragma "no-cache"
+Header set Cache-Control "no-cache"
+Header set Expires "-1"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/leezam/.htaccess.mod_wsgi.tmpl	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,20 @@
+
+SetEnv DJANGO_SETTINGS_MODULE leezam.settings
+SetEnv PY_USE_XMLPLUS true
+SetEnv PROJECT_PATH /iridata/users/wakimd/hg/leezam/web
+SetEnv PYTHON_PATH /iridata/users/wakimd/Env/Efculture/lib/python2.6/site-packages
+
+Options ExecCGI FollowSymLinks
+SetHandler wsgi-script
+
+#if defined in global definition
+#defined with WSGIDaemonProcess 
+#WSGIProcessGroup leezam
+
+RewriteEngine On
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteRule ^(.*)$ /dev/~wakimd/leezam/leezam/modwsgi.wsgi/$1 [QSA,PT,L]
+
+Header set Pragma "no-cache"
+Header set Cache-Control "no-cache"
+Header set Expires "-1"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/leezam/__init__.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,17 @@
+VERSION = (0, 1)
+
+VERSION_STR = unicode(".".join(map(lambda i:"%02d" % (i,), VERSION[:2])))
+
+
+def get_version():
+    version = '%s.%s' % (VERSION[0], VERSION[1])
+    if VERSION[2]:
+        version = '%s.%s' % (version, VERSION[2])
+    if VERSION[3:] == ('alpha', 0):
+        version = '%s pre-alpha' % version
+    else:
+        if VERSION[3] != 'final':
+            version = '%s %s %s' % (version, VERSION[3], VERSION[4])
+    return version
+
+__version__ = get_version()
Binary file web/leezam/locale/fr/LC_MESSAGES/django.mo has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/leezam/locale/fr/LC_MESSAGES/django.po	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,213 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-19 19:51+0200\n"
+"PO-Revision-Date: 2010-02-17 02:57+0100\n"
+"Last-Translator: Yves-Marie Haussonne <ymh.work@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: settings.py:39
+msgid "French"
+msgstr "Français"
+
+#: templates/registration/login.html:14
+msgid "Log in"
+msgstr "Connexion"
+
+#: templates/registration/login.html:17
+msgid "Sorry, that's not a valid username or password."
+msgstr "Désolé, mais ce n'est pas un identifiant ou un mot de passe valide"
+
+#: templates/registration/login.html:25
+msgid "login"
+msgstr "Connexion"
+
+#: templates/registration/login.html:29
+msgid "Forget password?"
+msgstr "Mot de passe oublié ?"
+
+msgid "header_title"
+msgstr "Leezam"
+
+msgid "page_title"
+msgstr "Leezam"
+
+#~ msgid "You can not access this project"
+#~ msgstr "Vous n'avez pas accès à ce projet"
+
+#~ msgid "home"
+#~ msgstr "accueil"
+
+#~ msgid "contents"
+#~ msgstr "Liste des contenus"
+
+#~ msgid "indexation projects"
+#~ msgstr "Projets d'indexation"
+
+#~ msgid "accounts"
+#~ msgstr "Liste des comptes"
+
+#~ msgid "Profiles"
+#~ msgstr "Profile"
+
+#~ msgid "Log out"
+#~ msgstr "déconnexion"
+
+#~ msgid "Langue"
+#~ msgstr "Langue"
+
+#~ msgid "popup_player"
+#~ msgstr "Code du lecteur"
+
+#~ msgid "popup_seo_body"
+#~ msgstr "Code SEO"
+
+#~ msgid "popup_seo_meta"
+#~ msgstr "Code balise meta header"
+
+#~ msgid "popup_links"
+#~ msgstr "Liste de liens"
+
+#~ msgid "clik here to see the project content"
+#~ msgstr "cliquer ici pour voir le contenu du projet"
+
+#~ msgid "content list"
+#~ msgstr "Liste des contenus"
+
+#~ msgid "search"
+#~ msgstr "Recherche"
+
+#~ msgid "project list"
+#~ msgstr "Liste des projets"
+
+#~ msgid "name"
+#~ msgstr "Nom"
+
+#~ msgid "create project"
+#~ msgstr "Créer un projet"
+
+#~ msgid "preview media"
+#~ msgstr "preview"
+
+#~ msgid "Create content"
+#~ msgstr "Créer un Contenu"
+
+#~ msgid "open ldt"
+#~ msgstr "Ouvrir sous Lignes de Temps"
+
+#~ msgid "copy project"
+#~ msgstr "Copier projet"
+
+#~ msgid "link json by id"
+#~ msgstr "Ouvrir le lecteur augmenté"
+
+#~ msgid "Project published, click to unpublish"
+#~ msgstr "Projet publié, cliquer pour de-publier"
+
+#~ msgid "Project not published, click to publish"
+#~ msgstr "Projet non publié, cliquer pour publier"
+
+#~ msgid "Create project"
+#~ msgstr "Créer un projet"
+
+#~ msgid ""
+#~ "The operation could not be performed because one or more error(s) "
+#~ "occurred.<br />Please resubmit the content form after making the "
+#~ "following changes:"
+#~ msgstr ""
+#~ "opération impossible à cause d'une ou plusieurs erreurs.<br />Veuillez "
+#~ "resoumettre le formulaire contenu après avoir fait les changements "
+#~ "suivants:"
+
+#~ msgid ""
+#~ "The operation could not be performed because one or more error(s) "
+#~ "occurred.<br />Please resubmit the media form after making the following "
+#~ "changes:"
+#~ msgstr ""
+#~ "opération impossible à cause d'une ou plusieurs erreurs.<br />Veuillez "
+#~ "resoumettre le formulaire media après avoir fait les changements suivants:"
+
+#~ msgid "media file is being processed please wait."
+#~ msgstr "Le fichier média est en cours de traitement. Veullez patienter."
+
+#~ msgid "close_cancel"
+#~ msgstr "Annuler"
+
+#~ msgid "delete"
+#~ msgstr "Effacer"
+
+#~ msgid "write"
+#~ msgstr "Enregistrer"
+
+#~ msgid "Update your project"
+#~ msgstr "Mettre à jour un projet"
+
+#~ msgid "Create your project"
+#~ msgstr "Créer un projet"
+
+#~ msgid "Title"
+#~ msgstr "Titre"
+
+#~ msgid "List of contents"
+#~ msgstr "Liste des Médias"
+
+#~ msgid "delete_project"
+#~ msgstr "Effacer"
+
+#~ msgid "update_project"
+#~ msgstr "Mettre à jour"
+
+#~ msgid "create_project"
+#~ msgstr "Créer"
+
+#~ msgid "error"
+#~ msgstr "Erreurs"
+
+#~ msgid "confirm"
+#~ msgstr "Confirmer"
+
+#~ msgid "close_error"
+#~ msgstr "fermer"
+
+#~ msgid "do_delete"
+#~ msgstr "Effacer"
+
+#~ msgid "create account"
+#~ msgstr "Créer un compte"
+
+#~ msgid "Pseudo"
+#~ msgstr "Pseudo"
+
+#~ msgid "this field is compulsory"
+#~ msgstr "Ce champs et obligatoire"
+
+#~ msgid "Password"
+#~ msgstr "Mot de passe"
+
+#~ msgid "reset password"
+#~ msgstr "Réinitialiser le mot de passe"
+
+#~ msgid "Connection"
+#~ msgstr "Connexion"
+
+#~ msgid "Create"
+#~ msgstr "Créer"
+
+#~ msgid "link json by externalid"
+#~ msgstr "ouvrir le lecteur augmenté"
+
+#~ msgid "Space"
+#~ msgstr "Esp. perso."
+
+#~ msgid "Create an account"
+#~ msgstr "Créer un compte"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/leezam/localsettings.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,95 @@
+OPENID_REDIRECT_NEXT = '/accounts/openid/done/'
+
+OPENID_SREG = {"required": "nickname, email, fullname",
+               "optional":"postcode, country",
+               "policy_url": ""}
+
+#example should be something more like the real thing, i think
+OPENID_AX = [{"type_uri": "http://axschema.org/contact/email",
+              "count": 1,
+              "required": True,
+              "alias": "email"},
+             {"type_uri": "http://axschema.org/schema/fullname",
+              "count":1 ,
+              "required": False,
+              "alias": "fname"}]
+
+OPENID_AX_PROVIDER_MAP = {'Google': {'email': 'http://axschema.org/contact/email',
+                                     'firstname': 'http://axschema.org/namePerson/first',
+                                     'lastname': 'http://axschema.org/namePerson/last'},
+                          'Default': {'email': 'http://axschema.org/contact/email',
+                                      'fullname': 'http://axschema.org/namePerson',
+                                      'nickname': 'http://axschema.org/namePerson/friendly'}
+                          }
+
+TWITTER_CONSUMER_KEY = ''
+TWITTER_CONSUMER_SECRET = ''
+
+FACEBOOK_APP_ID = ''
+FACEBOOK_API_KEY = ''
+FACEBOOK_SECRET_KEY = ''
+
+LINKEDIN_CONSUMER_KEY = ''
+LINKEDIN_CONSUMER_SECRET = ''
+
+## if any of this information is desired for your app
+FACEBOOK_EXTENDED_PERMISSIONS = (
+    #'publish_stream',
+    #'create_event',
+    #'rsvp_event',
+    #'sms',
+    #'offline_access',
+    #'email',
+    #'read_stream',
+    #'user_about_me',
+    #'user_activites',
+    #'user_birthday',
+    #'user_education_history',
+    #'user_events',
+    #'user_groups',
+    #'user_hometown',
+    #'user_interests',
+    #'user_likes',
+    #'user_location',
+    #'user_notes',
+    #'user_online_presence',
+    #'user_photo_video_tags',
+    #'user_photos',
+    #'user_relationships',
+    #'user_religion_politics',
+    #'user_status',
+    #'user_videos',
+    #'user_website',
+    #'user_work_history',
+    #'read_friendlists',
+    #'read_requests',
+    #'friend_about_me',
+    #'friend_activites',
+    #'friend_birthday',
+    #'friend_education_history',
+    #'friend_events',
+    #'friend_groups',
+    #'friend_hometown',
+    #'friend_interests',
+    #'friend_likes',
+    #'friend_location',
+    #'friend_notes',
+    #'friend_online_presence',
+    #'friend_photo_video_tags',
+    #'friend_photos',
+    #'friend_relationships',
+    #'friend_religion_politics',
+    #'friend_status',
+    #'friend_videos',
+    #'friend_website',
+    #'friend_work_history',
+)
+
+
+AUTHENTICATION_BACKENDS = (
+    'django.contrib.auth.backends.ModelBackend',
+    'socialauth.auth_backends.OpenIdBackend',
+    #'socialauth.auth_backends.TwitterBackend',
+    #'socialauth.auth_backends.FacebookBackend',
+    'socialauth.auth_backends.LinkedInBackend',
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/leezam/manage.py	Sun Nov 14 20:25:22 2010 +0100
@@ -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)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/leezam/settings.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,151 @@
+#@PydevCodeAnalysisIgnore
+import os.path
+# Django settings for leezam project.
+
+DEBUG = True
+TEMPLATE_DEBUG = DEBUG
+
+ADMINS = (
+    # ('Your Name', 'your_email@domain.com'),
+)
+
+MANAGERS = ADMINS
+
+DATABASES = {
+    'default': {
+        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
+        'NAME': '',                      # Or path to database file if using sqlite3.
+        'USER': '',                      # Not used with sqlite3.
+        'PASSWORD': '',                  # Not used with sqlite3.
+        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
+        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
+    }
+}
+
+# Local time zone for this installation. Choices can be found here:
+# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
+# although not all choices may be available on all operating systems.
+# If running in a Windows environment this must be set to the same as your
+# system time zone.
+TIME_ZONE = 'Europe/Paris'
+
+# Language code for this installation. All choices can be found here:
+# http://www.i18nguy.com/unicode/language-identifiers.html
+LANGUAGE_CODE = 'fr-fr'
+
+ugettext = lambda s: s
+
+LANGUAGES = ( 
+    ('fr', ugettext('French')),
+)
+
+
+SITE_ID = 1
+
+# If you set this to False, Django will make some optimizations so as not
+# to load the internationalization machinery.
+USE_I18N = True
+
+# Absolute path to the directory that holds media.
+# Example: "/home/media/media.lawrence.com/"
+MEDIA_ROOT = ''
+
+# URL that handles the media served from MEDIA_ROOT. Make sure to use a
+# trailing slash if there is a path component (optional in other cases).
+# Examples: "http://media.lawrence.com", "http://example.com/media/"
+MEDIA_URL = ''
+
+# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
+# trailing slash.
+# Examples: "http://foo.com/media/", "/media/".
+ADMIN_MEDIA_PREFIX = '/media/'
+
+LDT_MEDIA_PREFIX = '/ldt/'
+
+# Make this unique, and don't share it with anybody.
+SECRET_KEY = 't^lii5_z@tho$%6t&b#dm#t9nz$$ylyclxvkdiyqbl+(dnt(ma'
+
+# List of callables that know how to import templates from various sources.
+TEMPLATE_LOADERS = (
+    'django.template.loaders.filesystem.Loader',
+    'django.template.loaders.app_directories.Loader',
+#     'django.template.loaders.eggs.Loader',
+)
+
+MIDDLEWARE_CLASSES = (
+    'django.middleware.common.CommonMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.middleware.csrf.CsrfViewMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+    'django.middleware.locale.LocaleMiddleware',
+    'django.contrib.messages.middleware.MessageMiddleware',
+    'jogging.middleware.LoggingMiddleware',
+)
+
+TEMPLATE_CONTEXT_PROCESSORS = ( 
+    "django.core.context_processors.request",
+    "django.core.context_processors.auth",
+    "django.core.context_processors.debug",
+    "django.core.context_processors.i18n",
+    "django.core.context_processors.media",
+    "ldt.utils.context_processors.ldt",
+    "ldt.utils.context_processors.base",
+    "ldt.utils.context_processors.web",
+    "leezam.utils.context_processors.version",
+)
+
+
+ROOT_URLCONF = 'leezam.urls'
+
+TEMPLATE_DIRS = (
+    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
+    # Always use forward slashes, even on Windows.
+    # Don't forget to use absolute paths, not relative paths.
+    os.path.join(os.path.basename(__file__), 'templates'),
+)
+
+INSTALLED_APPS = (
+    'jogging',
+    'django_extensions',
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.sites',
+    'django.contrib.messages',
+    'django.contrib.admin',
+    #'socialauth',
+    #'openid_consumer',
+    'leezam',
+    'registration',
+    'tagging',
+    'ldt',
+    'ldt.core',
+    'ldt.ldt_utils',
+    'ldt.user',
+    'ldt.management',
+)
+
+DECOUPAGE_BLACKLIST = (
+     "de_PPP",
+)
+ 
+ZIP_BLACKLIST = (
+     "__MACOSX",
+)
+
+ACCOUNT_ACTIVATION_DAYS = 7 
+
+LDT_MAX_SEARCH_NUMBER = 50
+LDT_JSON_DEFAULT_INDENT = 2
+
+from localsettings import *
+
+from config import *
+
+LOGIN_URL = BASE_URL + 'leezam/accounts/login/'
+LOGOUT_URL = BASE_URL + 'leezam'
+LOGIN_REDIRECT_URL = BASE_URL + 'leezam'
+
+GLOBAL_LOG_LEVEL = LOG_LEVEL
+GLOBAL_LOG_HANDLERS = [{'handler':logging.FileHandler(LOG_FILE), 'format':"%(asctime)s - %(levelname)s : %(message)s"}]
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/leezam/urls.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,26 @@
+from django.conf.urls.defaults import patterns ,include, url
+from django.contrib import admin
+
+
+# Uncomment the next two lines to enable the admin:
+admin.autodiscover()
+
+urlpatterns = patterns('',
+    # Example:
+    # (r'^leezam/', include('leezam.foo.urls')),
+
+    # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
+    # to INSTALLED_APPS to enable admin documentation:
+    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
+
+    # Uncomment the next line to enable the admin:
+    (r'^admin/', include(admin.site.urls)),
+    (r'^i18n/', include('django.conf.urls.i18n')),
+
+    (r'^ldt/', include('ldt.ldt_utils.urls')),
+    (r'^user/', include('ldt.user.urls')),
+
+    (r'^accounts/', include('registration.backends.simple.urls')),
+    
+    (r'^/?$', 'django.views.generic.simple.redirect_to', {'url': 'ldt'}),
+)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/leezam/utils/context_processors.py	Sun Nov 14 20:25:22 2010 +0100
@@ -0,0 +1,11 @@
+from django.conf import settings
+import leezam #@UnresolvedImport
+
+def version(request):
+    return {'VERSION': leezam.VERSION_STR }
+
+def base(request):
+    return {'BASE_URL': settings.BASE_URL, 'MEDIA_URL': settings.MEDIA_URL }
+
+def web(request):
+    return {'WEB_URL': settings.WEB_URL }