diff --git a/.gitignore b/.gitignore
index f70efa66584272e181a6fadc9ee689cda535c22d..f9155eaedd8dd915775ef119335aa04dbd9de47e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,6 +20,8 @@
 /data/index/*
 /data/locks/*
 /data/media/*
+/data/media_meta/*
+/data/media_attic/*
 /data/meta/*
 /data/pages/*
 /data/tmp/*
diff --git a/_test/cases/inc/auth_password.test.php b/_test/cases/inc/auth_password.test.php
index 8646e32261da79152a2075afae597fc379111c9a..928552a146d304338250715c8e7e3013aaa570b3 100644
--- a/_test/cases/inc/auth_password.test.php
+++ b/_test/cases/inc/auth_password.test.php
@@ -43,8 +43,7 @@ class auth_password_test extends UnitTestCase {
         foreach($this->passes as $method => $hash){
             $info = "testing method $method";
             $this->signal('failinfo',$info);
-
-            $hash = auth_cryptPassword('foo'.$method);
+            $hash = auth_cryptPassword('foo'.$method,$method);
             $this->assertTrue(auth_verifyPassword('foo'.$method,$hash));
         }
     }
diff --git a/_test/cases/inc/pageutils_clean_id.test.php b/_test/cases/inc/pageutils_clean_id.test.php
index 01fa7dc1c843dd28e06370663290f9ec38b9a771..167229c7f8b68c12d394ef1cc8694dd41b8710c7 100644
--- a/_test/cases/inc/pageutils_clean_id.test.php
+++ b/_test/cases/inc/pageutils_clean_id.test.php
@@ -35,6 +35,16 @@ class init_clean_id_test extends UnitTestCase {
         $tests[] = array('ښ侧化并곦  β',false,'ښ侧化并곦_β');
         $tests[] = array('page:page',false,'page:page');
         $tests[] = array('page;page',false,'page:page');
+        $tests[] = array('page:page 1.2',false,'page:page_1.2');
+
+        $tests[] = array('page._#!','false','page');
+        $tests[] = array('._#!page','false','page');
+        $tests[] = array('page._#!page','false','page._page');
+        $tests[] = array('ns._#!:page','false','ns:page');
+        $tests[] = array('ns:._#!page','false','ns:page');
+        $tests[] = array('ns._#!ns:page','false','ns._ns:page');
+        $tests[] = array('ns_:page',false,'ns:page');
+        $tests[] = array('page...page','false','page...page');
 
         $conf['useslash'] = 0;
         $tests[] = array('page/page',false,'page_page');
diff --git a/_test/cases/inc/utf8_stripspecials.test.php b/_test/cases/inc/utf8_stripspecials.test.php
index 85df75fa1630b99685a1b6716d394ca05d0de12d..481f476506a35c94c0597ac9e5ac6b282688080e 100644
--- a/_test/cases/inc/utf8_stripspecials.test.php
+++ b/_test/cases/inc/utf8_stripspecials.test.php
@@ -17,6 +17,7 @@ class utf8_stripspecials extends UnitTestCase {
         $tests[] = array('ascii.string','','\._\-:\*','asciistring');
         $tests[] = array('ascii.string',' ','\._\-:\*','ascii string');
         $tests[] = array('2.1.14',' ','\._\-:\*','2 1 14');
+        $tests[] = array('string with nbsps','_','\*','string_with_nbsps');
 
         foreach($tests as $test){
             $this->assertEqual(utf8_stripspecials($test[0],$test[1],$test[2]),$test[3]);
diff --git a/_test/jslint.js b/_test/jslint.js
new file mode 100644
index 0000000000000000000000000000000000000000..730f8d8a8b9daf47190c3d7a257a0ba6c28bae06
--- /dev/null
+++ b/_test/jslint.js
@@ -0,0 +1,89 @@
+/**
+ * Copy to a JavaScript console on your DokuWiki instance and execute
+ * Runs JSLint on all our JavaScript files with our settings
+ */
+
+(function () {
+var globals = ['jQuery', 'SIG', 'NS', 'JSINFO', 'LANG', 'DOKU_BASE',
+               'DOKU_UHC' // FIXME: Should be moved to JSINFO
+    ], files = {
+        'scripts/behaviour.js': null,
+        //"scripts/compatibility.js": null,
+        "scripts/cookie.js": null,
+        //"scripts/delay.js": null,
+        //"scripts/drag.js": null,
+        "scripts/edit.js": null,
+        "scripts/editor.js": null,
+        "scripts/helpers.js": null,
+        "scripts/hotkeys.js": null,
+        "scripts/index.js": null,
+        "scripts/linkwiz.js": null,
+        "scripts/locktimer.js": null,
+        "scripts/media.js": null,
+        "scripts/page.js": null,
+        "scripts/qsearch.js": null,
+        "scripts/script.js": null,
+        "scripts/textselection.js": null,
+        "scripts/toolbar.js": null,
+        "scripts/tree.js": null //,
+        //"scripts/tw-sack.js": null
+    }, overwrites = {
+        "scripts/script.js": {evil: true},
+        "scripts/media.js": {devel: true, windows: true},
+        "scripts/locktimer.js": {devel: true},
+        "scripts/behaviour.js": {devel: true},
+        "scripts/helpers.js": {windows: true}
+    };
+
+jQuery.ajax({
+    dataType: 'script',
+    type: "GET",
+//  url: 'http://jshint.com/jshint.js'
+    url: 'https://raw.github.com/douglascrockford/JSLint/master/jslint.js',
+    success: function () {
+        for (var file in files) {
+            jQuery.ajax({
+                cache: false,
+                async: false,
+                type: "GET",
+                url: DOKU_BASE + 'lib/' + file,
+                dataType: 'text',
+                success: function (res) {
+                    files[file] = res;
+                    var data = lint(files[file]);
+                    jQuery.merge(globals, data.globals);
+            }});
+        }
+
+        for (var file in files) {
+            if (!files[file]) {
+                continue;
+            }
+            // FIXME more fine-grained write access
+            var data = lint('/*global ' + globals.join(':true, ') +
+                            ':true*/\n' + files[file], overwrites[file]);
+            console.log(file);
+            jQuery.each(data.errors || [], function (_, val) {
+                if (val === null) {
+                    return;
+                }
+                console.error(val.reason + ' (Line ' + (val.line - 1) +
+                              ', character ' + val.character + '):\n' +
+                              val.evidence);
+            });
+        };
+    }
+});
+
+function lint(txt, overwrite) {
+    JSLINT(txt, jQuery.extend({
+        // These settings are necessary
+        browser: true,
+
+        // Things we probably should learn someday
+        sloppy: true, white: true, eqeq: true, nomen: true,
+        plusplus: true, regexp: true
+    }, overwrite));
+    return JSLINT.data();
+}
+})();
diff --git a/conf/plugins.protected.php b/conf/plugins.required.php
similarity index 100%
rename from conf/plugins.protected.php
rename to conf/plugins.required.php
diff --git a/data/deleted.files b/data/deleted.files
index ec5d3b65d8a9ddc6f0df3525b290f2a16729c689..d034e1d5b526590dd4e3750911ae5b977669e8ed 100644
--- a/data/deleted.files
+++ b/data/deleted.files
@@ -4,6 +4,18 @@
 # A copy of this list is maintained at
 # http://www.dokuwiki.org/install:upgrade#files_to_remove
 
+# removed in 2011-11-10
+lib/_fla/.htaccess
+lib/_fla/MultipleUpload.as
+lib/_fla/README
+lib/_fla/index.html
+lib/_fla/multipleUpload.fla
+lib/exe/multipleUpload.swf
+lib/images/multiupload.png
+lib/scripts/ajax.js
+lib/scripts/events.js
+lib/scripts/subscriptions.js
+
 # removed in 2011-05-25
 conf/words.aspell.dist
 lib/styles/style.css
diff --git a/doku.php b/doku.php
index 4901750a80469a4a4f88109f88fff195e0f0170c..e2375729892e8f88a522066d9409dcccb2e3047a 100644
--- a/doku.php
+++ b/doku.php
@@ -7,7 +7,7 @@
  */
 
 // update message version
-$updateVersion = 34;
+$updateVersion = 35;
 
 //  xdebug_start_profiling();
 
diff --git a/inc/FeedParser.php b/inc/FeedParser.php
index 235bed46e694f761720bce19f381b864b172bd30..e5f1fb6369f96d3b0904d5356f336bed67617fad 100644
--- a/inc/FeedParser.php
+++ b/inc/FeedParser.php
@@ -49,13 +49,15 @@ class FeedParser_File extends SimplePie_File {
      */
     function FeedParser_File($url, $timeout=10, $redirects=5,
                              $headers=null, $useragent=null, $force_fsockopen=false) {
-        @parent::__construct();
         $this->http    = new DokuHTTPClient();
         $this->success = $this->http->sendRequest($url);
 
         $this->headers = $this->http->resp_headers;
         $this->body    = $this->http->resp_body;
         $this->error   = $this->http->error;
+
+        $this->method  = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
+
         return $this->success;
     }
 
diff --git a/inc/JpegMeta.php b/inc/JpegMeta.php
index afa70168c48eeccc4151c644218cda3d349fdd62..5c043fb6bd7920af801a423302391ba20a252086 100644
--- a/inc/JpegMeta.php
+++ b/inc/JpegMeta.php
@@ -1207,7 +1207,7 @@ class JpegMeta {
      * @author  Andreas Gohr <andi@splitbrain.org>
      */
     function _parseFileInfo() {
-        if (file_exists($this->_fileName)) {
+        if (file_exists($this->_fileName) && is_file($this->_fileName)) {
             $this->_info['file'] = array();
             $this->_info['file']['Name'] = basename($this->_fileName);
             $this->_info['file']['Path'] = fullpath($this->_fileName);
diff --git a/inc/PassHash.class.php b/inc/PassHash.class.php
index 541de675271fbfba8bde7afdbdd0eaed3655c493..31493c02249ef6aa877d595ea25a7dd64b00d15c 100644
--- a/inc/PassHash.class.php
+++ b/inc/PassHash.class.php
@@ -82,7 +82,7 @@ class PassHash {
     public function gen_salt($len=32){
         $salt  = '';
         $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
-        for($i=0;$i<$len,$i++;) $salt .= $chars[mt_rand(0,61)];
+        for($i=0;$i<$len;$i++) $salt .= $chars[mt_rand(0,61)];
         return $salt;
     }
 
@@ -292,17 +292,20 @@ class PassHash {
      * Password hashing method 'pmd5'
      *
      * Uses salted MD5 hashs. Salt is 1+8 bytes long, 1st byte is the
-     * iteration count.
+     * iteration count when given, for null salts $compute is used.
      *
      * @param string $clear - the clear text to hash
      * @param string $salt  - the salt to use, null for random
      * @param string $magic - the hash identifier (P or H)
+     * @param int  $compute - the iteration count for new passwords
      * @returns string - hashed password
      */
-    public function hash_pmd5($clear, $salt=null, $magic='P'){
-        $this->init_salt($salt);
-
+    public function hash_pmd5($clear, $salt=null, $magic='P',$compute=8){
         $itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+        if(is_null($salt)){
+            $this->init_salt($salt);
+            $salt = $itoa64[$compute].$salt; // prefix iteration count
+        }
         $iterc = $salt[0]; // pos 0 of salt is iteration count
         $iter = strpos($itoa64,$iterc);
         $iter = 1 << $iter;
@@ -340,8 +343,8 @@ class PassHash {
     /**
      * Alias for hash_pmd5
      */
-    public function hash_hmd5($clear, $salt=null, $magic='H'){
-        return $this->hash_pmd5($clear, $salt, $magic);
+    public function hash_hmd5($clear, $salt=null, $magic='H', $compute=8){
+        return $this->hash_pmd5($clear, $salt, $magic, $compute);
     }
 
     /**
diff --git a/inc/SimplePie.php b/inc/SimplePie.php
index d35443165bff8010ec1f5c1e9560480a8a11b813..10d8141bd9722b2fc2f5bbe780fc6ae319042f76 100644
--- a/inc/SimplePie.php
+++ b/inc/SimplePie.php
@@ -5,7 +5,7 @@
  * A PHP-Based RSS and Atom Feed Framework.
  * Takes the hard work out of managing a complete RSS/Atom solution.
  *
- * Copyright (c) 2004-2009, Ryan Parman and Geoffrey Sneddon
+ * Copyright (c) 2004-2011, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without modification, are
@@ -33,10 +33,11 @@
  * POSSIBILITY OF SUCH DAMAGE.
  *
  * @package SimplePie
- * @version 1.2.1-dev
- * @copyright 2004-2009 Ryan Parman, Geoffrey Sneddon
+ * @version 1.2.1
+ * @copyright 2004-2011 Ryan Parman, Geoffrey Sneddon, Ryan McCue
  * @author Ryan Parman
  * @author Geoffrey Sneddon
+ * @author Ryan McCue
  * @link http://simplepie.org/ SimplePie
  * @link http://simplepie.org/support/ Please submit all bug reports and feature requests to the SimplePie forums
  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
@@ -55,9 +56,8 @@ define('SIMPLEPIE_VERSION', '1.2.1-dev');
 
 /**
  * SimplePie Build
- * @todo Hardcode for release (there's no need to have to call SimplePie_Misc::parse_date() only every load of simplepie.inc)
  */
-define('SIMPLEPIE_BUILD', gmdate('YmdHis', SimplePie_Misc::parse_date(substr('$Date$', 7, 25)) ? SimplePie_Misc::parse_date(substr('$Date$', 7, 25)) : filemtime(__FILE__)));
+define('SIMPLEPIE_BUILD', '20111015034325');
 
 /**
  * SimplePie Website URL
@@ -3279,6 +3279,11 @@ class SimplePie_Item
 		{
 			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
 		}
+		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
+		{
+			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
+		}
+
 		elseif (!$description_only)
 		{
 			return $this->get_content(true);
@@ -3643,7 +3648,7 @@ class SimplePie_Item
 		{
 			return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT);
 		}
-		elseif (($date = $this->get_date('U')) !== null)
+		elseif (($date = $this->get_date('U')) !== null && $date !== false)
 		{
 			return strftime($date_format, $date);
 		}
@@ -4068,16 +4073,16 @@ class SimplePie_Item
 					$temp = explode(':', $this->sanitize($duration_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
 					if (sizeof($temp) > 0)
 					{
-						(int) $seconds = array_pop($temp);
+						$seconds = (int) array_pop($temp);
 					}
 					if (sizeof($temp) > 0)
 					{
-						(int) $minutes = array_pop($temp);
+						$minutes = (int) array_pop($temp);
 						$seconds += $minutes * 60;
 					}
 					if (sizeof($temp) > 0)
 					{
-						(int) $hours = array_pop($temp);
+						$hours = (int) array_pop($temp);
 						$seconds += $hours * 3600;
 					}
 					unset($temp);
@@ -5056,7 +5061,7 @@ class SimplePie_Item
 			{
 				foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
 				{
-					if (isset($content['attribs']['']['url']))
+					if (isset($content['attribs']['']['url']) || isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
 					{
 						// Attributes
 						$bitrate = null;
@@ -5141,8 +5146,10 @@ class SimplePie_Item
 						{
 							$width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
 						}
-						$url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-
+						if (isset($content['attribs']['']['url']))
+						{
+							$url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+						}
 						// Checking the other optional media: elements. Priority: media:content, media:group, item, channel
 
 						// CAPTIONS
@@ -7731,16 +7738,17 @@ class SimplePie_File
 			{
 				$this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
 				$url_parts = parse_url($url);
+				$socket_host = $url_parts['host'];
 				if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https')
 				{
-					$url_parts['host'] = "ssl://$url_parts[host]";
+					$socket_host = "ssl://$url_parts[host]";
 					$url_parts['port'] = 443;
 				}
 				if (!isset($url_parts['port']))
 				{
 					$url_parts['port'] = 80;
 				}
-				$fp = @fsockopen($url_parts['host'], $url_parts['port'], $errno, $errstr, $timeout);
+				$fp = @fsockopen($socket_host, $url_parts['port'], $errno, $errstr, $timeout);
 				if (!$fp)
 				{
 					$this->error = 'fsockopen error: ' . $errstr;
@@ -8486,7 +8494,7 @@ class SimplePie_gzdecode
 
 				// Get the length of the extra field
 				$len = current(unpack('v', substr($this->compressed_data, $this->position, 2)));
-				$position += 2;
+				$this->position += 2;
 
 				// Check the length of the string is still valid
 				$this->min_compressed_size += $len + 4;
@@ -9448,12 +9456,12 @@ class SimplePie_Misc
 		}
 
 		// This is first, as behaviour of this is completely predictable
-		if ($input === 'Windows-1252' && $output === 'UTF-8')
+		if ($input === 'windows-1252' && $output === 'UTF-8')
 		{
 			return SimplePie_Misc::windows_1252_to_utf8($data);
 		}
 		// This is second, as behaviour of this varies only with PHP version (the middle part of this expression checks the encoding is supported).
-		elseif (function_exists('mb_convert_encoding') && @mb_convert_encoding("\x80", 'UTF-16BE', $input) !== "\x00\x80" && ($return = @mb_convert_encoding($data, $output, $input)))
+		elseif (function_exists('mb_convert_encoding') && @mb_convert_encoding("\x80", 'UTF-16BE', $input) !== "\x00\x80" && in_array($input, mb_list_encodings()) && ($return = @mb_convert_encoding($data, $output, $input)))
 		{
 			return $return;
 		}
@@ -9469,6 +9477,17 @@ class SimplePie_Misc
 		}
 	}
 
+	/**
+	 * Normalize an encoding name
+	 *
+	 * This is automatically generated by create.php
+	 *
+	 * To generate it, run `php create.php` on the command line, and copy the
+	 * output to replace this function.
+	 *
+	 * @param string $charset Character set to standardise
+	 * @return string Standardised name
+	 */
 	function encoding($charset)
 	{
 		// Normalization from UTS #22
@@ -9502,7 +9521,6 @@ class SimplePie_Misc
 
 			case 'big5':
 			case 'csbig5':
-			case 'xxbig5':
 				return 'Big5';
 
 			case 'big5hkscs':
@@ -9658,14 +9676,14 @@ class SimplePie_Misc
 			case 'isoir85':
 				return 'ES2';
 
-			case 'cseucfixwidjapanese':
-			case 'extendedunixcodefixedwidthforjapanese':
-				return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
-
 			case 'cseucpkdfmtjapanese':
 			case 'eucjp':
 			case 'extendedunixcodepackedformatforjapanese':
-				return 'Extended_UNIX_Code_Packed_Format_for_Japanese';
+				return 'EUC-JP';
+
+			case 'cseucfixwidjapanese':
+			case 'extendedunixcodefixedwidthforjapanese':
+				return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
 
 			case 'gb18030':
 				return 'GB18030';
@@ -9744,80 +9762,6 @@ class SimplePie_Misc
 			case 'ibmthai':
 				return 'IBM-Thai';
 
-			case 'ccsid858':
-			case 'cp858':
-			case 'ibm858':
-			case 'pcmultilingual850euro':
-				return 'IBM00858';
-
-			case 'ccsid924':
-			case 'cp924':
-			case 'ebcdiclatin9euro':
-			case 'ibm924':
-				return 'IBM00924';
-
-			case 'ccsid1140':
-			case 'cp1140':
-			case 'ebcdicus37euro':
-			case 'ibm1140':
-				return 'IBM01140';
-
-			case 'ccsid1141':
-			case 'cp1141':
-			case 'ebcdicde273euro':
-			case 'ibm1141':
-				return 'IBM01141';
-
-			case 'ccsid1142':
-			case 'cp1142':
-			case 'ebcdicdk277euro':
-			case 'ebcdicno277euro':
-			case 'ibm1142':
-				return 'IBM01142';
-
-			case 'ccsid1143':
-			case 'cp1143':
-			case 'ebcdicfi278euro':
-			case 'ebcdicse278euro':
-			case 'ibm1143':
-				return 'IBM01143';
-
-			case 'ccsid1144':
-			case 'cp1144':
-			case 'ebcdicit280euro':
-			case 'ibm1144':
-				return 'IBM01144';
-
-			case 'ccsid1145':
-			case 'cp1145':
-			case 'ebcdices284euro':
-			case 'ibm1145':
-				return 'IBM01145';
-
-			case 'ccsid1146':
-			case 'cp1146':
-			case 'ebcdicgb285euro':
-			case 'ibm1146':
-				return 'IBM01146';
-
-			case 'ccsid1147':
-			case 'cp1147':
-			case 'ebcdicfr297euro':
-			case 'ibm1147':
-				return 'IBM01147';
-
-			case 'ccsid1148':
-			case 'cp1148':
-			case 'ebcdicinternational500euro':
-			case 'ibm1148':
-				return 'IBM01148';
-
-			case 'ccsid1149':
-			case 'cp1149':
-			case 'ebcdicis871euro':
-			case 'ibm1149':
-				return 'IBM01149';
-
 			case 'cp37':
 			case 'csibm37':
 			case 'ebcdiccpca':
@@ -9965,6 +9909,12 @@ class SimplePie_Misc
 			case 'ibm857':
 				return 'IBM857';
 
+			case 'ccsid858':
+			case 'cp858':
+			case 'ibm858':
+			case 'pcmultilingual850euro':
+				return 'IBM00858';
+
 			case '860':
 			case 'cp860':
 			case 'csibm860':
@@ -10067,6 +10017,12 @@ class SimplePie_Misc
 			case 'ibm918':
 				return 'IBM918';
 
+			case 'ccsid924':
+			case 'cp924':
+			case 'ebcdiclatin9euro':
+			case 'ibm924':
+				return 'IBM00924';
+
 			case 'cp1026':
 			case 'csibm1026':
 			case 'ibm1026':
@@ -10075,6 +10031,68 @@ class SimplePie_Misc
 			case 'ibm1047':
 				return 'IBM1047';
 
+			case 'ccsid1140':
+			case 'cp1140':
+			case 'ebcdicus37euro':
+			case 'ibm1140':
+				return 'IBM01140';
+
+			case 'ccsid1141':
+			case 'cp1141':
+			case 'ebcdicde273euro':
+			case 'ibm1141':
+				return 'IBM01141';
+
+			case 'ccsid1142':
+			case 'cp1142':
+			case 'ebcdicdk277euro':
+			case 'ebcdicno277euro':
+			case 'ibm1142':
+				return 'IBM01142';
+
+			case 'ccsid1143':
+			case 'cp1143':
+			case 'ebcdicfi278euro':
+			case 'ebcdicse278euro':
+			case 'ibm1143':
+				return 'IBM01143';
+
+			case 'ccsid1144':
+			case 'cp1144':
+			case 'ebcdicit280euro':
+			case 'ibm1144':
+				return 'IBM01144';
+
+			case 'ccsid1145':
+			case 'cp1145':
+			case 'ebcdices284euro':
+			case 'ibm1145':
+				return 'IBM01145';
+
+			case 'ccsid1146':
+			case 'cp1146':
+			case 'ebcdicgb285euro':
+			case 'ibm1146':
+				return 'IBM01146';
+
+			case 'ccsid1147':
+			case 'cp1147':
+			case 'ebcdicfr297euro':
+			case 'ibm1147':
+				return 'IBM01147';
+
+			case 'ccsid1148':
+			case 'cp1148':
+			case 'ebcdicinternational500euro':
+			case 'ibm1148':
+				return 'IBM01148';
+
+			case 'ccsid1149':
+			case 'cp1149':
+			case 'ebcdicis871euro':
+			case 'ibm1149':
+				return 'IBM01149';
+
 			case 'csiso143iecp271':
 			case 'iecp271':
 			case 'isoir143':
@@ -10617,11 +10635,6 @@ class SimplePie_Misc
 			case 'sen850200c':
 				return 'SEN_850200_C';
 
-			case 'csshiftjis':
-			case 'mskanji':
-			case 'shiftjis':
-				return 'Shift_JIS';
-
 			case 'csiso102t617bit':
 			case 'isoir102':
 			case 't617bit':
@@ -10720,7 +10733,10 @@ class SimplePie_Misc
 			case 'viscii':
 				return 'VISCII';
 
+			case 'csshiftjis':
 			case 'cswindows31j':
+			case 'mskanji':
+			case 'shiftjis':
 			case 'windows31j':
 				return 'Windows-31J';
 
@@ -11381,6 +11397,58 @@ function embed_wmedia(width, height, link) {
 }
 		<?php
 	}
+
+
+
+	/**
+	 * Format debugging information
+	 */
+	function debug($sp)
+	{
+		$info = 'SimplePie ' . SIMPLEPIE_VERSION . ' Build ' . SIMPLEPIE_BUILD . "\n";
+		$info .= 'PHP ' . PHP_VERSION . "\n";
+		if ($sp->error() !== null)
+		{
+			$info .= 'Error occurred: ' . $sp->error() . "\n";
+		}
+		else
+		{
+			$info .= "No error found.\n";
+		}
+		$info .= "Extensions:\n";
+		$extensions = array('pcre', 'curl', 'zlib', 'mbstring', 'iconv', 'xmlreader', 'xml');
+		foreach ($extensions as $ext)
+		{
+			if (extension_loaded($ext))
+			{
+				$info .= "    $ext loaded\n";
+				switch ($ext)
+				{
+					case 'pcre':
+						$info .= '      Version ' . PCRE_VERSION . "\n";
+						break;
+					case 'curl':
+						$version = curl_version();
+						$info .= '      Version ' . $version['version'] . "\n";
+						break;
+					case 'mbstring':
+						$info .= '      Overloading: ' . mb_get_info('func_overload') . "\n";
+						break;
+					case 'iconv':
+						$info .= '      Version ' . ICONV_VERSION . "\n";
+						break;
+					case 'xml':
+						$info .= '      Version ' . LIBXML_DOTTED_VERSION . "\n";
+						break;
+				}
+			}
+			else
+			{
+				$info .= "    $ext not loaded\n";
+			}
+		}
+		return $info;
+	}
 }
 
 /**
@@ -11852,14 +11920,135 @@ class SimplePie_IRI
 	/**
 	 * Replace invalid character with percent encoding
 	 *
-	 * @access private
 	 * @param string $string Input string
 	 * @param string $valid_chars Valid characters
 	 * @param int $case Normalise case
 	 * @return string
 	 */
-	function replace_invalid_with_pct_encoding($string, $valid_chars, $case = SIMPLEPIE_SAME_CASE)
+	function replace_invalid_with_pct_encoding($string, $valid_chars, $case = SIMPLEPIE_SAME_CASE, $iprivate = false)
 	{
+		// Normalize as many pct-encoded sections as possible
+		$string = preg_replace_callback('/(?:%[A-Fa-f0-9]{2})+/', array(&$this, 'remove_iunreserved_percent_encoded'), $string);
+
+		// Replace invalid percent characters
+		$string = preg_replace('/%(?![A-Fa-f0-9]{2})/', '%25', $string);
+
+		// Add unreserved and % to $valid_chars (the latter is safe because all
+		// pct-encoded sections are now valid).
+		$valid_chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~%';
+
+		// Now replace any bytes that aren't allowed with their pct-encoded versions
+		$position = 0;
+		$strlen = strlen($string);
+		while (($position += strspn($string, $valid_chars, $position)) < $strlen)
+		{
+			$value = ord($string[$position]);
+
+			// Start position
+			$start = $position;
+
+			// By default we are valid
+			$valid = true;
+
+			// No one byte sequences are valid due to the while.
+			// Two byte sequence:
+			if (($value & 0xE0) === 0xC0)
+			{
+				$character = ($value & 0x1F) << 6;
+				$length = 2;
+				$remaining = 1;
+			}
+			// Three byte sequence:
+			elseif (($value & 0xF0) === 0xE0)
+			{
+				$character = ($value & 0x0F) << 12;
+				$length = 3;
+				$remaining = 2;
+			}
+			// Four byte sequence:
+			elseif (($value & 0xF8) === 0xF0)
+			{
+				$character = ($value & 0x07) << 18;
+				$length = 4;
+				$remaining = 3;
+			}
+			// Invalid byte:
+			else
+			{
+				$valid = false;
+				$length = 1;
+				$remaining = 0;
+			}
+
+			if ($remaining)
+			{
+				if ($position + $length <= $strlen)
+				{
+					for ($position++; $remaining; $position++)
+					{
+						$value = ord($string[$position]);
+
+						// Check that the byte is valid, then add it to the character:
+						if (($value & 0xC0) === 0x80)
+						{
+							$character |= ($value & 0x3F) << (--$remaining * 6);
+						}
+						// If it is invalid, count the sequence as invalid and reprocess the current byte:
+						else
+						{
+							$valid = false;
+							$position--;
+							break;
+						}
+					}
+				}
+				else
+				{
+					$position = $strlen - 1;
+					$valid = false;
+				}
+			}
+
+			// Percent encode anything invalid or not in ucschar
+			if (
+				// Invalid sequences
+				!$valid
+				// Non-shortest form sequences are invalid
+				|| $length > 1 && $character <= 0x7F
+				|| $length > 2 && $character <= 0x7FF
+				|| $length > 3 && $character <= 0xFFFF
+				// Outside of range of ucschar codepoints
+				// Noncharacters
+				|| ($character & 0xFFFE) === 0xFFFE
+				|| $character >= 0xFDD0 && $character <= 0xFDEF
+				|| (
+					// Everything else not in ucschar
+					   $character > 0xD7FF && $character < 0xF900
+					|| $character < 0xA0
+					|| $character > 0xEFFFD
+				)
+				&& (
+					// Everything not in iprivate, if it applies
+					   !$iprivate
+					|| $character < 0xE000
+					|| $character > 0x10FFFD
+				)
+			)
+			{
+				// If we were a character, pretend we weren't, but rather an error.
+				if ($valid)
+					$position--;
+
+				for ($j = $start; $j <= $position; $j++)
+				{
+					$string = substr_replace($string, sprintf('%%%02X', ord($string[$j])), $j, 1);
+					$j += 2;
+					$position += 2;
+					$strlen += 2;
+				}
+			}
+		}
+
 		// Normalise case
 		if ($case & SIMPLEPIE_LOWERCASE)
 		{
@@ -11870,61 +12059,148 @@ class SimplePie_IRI
 			$string = strtoupper($string);
 		}
 
-		// Store position and string length (to avoid constantly recalculating this)
-		$position = 0;
-		$strlen = strlen($string);
+		return $string;
+	}
 
-		// Loop as long as we have invalid characters, advancing the position to the next invalid character
-		while (($position += strspn($string, $valid_chars, $position)) < $strlen)
+	/**
+	 * Callback function for preg_replace_callback.
+	 *
+	 * Removes sequences of percent encoded bytes that represent UTF-8
+	 * encoded characters in iunreserved
+	 *
+	 * @access private
+	 * @param array $match PCRE match
+	 * @return string Replacement
+	 */
+	function remove_iunreserved_percent_encoded($match)
+	{
+		// As we just have valid percent encoded sequences we can just explode
+		// and ignore the first member of the returned array (an empty string).
+		$bytes = explode('%', $match[0]);
+
+		// Initialize the new string (this is what will be returned) and that
+		// there are no bytes remaining in the current sequence (unsurprising
+		// at the first byte!).
+		$string = '';
+		$remaining = 0;
+
+		// Loop over each and every byte, and set $value to its value
+		for ($i = 1, $len = count($bytes); $i < $len; $i++)
 		{
-			// If we have a % character
-			if ($string[$position] === '%')
+			$value = hexdec($bytes[$i]);
+
+			// If we're the first byte of sequence:
+			if (!$remaining)
 			{
-				// If we have a pct-encoded section
-				if ($position + 2 < $strlen && strspn($string, '0123456789ABCDEFabcdef', $position + 1, 2) === 2)
-				{
-					// Get the the represented character
-					$chr = chr(hexdec(substr($string, $position + 1, 2)));
+				// Start position
+				$start = $i;
 
-					// If the character is valid, replace the pct-encoded with the actual character while normalising case
-					if (strpos($valid_chars, $chr) !== false)
-					{
-						if ($case & SIMPLEPIE_LOWERCASE)
-						{
-							$chr = strtolower($chr);
-						}
-						elseif ($case & SIMPLEPIE_UPPERCASE)
-						{
-							$chr = strtoupper($chr);
-						}
-						$string = substr_replace($string, $chr, $position, 3);
-						$strlen -= 2;
-						$position++;
-					}
+				// By default we are valid
+				$valid = true;
 
-					// Otherwise just normalise the pct-encoded to uppercase
-					else
+				// One byte sequence:
+				if ($value <= 0x7F)
+				{
+					$character = $value;
+					$length = 1;
+				}
+				// Two byte sequence:
+				elseif (($value & 0xE0) === 0xC0)
+				{
+					$character = ($value & 0x1F) << 6;
+					$length = 2;
+					$remaining = 1;
+				}
+				// Three byte sequence:
+				elseif (($value & 0xF0) === 0xE0)
+				{
+					$character = ($value & 0x0F) << 12;
+					$length = 3;
+					$remaining = 2;
+				}
+				// Four byte sequence:
+				elseif (($value & 0xF8) === 0xF0)
+				{
+					$character = ($value & 0x07) << 18;
+					$length = 4;
+					$remaining = 3;
+				}
+				// Invalid byte:
+				else
+				{
+					$valid = false;
+					$remaining = 0;
+				}
+			}
+			// Continuation byte:
+			else
+			{
+				// Check that the byte is valid, then add it to the character:
+				if (($value & 0xC0) === 0x80)
+				{
+					$remaining--;
+					$character |= ($value & 0x3F) << ($remaining * 6);
+				}
+				// If it is invalid, count the sequence as invalid and reprocess the current byte as the start of a sequence:
+				else
+				{
+					$valid = false;
+					$remaining = 0;
+					$i--;
+				}
+			}
+
+			// If we've reached the end of the current byte sequence, append it to Unicode::$data
+			if (!$remaining)
+			{
+				// Percent encode anything invalid or not in iunreserved
+				if (
+					// Invalid sequences
+					!$valid
+					// Non-shortest form sequences are invalid
+					|| $length > 1 && $character <= 0x7F
+					|| $length > 2 && $character <= 0x7FF
+					|| $length > 3 && $character <= 0xFFFF
+					// Outside of range of iunreserved codepoints
+					|| $character < 0x2D
+					|| $character > 0xEFFFD
+					// Noncharacters
+					|| ($character & 0xFFFE) === 0xFFFE
+					|| $character >= 0xFDD0 && $character <= 0xFDEF
+					// Everything else not in iunreserved (this is all BMP)
+					|| $character === 0x2F
+					|| $character > 0x39 && $character < 0x41
+					|| $character > 0x5A && $character < 0x61
+					|| $character > 0x7A && $character < 0x7E
+					|| $character > 0x7E && $character < 0xA0
+					|| $character > 0xD7FF && $character < 0xF900
+				)
+				{
+					for ($j = $start; $j <= $i; $j++)
 					{
-						$string = substr_replace($string, strtoupper(substr($string, $position + 1, 2)), $position + 1, 2);
-						$position += 3;
+						$string .= '%' . strtoupper($bytes[$j]);
 					}
 				}
-				// If we don't have a pct-encoded section, just replace the % with its own esccaped form
 				else
 				{
-					$string = substr_replace($string, '%25', $position, 1);
-					$strlen += 2;
-					$position += 3;
+					for ($j = $start; $j <= $i; $j++)
+					{
+						$string .= chr(hexdec($bytes[$j]));
+					}
 				}
 			}
-			// If we have an invalid character, change into its pct-encoded form
-			else
+		}
+
+		// If we have any bytes left over they are invalid (i.e., we are
+		// mid-way through a multi-byte sequence)
+		if ($remaining)
+		{
+			for ($j = $start; $j < $len; $j++)
 			{
-				$replacement = sprintf("%%%02X", ord($string[$position]));
-				$string = str_replace($string[$position], $replacement, $string);
-				$strlen = strlen($string);
+				$string .= '%' . strtoupper($bytes[$j]);
 			}
 		}
+
 		return $string;
 	}
 
@@ -14446,7 +14722,7 @@ class SimplePie_Parser
 					case constant('XMLReader::END_ELEMENT'):
 						if ($xml->namespaceURI !== '')
 						{
-							$tagName = "{$xml->namespaceURI}{$this->separator}{$xml->localName}";
+							$tagName = $xml->namespaceURI . $this->separator . $xml->localName;
 						}
 						else
 						{
@@ -14458,7 +14734,7 @@ class SimplePie_Parser
 						$empty = $xml->isEmptyElement;
 						if ($xml->namespaceURI !== '')
 						{
-							$tagName = "{$xml->namespaceURI}{$this->separator}{$xml->localName}";
+							$tagName = $xml->namespaceURI . $this->separator . $xml->localName;
 						}
 						else
 						{
@@ -14469,7 +14745,7 @@ class SimplePie_Parser
 						{
 							if ($xml->namespaceURI !== '')
 							{
-								$attrName = "{$xml->namespaceURI}{$this->separator}{$xml->localName}";
+								$attrName = $xml->namespaceURI . $this->separator . $xml->localName;
 							}
 							else
 							{
diff --git a/inc/actions.php b/inc/actions.php
index 1a0ae4028c19d740a409a5cb6c516200e0d1d3b6..4a2e200ae5c1822a62b5199ade7f10721017f51b 100644
--- a/inc/actions.php
+++ b/inc/actions.php
@@ -101,7 +101,7 @@ function act_dispatch(){
             if(checkSecurityToken()){
                 $ACT = act_save($ACT);
             }else{
-                $ACT = 'show';
+                $ACT = 'preview';
             }
         }
 
@@ -215,7 +215,7 @@ function act_clean($act){
     //disable all acl related commands if ACL is disabled
     if(!$conf['useacl'] && in_array($act,array('login','logout','register','admin',
                     'subscribe','unsubscribe','profile','revert',
-                    'resendpwd','subscribens','unsubscribens',))){
+                    'resendpwd'))){
         msg('Command unavailable: '.htmlspecialchars($act),-1);
         return 'show';
     }
@@ -227,7 +227,7 @@ function act_clean($act){
                     'preview','search','show','check','index','revisions',
                     'diff','recent','backlink','admin','subscribe','revert',
                     'unsubscribe','profile','resendpwd','recover',
-                    'draftdel','subscribens','unsubscribens','sitemap','media')) && substr($act,0,7) != 'export_' ) {
+                    'draftdel','sitemap','media')) && substr($act,0,7) != 'export_' ) {
         msg('Command unknown: '.htmlspecialchars($act),-1);
         return 'show';
     }
diff --git a/inc/auth/ad.class.php b/inc/auth/ad.class.php
index 9ffd3e18b042bb07ebf394422fb2f47c144baaa5..1fddad243ef59efc9898e7a0bd7b51409f448a75 100644
--- a/inc/auth/ad.class.php
+++ b/inc/auth/ad.class.php
@@ -286,11 +286,13 @@ class auth_ad extends auth_basic {
         if(isset($changes['mail'])){
             $adchanges['email'] = $changes['mail'];
         }
-        try {
-            $return = $return & $this->adldap->user_modify($user,$adchanges);
-        } catch (adLDAPException $e) {
-            if ($this->cnf['debug']) msg('AD Auth: '.$e->getMessage(), -1);
-            $return = false;
+        if(count($adchanges)){
+            try {
+                $return = $return & $this->adldap->user_modify($user,$adchanges);
+            } catch (adLDAPException $e) {
+                if ($this->cnf['debug']) msg('AD Auth: '.$e->getMessage(), -1);
+                $return = false;
+            }
         }
 
         return $return;
diff --git a/inc/changelog.php b/inc/changelog.php
index fea39f9f7067e446821484e50336099c55c019ac..60f9b8657624f169706397cf1a126aa30874620f 100644
--- a/inc/changelog.php
+++ b/inc/changelog.php
@@ -74,7 +74,7 @@ function addLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extr
             'type'  => str_replace($strip, '', $type),
             'id'    => $id,
             'user'  => $user,
-            'sum'   => str_replace($strip, '', $summary),
+            'sum'   => utf8_substr(str_replace($strip, '', $summary),0,255),
             'extra' => str_replace($strip, '', $extra)
             );
 
@@ -131,7 +131,7 @@ function addMediaLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='',
             'type'  => str_replace($strip, '', $type),
             'id'    => $id,
             'user'  => $user,
-            'sum'   => str_replace($strip, '', $summary),
+            'sum'   => utf8_substr(str_replace($strip, '', $summary),0,255),
             'extra' => str_replace($strip, '', $extra)
             );
 
@@ -454,8 +454,9 @@ function getRevisions($id, $first, $num, $chunk_size=8192, $media=false) {
     }
     $num = max($num, 0);
     $chunk_size = max($chunk_size, 0);
-    if ($first<0) { $first = 0; }
-    else if (!$media && @file_exists(wikiFN($id)) || $media && @file_exists(mediaFN($id))) {
+    if ($first<0) {
+        $first = 0;
+    } else if (!$media && @file_exists(wikiFN($id)) || $media && @file_exists(mediaFN($id))) {
         // skip current revision if the page exists
         $first = max($first+1, 0);
     }
@@ -476,13 +477,21 @@ function getRevisions($id, $first, $num, $chunk_size=8192, $media=false) {
         $finger = max($tail-$chunk_size, 0);
         while ($count<$num+$first) {
             fseek($fp, $finger);
+            $nl = $finger;
             if ($finger>0) {
                 fgets($fp); // slip the finger forward to a new line
-                $finger = ftell($fp);
+                $nl = ftell($fp);
+            }
+
+            // was the chunk big enough? if not, take another bite
+            if($nl > 0 && $tail <= $nl){
+                $finger = max($finger-$chunk_size, 0);
+                continue;
+            }else{
+                $finger = $nl;
             }
 
             // read chunk
-            if ($tail<=$finger) { break; }
             $chunk = '';
             $read_size = max($tail-$finger, 0); // found chunk size
             $got = 0;
diff --git a/inc/common.php b/inc/common.php
index 56a7fb060dc6c200c1f3aaf94805c888614db012..0c769c50da9534b97b946affeb30f73613ac4e35 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -56,7 +56,7 @@ function stripctl($string){
  * @return  string
  */
 function getSecurityToken(){
-    return md5(auth_cookiesalt().session_id());
+    return md5(auth_cookiesalt().session_id().$_SERVER['REMOTE_USER']);
 }
 
 /**
@@ -714,8 +714,8 @@ function checklock($id){
     }
 
     //my own lock
-    $ip = io_readFile($lock);
-    if( ($ip == clientIP()) || ($ip == $_SERVER['REMOTE_USER']) ){
+    list($ip,$session) = explode("\n",io_readFile($lock));
+    if($ip == $_SERVER['REMOTE_USER'] || $ip == clientIP() || $session == session_id()){
         return false;
     }
 
@@ -738,7 +738,7 @@ function lock($id){
     if($_SERVER['REMOTE_USER']){
         io_saveFile($lock,$_SERVER['REMOTE_USER']);
     }else{
-        io_saveFile($lock,clientIP());
+        io_saveFile($lock,clientIP()."\n".session_id());
     }
 }
 
@@ -751,8 +751,8 @@ function lock($id){
 function unlock($id){
     $lock = wikiLockFN($id);
     if(@file_exists($lock)){
-        $ip = io_readFile($lock);
-        if( ($ip == clientIP()) || ($ip == $_SERVER['REMOTE_USER']) ){
+        list($ip,$session) = explode("\n",io_readFile($lock));
+        if($ip == $_SERVER['REMOTE_USER'] || $ip == clientIP() || $session == session_id()){
             @unlink($lock);
             return true;
         }
@@ -980,7 +980,7 @@ function saveWikiText($id,$text,$summary,$minor=false){
 
     $file = wikiFN($id);
     $old = @filemtime($file); // from page
-    $wasRemoved = empty($text);
+    $wasRemoved = (trim($text) == ''); // check for empty or whitespace only
     $wasCreated = !@file_exists($file);
     $wasReverted = ($REV==true);
     $newRev = false;
@@ -1558,4 +1558,16 @@ function valid_input_set($param, $valid_values, $array, $exc = '') {
     }
 }
 
+function get_doku_pref($pref, $default) {
+    if (strpos($_COOKIE['DOKU_PREFS'], $pref) !== false) {
+        $parts = explode('#', $_COOKIE['DOKU_PREFS']);
+        for ($i = 0; $i < count($parts); $i+=2){
+            if ($parts[$i] == $pref) {
+                return $parts[$i+1];
+            }
+        }
+    }
+    return $default;
+}
+
 //Setup VIM: ex: et ts=2 :
diff --git a/inc/config_cascade.php b/inc/config_cascade.php
index c01778e99f552e8a1cbf48556ffcf5eb668f203a..443114f5210c5041fa842fc03055d2969a6b991f 100644
--- a/inc/config_cascade.php
+++ b/inc/config_cascade.php
@@ -67,7 +67,10 @@ $config_cascade = array_merge(
         
         'plugins' => array(
             'local'     => array(DOKU_CONF.'plugins.local.php'),
-            'protected' => array(DOKU_CONF.'plugins.protected.php'),
+            'protected' => array(
+                DOKU_CONF.'plugins.required.php',
+                DOKU_CONF.'plugins.protected.php',
+                ),
             ),
         ),
         $config_cascade
diff --git a/inc/html.php b/inc/html.php
index 1c48d60594cb3479d78280e12b325c25fb7a78f2..1a2d7daeff78fd02fe52d105d09252dcfe4fa613 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -899,45 +899,41 @@ function html_li_default($item){
  *
  * @author Andreas Gohr <andi@splitbrain.org>
  */
-function html_buildlist($data,$class,$func,$lifunc='html_li_default'){
+function html_buildlist($data,$class,$func,$lifunc='html_li_default',$forcewrapper=false){
     if (count($data) === 0) {
         return '';
     }
 
     $start_level = $data[0]['level'];
-    $ret   = '';
-
-    if ($start_level < 2) {
-        // Trigger building a wrapper ul if the first level is
-        // 0 (we have a root object) or 1 (just the root content)
-        --$start_level;
-    }
-
     $level = $start_level;
+    $ret   = '';
+    $open  = 0;
 
     foreach ($data as $item){
 
         if( $item['level'] > $level ){
             //open new list
             for($i=0; $i<($item['level'] - $level); $i++){
-                if ($i) $ret .= "<li class=\"clear\">\n";
+                if ($i) $ret .= "<li class=\"clear\">";
                 $ret .= "\n<ul class=\"$class\">\n";
+                $open++;
             }
+            $level = $item['level'];
+
         }elseif( $item['level'] < $level ){
             //close last item
             $ret .= "</li>\n";
-            for ($i=0; $i<($level - $item['level']); $i++){
+            while( $level > $item['level'] && $open > 0 ){
                 //close higher lists
                 $ret .= "</ul>\n</li>\n";
+                $level--;
+                $open--;
             }
         } elseif ($ret !== '') {
-            //close last item
+            //close previous item
             $ret .= "</li>\n";
         }
 
-        //remember current level
-        $level = $item['level'];
-
         //print item
         $ret .= call_user_func($lifunc,$item);
         $ret .= '<div class="li">';
@@ -947,8 +943,15 @@ function html_buildlist($data,$class,$func,$lifunc='html_li_default'){
     }
 
     //close remaining items and lists
-    while(--$level >= $start_level) {
-        $ret .= "</li></ul>\n";
+    $ret .= "</li>\n";
+    while($open-- > 0) {
+        $ret .= "</ul></li>\n";
+    }
+
+    if ($forcewrapper || $start_level < 2) {
+        // Trigger building a wrapper ul if the first level is
+        // 0 (we have a root object) or 1 (just the root content)
+        $ret = "\n<ul class=\"$class\">\n".$ret."</ul>\n";
     }
 
     return $ret;
@@ -982,6 +985,76 @@ function html_backlinks(){
     }
 }
 
+function html_diff_head($l_rev, $r_rev, $id = null, $media = false) {
+    global $lang;
+    if ($id === null) {
+        global $ID;
+        $id = $ID;
+    }
+    $media_or_wikiFN = $media ? 'mediaFN' : 'wikiFN';
+    $ml_or_wl = $media ? 'ml' : 'wl';
+    $l_minor = $r_minor = '';
+
+    if(!$l_rev){
+        $l_head = '&mdash;';
+    }else{
+        $l_info   = getRevisionInfo($id,$l_rev,true, $media);
+        if($l_info['user']){
+            $l_user = editorinfo($l_info['user']);
+            if(auth_ismanager()) $l_user .= ' ('.$l_info['ip'].')';
+        } else {
+            $l_user = $l_info['ip'];
+        }
+        $l_user  = '<span class="user">'.$l_user.'</span>';
+        $l_sum   = ($l_info['sum']) ? '<span class="sum">'.hsc($l_info['sum']).'</span>' : '';
+        if ($l_info['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) $l_minor = 'class="minor"';
+
+        $l_head_title = ($media) ? dformat($l_rev) : $id.' ['.dformat($l_rev).']';
+        $l_head = '<a class="wikilink1" href="'.$ml_or_wl($id,"rev=$l_rev").'">'.
+        $l_head_title.'</a>'.
+        '<br />'.$l_user.' '.$l_sum;
+    }
+
+    if($r_rev){
+        $r_info   = getRevisionInfo($id,$r_rev,true, $media);
+        if($r_info['user']){
+            $r_user = editorinfo($r_info['user']);
+            if(auth_ismanager()) $r_user .= ' ('.$r_info['ip'].')';
+        } else {
+            $r_user = $r_info['ip'];
+        }
+        $r_user = '<span class="user">'.$r_user.'</span>';
+        $r_sum  = ($r_info['sum']) ? '<span class="sum">'.hsc($r_info['sum']).'</span>' : '';
+        if ($r_info['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) $r_minor = 'class="minor"';
+
+        $r_head_title = ($media) ? dformat($r_rev) : $id.' ['.dformat($r_rev).']';
+        $r_head = '<a class="wikilink1" href="'.$ml_or_wl($id,"rev=$r_rev").'">'.
+        $r_head_title.'</a>'.
+        '<br />'.$r_user.' '.$r_sum;
+    }elseif($_rev = @filemtime($media_or_wikiFN($id))){
+        $_info   = getRevisionInfo($id,$_rev,true, $media);
+        if($_info['user']){
+            $_user = editorinfo($_info['user']);
+            if(auth_ismanager()) $_user .= ' ('.$_info['ip'].')';
+        } else {
+            $_user = $_info['ip'];
+        }
+        $_user = '<span class="user">'.$_user.'</span>';
+        $_sum  = ($_info['sum']) ? '<span class="sum">'.hsc($_info['sum']).'</span>' : '';
+        if ($_info['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) $r_minor = 'class="minor"';
+
+        $r_head_title = ($media) ? dformat($_rev) : $id.' ['.dformat($_rev).']';
+        $r_head  = '<a class="wikilink1" href="'.$ml_or_wl($id).'">'.
+        $r_head_title.'</a> '.
+        '('.$lang['current'].')'.
+        '<br />'.$_user.' '.$_sum;
+    }else{
+        $r_head = '&mdash; ('.$lang['current'].')';
+    }
+
+    return array($l_head, $r_head, $l_minor, $r_minor);
+}
+
 /**
  * show diff
  *
@@ -1056,59 +1129,7 @@ function html_diff($text='',$intro=true,$type=null){
         }
         $r_text = rawWiki($ID,$r_rev);
 
-        if(!$l_rev){
-            $l_head = '&mdash;';
-        }else{
-            $l_info   = getRevisionInfo($ID,$l_rev,true);
-            if($l_info['user']){
-                $l_user = editorinfo($l_info['user']);
-                if(auth_ismanager()) $l_user .= ' ('.$l_info['ip'].')';
-            } else {
-                $l_user = $l_info['ip'];
-            }
-            $l_user  = '<span class="user">'.$l_user.'</span>';
-            $l_sum   = ($l_info['sum']) ? '<span class="sum">'.hsc($l_info['sum']).'</span>' : '';
-            if ($l_info['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) $l_minor = 'class="minor"';
-
-            $l_head = '<a class="wikilink1" href="'.wl($ID,"rev=$l_rev").'">'.
-            $ID.' ['.dformat($l_rev).']</a>'.
-            '<br />'.$l_user.' '.$l_sum;
-        }
-
-        if($r_rev){
-            $r_info   = getRevisionInfo($ID,$r_rev,true);
-            if($r_info['user']){
-                $r_user = editorinfo($r_info['user']);
-                if(auth_ismanager()) $r_user .= ' ('.$r_info['ip'].')';
-            } else {
-                $r_user = $r_info['ip'];
-            }
-            $r_user = '<span class="user">'.$r_user.'</span>';
-            $r_sum  = ($r_info['sum']) ? '<span class="sum">'.hsc($r_info['sum']).'</span>' : '';
-            if ($r_info['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) $r_minor = 'class="minor"';
-
-            $r_head = '<a class="wikilink1" href="'.wl($ID,"rev=$r_rev").'">'.
-            $ID.' ['.dformat($r_rev).']</a>'.
-            '<br />'.$r_user.' '.$r_sum;
-        }elseif($_rev = @filemtime(wikiFN($ID))){
-            $_info   = getRevisionInfo($ID,$_rev,true);
-            if($_info['user']){
-                $_user = editorinfo($_info['user']);
-                if(auth_ismanager()) $_user .= ' ('.$_info['ip'].')';
-            } else {
-                $_user = $_info['ip'];
-            }
-            $_user = '<span class="user">'.$_user.'</span>';
-            $_sum  = ($_info['sum']) ? '<span class="sum">'.hsc($_info['sum']).'</span>' : '';
-            if ($_info['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) $r_minor = 'class="minor"';
-
-            $r_head  = '<a class="wikilink1" href="'.wl($ID).'">'.
-            $ID.' ['.dformat($_rev).']</a> '.
-            '('.$lang['current'].')'.
-            '<br />'.$_user.' '.$_sum;
-        }else{
-            $r_head = '&mdash; ('.$lang['current'].')';
-        }
+        list($l_head, $r_head, $l_minor, $r_minor) = html_diff_head($l_rev, $r_rev);
     }
 
     $df = new Diff(explode("\n",htmlspecialchars($l_text)),
@@ -1676,7 +1697,7 @@ function html_TOC($toc){
     $out .= $lang['toc'];
     $out .= '</div>'.DOKU_LF;
     $out .= '<div id="toc__inside">'.DOKU_LF;
-    $out .= html_buildlist($toc,'toc','html_list_toc');
+    $out .= html_buildlist($toc,'toc','html_list_toc','html_li_default',true);
     $out .= '</div>'.DOKU_LF.'</div>'.DOKU_LF;
     $out .= '<!-- TOC END -->'.DOKU_LF;
     return $out;
@@ -1811,3 +1832,36 @@ function html_flashobject($swf,$width,$height,$params=null,$flashvars=null,$atts
     return $out;
 }
 
+function html_tabs($tabs, $current_tab = null) {
+    echo '<ul class="tabs">'.NL;
+
+    foreach($tabs as $id => $tab) {
+        html_tab($tab['href'], $tab['caption'], $id === $current_tab);
+    }
+
+    echo '</ul>'.NL;
+}
+/**
+ * Prints a single tab
+ *
+ * @author Kate Arzamastseva <pshns@ukr.net>
+ * @author Adrian Lang <mail@adrianlang.de>
+ *
+ * @param string $href - tab href
+ * @param string $caption - tab caption
+ * @param boolean $selected - is tab selected
+ */
+
+function html_tab($href, $caption, $selected=false) {
+    $tab = '<li>';
+    if ($selected) {
+        $tab .= '<strong>';
+    } else {
+        $tab .= '<a href="' . hsc($href) . '">';
+    }
+    $tab .= hsc($caption)
+         .  '</' . ($selected ? 'strong' : 'a') . '>'
+         .  '</li>'.NL;
+    echo $tab;
+}
+
diff --git a/inc/infoutils.php b/inc/infoutils.php
index f1deec66b2d999ea325339edb4f0847216fef1d8..2b84869065e16a7eeee34a757a46b9524f173136 100644
--- a/inc/infoutils.php
+++ b/inc/infoutils.php
@@ -24,7 +24,7 @@ function checkUpdateMessages(){
     $lm = @filemtime($cf);
 
     // check if new messages needs to be fetched
-    if($lm < time()-(60*60*24) || $lm < @filemtime(DOKU_INC.'doku.php')){
+    if($lm < time()-(60*60*24) || $lm < @filemtime(DOKU_INC.DOKU_SCRIPT)){
         $http = new DokuHTTPClient();
         $http->timeout = 8;
         $data = $http->get(DOKU_MESSAGEURL.$updateVersion);
@@ -175,6 +175,12 @@ function check(){
         msg('Lockdir is not writable',-1);
     }
 
+    if(is_writable(DOKU_CONF)){
+        msg('conf directory is writable',1);
+    }else{
+        msg('conf directory is not writable',-1);
+    }
+
     if($conf['authtype'] == 'plain'){
         global $config_cascade;
         if(is_writable($config_cascade['plainauth.users']['default'])){
diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php
index ee330099b6b055deebbc624f1b9c29d9d36043c4..02a62fe94309581140b1a737e7ca03a5ae1eb7f2 100644
--- a/inc/lang/ar/lang.php
+++ b/inc/lang/ar/lang.php
@@ -123,7 +123,6 @@ $lang['js']['nosmblinks']      = 'الروابط لمجلدات مشاركة و
 $lang['js']['linkwiz']         = 'مرشد الروابط';
 $lang['js']['linkto']          = 'الرابط إلى :';
 $lang['js']['del_confirm']     = 'هل حقاً تريد حذف البنود المختارة؟';
-$lang['js']['mu_btn']          = 'رفع عدة ملفات في وقت واحد';
 $lang['rssfailed']             = 'خطأ ما حدث أثناء جلب ملف التغذية:';
 $lang['nothingfound']          = 'لا يوجد شيء';
 $lang['mediaselect']           = 'ملفات الوسائط';
diff --git a/inc/lang/az/lang.php b/inc/lang/az/lang.php
index 302f24c166fb9326fc3385276cc42bc83a0792a9..13ba7b3c3baf9f0a2adef4db8b25844d99f72542 100644
--- a/inc/lang/az/lang.php
+++ b/inc/lang/az/lang.php
@@ -38,8 +38,6 @@ $lang['btn_backlink']          = 'Bura olan link-lər';
 $lang['btn_backtomedia']       = 'media-fayl seçiminə qayıt';
 $lang['btn_subscribe']         = 'Abunə ol (bütün dəyişiklər)';
 $lang['btn_unsubscribe']       = 'Abunəlikdən çıx (bütün dəyişiklər)';
-$lang['btn_subscribens']       = 'Abunə ol (bu bölümün dəyişikləri)';
-$lang['btn_unsubscribens']     = 'Abunəlikdən çıx (bu bölümün dəyişikləri)';
 $lang['btn_profile']           = 'Profil';
 $lang['btn_reset']             = 'BoÅŸalt';
 $lang['btn_resendpwd']         = 'Yeni şifrəni göndər';
@@ -118,7 +116,6 @@ $lang['js']['nosmblinks']      = 'Windows-un şəbəkə qovluqlarına link ancaq
 $lang['js']['linkwiz']         = 'Linklər köməkçisi';
 $lang['js']['linkto']          = 'Link göstərir:';
 $lang['js']['del_confirm']     = 'Siz əminsiz ki, seçilmişləri silmək istəyirsiniz?';
-$lang['js']['mu_btn']          = 'Bir neçə faylı birdən yükləmək';
 $lang['mediausage']            = 'Bu fayla link yaratmaq üçün aşağıdakı sintaksisdən istifadə edin:';
 $lang['mediaview']             = 'Bu faylın ilkinə bax';
 $lang['mediaroot']             = 'kök';
diff --git a/inc/lang/bg/lang.php b/inc/lang/bg/lang.php
index 580f6d963bae1aeef3d903d804d52531ef36b809..8985e20e5cfca545c810e84c17cc2ecff977e5f1 100644
--- a/inc/lang/bg/lang.php
+++ b/inc/lang/bg/lang.php
@@ -37,7 +37,7 @@ $lang['btn_update']            = 'Актуализиране';
 $lang['btn_delete']            = 'Изтриване';
 $lang['btn_back']              = 'Назад';
 $lang['btn_backlink']          = 'Обратни препратки';
-$lang['btn_backtomedia']       = 'Назад към избора на медиен файл';
+$lang['btn_backtomedia']       = 'Назад към избора на файл';
 $lang['btn_subscribe']         = 'Абонаменти';
 $lang['btn_profile']           = 'Профил';
 $lang['btn_reset']             = 'Изчистване';
@@ -47,6 +47,8 @@ $lang['btn_recover']           = 'Възстановяване на чернов
 $lang['btn_draftdel']          = 'Изтриване на чернова';
 $lang['btn_revert']            = 'Възстановяване';
 $lang['btn_register']          = 'Регистриране';
+$lang['btn_apply']             = 'Прилагане';
+$lang['btn_media']             = 'Диспечер на файлове';
 $lang['loggedinas']            = 'Вписани сте като';
 $lang['user']                  = 'Потребител';
 $lang['pass']                  = 'Парола';
@@ -91,7 +93,7 @@ $lang['txt_filename']          = 'Качи като (незадължителн
 $lang['txt_overwrt']           = 'Презапиши съществуващите файлове';
 $lang['lockedby']              = 'В момента е заключена от';
 $lang['lockexpire']            = 'Ще бъде отключена на';
-$lang['js']['willexpire']            = 'Страницата ще бъде отключена за редактиране след минута.\nЗа предотвратяване на конфликти, ползвайте бутона "Преглед", за рестартиране на брояча за заключване.';
+$lang['js']['willexpire']      = 'Страницата ще бъде отключена за редактиране след минута.\nЗа предотвратяване на конфликти, ползвайте бутона "Преглед", за рестартиране на брояча за заключване.';
 $lang['js']['notsavedyet']     = 'Незаписаните промени ще бъдат загубени. Желаете ли да продължите?';
 $lang['js']['searchmedia']     = 'Търсене на файлове';
 $lang['js']['keepopen']        = 'Без затваряне на прозореца след избор';
@@ -122,11 +124,21 @@ $lang['js']['nosmblinks']      = 'Връзките към Windows shares раб
 $lang['js']['linkwiz']         = 'Помощник за препратки';
 $lang['js']['linkto']          = 'Препратка към: ';
 $lang['js']['del_confirm']     = 'Да бъдат ли изтрити избраните елементи?';
-$lang['js']['mu_btn']          = 'Качване на няколко файла наведнъж';
+$lang['js']['restore_confirm'] = 'Наистина ли желаете да бъде възстановена тази версия?';
+$lang['js']['media_diff']      = 'Преглед на разликите:';
+$lang['js']['media_diff_both'] = 'Един до друг';
+$lang['js']['media_diff_opacity'] = 'Наслагване (и прозиране)';
+$lang['js']['media_diff_portions'] = 'По половинка';
+$lang['js']['media_select']    = 'Изберете файлове...';
+$lang['js']['media_upload_btn'] = 'Качване';
+$lang['js']['media_done_btn']  = 'Готово';
+$lang['js']['media_drop']      = 'Влачете и пуснете файливе тук, за да бъдат качени';
+$lang['js']['media_cancel']    = 'премахване';
+$lang['js']['media_overwrt']   = 'Презапиши съществуващите файлове';
 $lang['rssfailed']             = 'Възникна грешка при получаването на емисията: ';
 $lang['nothingfound']          = 'Нищо не е открито.';
-$lang['mediaselect']           = 'Медийни файлове';
-$lang['fileupload']            = 'Качване на медийни файлове';
+$lang['mediaselect']           = 'Файлове';
+$lang['fileupload']            = 'Качване на файлове';
 $lang['uploadsucc']            = 'Качването е успешно';
 $lang['uploadfail']            = 'Качването се провали. Може би поради грешни права?';
 $lang['uploadwrong']           = 'Качването е отказано. Файлово разширение е забранено!';
@@ -177,6 +189,10 @@ $lang['mail_changed']          = 'променена страница: ';
 $lang['mail_subscribe_list']   = 'променени страници в именно пространство: ';
 $lang['mail_new_user']         = 'нов потребител: ';
 $lang['mail_upload']           = 'качен файл: ';
+$lang['changes_type']          = 'Преглед на променените';
+$lang['pages_changes']         = 'Страници';
+$lang['media_changes']         = 'Файлове';
+$lang['both_changes']          = 'Страници и файлове';
 $lang['qb_bold']               = 'Удебелен текст';
 $lang['qb_italic']             = 'Курсив текст';
 $lang['qb_underl']             = 'Подчертан текст';
@@ -217,6 +233,9 @@ $lang['img_copyr']             = 'Авторско право';
 $lang['img_format']            = 'Формат';
 $lang['img_camera']            = 'Фотоапарат';
 $lang['img_keywords']          = 'Ключови думи';
+$lang['img_width']             = 'Ширина';
+$lang['img_height']            = 'Височина';
+$lang['img_manager']           = 'Преглед в диспечера на файлове';
 $lang['subscr_subscribe_success'] = '%s е добавен към списъка с абониралите се за %s';
 $lang['subscr_subscribe_error'] = 'Грешка при добавянето на %s към списъка с абониралите се за %s';
 $lang['subscr_subscribe_noaddress'] = 'Добавянето ви към списъка с абонати не е възможно поради липсата на свързан адрес (на ел. поща) с профила ви.';
@@ -282,3 +301,27 @@ $lang['hours']                 = 'преди %d часа';
 $lang['minutes']               = 'преди %d минути';
 $lang['seconds']               = 'преди %d секунди';
 $lang['wordblock']             = 'Направените от вас промени не са съхранени, защото съдържат забранен текст (SPAM).';
+$lang['media_uploadtab']       = 'Качване';
+$lang['media_searchtab']       = 'Търсене';
+$lang['media_file']            = 'Файл';
+$lang['media_viewtab']         = 'Преглед';
+$lang['media_edittab']         = 'Редактиране';
+$lang['media_historytab']      = 'История';
+$lang['media_list_thumbs']     = 'Миниатюри';
+$lang['media_list_rows']       = 'Редове';
+$lang['media_sort_name']       = 'Име';
+$lang['media_sort_date']       = 'Дата';
+$lang['media_namespaces']      = 'Изберете именно пространство';
+$lang['media_files']           = 'Файлове в %s';
+$lang['media_upload']          = 'Качване в %s';
+$lang['media_search']          = 'Търсене в %s';
+$lang['media_view']            = '%s';
+$lang['media_viewold']         = '%s в %s';
+$lang['media_edit']            = 'Редактиране на %s';
+$lang['media_history']         = 'История на %s';
+$lang['media_meta_edited']     = 'редактиране на метаданните';
+$lang['media_perm_read']       = 'За съжаление нямате достатъчно права, за да можете да прочетете файла.';
+$lang['media_perm_upload']     = 'За съжаление нямате достатъчно права, за да можете да качите файла.';
+$lang['media_update']          = 'Качване на нова версия';
+$lang['media_restore']         = 'Възстановяване на тази версия';
+$lang['plugin_install_err']    = 'Неправилно инсталирана приставка. Моля, преименувайте директорията \'%s\' на \'%s\'.';
diff --git a/inc/lang/ca-valencia/lang.php b/inc/lang/ca-valencia/lang.php
index c9c15b12d55a38a691ce6247d9cb6125dba016ea..eac9fc8d1c4de950225889269f9c7ae82744926b 100644
--- a/inc/lang/ca-valencia/lang.php
+++ b/inc/lang/ca-valencia/lang.php
@@ -39,8 +39,6 @@ $lang['btn_backlink']          = 'Vínculs remitents';
 $lang['btn_backtomedia']       = 'Tornar a la selecció d\'archius de mijos';
 $lang['btn_subscribe']         = 'Subscriure\'s a la pàgina';
 $lang['btn_unsubscribe']       = 'Desubscriure\'s de la pàgina';
-$lang['btn_subscribens']       = 'Subscriure\'s a l\'espai de noms';
-$lang['btn_unsubscribens']     = 'Desubscriure\'s de l\'espai de noms';
 $lang['btn_profile']           = 'Actualisar perfil';
 $lang['btn_reset']             = 'Reiniciar';
 $lang['btn_resendpwd']         = 'Enviar contrasenya nova';
@@ -119,7 +117,6 @@ $lang['js']['nosmblinks']      = 'Els vínculs a recursos compartits de Windows
 $lang['js']['linkwiz']         = 'Assistent de vínculs';
 $lang['js']['linkto']          = 'Vincular a:';
 $lang['js']['del_confirm']     = '¿Realment vol borrar el(s) ítem(s) seleccionat(s)?';
-$lang['js']['mu_btn']          = 'Enviar diversos archius d\'una';
 $lang['mediausage']            = 'Utilise la següent sintaxis per a referenciar est archiu:';
 $lang['mediaview']             = 'Vore l\'archiu original';
 $lang['mediaroot']             = 'base';
diff --git a/inc/lang/ca/lang.php b/inc/lang/ca/lang.php
index fbd1cb18a80ac6072430a91f4cc2e527e8308c85..7094df5b40286939286cafcb7af8aae22c591793 100644
--- a/inc/lang/ca/lang.php
+++ b/inc/lang/ca/lang.php
@@ -39,8 +39,6 @@ $lang['btn_backlink']          = 'Què hi enllaça';
 $lang['btn_backtomedia']       = 'Torna a la selecció de fitxers';
 $lang['btn_subscribe']         = 'Subscripció a canvis d\'aquesta pàgina';
 $lang['btn_unsubscribe']       = 'Cancel·la subscripció a pàgina';
-$lang['btn_subscribens']       = 'Subscripció a canvis d\'aquest espai';
-$lang['btn_unsubscribens']     = 'Cancel·la subscripció a espai';
 $lang['btn_profile']           = 'Actualització del perfil';
 $lang['btn_reset']             = 'Reinicia';
 $lang['btn_resendpwd']         = 'Envia nova contrasenya';
@@ -120,7 +118,6 @@ Si voleu podeu copiar i enganxar l\'enllaç.';
 $lang['js']['linkwiz']         = 'Auxiliar d\'enllaços';
 $lang['js']['linkto']          = 'Enllaça a:';
 $lang['js']['del_confirm']     = 'Suprimiu aquesta entrada?';
-$lang['js']['mu_btn']          = 'Penja múltiples fitxers';
 $lang['mediausage']            = 'Utilitzeu la sintaxi següent per referir-vos a aquest enllaç:';
 $lang['mediaview']             = 'Mostra el fitxer original';
 $lang['mediaroot']             = 'arrel';
diff --git a/inc/lang/cs/lang.php b/inc/lang/cs/lang.php
index eaefaadb5d76f99a3c436b4f8dbd807b8c9de7fa..292c2c42e455abd0331e5625c25fe5f7856a8c30 100644
--- a/inc/lang/cs/lang.php
+++ b/inc/lang/cs/lang.php
@@ -127,7 +127,6 @@ Přesto tento odkaz můžete zkopírovat a vložit jinde.';
 $lang['js']['linkwiz']         = 'Průvodce odkazy';
 $lang['js']['linkto']          = 'Odkaz na:';
 $lang['js']['del_confirm']     = 'Vymazat tuto položku?';
-$lang['js']['mu_btn']          = 'Načíst více souborů najednou';
 $lang['rssfailed']             = 'Nastala chyba při vytváření tohoto RSS: ';
 $lang['nothingfound']          = 'Nic nenalezeno.';
 $lang['mediaselect']           = 'Výběr dokumentu';
diff --git a/inc/lang/da/lang.php b/inc/lang/da/lang.php
index 614f2bdf2ef75a851b812842aaea98a603f2b033..0b696192113d2fef5ebad32fc38df75dc85aa207 100644
--- a/inc/lang/da/lang.php
+++ b/inc/lang/da/lang.php
@@ -130,7 +130,6 @@ Du kan stadig kopiere og indsætte linket.';
 $lang['js']['linkwiz']         = 'guiden til henvisninger';
 $lang['js']['linkto']          = 'Henvise til:';
 $lang['js']['del_confirm']     = 'Slet valgte post(er)?';
-$lang['js']['mu_btn']          = 'Overføre flere filer på en gang';
 $lang['rssfailed']             = 'Der opstod en fejl ved indhentning af: ';
 $lang['nothingfound']          = 'Søgningen gav intet resultat.';
 $lang['mediaselect']           = 'Vælg mediefil';
diff --git a/inc/lang/de-informal/lang.php b/inc/lang/de-informal/lang.php
index 16686bc4cd2cb45a7f5adb71334f380363f3fa8c..ec5e308ced192205232e8830812166a3c9b113ef 100644
--- a/inc/lang/de-informal/lang.php
+++ b/inc/lang/de-informal/lang.php
@@ -16,8 +16,9 @@
  * @author Alexander Fischer <tbanus@os-forge.net>
  * @author Juergen Schwarzer <jschwarzer@freenet.de>
  * @author Marcel Metz <marcel_metz@gmx.de>
- * @author Matthias Schulte <post@lupo49.de>
+ * @author Matthias Schulte <mailinglist@lupo49.de>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -59,6 +60,8 @@ $lang['btn_recover']           = 'Entwurf wiederherstellen';
 $lang['btn_draftdel']          = 'Entwurf löschen';
 $lang['btn_revert']            = 'Wiederherstellen';
 $lang['btn_register']          = 'Registrieren';
+$lang['btn_apply']             = 'Ãœbernehmen';
+$lang['btn_media']             = 'Medien-Manager';
 $lang['loggedinas']            = 'Angemeldet als';
 $lang['user']                  = 'Benutzername';
 $lang['pass']                  = 'Passwort';
@@ -70,7 +73,7 @@ $lang['fullname']              = 'Voller Name';
 $lang['email']                 = 'E-Mail';
 $lang['profile']               = 'Benutzerprofil';
 $lang['badlogin']              = 'Nutzername oder Passwort sind falsch.';
-$lang['minoredit']             = 'kleine Änderung';
+$lang['minoredit']             = 'Kleine Änderung';
 $lang['draftdate']             = 'Entwurf gespeichert am';
 $lang['nosecedit']             = 'Diese Seite wurde in der Zwischenzeit geändert, da das Sektionsinfo veraltet ist. Die ganze Seite wird stattdessen geladen.';
 $lang['regmissing']            = 'Alle Felder müssen ausgefüllt werden';
@@ -103,7 +106,7 @@ $lang['txt_filename']          = 'Hochladen als (optional)';
 $lang['txt_overwrt']           = 'Bestehende Datei überschreiben';
 $lang['lockedby']              = 'Momentan gesperrt von';
 $lang['lockexpire']            = 'Sperre läuft ab am';
-$lang['js']['willexpire']            = 'Die Sperre zur Bearbeitung dieser Seite läuft in einer Minute ab.\nUm Bearbeitungskonflikte zu vermeiden, solltest du sie durch einen Klick auf den Vorschau-Knopf verlängern.';
+$lang['js']['willexpire']      = 'Die Sperre zur Bearbeitung dieser Seite läuft in einer Minute ab.\nUm Bearbeitungskonflikte zu vermeiden, solltest du sie durch einen Klick auf den Vorschau-Knopf verlängern.';
 $lang['js']['notsavedyet']     = 'Nicht gespeicherte Änderungen gehen verloren!';
 $lang['js']['searchmedia']     = 'Suche nach Dateien';
 $lang['js']['keepopen']        = 'Fenster nach Auswahl nicht schließen';
@@ -133,7 +136,17 @@ $lang['js']['nosmblinks']      = 'Das Verlinken von Windows-Freigaben funktionie
 $lang['js']['linkwiz']         = 'Link-Assistent';
 $lang['js']['linkto']          = 'Link zu:';
 $lang['js']['del_confirm']     = 'Die ausgewählten Dateien wirklich löschen?';
-$lang['js']['mu_btn']          = 'Mehrere Dateien gleichzeitig hochladen';
+$lang['js']['restore_confirm'] = 'Wirkliich diese Version wieder herstellen?';
+$lang['js']['media_diff']      = 'Unterschiede anzeigen:';
+$lang['js']['media_diff_both'] = 'Seite für Seite';
+$lang['js']['media_diff_opacity'] = 'Ãœberblenden';
+$lang['js']['media_diff_portions'] = 'Ãœbergang';
+$lang['js']['media_select']    = 'Dateien auswählen…';
+$lang['js']['media_upload_btn'] = 'Hochladen';
+$lang['js']['media_done_btn']  = 'Fertig';
+$lang['js']['media_drop']      = 'Dateien hier draufziehen um sie hochzuladen';
+$lang['js']['media_cancel']    = 'Entfernen';
+$lang['js']['media_overwrt']   = 'Existierende Dateien überschreiben';
 $lang['rssfailed']             = 'Es ist ein Fehler beim Laden des Feeds aufgetreten: ';
 $lang['nothingfound']          = 'Nichts gefunden.';
 $lang['mediaselect']           = 'Dateiauswahl';
@@ -188,6 +201,10 @@ $lang['mail_changed']          = 'Seite geändert:';
 $lang['mail_subscribe_list']   = 'Seite hat sich im Namespace geändert:';
 $lang['mail_new_user']         = 'Neuer Benutzer:';
 $lang['mail_upload']           = 'Datei hochgeladen:';
+$lang['changes_type']          = 'Änderungen anzeigen von';
+$lang['pages_changes']         = 'Seiten';
+$lang['media_changes']         = 'Mediendateien';
+$lang['both_changes']          = 'Beides, Seiten- und Mediendateien';
 $lang['qb_bold']               = 'Fetter Text';
 $lang['qb_italic']             = 'Kursiver Text';
 $lang['qb_underl']             = 'Unterstrichener Text';
@@ -228,6 +245,9 @@ $lang['img_copyr']             = 'Copyright';
 $lang['img_format']            = 'Format';
 $lang['img_camera']            = 'Kamera';
 $lang['img_keywords']          = 'Schlagwörter';
+$lang['img_width']             = 'Breite';
+$lang['img_height']            = 'Höhe';
+$lang['img_manager']           = 'Im Medien-Manager anzeigen';
 $lang['subscr_subscribe_success'] = 'Die Seite %s wurde zur Abonnementenliste von %s hinzugefügt';
 $lang['subscr_subscribe_error'] = 'Fehler beim Hinzufügen von %s zur Abonnementenliste von %s';
 $lang['subscr_subscribe_noaddress'] = 'In deinem Account ist keine E-Mail-Adresse hinterlegt. Dadurch kann die Seite nicht abonniert werden';
@@ -292,3 +312,27 @@ $lang['hours']                 = 'vor %d Stunden';
 $lang['minutes']               = 'vor %d Minuten';
 $lang['seconds']               = 'vor %d Sekunden';
 $lang['wordblock']             = 'Deine Bearbeitung wurde nicht gespeichert, da sie gesperrten Text enthielt (Spam).';
+$lang['media_uploadtab']       = 'Hochladen';
+$lang['media_searchtab']       = 'Suchen';
+$lang['media_file']            = 'Datei';
+$lang['media_viewtab']         = 'Anzeigen';
+$lang['media_edittab']         = 'Bearbeiten';
+$lang['media_historytab']      = 'Verlauf';
+$lang['media_list_thumbs']     = 'Medien anzeigen als Miniaturansicht';
+$lang['media_list_rows']       = 'Medien anzeigen als Listenansicht';
+$lang['media_sort_name']       = 'Sortieren nach Name';
+$lang['media_sort_date']       = 'Sortieren nach Datum';
+$lang['media_namespaces']      = 'Namensraum wählen';
+$lang['media_files']           = 'Medien im Namensraum <strong>%s</strong>.';
+$lang['media_upload']          = 'In den <strong>%s</strong> Namensraum hochladen.';
+$lang['media_search']          = 'Im Namensraum <strong>%s</strong> suchen.';
+$lang['media_view']            = '%s';
+$lang['media_viewold']         = '%s in %s';
+$lang['media_edit']            = '%s bearbeiten';
+$lang['media_history']         = 'Versionen von %s';
+$lang['media_meta_edited']     = 'Meta-Informationen bearbeitet';
+$lang['media_perm_read']       = 'Du besitzt nicht die notwendigen Berechtigungen um die Datei anzuzeigen.';
+$lang['media_perm_upload']     = 'Du besitzt nicht die notwendigen Berechtigungen um Dateien hochzuladen.';
+$lang['media_update']          = 'Neue Version hochladen';
+$lang['media_restore']         = 'Diese Version wiederherstellen';
+$lang['plugin_install_err']    = 'Plugin nicht korrekt installiert. Plugin-Verzeichnis von \'%s\' nach \'%s\' umbenennen.';
diff --git a/inc/lang/de-informal/uploadmail.txt b/inc/lang/de-informal/uploadmail.txt
index 7239cc10cc34d4db1719cd82a89770b72d64724d..69f11400f4a10b4e2308b833344a288462cc148a 100644
--- a/inc/lang/de-informal/uploadmail.txt
+++ b/inc/lang/de-informal/uploadmail.txt
@@ -1,13 +1,14 @@
 Eine Datei wurde in deinem Wiki hochgeladen. Hier sind die Details:
 
-Datei      : @MEDIA@
-Datum      : @DATE@
-Browser    : @BROWSER@
-IP-Adresse : @IPADDRESS@
-Hostname   : @HOSTNAME@
-Größe      : @SIZE@
-MIME-Typ   : @MIME@
-Benutzer   : @USER@
+Datei       : @MEDIA@
+Alte Version: @OLD@
+Datum       : @DATE@
+Browser     : @BROWSER@
+IP-Adresse  : @IPADDRESS@
+Hostname    : @HOSTNAME@
+Größe       : @SIZE@
+MIME-Typ    : @MIME@
+Benutzer    : @USER@
 
 -- 
 Diese Mail wurde vom DokuWiki auf
diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php
index 3ae06dc7129a2f29bbcf80adfbaa08a65ab0ab6b..eef2f6632247f00f69afd9e21708275e9ccbbb5f 100644
--- a/inc/lang/de/lang.php
+++ b/inc/lang/de/lang.php
@@ -18,6 +18,9 @@
  * @author Robert Bogenschneider <robog@gmx.de>
  * @author Niels Lange <niels@boldencursief.nl>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Matthias Schulte <mailinglist@lupo49.de>
+ * @author Paul Lachewsky <kaeptn.haddock@gmail.com>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -59,6 +62,8 @@ $lang['btn_recover']           = 'Entwurf wiederherstellen';
 $lang['btn_draftdel']          = 'Entwurf löschen';
 $lang['btn_revert']            = 'Wiederherstellen';
 $lang['btn_register']          = 'Registrieren';
+$lang['btn_apply']             = 'Ãœbernehmen';
+$lang['btn_media']             = 'Medien-Manager';
 $lang['loggedinas']            = 'Angemeldet als';
 $lang['user']                  = 'Benutzername';
 $lang['pass']                  = 'Passwort';
@@ -103,7 +108,7 @@ $lang['txt_filename']          = 'Hochladen als (optional)';
 $lang['txt_overwrt']           = 'Bestehende Datei überschreiben';
 $lang['lockedby']              = 'Momentan gesperrt von';
 $lang['lockexpire']            = 'Sperre läuft ab am';
-$lang['js']['willexpire']            = 'Die Sperre zur Bearbeitung dieser Seite läuft in einer Minute ab.\nUm Bearbeitungskonflikte zu vermeiden, sollten Sie sie durch einen Klick auf den Vorschau-Knopf verlängern.';
+$lang['js']['willexpire']      = 'Die Sperre zur Bearbeitung dieser Seite läuft in einer Minute ab.\nUm Bearbeitungskonflikte zu vermeiden, sollten Sie sie durch einen Klick auf den Vorschau-Knopf verlängern.';
 $lang['js']['notsavedyet']     = 'Nicht gespeicherte Änderungen gehen verloren!';
 $lang['js']['searchmedia']     = 'Suche Dateien';
 $lang['js']['keepopen']        = 'Fenster nach Auswahl nicht schließen';
@@ -129,12 +134,21 @@ $lang['js']['medialeft']       = 'Das Bild links anordnen.';
 $lang['js']['mediaright']      = 'Das Bild rechts anordnen.';
 $lang['js']['mediacenter']     = 'Das Bild in der Mitte anordnen.';
 $lang['js']['medianoalign']    = 'Keine Anordnung benutzen.';
-$lang['js']['nosmblinks']      = 'Das Verlinken von Windows-Freigaben funktioniert nur im Microsoft Internet Explorer.
-Der Link kann jedoch durch Kopieren und Einfügen verwendet werden.';
+$lang['js']['nosmblinks']      = 'Das Verlinken von Windows-Freigaben funktioniert nur im Microsoft Internet Explorer.\nDer Link kann jedoch durch Kopieren und Einfügen verwendet werden.';
 $lang['js']['linkwiz']         = 'Link-Assistent';
 $lang['js']['linkto']          = 'Link nach:';
 $lang['js']['del_confirm']     = 'Eintrag wirklich löschen?';
-$lang['js']['mu_btn']          = 'Mehrere Dateien gleichzeitig hochladen';
+$lang['js']['restore_confirm'] = 'Really restore this version?';
+$lang['js']['media_diff']      = 'Unterschiede anzeigen:';
+$lang['js']['media_diff_both'] = 'Side by Side';
+$lang['js']['media_diff_opacity'] = 'Ãœberblenden';
+$lang['js']['media_diff_portions'] = 'Ãœbergang';
+$lang['js']['media_select']    = 'Dateien auswählen…';
+$lang['js']['media_upload_btn'] = 'Hochladen';
+$lang['js']['media_done_btn']  = 'Fertig';
+$lang['js']['media_drop']      = 'Dateien hier draufziehen um sie hochzuladen';
+$lang['js']['media_cancel']    = 'Entfernen';
+$lang['js']['media_overwrt']   = 'Existierende Dateien überschreiben';
 $lang['rssfailed']             = 'Es ist ein Fehler beim Laden des Feeds aufgetreten: ';
 $lang['nothingfound']          = 'Nichts gefunden.';
 $lang['mediaselect']           = 'Dateiauswahl';
@@ -189,6 +203,10 @@ $lang['mail_changed']          = 'Seite geändert:';
 $lang['mail_subscribe_list']   = 'Geänderte Seiten im Namensraum:';
 $lang['mail_new_user']         = 'Neuer Benutzer:';
 $lang['mail_upload']           = 'Datei hochgeladen:';
+$lang['changes_type']          = 'Änderungen anzeigen von';
+$lang['pages_changes']         = 'Seiten';
+$lang['media_changes']         = 'Mediendateien';
+$lang['both_changes']          = 'Beides, Seiten- und Mediendateien';
 $lang['qb_bold']               = 'Fetter Text';
 $lang['qb_italic']             = 'Kursiver Text';
 $lang['qb_underl']             = 'Unterstrichener Text';
@@ -229,6 +247,9 @@ $lang['img_copyr']             = 'Copyright';
 $lang['img_format']            = 'Format';
 $lang['img_camera']            = 'Kamera';
 $lang['img_keywords']          = 'Schlagwörter';
+$lang['img_width']             = 'Breite';
+$lang['img_height']            = 'Höhe';
+$lang['img_manager']           = 'Im Medien-Manager anzeigen';
 $lang['subscr_subscribe_success'] = '%s hat nun Änderungen der Seite %s abonniert';
 $lang['subscr_subscribe_error'] = '%s kann die Änderungen der Seite %s nicht abonnieren';
 $lang['subscr_subscribe_noaddress'] = 'Weil Ihre E-Mail-Adresse fehlt, können Sie das Thema nicht abonnieren';
@@ -293,3 +314,27 @@ $lang['hours']                 = 'vor %d Stunden';
 $lang['minutes']               = 'vor %d Minuten';
 $lang['seconds']               = 'vor %d Sekunden';
 $lang['wordblock']             = 'Ihre Bearbeitung wurde nicht gespeichert, da sie gesperrten Text enthielt (Spam).';
+$lang['media_uploadtab']       = 'Hochladen';
+$lang['media_searchtab']       = 'Suchen';
+$lang['media_file']            = 'Datei';
+$lang['media_viewtab']         = 'Anzeigen';
+$lang['media_edittab']         = 'Bearbeiten';
+$lang['media_historytab']      = 'Verlauf';
+$lang['media_list_thumbs']     = 'Vorschaubilder';
+$lang['media_list_rows']       = 'Reihen';
+$lang['media_sort_name']       = 'nach Name';
+$lang['media_sort_date']       = 'nach Datum';
+$lang['media_namespaces']      = 'Namensraum wählen';
+$lang['media_files']           = 'Dateien in %s';
+$lang['media_upload']          = 'In den <strong>%s</strong> Namespace hochladen.';
+$lang['media_search']          = 'Im Namespace <strong>%s</strong> suchen.';
+$lang['media_view']            = '%s';
+$lang['media_viewold']         = '%s in %s';
+$lang['media_edit']            = 'Bearbeiten';
+$lang['media_history']         = 'Versionsverlauf der Datei.';
+$lang['media_meta_edited']     = 'Meta-Informationen bearbeitet';
+$lang['media_perm_read']       = 'Sie besitzen nicht die notwendigen Berechtigungen um die Datei anzuzeigen.';
+$lang['media_perm_upload']     = 'Sie besitzen nicht die notwendigen Berechtigungen um Dateien hochzuladen.';
+$lang['media_update']          = 'Neue Version hochladen';
+$lang['media_restore']         = 'Diese Version wiederherstellen';
+$lang['plugin_install_err']    = 'Plugin nicht korrekt installiert. Plugin-Verzeichnis von \'%s\' nach \'%s\' umbenennen.';
diff --git a/inc/lang/de/uploadmail.txt b/inc/lang/de/uploadmail.txt
index 7577298041f3104f4fb5ab4aa1f7a36c688c2a70..977e7561c22dd0ae60ef5d7bc11aa7ac2b752581 100644
--- a/inc/lang/de/uploadmail.txt
+++ b/inc/lang/de/uploadmail.txt
@@ -1,13 +1,14 @@
 Eine Datei wurde in Ihrem Wiki hochgeladen. Hier sind die Details:
 
-Datei      : @MEDIA@
-Datum      : @DATE@
-Browser    : @BROWSER@
-IP-Adresse : @IPADDRESS@
-Hostname   : @HOSTNAME@
-Größe      : @SIZE@
-MIME-Typ   : @MIME@
-Benutzer   : @USER@
+Datei       : @MEDIA@
+Alte Version: @OLD@
+Datum       : @DATE@
+Browser     : @BROWSER@
+IP-Adresse  : @IPADDRESS@
+Hostname    : @HOSTNAME@
+Größe       : @SIZE@
+MIME-Typ    : @MIME@
+Benutzer    : @USER@
 
 -- 
 Diese Mail kommt vom DokuWiki auf
diff --git a/inc/lang/el/lang.php b/inc/lang/el/lang.php
index 373dc5463e72d1345de5c6460cfa29d06a82b7ee..4c334c1decf7c175bb76877e4399ed8a0377257f 100644
--- a/inc/lang/el/lang.php
+++ b/inc/lang/el/lang.php
@@ -7,6 +7,7 @@
  * @author Αθανάσιος Νταής <homunculus@wana.gr>
  * @author Konstantinos Koryllos <koryllos@gmail.com>
  * @author George Petsagourakis <petsagouris@gmail.com>
+ * @author Petros Vidalis <pvidalis@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -48,6 +49,8 @@ $lang['btn_recover']           = 'Επαναφορά αυτόματα αποθη
 $lang['btn_draftdel']          = 'Διαγραφή αυτόματα αποθηκευμένης σελίδας';
 $lang['btn_revert']            = 'Αποκατάσταση';
 $lang['btn_register']          = 'Εγγραφή';
+$lang['btn_apply']             = 'Εφαρμογή';
+$lang['btn_media']             = 'Διαχειριστής πολυμέσων';
 $lang['loggedinas']            = 'Συνδεδεμένος ως';
 $lang['user']                  = 'Όνομα χρήστη';
 $lang['pass']                  = 'Κωδικός';
@@ -92,7 +95,7 @@ $lang['txt_filename']          = 'Επιλέξτε νέο όνομα αρχεί
 $lang['txt_overwrt']           = 'Αντικατάσταση υπάρχοντος αρχείου';
 $lang['lockedby']              = 'Προσωρινά κλειδωμένο από';
 $lang['lockexpire']            = 'Το κλείδωμα λήγει στις';
-$lang['js']['willexpire']            = 'Το κλείδωμά σας για την επεξεργασία αυτής της σελίδας θα λήξει σε ένα λεπτό.\n Για να το ανανεώσετε χρησιμοποιήστε την Προεπισκόπηση.';
+$lang['js']['willexpire']      = 'Το κλείδωμά σας για την επεξεργασία αυτής της σελίδας θα λήξει σε ένα λεπτό.\n Για να το ανανεώσετε χρησιμοποιήστε την Προεπισκόπηση.';
 $lang['js']['notsavedyet']     = 'Οι μη αποθηκευμένες αλλαγές θα χαθούν.
 Θέλετε να συνεχίσετε;';
 $lang['js']['searchmedia']     = 'Αναζήτηση για αρχεία';
@@ -124,7 +127,17 @@ $lang['js']['nosmblinks']      = 'Οι σύνδεσμοι προς Windows share
 $lang['js']['linkwiz']         = 'Αυτόματος Οδηγός Συνδέσμων';
 $lang['js']['linkto']          = 'Σύνδεση σε:';
 $lang['js']['del_confirm']     = 'Να διαγραφεί;';
-$lang['js']['mu_btn']          = 'Ταυτόχρονη φόρτωση πολλαπλών φακέλων';
+$lang['js']['restore_confirm'] = 'Θέλετε την επαναφορά σε αυτή την έκδοση;';
+$lang['js']['media_diff']      = 'Εμφάνιση διαφορών:';
+$lang['js']['media_diff_both'] = 'Δίπλα δίπλα';
+$lang['js']['media_diff_opacity'] = 'Επικάλυψη';
+$lang['js']['media_diff_portions'] = 'Κύλιση';
+$lang['js']['media_select']    = 'Επιλογή αρχείων...';
+$lang['js']['media_upload_btn'] = 'Φόρτωση';
+$lang['js']['media_done_btn']  = 'Ολοκλήρωση';
+$lang['js']['media_drop']      = 'Ρίξτε αρχεία εδώ για να τα φορτώσετε';
+$lang['js']['media_cancel']    = 'αφαίρεση';
+$lang['js']['media_overwrt']   = 'Αντικατάσταση υπάρχοντων αρχείων';
 $lang['rssfailed']             = 'Παρουσιάστηκε κάποιο σφάλμα κατά την ανάγνωση αυτού του feed: ';
 $lang['nothingfound']          = 'Δεν βρέθηκαν σχετικά αποτελέσματα.';
 $lang['mediaselect']           = 'Επιλογή Αρχείων';
@@ -179,6 +192,10 @@ $lang['mail_changed']          = 'σελίδα τροποποιήθηκε:';
 $lang['mail_subscribe_list']   = 'σελίδες που άλλαξαν στον φάκελο:';
 $lang['mail_new_user']         = 'νέος χρήστης:';
 $lang['mail_upload']           = 'αρχείο φορτώθηκε:';
+$lang['changes_type']          = 'Εμφάνιση αλλαγών του';
+$lang['pages_changes']         = 'Σελίδες';
+$lang['media_changes']         = 'Αρχεία πολυμέσων';
+$lang['both_changes']          = 'Σελίδες και αρχεία πολυμέσων';
 $lang['qb_bold']               = 'Έντονο Κείμενο';
 $lang['qb_italic']             = 'Πλάγιο Κείμενο';
 $lang['qb_underl']             = 'Υπογραμμισμένο Κείμενο';
@@ -219,6 +236,9 @@ $lang['img_copyr']             = 'Copyright';
 $lang['img_format']            = 'Format';
 $lang['img_camera']            = 'Camera';
 $lang['img_keywords']          = 'Λέξεις-κλειδιά';
+$lang['img_width']             = 'Πλάτος';
+$lang['img_height']            = 'Ύψος';
+$lang['img_manager']           = 'Εμφάνιση στον διαχειριστή πολυμέσων';
 $lang['subscr_subscribe_success'] = 'Ο/η %s προστέθηκε στην λίστα ειδοποιήσεων για το %s';
 $lang['subscr_subscribe_error'] = 'Σφάλμα κατά την προσθήκη του/της %s στην λίστα ειδοποιήσεων για το %s';
 $lang['subscr_subscribe_noaddress'] = 'Δεν υπάρχει διεύθυνση ταχυδρομείου συσχετισμένη με το όνομα χρήστη σας. Κατά συνέπεια δεν μπορείτε να προστεθείτε στην λίστα ειδοποιήσεων';
@@ -283,4 +303,24 @@ $lang['days']                  = 'πριν %d ημέρες';
 $lang['hours']                 = 'πριν %d ώρες';
 $lang['minutes']               = 'πριν %d λεπτά';
 $lang['seconds']               = 'πριν %d δευτερόλεπτα';
-$lang['wordblock']             = 'Η αλλαγή σας δεν αποθηκεύτηκε γιατί περιείχε spam.';
\ No newline at end of file
+$lang['wordblock']             = 'Η αλλαγή σας δεν αποθηκεύτηκε γιατί περιείχε spam.';
+$lang['media_uploadtab']       = 'Φόρτωση';
+$lang['media_searchtab']       = 'Αναζήτηση';
+$lang['media_viewtab']         = 'Εμφάνιση';
+$lang['media_edittab']         = 'Επεξεργασία';
+$lang['media_historytab']      = 'Ιστορικό';
+$lang['media_thumbsview']      = 'Προεπισκόπιση';
+$lang['media_listview']        = 'Λίστα';
+$lang['media_sort']            = 'Ταξινόμιση';
+$lang['media_sort_name']       = 'ανά όνομα';
+$lang['media_sort_date']       = 'ανά ημερομηνία';
+$lang['media_upload']          = 'Φόρτωση στο <strong>%s</strong> φάκελο.';
+$lang['media_search']          = 'Αναζήτηση στο <strong>%s</strong> φάκελο.';
+$lang['media_edit']            = 'Επεξεργασία';
+$lang['media_history']         = 'Αυτές είναι οι παλαιότερες αναθεωρήσεις του αρχείου.';
+$lang['media_meta_edited']     = 'τα μεταδεδομένα επεξεργάστηκαν';
+$lang['media_perm_read']       = 'Συγνώμη, δεν έχετε επαρκή διακαιώματα για να διαβάσετε αυτά τα αρχεία.';
+$lang['media_perm_upload']     = 'Συγνώμη, δεν έχετε επαρκή διακαιώματα για να φορτώσετε αυτά τα αρχεία.';
+$lang['media_update']          = 'Φόρτωση νέας έκδοσης';
+$lang['media_restore']         = 'Επαναφορά αυτή της έκδοσης';
+$lang['plugin_install_err']    = 'Η επέκταση δεν εγκαταστήθηκε σωστά. Μετονομασία φακέλου επεκτάσεων από \'%s\' σε \'%s\'.';
diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index ab6a88497084c0fda835cdfabd21bf77e106065e..89a7c4d40c592db03cbd2a99f3b4322a02d684b4 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -6,361 +6,355 @@
  * @author     Andreas Gohr <andi@splitbrain.org>
  * @author     Anika Henke <anika@selfthinker.org>
  * @author     Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+ * @author     Matthias Schulte <mailinglist@lupo49.de>
  */
-$lang['encoding']   = 'utf-8';
-$lang['direction']  = 'ltr';
-$lang['doublequoteopening']  = '“';//&ldquo;
-$lang['doublequoteclosing']  = '”';//&rdquo;
-$lang['singlequoteopening']  = '‘';//&lsquo;
-$lang['singlequoteclosing']  = '’';//&rsquo;
-$lang['apostrophe']          = '’';//&rsquo;
-
-$lang['btn_edit']   = 'Edit this page';
-$lang['btn_source'] = 'Show pagesource';
-$lang['btn_show']   = 'Show page';
-$lang['btn_create'] = 'Create this page';
-$lang['btn_search'] = 'Search';
-$lang['btn_save']   = 'Save';
-$lang['btn_preview']= 'Preview';
-$lang['btn_top']    = 'Back to top';
-$lang['btn_newer']  = '<< more recent';
-$lang['btn_older']  = 'less recent >>';
-$lang['btn_revs']   = 'Old revisions';
-$lang['btn_recent'] = 'Recent changes';
-$lang['btn_upload'] = 'Upload';
-$lang['btn_cancel'] = 'Cancel';
-$lang['btn_index']  = 'Sitemap';
-$lang['btn_secedit']= 'Edit';
-$lang['btn_login']  = 'Login';
-$lang['btn_logout'] = 'Logout';
-$lang['btn_admin']  = 'Admin';
-$lang['btn_update'] = 'Update';
-$lang['btn_delete'] = 'Delete';
-$lang['btn_back']   = 'Back';
-$lang['btn_backlink']    = "Backlinks";
-$lang['btn_backtomedia'] = 'Back to Mediafile Selection';
-$lang['btn_subscribe']   = 'Manage Subscriptions';
-$lang['btn_profile']     = 'Update Profile';
-$lang['btn_reset']       = 'Reset';
-$lang['btn_resendpwd']   = 'Send new password';
-$lang['btn_draft']    = 'Edit draft';
-$lang['btn_recover']  = 'Recover draft';
-$lang['btn_draftdel'] = 'Delete draft';
-$lang['btn_revert']   = 'Restore';
-$lang['btn_register'] = 'Register';
-$lang['btn_apply'] = 'Apply';
-$lang['btn_media'] = 'Media Manager';
-
-$lang['loggedinas'] = 'Logged in as';
-$lang['user']       = 'Username';
-$lang['pass']       = 'Password';
-$lang['newpass']    = 'New password';
-$lang['oldpass']    = 'Confirm current password';
-$lang['passchk']    = 'once again';
-$lang['remember']   = 'Remember me';
-$lang['fullname']   = 'Real name';
-$lang['email']      = 'E-Mail';
-$lang['profile']    = 'User Profile';
-$lang['badlogin']   = 'Sorry, username or password was wrong.';
-$lang['minoredit']  = 'Minor Changes';
-$lang['draftdate']  = 'Draft autosaved on'; // full dformat date will be added
-$lang['nosecedit']  = 'The page was changed in the meantime, section info was out of date loaded full page instead.';
-
-$lang['regmissing'] = 'Sorry, you must fill in all fields.';
-$lang['reguexists'] = 'Sorry, a user with this login already exists.';
-$lang['regsuccess'] = 'The user has been created and the password was sent by email.';
-$lang['regsuccess2']= 'The user has been created.';
-$lang['regmailfail']= 'Looks like there was an error on sending the password mail. Please contact the admin!';
-$lang['regbadmail'] = 'The given email address looks invalid - if you think this is an error, contact the admin';
-$lang['regbadpass'] = 'The two given passwords are not identical, please try again.';
-$lang['regpwmail']  = 'Your DokuWiki password';
-$lang['reghere']    = 'You don\'t have an account yet? Just get one';
-
-$lang['profna']       = 'This wiki does not support profile modification';
-$lang['profnochange'] = 'No changes, nothing to do.';
-$lang['profnoempty']  = 'An empty name or email address is not allowed.';
-$lang['profchanged']  = 'User profile successfully updated.';
-
-$lang['pwdforget'] = 'Forgotten your password? Get a new one';
-$lang['resendna']  = 'This wiki does not support password resending.';
-$lang['resendpwd'] = 'Send new password for';
-$lang['resendpwdmissing'] = 'Sorry, you must fill in all fields.';
-$lang['resendpwdnouser']  = 'Sorry, we can\'t find this user in our database.';
-$lang['resendpwdbadauth'] = 'Sorry, this auth code is not valid. Make sure you used the complete confirmation link.';
-$lang['resendpwdconfirm'] = 'A confirmation link has been sent by email.';
-$lang['resendpwdsuccess'] = 'Your new password has been sent by email.';
-
-$lang['license']   = 'Except where otherwise noted, content on this wiki is licensed under the following license:';
-$lang['licenseok'] = 'Note: By editing this page you agree to license your content under the following license:';
-
-$lang['searchmedia']  = 'Search file name:';
-$lang['searchmedia_in']  = 'Search in %s';
-$lang['txt_upload']   = 'Select file to upload';
-$lang['txt_filename'] = 'Upload as (optional)';
-$lang['txt_overwrt']  = 'Overwrite existing file';
-$lang['lockedby']     = 'Currently locked by';
-$lang['lockexpire']   = 'Lock expires at';
-$lang['js']['willexpire']   = 'Your lock for editing this page is about to expire in a minute.\nTo avoid conflicts use the preview button to reset the locktimer.';
-
-$lang['js']['notsavedyet'] = "Unsaved changes will be lost.";
-$lang['rssfailed']   = 'An error occurred while fetching this feed: ';
-$lang['nothingfound']= 'Nothing was found.';
-
-$lang['mediaselect'] = 'Media Files';
-$lang['fileupload']  = 'Media File Upload';
-$lang['uploadsucc']  = 'Upload successful';
-$lang['uploadfail']  = 'Upload failed. Maybe wrong permissions?';
-$lang['uploadwrong'] = 'Upload denied. This file extension is forbidden!';
-$lang['uploadexist'] = 'File already exists. Nothing done.';
-$lang['uploadbadcontent'] = 'The uploaded content did not match the %s file extension.';
-$lang['uploadspam']  = 'The upload was blocked by the spam blacklist.';
-$lang['uploadxss']   = 'The upload was blocked for possibly malicious content.';
-$lang['uploadsize']  = 'The uploaded file was too big. (max. %s)';
-$lang['deletesucc']  = 'The file "%s" has been deleted.';
-$lang['deletefail']  = '"%s" couldn\'t be deleted - check permissions.';
-$lang['mediainuse']  = 'The file "%s" hasn\'t been deleted - it is still in use.';
-$lang['namespaces']  = 'Namespaces';
-$lang['mediafiles']  = 'Available files in';
-$lang['accessdenied'] = 'You are not allowed to view this page.';
-
-$lang['js']['searchmedia']    = 'Search for files';
-$lang['js']['keepopen']    = 'Keep window open on selection';
-$lang['js']['hidedetails'] = 'Hide Details';
-$lang['mediausage']  = 'Use the following syntax to reference this file:';
-$lang['mediaview']   = 'View original file';
-$lang['mediaroot']   = 'root';
-$lang['mediaupload'] = 'Upload a file to the current namespace here. To create subnamespaces, prepend them to your "Upload as" filename separated by colons. Files also can be selected by drag and drop.';
-$lang['mediaextchange'] = 'Filextension changed from .%s to .%s!';
-
-$lang['js']['mediatitle']       = 'Link settings';
-$lang['js']['mediadisplay']     = 'Link type';
-$lang['js']['mediaalign']       = 'Alignment';
-$lang['js']['mediasize']        = 'Image size';
-$lang['js']['mediatarget']      = 'Link target';
-$lang['js']['mediaclose']       = 'Close';
-$lang['js']['mediainsert']      = 'Insert';
-$lang['js']['mediadisplayimg']  = 'Show the image.';
-$lang['js']['mediadisplaylnk']  = 'Show only the link.';
-$lang['js']['mediasmall']       = 'Small version';
-$lang['js']['mediamedium']      = 'Medium version';
-$lang['js']['medialarge']       = 'Large version';
-$lang['js']['mediaoriginal']    = 'Original version';
-$lang['js']['medialnk']         = 'Link to detail page';
-$lang['js']['mediadirect']      = 'Direct link to original';
-$lang['js']['medianolnk']       = 'No link';
-$lang['js']['medianolink']      = 'Do not link the image';
-$lang['js']['medialeft']        = 'Align the image on the left.';
-$lang['js']['mediaright']       = 'Align the image on the right.';
-$lang['js']['mediacenter']      = 'Align the image in the middle.';
-$lang['js']['medianoalign']     = 'Use no align.';
-
-$lang['reference']   = 'References for';
-$lang['ref_inuse']   = 'The file can\'t be deleted, because it\'s still used by the following pages:';
-$lang['ref_hidden']  = 'Some references  are on pages you don\'t have permission to read';
-
-$lang['hits']       = 'Hits';
-$lang['quickhits']  = 'Matching pagenames';
-$lang['toc']        = 'Table of Contents';
-$lang['current']    = 'current';
-$lang['yours']      = 'Your Version';
-$lang['diff']       = 'Show differences to current revisions';
-$lang['diff2']      = 'Show differences between selected revisions';
-$lang['difflink']   = 'Link to this comparison view';
-$lang['diff_type']  = 'View differences:';
-$lang['diff_inline']= 'Inline';
-$lang['diff_side']  = 'Side by Side';
-$lang['line']       = 'Line';
-$lang['breadcrumb'] = 'Trace';
-$lang['youarehere'] = 'You are here';
-$lang['lastmod']    = 'Last modified';
-$lang['by']         = 'by';
-$lang['deleted']    = 'removed';
-$lang['created']    = 'created';
-$lang['restored']   = 'old revision restored';
-$lang['external_edit'] = 'external edit';
-$lang['summary']    = 'Edit summary';
-$lang['noflash']    = 'The <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> is needed to display this content.';
-$lang['download']   = 'Download Snippet';
-
-$lang['changes_type']  = 'View changes of';
-$lang['pages_changes'] = 'Pages';
-$lang['media_changes'] = 'Media files';
-$lang['both_changes']  = 'Both pages and media files';
-
-$lang['mail_newpage']  = 'page added:';
-$lang['mail_changed']  = 'page changed:';
-$lang['mail_subscribe_list'] = 'pages changed in namespace:';
-$lang['mail_new_user'] = 'new user:';
-$lang['mail_upload']   = 'file uploaded:';
-
-$lang['js']['nosmblinks'] = "Linking to Windows shares only works in Microsoft Internet Explorer.\nYou still can copy and paste the link.";
-
-$lang['qb_bold']    = 'Bold Text';
-$lang['qb_italic']  = 'Italic Text';
-$lang['qb_underl']  = 'Underlined Text';
-$lang['qb_code']    = 'Code Text';
-$lang['qb_strike']  = 'Strike-through Text';
-$lang['qb_h1']      = 'Level 1 Headline';
-$lang['qb_h2']      = 'Level 2 Headline';
-$lang['qb_h3']      = 'Level 3 Headline';
-$lang['qb_h4']      = 'Level 4 Headline';
-$lang['qb_h5']      = 'Level 5 Headline';
-
-$lang['qb_h']       = 'Headline';
-$lang['qb_hs']      = 'Select Headline';
-$lang['qb_hplus']   = 'Higher Headline';
-$lang['qb_hminus']  = 'Lower Headline';
-$lang['qb_hequal']  = 'Same Level Headline';
-
-$lang['qb_link']    = 'Internal Link';
-$lang['qb_extlink'] = 'External Link';
-$lang['qb_hr']      = 'Horizontal Rule';
-$lang['qb_ol']      = 'Ordered List Item';
-$lang['qb_ul']      = 'Unordered List Item';
-$lang['qb_media']   = 'Add Images and other files';
-$lang['qb_sig']     = 'Insert Signature';
-$lang['qb_smileys'] = 'Smileys';
-$lang['qb_chars']   = 'Special Chars';
-
-$lang['upperns']       = 'jump to parent namespace';
-$lang['js']['linkwiz'] = 'Link Wizard';
-$lang['js']['linkto']  = 'Link to:';
-
-$lang['js']['del_confirm']= 'Really delete selected item(s)?';
-$lang['js']['restore_confirm']= 'Really restore this version?';
-$lang['admin_register']= 'Add new user';
-
-$lang['metaedit']    = 'Edit Metadata';
-$lang['metasaveerr'] = 'Writing metadata failed';
-$lang['metasaveok']  = 'Metadata saved';
-$lang['img_backto']  = 'Back to';
-$lang['img_title']   = 'Title';
-$lang['img_caption'] = 'Caption';
-$lang['img_date']    = 'Date';
-$lang['img_fname']   = 'Filename';
-$lang['img_fsize']   = 'Size';
-$lang['img_artist']  = 'Photographer';
-$lang['img_copyr']   = 'Copyright';
-$lang['img_format']  = 'Format';
-$lang['img_camera']  = 'Camera';
-$lang['img_keywords']= 'Keywords';
-$lang['img_width']   = 'Width';
-$lang['img_height']  = 'Height';
-$lang['img_manager'] = 'View in media manager';
-
-$lang['subscr_subscribe_success']  = 'Added %s to subscription list for %s';
-$lang['subscr_subscribe_error']    = 'Error adding %s to subscription list for %s';
-$lang['subscr_subscribe_noaddress']= 'There is no address associated with your login, you cannot be added to the subscription list';
-$lang['subscr_unsubscribe_success']= 'Removed %s from subscription list for %s';
-$lang['subscr_unsubscribe_error']  = 'Error removing %s from subscription list for %s';
-$lang['subscr_already_subscribed'] = '%s is already subscribed to %s';
-$lang['subscr_not_subscribed']     = '%s is not subscribed to %s';
+$lang['encoding']              = 'utf-8';
+$lang['direction']             = 'ltr';
+$lang['doublequoteopening']    = '“'; //&ldquo;
+$lang['doublequoteclosing']    = '”'; //&rdquo;
+$lang['singlequoteopening']    = '‘'; //&lsquo;
+$lang['singlequoteclosing']    = '’'; //&rsquo;
+$lang['apostrophe']            = '’'; //&rsquo;
+
+$lang['btn_edit']              = 'Edit this page';
+$lang['btn_source']            = 'Show pagesource';
+$lang['btn_show']              = 'Show page';
+$lang['btn_create']            = 'Create this page';
+$lang['btn_search']            = 'Search';
+$lang['btn_save']              = 'Save';
+$lang['btn_preview']           = 'Preview';
+$lang['btn_top']               = 'Back to top';
+$lang['btn_newer']             = '<< more recent';
+$lang['btn_older']             = 'less recent >>';
+$lang['btn_revs']              = 'Old revisions';
+$lang['btn_recent']            = 'Recent changes';
+$lang['btn_upload']            = 'Upload';
+$lang['btn_cancel']            = 'Cancel';
+$lang['btn_index']             = 'Sitemap';
+$lang['btn_secedit']           = 'Edit';
+$lang['btn_login']             = 'Login';
+$lang['btn_logout']            = 'Logout';
+$lang['btn_admin']             = 'Admin';
+$lang['btn_update']            = 'Update';
+$lang['btn_delete']            = 'Delete';
+$lang['btn_back']              = 'Back';
+$lang['btn_backlink']          = "Backlinks";
+$lang['btn_backtomedia']       = 'Back to Mediafile Selection';
+$lang['btn_subscribe']         = 'Manage Subscriptions';
+$lang['btn_profile']           = 'Update Profile';
+$lang['btn_reset']             = 'Reset';
+$lang['btn_resendpwd']         = 'Send new password';
+$lang['btn_draft']             = 'Edit draft';
+$lang['btn_recover']           = 'Recover draft';
+$lang['btn_draftdel']          = 'Delete draft';
+$lang['btn_revert']            = 'Restore';
+$lang['btn_register']          = 'Register';
+$lang['btn_apply']             = 'Apply';
+$lang['btn_media']             = 'Media Manager';
+
+$lang['loggedinas']            = 'Logged in as';
+$lang['user']                  = 'Username';
+$lang['pass']                  = 'Password';
+$lang['newpass']               = 'New password';
+$lang['oldpass']               = 'Confirm current password';
+$lang['passchk']               = 'once again';
+$lang['remember']              = 'Remember me';
+$lang['fullname']              = 'Real name';
+$lang['email']                 = 'E-Mail';
+$lang['profile']               = 'User Profile';
+$lang['badlogin']              = 'Sorry, username or password was wrong.';
+$lang['minoredit']             = 'Minor Changes';
+$lang['draftdate']             = 'Draft autosaved on'; // full dformat date will be added
+$lang['nosecedit']             = 'The page was changed in the meantime, section info was out of date loaded full page instead.';
+
+$lang['regmissing']            = 'Sorry, you must fill in all fields.';
+$lang['reguexists']            = 'Sorry, a user with this login already exists.';
+$lang['regsuccess']            = 'The user has been created and the password was sent by email.';
+$lang['regsuccess2']           = 'The user has been created.';
+$lang['regmailfail']           = 'Looks like there was an error on sending the password mail. Please contact the admin!';
+$lang['regbadmail']            = 'The given email address looks invalid - if you think this is an error, contact the admin';
+$lang['regbadpass']            = 'The two given passwords are not identical, please try again.';
+$lang['regpwmail']             = 'Your DokuWiki password';
+$lang['reghere']               = 'You don\'t have an account yet? Just get one';
+
+$lang['profna']                = 'This wiki does not support profile modification';
+$lang['profnochange']          = 'No changes, nothing to do.';
+$lang['profnoempty']           = 'An empty name or email address is not allowed.';
+$lang['profchanged']           = 'User profile successfully updated.';
+
+$lang['pwdforget']             = 'Forgotten your password? Get a new one';
+$lang['resendna']              = 'This wiki does not support password resending.';
+$lang['resendpwd']             = 'Send new password for';
+$lang['resendpwdmissing']      = 'Sorry, you must fill in all fields.';
+$lang['resendpwdnouser']       = 'Sorry, we can\'t find this user in our database.';
+$lang['resendpwdbadauth']      = 'Sorry, this auth code is not valid. Make sure you used the complete confirmation link.';
+$lang['resendpwdconfirm']      = 'A confirmation link has been sent by email.';
+$lang['resendpwdsuccess']      = 'Your new password has been sent by email.';
+
+$lang['license']               = 'Except where otherwise noted, content on this wiki is licensed under the following license:';
+$lang['licenseok']             = 'Note: By editing this page you agree to license your content under the following license:';
+
+$lang['searchmedia']           = 'Search file name:';
+$lang['searchmedia_in']        = 'Search in %s';
+$lang['txt_upload']            = 'Select file to upload';
+$lang['txt_filename']          = 'Upload as (optional)';
+$lang['txt_overwrt']           = 'Overwrite existing file';
+$lang['lockedby']              = 'Currently locked by';
+$lang['lockexpire']            = 'Lock expires at';
+
+$lang['js']['willexpire']      = 'Your lock for editing this page is about to expire in a minute.\nTo avoid conflicts use the preview button to reset the locktimer.';
+$lang['js']['notsavedyet']     = 'Unsaved changes will be lost.';
+$lang['js']['searchmedia']     = 'Search for files';
+$lang['js']['keepopen']        = 'Keep window open on selection';
+$lang['js']['hidedetails']     = 'Hide Details';
+$lang['js']['mediatitle']      = 'Link settings';
+$lang['js']['mediadisplay']    = 'Link type';
+$lang['js']['mediaalign']      = 'Alignment';
+$lang['js']['mediasize']       = 'Image size';
+$lang['js']['mediatarget']     = 'Link target';
+$lang['js']['mediaclose']      = 'Close';
+$lang['js']['mediainsert']     = 'Insert';
+$lang['js']['mediadisplayimg'] = 'Show the image.';
+$lang['js']['mediadisplaylnk'] = 'Show only the link.';
+$lang['js']['mediasmall']      = 'Small version';
+$lang['js']['mediamedium']     = 'Medium version';
+$lang['js']['medialarge']      = 'Large version';
+$lang['js']['mediaoriginal']   = 'Original version';
+$lang['js']['medialnk']        = 'Link to detail page';
+$lang['js']['mediadirect']     = 'Direct link to original';
+$lang['js']['medianolnk']      = 'No link';
+$lang['js']['medianolink']     = 'Do not link the image';
+$lang['js']['medialeft']       = 'Align the image on the left.';
+$lang['js']['mediaright']      = 'Align the image on the right.';
+$lang['js']['mediacenter']     = 'Align the image in the middle.';
+$lang['js']['medianoalign']    = 'Use no align.';
+$lang['js']['nosmblinks']      = 'Linking to Windows shares only works in Microsoft Internet Explorer.\nYou still can copy and paste the link.';
+$lang['js']['linkwiz']         = 'Link Wizard';
+$lang['js']['linkto']          = 'Link to:';
+$lang['js']['del_confirm']     = 'Really delete selected item(s)?';
+$lang['js']['restore_confirm'] = 'Really restore this version?';
+$lang['js']['media_diff']          = 'View differences:';
+$lang['js']['media_diff_both']     = 'Side by Side';
+$lang['js']['media_diff_opacity']  = 'Shine-through';
+$lang['js']['media_diff_portions'] = 'Swipe';
+$lang['js']['media_select']        = 'Select files…';
+$lang['js']['media_upload_btn']    = 'Upload';
+$lang['js']['media_done_btn']      = 'Done';
+$lang['js']['media_drop']          = 'Drop files here to upload';
+$lang['js']['media_cancel']        = 'remove';
+$lang['js']['media_overwrt']       = 'Overwrite existing files';
+
+$lang['rssfailed']             = 'An error occurred while fetching this feed: ';
+$lang['nothingfound']          = 'Nothing was found.';
+
+$lang['mediaselect']           = 'Media Files';
+$lang['fileupload']            = 'Media File Upload';
+$lang['uploadsucc']            = 'Upload successful';
+$lang['uploadfail']            = 'Upload failed. Maybe wrong permissions?';
+$lang['uploadwrong']           = 'Upload denied. This file extension is forbidden!';
+$lang['uploadexist']           = 'File already exists. Nothing done.';
+$lang['uploadbadcontent']      = 'The uploaded content did not match the %s file extension.';
+$lang['uploadspam']            = 'The upload was blocked by the spam blacklist.';
+$lang['uploadxss']             = 'The upload was blocked for possibly malicious content.';
+$lang['uploadsize']            = 'The uploaded file was too big. (max. %s)';
+$lang['deletesucc']            = 'The file "%s" has been deleted.';
+$lang['deletefail']            = '"%s" couldn\'t be deleted - check permissions.';
+$lang['mediainuse']            = 'The file "%s" hasn\'t been deleted - it is still in use.';
+$lang['namespaces']            = 'Namespaces';
+$lang['mediafiles']            = 'Available files in';
+$lang['accessdenied']          = 'You are not allowed to view this page.';
+$lang['mediausage']            = 'Use the following syntax to reference this file:';
+$lang['mediaview']             = 'View original file';
+$lang['mediaroot']             = 'root';
+$lang['mediaupload']           = 'Upload a file to the current namespace here. To create subnamespaces, prepend them to your "Upload as" filename separated by colons. Files also can be selected by drag and drop.';
+$lang['mediaextchange']        = 'Filextension changed from .%s to .%s!';
+$lang['reference']             = 'References for';
+$lang['ref_inuse']             = 'The file can\'t be deleted, because it\'s still used by the following pages:';
+$lang['ref_hidden']            = 'Some references  are on pages you don\'t have permission to read';
+
+$lang['hits']                  = 'Hits';
+$lang['quickhits']             = 'Matching pagenames';
+$lang['toc']                   = 'Table of Contents';
+$lang['current']               = 'current';
+$lang['yours']                 = 'Your Version';
+$lang['diff']                  = 'Show differences to current revisions';
+$lang['diff2']                 = 'Show differences between selected revisions';
+$lang['difflink']              = 'Link to this comparison view';
+$lang['diff_type']             = 'View differences:';
+$lang['diff_inline']           = 'Inline';
+$lang['diff_side']             = 'Side by Side';
+$lang['line']                  = 'Line';
+$lang['breadcrumb']            = 'Trace';
+$lang['youarehere']            = 'You are here';
+$lang['lastmod']               = 'Last modified';
+$lang['by']                    = 'by';
+$lang['deleted']               = 'removed';
+$lang['created']               = 'created';
+$lang['restored']              = 'old revision restored';
+$lang['external_edit']         = 'external edit';
+$lang['summary']               = 'Edit summary';
+$lang['noflash']               = 'The <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> is needed to display this content.';
+$lang['download']              = 'Download Snippet';
+
+$lang['mail_newpage']          = 'page added:';
+$lang['mail_changed']          = 'page changed:';
+$lang['mail_subscribe_list']   = 'pages changed in namespace:';
+$lang['mail_new_user']         = 'new user:';
+$lang['mail_upload']           = 'file uploaded:';
+
+$lang['changes_type']          = 'View changes of';
+$lang['pages_changes']         = 'Pages';
+$lang['media_changes']         = 'Media files';
+$lang['both_changes']          = 'Both pages and media files';
+
+$lang['qb_bold']               = 'Bold Text';
+$lang['qb_italic']             = 'Italic Text';
+$lang['qb_underl']             = 'Underlined Text';
+$lang['qb_code']               = 'Code Text';
+$lang['qb_strike']             = 'Strike-through Text';
+$lang['qb_h1']                 = 'Level 1 Headline';
+$lang['qb_h2']                 = 'Level 2 Headline';
+$lang['qb_h3']                 = 'Level 3 Headline';
+$lang['qb_h4']                 = 'Level 4 Headline';
+$lang['qb_h5']                 = 'Level 5 Headline';
+$lang['qb_h']                  = 'Headline';
+$lang['qb_hs']                 = 'Select Headline';
+$lang['qb_hplus']              = 'Higher Headline';
+$lang['qb_hminus']             = 'Lower Headline';
+$lang['qb_hequal']             = 'Same Level Headline';
+$lang['qb_link']               = 'Internal Link';
+$lang['qb_extlink']            = 'External Link';
+$lang['qb_hr']                 = 'Horizontal Rule';
+$lang['qb_ol']                 = 'Ordered List Item';
+$lang['qb_ul']                 = 'Unordered List Item';
+$lang['qb_media']              = 'Add Images and other files';
+$lang['qb_sig']                = 'Insert Signature';
+$lang['qb_smileys']            = 'Smileys';
+$lang['qb_chars']              = 'Special Chars';
+
+$lang['upperns']               = 'jump to parent namespace';
+
+$lang['admin_register']        = 'Add new user';
+
+$lang['metaedit']              = 'Edit Metadata';
+$lang['metasaveerr']           = 'Writing metadata failed';
+$lang['metasaveok']            = 'Metadata saved';
+$lang['img_backto']            = 'Back to';
+$lang['img_title']             = 'Title';
+$lang['img_caption']           = 'Caption';
+$lang['img_date']              = 'Date';
+$lang['img_fname']             = 'Filename';
+$lang['img_fsize']             = 'Size';
+$lang['img_artist']            = 'Photographer';
+$lang['img_copyr']             = 'Copyright';
+$lang['img_format']            = 'Format';
+$lang['img_camera']            = 'Camera';
+$lang['img_keywords']          = 'Keywords';
+$lang['img_width']             = 'Width';
+$lang['img_height']            = 'Height';
+$lang['img_manager']           = 'View in media manager';
+
+$lang['subscr_subscribe_success']   = 'Added %s to subscription list for %s';
+$lang['subscr_subscribe_error']     = 'Error adding %s to subscription list for %s';
+$lang['subscr_subscribe_noaddress'] = 'There is no address associated with your login, you cannot be added to the subscription list';
+$lang['subscr_unsubscribe_success'] = 'Removed %s from subscription list for %s';
+$lang['subscr_unsubscribe_error']   = 'Error removing %s from subscription list for %s';
+$lang['subscr_already_subscribed']  = '%s is already subscribed to %s';
+$lang['subscr_not_subscribed']      = '%s is not subscribed to %s';
 // Manage page for subscriptions
-$lang['subscr_m_not_subscribed']   = 'You are currently not subscribed to the current page or namespace.';
-$lang['subscr_m_new_header']       = 'Add subscription';
-$lang['subscr_m_current_header']   = 'Current subscriptions';
-$lang['subscr_m_unsubscribe']      = 'Unsubscribe';
-$lang['subscr_m_subscribe']        = 'Subscribe';
-$lang['subscr_m_receive']          = 'Receive';
-$lang['subscr_style_every']        = 'email on every change';
-$lang['subscr_style_digest']       = 'digest email of changes for each page (every %.2f days)';
-$lang['subscr_style_list']         = 'list of changed pages since last email (every %.2f days)';
-
+$lang['subscr_m_not_subscribed']    = 'You are currently not subscribed to the current page or namespace.';
+$lang['subscr_m_new_header']        = 'Add subscription';
+$lang['subscr_m_current_header']    = 'Current subscriptions';
+$lang['subscr_m_unsubscribe']       = 'Unsubscribe';
+$lang['subscr_m_subscribe']         = 'Subscribe';
+$lang['subscr_m_receive']           = 'Receive';
+$lang['subscr_style_every']         = 'email on every change';
+$lang['subscr_style_digest']        = 'digest email of changes for each page (every %.2f days)';
+$lang['subscr_style_list']          = 'list of changed pages since last email (every %.2f days)';
 
 /* auth.class language support */
-$lang['authmodfailed']   = 'Bad user authentication configuration. Please inform your Wiki Admin.';
-$lang['authtempfail']    = 'User authentication is temporarily unavailable. If this situation persists, please inform your Wiki Admin.';
+$lang['authmodfailed']         = 'Bad user authentication configuration. Please inform your Wiki Admin.';
+$lang['authtempfail']          = 'User authentication is temporarily unavailable. If this situation persists, please inform your Wiki Admin.';
 
 /* installer strings */
-$lang['i_chooselang'] = 'Choose your language';
-$lang['i_installer']  = 'DokuWiki Installer';
-$lang['i_wikiname']   = 'Wiki Name';
-$lang['i_enableacl']  = 'Enable ACL (recommended)';
-$lang['i_superuser']  = 'Superuser';
-$lang['i_problems']   = 'The installer found some problems, indicated below. You can not continue until you have fixed them.';
-$lang['i_modified']   = 'For security reasons this script will only work with a new and unmodified Dokuwiki installation.
-                         You should either re-extract the files from the downloaded package or consult the complete
-                         <a href="http://dokuwiki.org/install">Dokuwiki installation instructions</a>';
-$lang['i_funcna']     = 'PHP function <code>%s</code> is not available. Maybe your hosting provider disabled it for some reason?';
-$lang['i_phpver']     = 'Your PHP version <code>%s</code> is lower than the needed <code>%s</code>. You need to upgrade your PHP install.';
-$lang['i_permfail']   = '<code>%s</code> is not writable by DokuWiki. You need to fix the permission settings of this directory!';
-$lang['i_confexists'] = '<code>%s</code> already exists';
-$lang['i_writeerr']   = 'Unable to create <code>%s</code>. You will need to check directory/file permissions and create the file manually.';
-$lang['i_badhash']    = 'unrecognised or modified dokuwiki.php (hash=<code>%s</code>)';
-$lang['i_badval']     = '<code>%s</code> - illegal or empty value';
-$lang['i_success']    = 'The configuration was finished successfully. You may delete the install.php file now. Continue to
-                        <a href="doku.php">your new DokuWiki</a>.';
-$lang['i_failure']    = 'Some errors occurred while writing the configuration files. You may need to fix them manually before
-                         you can use <a href="doku.php">your new DokuWiki</a>.';
-$lang['i_policy']     = 'Initial ACL policy';
-$lang['i_pol0']       = 'Open Wiki (read, write, upload for everyone)';
-$lang['i_pol1']       = 'Public Wiki (read for everyone, write and upload for registered users)';
-$lang['i_pol2']       = 'Closed Wiki (read, write, upload for registered users only)';
-
-$lang['i_retry']      = 'Retry';
-$lang['i_license']    = 'Please choose the license you want to put your content under:';
-
-$lang['mu_intro']     = 'Here you can upload multiple files at once. Click the browse button to add them to the queue. Press upload when done.';
-$lang['js']['mu_btn'] = 'Upload multiple files at once';
-$lang['mu_gridname']  = 'Filename';
-$lang['mu_gridsize']  = 'Size';
-$lang['mu_gridstat']  = 'Status';
-$lang['mu_namespace'] = 'Namespace';
-$lang['mu_browse']    = 'Browse';
-$lang['mu_toobig']    = 'too big';
-$lang['mu_ready']     = 'ready for upload';
-$lang['mu_done']      = 'complete';
-$lang['mu_fail']      = 'failed';
-$lang['mu_authfail']  = 'session expired';
-$lang['mu_progress']  = '@PCT@% uploaded';
-$lang['mu_filetypes'] = 'Allowed Filetypes';
-$lang['mu_info']      = 'files uploaded.';
-$lang['mu_lasterr']   = 'Last error:';
-
-$lang['recent_global'] = 'You\'re currently watching the changes inside the <b>%s</b> namespace. You can also <a href="%s">view the recent changes of the whole wiki</a>.';
-
-$lang['years']   = '%d years ago';
-$lang['months']  = '%d months ago';
-$lang['weeks']   = '%d weeks ago';
-$lang['days']    = '%d days ago';
-$lang['hours']   = '%d hours ago';
-$lang['minutes'] = '%d minutes ago';
-$lang['seconds'] = '%d seconds ago';
-
-$lang['wordblock'] = 'Your change was not saved because it contains blocked text (spam).';
-
-$lang['media_uploadtab']  = 'Upload';
-$lang['media_searchtab']  = 'Search';
-$lang['media_viewtab']    = 'View';
-$lang['media_edittab']    = 'Edit';
-$lang['media_historytab'] = 'History';
-$lang['media_thumbsview'] = 'Thumbnails';
-$lang['media_listview']   = 'List';
-$lang['media_sort']       = 'Sort';
-$lang['media_sort_name']  = 'by name';
-$lang['media_sort_date']  = 'by date';
-$lang['media_upload']     = 'Upload to the <strong>%s</strong> namespace.';
-$lang['media_search']     = 'Search in the <strong>%s</strong> namespace.';
-$lang['media_edit']       = 'Edit';
-$lang['media_history']    = 'These are the older revisions of the file.';
-$lang['media_meta_edited']= 'metadata edited';
-$lang['media_perm_read']  = 'Sorry, you don\'t have enough rights to read files.';
-$lang['media_perm_upload']= 'Sorry, you don\'t have enough rights to upload files.';
-$lang['media_update']     = 'Upload new version';
-$lang['media_restore']    = 'Restore this version';
-
-$lang['js']['media_diff']          = 'View differences:';
-$lang['js']['media_diff_both']     = 'Side by Side';
-$lang['js']['media_diff_opacity']  = 'Overlay';
-$lang['js']['media_diff_portions'] = 'Slider';
-
-$lang['js']['media_select']     = 'Select files…';
-$lang['js']['media_upload_btn'] = 'Upload';
-$lang['js']['media_done_btn']   = 'Done';
-$lang['js']['media_drop']       = 'Drop files here to upload';
-$lang['js']['media_cancel']     = 'remove';
-$lang['js']['media_overwrt']    = 'Overwrite existing files';
-
-$lang['plugin_install_err'] = "Plugin installed incorrectly. Rename plugin directory '%s' to '%s'.";
+$lang['i_chooselang']          = 'Choose your language';
+$lang['i_installer']           = 'DokuWiki Installer';
+$lang['i_wikiname']            = 'Wiki Name';
+$lang['i_enableacl']           = 'Enable ACL (recommended)';
+$lang['i_superuser']           = 'Superuser';
+$lang['i_problems']            = 'The installer found some problems, indicated below. You can not continue until you have fixed them.';
+$lang['i_modified']            = 'For security reasons this script will only work with a new and unmodified Dokuwiki installation.
+                                  You should either re-extract the files from the downloaded package or consult the complete
+                                  <a href="http://dokuwiki.org/install">Dokuwiki installation instructions</a>';
+$lang['i_funcna']              = 'PHP function <code>%s</code> is not available. Maybe your hosting provider disabled it for some reason?';
+$lang['i_phpver']              = 'Your PHP version <code>%s</code> is lower than the needed <code>%s</code>. You need to upgrade your PHP install.';
+$lang['i_permfail']            = '<code>%s</code> is not writable by DokuWiki. You need to fix the permission settings of this directory!';
+$lang['i_confexists']          = '<code>%s</code> already exists';
+$lang['i_writeerr']            = 'Unable to create <code>%s</code>. You will need to check directory/file permissions and create the file manually.';
+$lang['i_badhash']             = 'unrecognised or modified dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_badval']              = '<code>%s</code> - illegal or empty value';
+$lang['i_success']             = 'The configuration was finished successfully. You may delete the install.php file now. Continue to
+                                 <a href="doku.php">your new DokuWiki</a>.';
+$lang['i_failure']             = 'Some errors occurred while writing the configuration files. You may need to fix them manually before
+                                  you can use <a href="doku.php">your new DokuWiki</a>.';
+$lang['i_policy']              = 'Initial ACL policy';
+$lang['i_pol0']                = 'Open Wiki (read, write, upload for everyone)';
+$lang['i_pol1']                = 'Public Wiki (read for everyone, write and upload for registered users)';
+$lang['i_pol2']                = 'Closed Wiki (read, write, upload for registered users only)';
+$lang['i_retry']               = 'Retry';
+$lang['i_license']             = 'Please choose the license you want to put your content under:';
+
+$lang['mu_intro']              = 'Here you can upload multiple files at once. Click the browse button to add them to the queue. Press upload when done.';
+$lang['mu_gridname']           = 'Filename';
+$lang['mu_gridsize']           = 'Size';
+$lang['mu_gridstat']           = 'Status';
+$lang['mu_namespace']          = 'Namespace';
+$lang['mu_browse']             = 'Browse';
+$lang['mu_toobig']             = 'too big';
+$lang['mu_ready']              = 'ready for upload';
+$lang['mu_done']               = 'complete';
+$lang['mu_fail']               = 'failed';
+$lang['mu_authfail']           = 'session expired';
+$lang['mu_progress']           = '@PCT@% uploaded';
+$lang['mu_filetypes']          = 'Allowed Filetypes';
+$lang['mu_info']               = 'files uploaded.';
+$lang['mu_lasterr']            = 'Last error:';
+
+$lang['recent_global']         = 'You\'re currently watching the changes inside the <b>%s</b> namespace. You can also <a href="%s">view the recent changes of the whole wiki</a>.';
+$lang['years']                 = '%d years ago';
+$lang['months']                = '%d months ago';
+$lang['weeks']                 = '%d weeks ago';
+$lang['days']                  = '%d days ago';
+$lang['hours']                 = '%d hours ago';
+$lang['minutes']               = '%d minutes ago';
+$lang['seconds']               = '%d seconds ago';
+
+$lang['wordblock']             = 'Your change was not saved because it contains blocked text (spam).';
+
+$lang['media_uploadtab']       = 'Upload';
+$lang['media_searchtab']       = 'Search';
+$lang['media_file']            = 'File';
+$lang['media_viewtab']         = 'View';
+$lang['media_edittab']         = 'Edit';
+$lang['media_historytab']      = 'History';
+$lang['media_list_thumbs']     = 'Thumbnails';
+$lang['media_list_rows']       = 'Rows';
+$lang['media_sort_name']       = 'Name';
+$lang['media_sort_date']       = 'Date';
+$lang['media_namespaces']      = 'Choose namespace';
+$lang['media_files']           = 'Files in %s';
+$lang['media_upload']          = 'Upload to %s';
+$lang['media_search']          = 'Search in %s';
+$lang['media_view']            = '%s';
+$lang['media_viewold']         = '%s at %s';
+$lang['media_edit']            = 'Edit %s';
+$lang['media_history']         = 'History of %s';
+$lang['media_meta_edited']     = 'metadata edited';
+$lang['media_perm_read']       = 'Sorry, you don\'t have enough rights to read files.';
+$lang['media_perm_upload']     = 'Sorry, you don\'t have enough rights to upload files.';
+$lang['media_update']          = 'Upload new version';
+$lang['media_restore']         = 'Restore this version';
+
+$lang['plugin_install_err']    = "Plugin installed incorrectly. Rename plugin directory '%s' to '%s'.";
 
 //Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/en/uploadmail.txt b/inc/lang/en/uploadmail.txt
index 932a1b704dcec8015d9bc1a24ec840e0a24cf2b8..16bb6989cb826ad24818782fec695e1f28e2f925 100644
--- a/inc/lang/en/uploadmail.txt
+++ b/inc/lang/en/uploadmail.txt
@@ -1,14 +1,14 @@
 A file was uploaded to your DokuWiki. Here are the details:
 
-File         : @MEDIA@
-Old revision : @OLD@
-Date         : @DATE@
-Browser      : @BROWSER@
-IP-Address   : @IPADDRESS@
-Hostname     : @HOSTNAME@
-Size         : @SIZE@
-MIME Type    : @MIME@
-User         : @USER@
+File        : @MEDIA@
+Old revision: @OLD@
+Date        : @DATE@
+Browser     : @BROWSER@
+IP-Address  : @IPADDRESS@
+Hostname    : @HOSTNAME@
+Size        : @SIZE@
+MIME Type   : @MIME@
+User        : @USER@
 
 -- 
 This mail was generated by DokuWiki at
diff --git a/inc/lang/eo/conflict.txt b/inc/lang/eo/conflict.txt
index 0d7ede0b0c220cb6b8d7fd7319f47406ddfea261..603af39e1bb105e9d87a77399e67c51873f56ce2 100644
--- a/inc/lang/eo/conflict.txt
+++ b/inc/lang/eo/conflict.txt
@@ -2,4 +2,4 @@
 
 Ekzistas pli nova versio de la dokumento. Tio okazas kiam iu alia uzanto ŝanĝigis enhavon de la dokumento dum vi redaktis ĝin.
 
-Atente esploru distingojn kaj decidu kiun version vi tenigos. Se vi premos ''Konservi'', do via versio estos konservita. Presonte butonon ''Rezigni'' vi tenos la kurantan version.
+Atente esploru distingojn kaj decidu kiun version vi tenigos. Se vi premos '&quot;Konservi'&quot;, do via versio estos konservita. Presonte butonon '&quot;Rezigni&quot; vi tenos la kurantan version.
diff --git a/inc/lang/eo/edit.txt b/inc/lang/eo/edit.txt
index c1ca31e1d60e55d147a66742c3189d03b52ed2f5..9239c7fe623a827d9ecd69aa73f2169462838fec 100644
--- a/inc/lang/eo/edit.txt
+++ b/inc/lang/eo/edit.txt
@@ -1 +1 @@
-Redaktu paĝon kaj poste premu butonon titolitan ''Konservi''. Bonvolu tralegi la [[vikio:sintakso|vikian sintakson]] por kompreni kiel vi povas krei paĝojn. Bonvolu redakti nur se vi planas **plibonigi** la enhavon de la paĝo. Se vi volas nur testi ion, do bonvolu uzi specialan paĝon: [[vikio:ludejo|ludejo]].
+Redaktu paĝon kaj poste premu butonon titolitan '&quot;Konservi'&quot;. Bonvolu tralegi la [[vikio:sintakso|vikian sintakson]] por kompreni kiel vi povas krei paĝojn. Bonvolu redakti nur se vi planas **plibonigi** la enhavon de la paĝo. Se vi volas nur testi ion, do bonvolu uzi specialan paĝon: [[vikio:ludejo|ludejo]].
diff --git a/inc/lang/eo/index.txt b/inc/lang/eo/index.txt
index 08bf3c89433351609c750050f900426151d1ae08..4ef720cb235f79a6d0e2708b2b96b107789524a1 100644
--- a/inc/lang/eo/index.txt
+++ b/inc/lang/eo/index.txt
@@ -1,3 +1,3 @@
 ====== Enhavo ======
 
-Tio ĉi estas indekso pri ĉiuj disponeblaj paĝoj ordigitaj laŭ [[doku>namespaces|nomspacoj]].
\ No newline at end of file
+Tio ĉi estas indekso pri ĉiuj disponeblaj paĝoj ordigitaj laŭ [[doku&gt;namespaces|nomspacoj]].
\ No newline at end of file
diff --git a/inc/lang/eo/install.html b/inc/lang/eo/install.html
index 74bbe15e241ae548a98c4509693b78d0f5621e37..9f43ae82e91dee2da9479830a06679202373d7ed 100644
--- a/inc/lang/eo/install.html
+++ b/inc/lang/eo/install.html
@@ -1,9 +1,9 @@
-<p>Tiu ĉi paĝo helpas en la unua instalo kaj agordado de <a href="http://dokuwiki.org">DokuWiki</a>. Pli da informo pri tiu instalilo estas disponebla en ĝia propra <a href="http://dokuwiki.org/installer">dokumentada paĝo</a>.</p>
+&lt;p&gt;Tiu ĉi paĝo helpas en la unua instalo kaj agordado de &lt;a href=&quot;http://dokuwiki.org&quot;&gt;DokuWiki&lt;/a&gt;. Pli da informo pri tiu instalilo estas disponebla en ĝia propra &lt;a href=&quot;http://dokuwiki.org/installer&quot;&gt;dokumentada paĝo&lt;/a&gt;.&lt;/p&gt;
 
-<p>DokuWiki uzas ordinarajn dosierojn por konservi vikiajn paĝojn kaj aliajn informojn asociitaj al tiuj paĝoj (ekz. bildoj, serĉindeksoj, malnovaj revizioj, ktp). Por bone funkcii, DokuWiki <strong>devas</strong> havi registran rajton sur la subdosierujoj, kiuj entenas tiujn dosierojn. Tiu ĉi instalilo ne kapablas difini permes-atributojn de dosierujoj. Ordinare, tio devas esti senpere farita de iu komando en konzolo aŭ, se vi abonas retprovizanton, per FTP aŭ kontrola panelo de tiu retprovizanto (ekz. cPanel).</p>
+&lt;p&gt;DokuWiki uzas ordinarajn dosierojn por konservi vikiajn paĝojn kaj aliajn informojn asociitaj al tiuj paĝoj (ekz. bildoj, serĉindeksoj, malnovaj revizioj, ktp). Por bone funkcii, DokuWiki &lt;strong&gt;devas&lt;/strong&gt; havi registran rajton sur la subdosierujoj, kiuj entenas tiujn dosierojn. Tiu ĉi instalilo ne kapablas difini permes-atributojn de dosierujoj. Ordinare, tio devas esti senpere farita de iu komando en konzolo aŭ, se vi abonas retprovizanton, per FTP aŭ kontrola panelo de tiu retprovidanto (ekz. cPanel).</p>
 
-<p>Tiu ĉi instalilo difinos vian DokuWiki-an agordadon por <acronym title="alir-kontrola listo">ACL</acronym>, kiu ebligas al administranto identiĝi kaj aliri taŭgan interfacon por instali kromaĵojn, administri uzantojn kaj alireblon al vikipaĝoj, kaj difini agordojn ĝeneralajn.
-Ĝi ne estas nepra por ke DokuWiki funkciu, tamen ĝi multe faciligos administradon.</p>
+&lt;p&gt;Tiu ĉi instalilo difinos vian DokuWiki-an agordadon por &lt;acronym title=&quot;alir-kontrola listo&quot;&gt;ACL&lt;/acronym&gt;, kiu ebligas al administranto identiĝi kaj aliri taŭgan interfacon por instali kromaĵojn, administri uzantojn kaj alireblon al vikipaĝoj, kaj difini agordojn ĝeneralajn.
+Ĝi ne estas nepra por ke DokuWiki funkciu, tamen ĝi multe faciligos administradon.&lt;/p&gt;
 
-<p>Spertuloj aÅ­ uzantoj kiuj bezonas specialajn agordrimedojn devus uzi tiujn ligilojn por havi pli detalojn pri <a href="http://dokuwiki.org/install">instaladaj instrukcioj</a>
-kaj <a href="http://dokuwiki.org/config">agordadaj difinoj</a>.</p>
\ No newline at end of file
+&lt;p&gt;Spertuloj aÅ­ uzantoj kiuj bezonas specialajn agordrimedojn devus uzi tiujn ligilojn por havi pli detalojn pri &lt;a href=&quot;http://dokuwiki.org/install&quot;&gt;instaladaj instrukcioj&lt;/a&gt;
+kaj &lt;a href=&quot;http://dokuwiki.org/config&quot;&gt;agordadaj difinoj&lt;/a&gt;.&lt;/p&gt;
\ No newline at end of file
diff --git a/inc/lang/eo/lang.php b/inc/lang/eo/lang.php
index 14bc56405799d5cdd677860b9a492047579d0bda..abb6bf7d7f7d1fb6ff15bdb714dae0b1b44f8f8f 100644
--- a/inc/lang/eo/lang.php
+++ b/inc/lang/eo/lang.php
@@ -9,6 +9,7 @@
  * @author Felipe Castro <fefcas@gmail.com>
  * @author Robert Bogenschneider <robog@gmx.de>
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
+ * @author Robert BOGENSCHNEIDER <bogi@UEA.org>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -25,8 +26,8 @@ $lang['btn_search']            = 'Serĉi';
 $lang['btn_save']              = 'Konservi';
 $lang['btn_preview']           = 'AntaÅ­rigardi';
 $lang['btn_top']               = 'Supren';
-$lang['btn_newer']             = '<< pli freŝe';
-$lang['btn_older']             = 'malpli freŝe >>';
+$lang['btn_newer']             = '&lt;&lt; pli freŝe';
+$lang['btn_older']             = 'malpli freŝe &gt;&gt;';
 $lang['btn_revs']              = 'Malnovaj revizioj';
 $lang['btn_recent']            = 'Freŝaj ŝanĝoj';
 $lang['btn_upload']            = 'Alŝuti';
@@ -50,7 +51,9 @@ $lang['btn_recover']           = 'Restarigi skizon';
 $lang['btn_draftdel']          = 'Forigi skizon';
 $lang['btn_revert']            = 'Restarigi';
 $lang['btn_register']          = 'Registriĝi';
-$lang['loggedinas']            = 'Ensalutita kiel';
+$lang['btn_apply']             = 'Apliki';
+$lang['btn_media']             = 'Medio-administrilo';
+$lang['loggedinas']            = 'Ensalutinta kiel';
 $lang['user']                  = 'Uzant-nomo';
 $lang['pass']                  = 'Pasvorto';
 $lang['newpass']               = 'Nova pasvorto';
@@ -63,16 +66,16 @@ $lang['profile']               = 'Uzanto-profilo';
 $lang['badlogin']              = 'Pardonu, uzant-nomo aÅ­ pasvorto estis erara.';
 $lang['minoredit']             = 'Etaj modifoj';
 $lang['draftdate']             = 'Lasta konservo de la skizo:';
-$lang['nosecedit']             = 'La paĝo ŝanĝiĝis intertempe, sekcio-informo estis malĝisdata, ni ŝargas la tutan paĝon anstataŭe.';
+$lang['nosecedit']             = 'La paĝo ŝanĝiĝis intertempe, sekcio-informo estis malĝisdata, tial la tuta paĝo estas reŝargita.';
 $lang['regmissing']            = 'Pardonu, vi devas plenigi ĉiujn kampojn.';
-$lang['reguexists']            = 'Pardonu, ĉi tiu uzanto-nomo jam estas okupita.';
+$lang['reguexists']            = 'Pardonu, ĉi tiu uzanto-nomo jam ekzistas.';
 $lang['regsuccess']            = 'La uzanto estas kreita kaj la pasvorto estis elsendita per retpoŝto.';
 $lang['regsuccess2']           = 'La uzanto estas kreita.';
 $lang['regmailfail']           = 'Åœajne okazis eraro dum elsendo de la pasvorto. Bonvolu informi administranton pri tio!';
 $lang['regbadmail']            = 'Entajpita retpoŝta adreso ne ŝajnas valida. Se vi pensas, ke tio estas eraro, kontaktu la administranton.';
 $lang['regbadpass']            = 'La du pasvortoj ne samas, bonvolu provi refoje.';
 $lang['regpwmail']             = 'Via DokuWiki-pasvorto';
-$lang['reghere']               = 'Se vi ne havas konton, do vi povas akiri ĝin';
+$lang['reghere']               = 'Se vi ne havas konton, vi povas akiri ĝin';
 $lang['profna']                = 'Tiu ĉi vikio ne ebligas modifon en la profiloj.';
 $lang['profnochange']          = 'Neniu ŝanĝo, nenio farinda.';
 $lang['profnoempty']           = 'Malplena nomo aÅ­ retadreso ne estas permesataj.';
@@ -94,7 +97,7 @@ $lang['txt_filename']          = 'Alŝuti kiel (laŭvole)';
 $lang['txt_overwrt']           = 'AnstataÅ­igi ekzistantan dosieron';
 $lang['lockedby']              = 'Nune ŝlosita de';
 $lang['lockexpire']            = 'Ŝlosado ĉesos en';
-$lang['js']['willexpire']            = 'Vi povos redakti ĉi tiun paĝon post unu minuto.\nSe vi volas nuligi tempkontrolon de la ŝlosado, do premu butonon "Antaŭrigardi".';
+$lang['js']['willexpire']      = 'Vi povos redakti ĉi tiun paĝon post unu minuto.\nSe vi volas nuligi tempkontrolon de la ŝlosado, do premu butonon "Antaŭrigardi".';
 $lang['js']['notsavedyet']     = 'Ne konservitaj modifoj perdiĝos.
 Ĉu vi certe volas daŭrigi la procezon?';
 $lang['js']['searchmedia']     = 'Serĉi dosierojn';
@@ -121,12 +124,22 @@ $lang['js']['medialeft']       = 'Meti la bildon maldekstren.';
 $lang['js']['mediaright']      = 'Meti la bildon dekstren.';
 $lang['js']['mediacenter']     = 'Meti la bildon mezen.';
 $lang['js']['medianoalign']    = 'Ne uzi poziciigon.';
-$lang['js']['nosmblinks']      = 'Tio ĉi nur funkcias en la Vindozaĉa "Microsoft Internet Explorer".
+$lang['js']['nosmblinks']      = 'Tio ĉi nur funkcias en la Vindozaĉa &quot;Microsoft Internet Explorer&quot;.
 Vi ankoraÅ­ povas kopii kaj almeti la ligilon.';
 $lang['js']['linkwiz']         = 'Ligil-Asistanto';
 $lang['js']['linkto']          = 'Ligilo al:';
 $lang['js']['del_confirm']     = 'Ĉu vere forigi elektitajn ero(j)n?';
-$lang['js']['mu_btn']          = 'Alŝuti plurajn dosierojn multope.';
+$lang['js']['restore_confirm'] = 'Ĉu vere restarigi ĉi tiun version?';
+$lang['js']['media_diff']      = 'Rigardu la diferencojn:';
+$lang['js']['media_diff_both'] = 'Flankon apud flanko';
+$lang['js']['media_diff_opacity'] = 'Unu super la alia';
+$lang['js']['media_diff_portions'] = 'Åœovilo';
+$lang['js']['media_select']    = 'Elektu dosierojn...';
+$lang['js']['media_upload_btn'] = 'Alŝuto';
+$lang['js']['media_done_btn']  = 'Finita';
+$lang['js']['media_drop']      = 'Demetu ĉi-tien por alŝuti';
+$lang['js']['media_cancel']    = 'forigi';
+$lang['js']['media_overwrt']   = 'Anstataûi ekzistantajn dosierojn';
 $lang['rssfailed']             = 'Okazis eraro dum ricevado de la novaĵ-fluo: ';
 $lang['nothingfound']          = 'Ankoraŭ nenio troviĝas tie ĉi.';
 $lang['mediaselect']           = 'Elekto de aŭdvidaĵa dosiero';
@@ -139,25 +152,25 @@ $lang['uploadbadcontent']      = 'La alŝutita enhavo ne kongruas al la sufikso
 $lang['uploadspam']            = 'La alŝutaĵo estis blokita de kontraŭspama vortlisto.';
 $lang['uploadxss']             = 'La alŝutajo estis blokita pro ebla malica enhavo.';
 $lang['uploadsize']            = 'La alŝutita dosiero estis tro granda. (maks. %s)';
-$lang['deletesucc']            = 'La dosiero "%s" estas forigita.';
-$lang['deletefail']            = '"%s" ne povis esti forigita - kontrolu permes-atributojn.';
-$lang['mediainuse']            = 'La dosiero "%s" ne estis forigita - ĝi ankoraŭ estas uzata.';
+$lang['deletesucc']            = 'La dosiero &quot;%s%quot; estas forigita.';
+$lang['deletefail']            = '&quot;%s&quot; ne povis esti forigita - kontrolu permes-atributojn.';
+$lang['mediainuse']            = 'La dosiero &quot;%s&quot; ne estis forigita - ĝi ankoraŭ estas uzata.';
 $lang['namespaces']            = 'Nomspacoj';
 $lang['mediafiles']            = 'Disponeblaj dosieroj';
 $lang['accessdenied']          = 'Vi ne rajtas vidi tiun paĝon.';
 $lang['mediausage']            = 'Uzu la jenan sintakson por referenci tiun ĉi dosieron:';
 $lang['mediaview']             = 'Rigardi originalan dosieron';
 $lang['mediaroot']             = 'ĉefo (root)';
-$lang['mediaupload']           = 'Alŝutu dosieron al la kuranta nomspaco tien ĉi. Por krei subnomspacojn, antaŭmetu ilin al via "Alŝuti kiel" dosiernomo, apartigante per dupunktoj (:).';
+$lang['mediaupload']           = 'Alŝutu dosieron al la kuranta nomspaco tien ĉi. Por krei subnomspacojn, antaŭmetu ilin al via &quot;Alŝuti kiel&quot; dosiernomo, apartigante per dupunktoj (:).';
 $lang['mediaextchange']        = 'La dosiersufikso ŝanĝis de .%s al .%s!';
 $lang['reference']             = 'Referencoj por';
 $lang['ref_inuse']             = 'La dosiero ne povas esti forigita, ĉar ĝi ankoraŭ estas uzata de la jenaj paĝoj:';
 $lang['ref_hidden']            = 'Kelkaj referencoj estas en paĝoj, kiujn vi ne rajtas legi';
-$lang['hits']                  = 'Kongruoj';
-$lang['quickhits']             = 'Kongruoj trovitaj en paĝnomoj';
+$lang['hits']                  = 'Trafoj';
+$lang['quickhits']             = 'Trafoj trovitaj en paĝnomoj';
 $lang['toc']                   = 'Enhavtabelo';
 $lang['current']               = 'aktuala';
-$lang['yours']                 = 'Via Versio';
+$lang['yours']                 = 'Via versio';
 $lang['diff']                  = 'Montri diferencojn el la aktuala versio';
 $lang['diff2']                 = 'Montri diferencojn inter la elektitaj revizioj';
 $lang['difflink']              = 'Ligilo al kompara rigardo';
@@ -174,13 +187,17 @@ $lang['created']               = 'kreita';
 $lang['restored']              = 'malnova revizio restarigita';
 $lang['external_edit']         = 'ekstera redakto';
 $lang['summary']               = 'Bulteno de ŝanĝoj';
-$lang['noflash']               = 'La <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> estas bezonata por montrigi tiun ĉi enhavon.';
+$lang['noflash']               = 'La &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; estas bezonata por montrigi tiun ĉi enhavon.';
 $lang['download']              = 'Elŝuti eltiraĵon';
 $lang['mail_newpage']          = 'paĝo aldonita:';
 $lang['mail_changed']          = 'paĝo modifita:';
 $lang['mail_subscribe_list']   = 'ŝanĝitaj paĝoj en nomspaco:';
 $lang['mail_new_user']         = 'Nova uzanto:';
 $lang['mail_upload']           = 'dosiero alŝutita:';
+$lang['changes_type']          = 'Rigardi ŝanĝojn de';
+$lang['pages_changes']         = 'Paĝoj';
+$lang['media_changes']         = 'Mediaj dosieroj';
+$lang['both_changes']          = 'Ambaû - paĝojn kaj mediajn dosierojn';
 $lang['qb_bold']               = 'Dika teksto';
 $lang['qb_italic']             = 'Dekliva teksto';
 $lang['qb_underl']             = 'Substrekita teksto';
@@ -221,6 +238,9 @@ $lang['img_copyr']             = 'Kopirajtoj';
 $lang['img_format']            = 'Formato';
 $lang['img_camera']            = 'Kamerao';
 $lang['img_keywords']          = 'Åœlosilvortoj';
+$lang['img_width']             = 'Larĝeco';
+$lang['img_height']            = 'Alteco';
+$lang['img_manager']           = 'Rigardi en media-administrilo';
 $lang['subscr_subscribe_success'] = 'Aldonis %s al la abonlisto por %s';
 $lang['subscr_subscribe_error'] = 'Eraro dum aldono de %s al la abonlisto por %s';
 $lang['subscr_subscribe_noaddress'] = 'Ne estas adreso ligita al via ensaluto, ne eblas aldoni vin al la abonlisto';
@@ -242,21 +262,21 @@ $lang['authtempfail']          = 'La identigo de via uzantonomo estas intertempe
 $lang['i_chooselang']          = 'Elektu vian lingvon';
 $lang['i_installer']           = 'Instalilo de DokuWiki';
 $lang['i_wikiname']            = 'Nomo de la vikio';
-$lang['i_enableacl']           = 'Ebligi "ACL" (alirkontrolo, rekomendinde)';
+$lang['i_enableacl']           = 'Ebligi &quot;ACL&quot; (alirkontrolo, rekomendinde)';
 $lang['i_superuser']           = 'Superuzanto';
 $lang['i_problems']            = 'La instalilo trovis kelkajn problemojn, indikitaj sube. Vi ne povas pluiri ĝis ili estos iel korektitaj.';
-$lang['i_modified']            = 'Pro sekureco tiu ĉi instalilo nur funkcias por nova kaj nemodifita Dokuwiki-pakaĵo.
+$lang['i_modified']            = 'Pro sekureco tiu ĉi instalilo nur funkcias por nova kaj nemodifita DokuWiki-pakaĵo.
 Vi devas aŭ redemeti la dosierojn el la elŝutita pakaĵo aŭ plibone informiĝi pri la instalada procezo.';
-$lang['i_funcna']              = 'La PHP-a funkcio <code>%s</code> ne estas uzebla. Eble via retprovizanto ial malpermesis tion?';
-$lang['i_phpver']              = 'La versio de la PHP <code>%s</code> estas pli malnova ol la bezonata <code>%s</code>. Vi bezonas ĝisdatigi la PHP-an instalon.';
-$lang['i_permfail']            = '<code>%s</code> ne estas skribebla por DokuWiki. Vi devas redifini la permes-atributojn de tiu ĉi dosierujo!';
-$lang['i_confexists']          = '<code>%s</code> jam ekzistas';
-$lang['i_writeerr']            = 'Ne eblas krei "<code>%s</code>"-on. Vi bezonas kontroli la permesojn de la dosier(uj)oj kaj mem krej la dosieron.';
-$lang['i_badhash']             = 'dokuwiki.php ne estas rekonebla aŭ ĝi estas modifita (hash=<code>%s</code>)';
-$lang['i_badval']              = '<code>%s</code> - malvalida aÅ­ malplena valoro';
-$lang['i_success']             = 'La agordado estas sukcese kompletita. Vi povas forigi la dosieron nun. Pluiru al <a href="doku.php">via nova DokuWiki</a>.';
-$lang['i_failure']             = 'Kelkaj eraroj okazis dum la konservo de la agordaj dosieroj. Vi devas senpere korekti ilin antaÅ­ ol vi povos uzi <a href="doku.php">vian novan DokuWiki-on</a>.                       ';
-$lang['i_policy']              = 'Apriora ACL-a agordo';
+$lang['i_funcna']              = 'La PHP-a funkcio &lt;code&gt;%s&lt;/code&gt; ne estas uzebla. Eble via retprovizanto ial malpermesis tion?';
+$lang['i_phpver']              = 'La versio de la PHP &lt;code&gt;%s&lt;/code&gt; estas pli malnova ol la bezonata &lt;code&gt;%s&lt;/code&gt;. Vi bezonas ĝisdatigi la PHP-an instalon.';
+$lang['i_permfail']            = '&lt;code&gt;%s&lt;/code&gt; ne estas skribebla por DokuWiki. Vi devas redifini la permes-atributojn de tiu ĉi dosierujo!';
+$lang['i_confexists']          = '&lt;code&gt;%s&lt;/code&gt; jam ekzistas';
+$lang['i_writeerr']            = 'Ne eblas krei &quot;&lt;code&gt;%s&lt;/code&gt;&quot;. Vi bezonas kontroli la permesojn de la dosier(uj)oj kaj mem krej la dosieron.';
+$lang['i_badhash']             = 'dokuwiki.php ne estas rekonebla aŭ ĝi estas modifita (hash=&lt;code&gt;%s&lt;/code&gt;)';
+$lang['i_badval']              = '&lt;code&gt;%s&lt;/code&gt; - malvalida aÅ­ malplena valoro';
+$lang['i_success']             = 'La agordado estas sukcese kompletita. Vi povas forigi la dosieron nun. Pluiru al &lt;a href=&quot;doku.php&quot;&gt;via nova DokuWiki&lt;/a&gt;.';
+$lang['i_failure']             = 'Kelkaj eraroj okazis dum la konservo de la agordaj dosieroj. Vi devas senpere korekti ilin antaÅ­ ol vi povos uzi &lt;a href=&quot;doku.php&quot;&gt;vian novan DokuWiki-on&lt;/a&gt;.                       ';
+$lang['i_policy']              = 'Komenca ACL-a agordo';
 $lang['i_pol0']                = 'Malferma Vikio (legi, skribi, alŝuti povas ĉiuj)';
 $lang['i_pol1']                = 'Publika Vikio (legi povas ĉiuj, skribi kaj alŝuti povas registritaj uzantoj)';
 $lang['i_pol2']                = 'Ferma Vikio (legi, skribi, alŝuti nur povas registritaj uzantoj)';
@@ -273,11 +293,11 @@ $lang['mu_ready']              = 'preta por alŝuti';
 $lang['mu_done']               = 'plenumite';
 $lang['mu_fail']               = 'malsukcesinte';
 $lang['mu_authfail']           = 'sekcio tro longdaÅ­ris';
-$lang['mu_progress']           = '@PCT@% alŝutite';
+$lang['mu_progress']           = '@PCT@&#37; alŝutite';
 $lang['mu_filetypes']          = 'Permesitaj dosiertipoj';
 $lang['mu_info']               = 'alŝutitaj dosieroj.';
 $lang['mu_lasterr']            = 'Lasta eraro:';
-$lang['recent_global']         = 'Vi nun rigardas la ŝanĝojn ene de la nomspaco <b>%s</b>. Vi povas ankaŭ <a href="%s">vidi la freŝajn ŝanĝojn de la tuta vikio</a>.';
+$lang['recent_global']         = 'Vi nun rigardas la ŝanĝojn ene de la nomspaco &lt;b&gt;%s&lt;/b&gt;. Vi povas ankaŭ &lt;a href=&quot;%s&quot;&gt;vidi la freŝajn ŝanĝojn de la tuta vikio&lt;/a&gt;.';
 $lang['years']                 = 'antaÅ­ %d jaroj';
 $lang['months']                = 'antaÅ­ %d monatoj';
 $lang['weeks']                 = 'antaÅ­ %d semajnoj';
@@ -286,3 +306,27 @@ $lang['hours']                 = 'antaÅ­ %d horoj';
 $lang['minutes']               = 'antaÅ­ %d minutoj';
 $lang['seconds']               = 'antaÅ­ %d sekundoj';
 $lang['wordblock']             = 'Via ŝanĝo ne estis savita, ĉar ĝi enhavas blokitan tekston (spamon).';
+$lang['media_uploadtab']       = 'Alŝuto';
+$lang['media_searchtab']       = 'Serĉo';
+$lang['media_file']            = 'Dosiero';
+$lang['media_viewtab']         = 'Rigardi';
+$lang['media_edittab']         = 'Modifi';
+$lang['media_historytab']      = 'Historio';
+$lang['media_list_thumbs']     = 'Bildeto';
+$lang['media_list_rows']       = 'Kolumnoj';
+$lang['media_sort_name']       = 'per nomo';
+$lang['media_sort_date']       = 'per dato';
+$lang['media_namespaces']      = 'Elektu nomspacon';
+$lang['media_files']           = 'Dosieroj en %s';
+$lang['media_upload']          = 'Alŝuti al la nomspaco &lt;strong&gt;%s&lt;/strong&gt;.';
+$lang['media_search']          = 'Serĉi en la nomspaco &lt;strong&gt;%s&lt;/strong&gt;.';
+$lang['media_view']            = '%s';
+$lang['media_viewold']         = '%s ĉe %s';
+$lang['media_edit']            = 'Modifi';
+$lang['media_history']         = 'Tiuj estas la pli malnovaj revizioj de la dosiero.';
+$lang['media_meta_edited']     = 'metadatumoj ŝanĝitaj';
+$lang['media_perm_read']       = 'Bedaûrinde viaj rajtoj ne sufiĉas por legi dosierojn.';
+$lang['media_perm_upload']     = 'Bedaûrinde viaj rajtoj ne sufiĉas por alŝuti dosierojn.';
+$lang['media_update']          = 'Alŝuti novan version';
+$lang['media_restore']         = 'Restarigi ĉi tiun version';
+$lang['plugin_install_err']    = 'Kromaĵo instalita malĝuste. Renomu la kromaĵan dosierujon \'%s\' al \'%s\'.';
diff --git a/inc/lang/eo/newpage.txt b/inc/lang/eo/newpage.txt
index 4ddcd33be83e538200e29640908aabfcc29a4712..486f61f5af0f175cc81d383f23f2cfa2208a1fb8 100644
--- a/inc/lang/eo/newpage.txt
+++ b/inc/lang/eo/newpage.txt
@@ -1,4 +1,4 @@
 ====== Ĉi tiu paĝo ankoraŭ ne ekzistas ======
 
-Vi sekvis ligilon, kiu kondukas al artikolo ankoraŭ ne ekzistanta. Se vi rajtas, tiel vi povas krei tiun ĉi paĝon ekpremante la butonon ''Krei paĝon''.
+Vi sekvis ligilon, kiu kondukas al artikolo ankoraŭ ne ekzistanta. Se vi rajtas, tiel vi povas krei tiun ĉi paĝon ekpremante la butonon &quot;Krei paĝon&quot;.
 
diff --git a/inc/lang/eo/norev.txt b/inc/lang/eo/norev.txt
index f17d8df7cc34cf76a0c5b4a926f141705650b20d..dc44d194bc7a2359c7b8f1dc0e67bafb95845a79 100644
--- a/inc/lang/eo/norev.txt
+++ b/inc/lang/eo/norev.txt
@@ -1,3 +1,3 @@
 ====== Tiu revizio ne ekzistas ======
 
-La elektita revizio ne ekzistas. Premu butonon ''Malnovaj revizioj'', por vidi liston de malnovaj revizioj de la dokumento.
\ No newline at end of file
+La elektita revizio ne ekzistas. Premu butonon &quot;Malnovaj revizioj&quot; por vidi liston de malnovaj revizioj de la dokumento.
\ No newline at end of file
diff --git a/inc/lang/eo/password.txt b/inc/lang/eo/password.txt
index bb854a92675e6db1b5ab3e4ed979a7619107027c..ef744059e9390235b427ebfcd02548412a9b49cb 100644
--- a/inc/lang/eo/password.txt
+++ b/inc/lang/eo/password.txt
@@ -2,8 +2,8 @@ Saluton @FULLNAME@!
 
 Jen via uzantodatenoj por @TITLE@ ĉe @DOKUWIKIURL@
 
-Ensalutnomo : @LOGIN@
-Pasvorto    : @PASSWORD@
+Ensalutnomo: @LOGIN@
+Pasvorto: @PASSWORD@
 
 -- 
 Tiu ĉi mesaĝo estis kreita de DokuWiki ĉe
diff --git a/inc/lang/eo/registermail.txt b/inc/lang/eo/registermail.txt
index e5b1da9026dbfed8b6a1b950362cd985352eb6d1..8b9ea85016b552c8d592f0591fbfadc5c8846082 100644
--- a/inc/lang/eo/registermail.txt
+++ b/inc/lang/eo/registermail.txt
@@ -1,4 +1,4 @@
-Nova uzulo estis registrata. Jen la detaloj:
+Nova uzanto estis registrata. Jen la detaloj:
 
 Uzantonomo: @NEWUSER@
 Kompleta nomo: @NEWNAME@
diff --git a/inc/lang/eo/stopwords.txt b/inc/lang/eo/stopwords.txt
index 2c18cb319bcea36bf825ec478071d480cedc7378..38757ae04d6faaa649ff04a3a8a7c115caec5909 100644
--- a/inc/lang/eo/stopwords.txt
+++ b/inc/lang/eo/stopwords.txt
@@ -1,13 +1,10 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-la
+# Jen listo de vortoj, kiujn la indeksilo ignoras, unu vorton po linio
+# Kiam vi modifas la dosieron, estu certa ke vi uzas UNIX-stilajn linifinaĵojn (unuopa novlinio)
+# Ne enmetu vortojn malpli longajn ol 3 literoj - tiuj ĉiukaze estas ignorataj
 pri
 estas
 kaj
-mi
 mia
-vi
 via
 ili
 ilia
diff --git a/inc/lang/eo/subscr_single.txt b/inc/lang/eo/subscr_single.txt
index a1f4835701c725808abd638c6e1f30ca6a3f7ae7..d51c5ca15a6d1645139ada04940286263635a1c9 100644
--- a/inc/lang/eo/subscr_single.txt
+++ b/inc/lang/eo/subscr_single.txt
@@ -7,8 +7,8 @@ Jen sekvas la ŝanĝoj:
 @DIFF@
 --------------------------------------------------------
 
-Dato : @DATE@
-Uzanto : @USER@
+Dato: @DATE@
+Uzanto: @USER@
 Modifa resumo: @SUMMARY@
 Malnova versio: @OLDPAGE@
 Nova versio: @NEWPAGE@
diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php
index 4c83f5d96e3c0b875b4cae0ba07e681c6ceaa738..5164c3243dbb43ae2c323ac135c7ad8f7ccde132 100644
--- a/inc/lang/es/lang.php
+++ b/inc/lang/es/lang.php
@@ -25,6 +25,7 @@
  * @author Mauro Javier Giamberardino <mgiamberardino@gmail.com>
  * @author emezeta <emezeta@infoprimo.com>
  * @author Oscar Ciudad <oscar@jacho.net>
+ * @author Ruben Figols <ruben.figols@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -66,6 +67,8 @@ $lang['btn_recover']           = 'Recuperar borrador';
 $lang['btn_draftdel']          = 'Eliminar borrador';
 $lang['btn_revert']            = 'Restaurar';
 $lang['btn_register']          = 'Registrarse';
+$lang['btn_apply']             = 'Aplicar';
+$lang['btn_media']             = 'Gestor de ficheros';
 $lang['loggedinas']            = 'Conectado como ';
 $lang['user']                  = 'Usuario';
 $lang['pass']                  = 'Contraseña';
@@ -110,7 +113,7 @@ $lang['txt_filename']          = 'Subir como (opcional)';
 $lang['txt_overwrt']           = 'Sobreescribir archivo existente';
 $lang['lockedby']              = 'Actualmente bloqueado por';
 $lang['lockexpire']            = 'El bloqueo expira en';
-$lang['willexpire']            = 'Tu bloqueo para editar esta página expira en un minuto.\nPara evitar conflictos usa el botón previsualizar para reiniciar el contador de tiempo.';
+$lang['js']['willexpire']      = 'El bloqueo para la edición de esta página expira en un minuto.\nPAra prevenir conflictos uso el botón Previsualizar para restaurar el contador de bloqueo.';
 $lang['js']['notsavedyet']     = 'Los cambios que no se han guardado se perderán.
 ¿Realmente quieres continuar?';
 $lang['js']['searchmedia']     = 'Buscar archivos';
@@ -142,7 +145,17 @@ Lo que sí puedes hacer es copiar y pegar el enlace.';
 $lang['js']['linkwiz']         = 'Asistente de enlaces';
 $lang['js']['linkto']          = 'Enlazar a:';
 $lang['js']['del_confirm']     = '¿Quieres realmente borrar lo seleccionado?';
-$lang['js']['mu_btn']          = 'Subir varios archivos a la vez';
+$lang['js']['restore_confirm'] = '¿Estás seguro de querer restaurar esta versión?';
+$lang['js']['media_diff']      = 'Ver diferencias:';
+$lang['js']['media_diff_both'] = 'Lado por lado';
+$lang['js']['media_diff_opacity'] = 'A través de Shine';
+$lang['js']['media_diff_portions'] = 'Pasar';
+$lang['js']['media_select']    = 'Seleccionar ficheros';
+$lang['js']['media_upload_btn'] = 'Cargar';
+$lang['js']['media_done_btn']  = 'Hecho';
+$lang['js']['media_drop']      = 'Arrastra los ficheros aquí para cargar';
+$lang['js']['media_cancel']    = 'Eliminar';
+$lang['js']['media_overwrt']   = 'Sobreescribir ficheros exitentes';
 $lang['rssfailed']             = 'Se ha producido un error mientras se leían los datos de este feed: ';
 $lang['nothingfound']          = 'No se ha encontrado nada.';
 $lang['mediaselect']           = 'Archivos Multimedia';
@@ -197,6 +210,10 @@ $lang['mail_changed']          = 'página cambiada:';
 $lang['mail_subscribe_list']   = 'páginas cambiadas en el espacio de nombre:';
 $lang['mail_new_user']         = 'nuevo usuario:';
 $lang['mail_upload']           = 'archivo subido:';
+$lang['changes_type']          = 'Ver cambios de';
+$lang['pages_changes']         = 'Páginas';
+$lang['media_changes']         = 'Archivos multimedia';
+$lang['both_changes']          = 'Ambas páginas y archivos multimedia';
 $lang['qb_bold']               = 'Negrita';
 $lang['qb_italic']             = 'Itálica';
 $lang['qb_underl']             = 'Subrayado';
@@ -237,6 +254,9 @@ $lang['img_copyr']             = 'Copyright';
 $lang['img_format']            = 'Formato';
 $lang['img_camera']            = 'Cámara';
 $lang['img_keywords']          = 'Palabras claves';
+$lang['img_width']             = 'Ancho';
+$lang['img_height']            = 'Alto';
+$lang['img_manager']           = 'Ver en el Administrador de medios';
 $lang['subscr_subscribe_success'] = 'Se agregó %s a las listas de suscripción para %s';
 $lang['subscr_subscribe_error'] = 'Error al agregar %s a las listas de suscripción para %s';
 $lang['subscr_subscribe_noaddress'] = 'No hay dirección asociada con tu registro, no se puede agregarte a la lista de suscripción';
@@ -301,3 +321,27 @@ $lang['hours']                 = '%d horas atrás';
 $lang['minutes']               = '%d minutos atrás';
 $lang['seconds']               = '%d segundos atrás';
 $lang['wordblock']             = 'Sus cambios no se han guardado porque contienen textos bloqueados (spam).';
+$lang['media_uploadtab']       = 'Cargar';
+$lang['media_searchtab']       = 'Buscar';
+$lang['media_file']            = 'Fichero';
+$lang['media_viewtab']         = 'Ver';
+$lang['media_edittab']         = 'Editar';
+$lang['media_historytab']      = 'Historial';
+$lang['media_list_thumbs']     = 'Miniaturas';
+$lang['media_list_rows']       = 'Celdas';
+$lang['media_sort_name']       = 'Nombre';
+$lang['media_sort_date']       = 'Fecha';
+$lang['media_namespaces']      = 'Escoge "espacio de nombre"';
+$lang['media_files']           = 'Ficheros en %s';
+$lang['media_upload']          = 'Cargar a %s';
+$lang['media_search']          = 'Buscar en %s';
+$lang['media_view']            = '%s';
+$lang['media_viewold']         = '%s en %s';
+$lang['media_edit']            = 'Editar %s';
+$lang['media_history']         = 'Historial de %s';
+$lang['media_meta_edited']     = 'Metadatos editados';
+$lang['media_perm_read']       = 'Disculpa, no tienes los permisos necesarios para leer ficheros.';
+$lang['media_perm_upload']     = 'Disculpa, no tienes los permisos necesarios para cargar ficheros.';
+$lang['media_update']          = 'Actualizar nueva versión';
+$lang['media_restore']         = 'Restaurar esta versión';
+$lang['plugin_install_err']    = 'Plugin instalado incorrectamente. Renombra el directorio de plugins \'%s\' to \'%s\'.';
diff --git a/inc/lang/et/lang.php b/inc/lang/et/lang.php
index 66fab3f9ab9290eac650fbf70be08b41415a866b..6cd2f437d03412731413cfa8d0297b2b08ff6aef 100644
--- a/inc/lang/et/lang.php
+++ b/inc/lang/et/lang.php
@@ -124,7 +124,6 @@ Siiski võid kopeerida ja asetada lingi.';
 $lang['js']['linkwiz']         = 'Lingi nõustaja';
 $lang['js']['linkto']          = 'Lingi:';
 $lang['js']['del_confirm']     = 'Kas kustutame selle kirje?';
-$lang['js']['mu_btn']          = 'Laadi üles mittu faili';
 $lang['rssfailed']             = 'Sinu soovitud info ammutamisel tekkis viga: ';
 $lang['nothingfound']          = 'Oops, aga mitte muhvigi ei leitud.';
 $lang['mediaselect']           = 'Hunnik faile';
diff --git a/inc/lang/eu/lang.php b/inc/lang/eu/lang.php
index 30dfe9e5b86a280d1d721ff4835f52f3f16ffe21..d02f281c322d4a2e288c6fa50eb36f068684910e 100644
--- a/inc/lang/eu/lang.php
+++ b/inc/lang/eu/lang.php
@@ -122,7 +122,6 @@ Esteka kopiatu eta itsatsi dezakezu dena den.';
 $lang['js']['linkwiz']         = 'Estekatze Laguntzailea';
 $lang['js']['linkto']          = 'Estekatu hona:';
 $lang['js']['del_confirm']     = 'Benetan ezabatu aukeratutako fitxategia(k)?';
-$lang['js']['mu_btn']          = 'Igo hainbat fitxategi aldi berean';
 $lang['rssfailed']             = 'Errorea gertatu da feed hau irakurtzean:';
 $lang['nothingfound']          = 'Ez da ezer aurkitu.';
 $lang['mediaselect']           = 'Aukeratu Multimedia fitxategia';
diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php
index 1a7467431f66a1e9d78750a4b635cdbdde825071..ac14ce07a4f6a2ea4af5b3fe7e0403f7b692d99f 100644
--- a/inc/lang/fa/lang.php
+++ b/inc/lang/fa/lang.php
@@ -98,7 +98,7 @@ $lang['txt_overwrt']           = 'بر روی فایل موجود بنویس';
 $lang['lockedby']              = 'در حال حاضر قفل شده است';
 $lang['lockexpire']            = 'قفل منقضی شده است';
 $lang['js']['willexpire']            = 'حالت قفل شما مدتی است منقضی شده است \n برای جلوگیری از تداخل دکمه‌ی پیش‌نمایش را برای صفر شدن ساعت قفل بزنید.';
-$lang['js']['notsavedyet']     = 'تغییرات ذخیره شده از بین خواهد رفت. 
+$lang['js']['notsavedyet']     = 'تغییرات ذخیره شده از بین خواهد رفت.
  می‌خواهید ادامه دهید؟';
 $lang['js']['searchmedia']     = 'جستجو برای فایل';
 $lang['js']['keepopen']        = 'پنجره را ر زمان انتخاب باز نگه‌دار';
@@ -129,7 +129,6 @@ $lang['js']['nosmblinks']      = 'پیوند به Windows share فقط در ای
 $lang['js']['linkwiz']         = 'ویزارد پیوند';
 $lang['js']['linkto']          = 'پیوند به:';
 $lang['js']['del_confirm']     = 'واقعن تصمیم به حذف این موارد دارید؟';
-$lang['js']['mu_btn']          = 'ارسال هم‌زمان چندین فایل ';
 $lang['rssfailed']             = 'بروز خطا در هنگام واکشی';
 $lang['nothingfound']          = 'چیزی پیدا نشد';
 $lang['mediaselect']           = 'فایل‌ها';
diff --git a/inc/lang/fi/lang.php b/inc/lang/fi/lang.php
index a2f2e2027fbbfed4f0563d338468af72b03d5dfb..8d671a4cb29f8de38dd0010b158edc5814e38b1b 100644
--- a/inc/lang/fi/lang.php
+++ b/inc/lang/fi/lang.php
@@ -49,6 +49,8 @@ $lang['btn_recover']           = 'Palauta luonnos';
 $lang['btn_draftdel']          = 'Poista luonnos';
 $lang['btn_revert']            = 'palauta';
 $lang['btn_register']          = 'Rekisteröidy';
+$lang['btn_apply']             = 'Toteuta';
+$lang['btn_media']             = 'Media manager';
 $lang['loggedinas']            = 'Kirjautunut nimellä';
 $lang['user']                  = 'Käyttäjänimi';
 $lang['pass']                  = 'Salasana';
@@ -93,7 +95,7 @@ $lang['txt_filename']          = 'Lähetä nimellä (valinnainen)';
 $lang['txt_overwrt']           = 'Ylikirjoita olemassa oleva';
 $lang['lockedby']              = 'Tällä hetkellä tiedoston on lukinnut';
 $lang['lockexpire']            = 'Lukitus päättyy';
-$lang['js']['willexpire']            = 'Lukituksesi tämän sivun muokkaukseen päättyy minuutin kuluttua.\nRistiriitojen välttämiseksi paina esikatselu-nappia nollataksesi lukitusajan.';
+$lang['js']['willexpire']      = 'Lukituksesi tämän sivun muokkaukseen päättyy minuutin kuluttua.\nRistiriitojen välttämiseksi paina esikatselu-nappia nollataksesi lukitusajan.';
 $lang['js']['notsavedyet']     = 'Dokumentissa on tallentamattomia muutoksia, jotka häviävät.
  Haluatko varmasti jatkaa?';
 $lang['js']['searchmedia']     = 'Etsi tiedostoja';
@@ -125,7 +127,17 @@ Voit silti kopioida ja liittää linkin.';
 $lang['js']['linkwiz']         = 'Linkkivelho';
 $lang['js']['linkto']          = 'Linkki kohteeseen:';
 $lang['js']['del_confirm']     = 'Haluatko todella poistaa valitut kohteet?';
-$lang['js']['mu_btn']          = 'Lähetä useampia tiedostoja kerralla';
+$lang['js']['restore_confirm'] = 'Haluatko varmasti palauttaa tämän version?';
+$lang['js']['media_diff']      = 'Näytä erot:';
+$lang['js']['media_diff_both'] = 'Vierekkäin';
+$lang['js']['media_diff_opacity'] = 'Päällä';
+$lang['js']['media_diff_portions'] = 'Liukusäädin';
+$lang['js']['media_select']    = 'Valitse tiedostot...';
+$lang['js']['media_upload_btn'] = 'Lähetä';
+$lang['js']['media_done_btn']  = 'Valmis';
+$lang['js']['media_drop']      = 'Pudota lähetettävät tiedostot tähän';
+$lang['js']['media_cancel']    = 'Poista';
+$lang['js']['media_overwrt']   = 'Ylikirjoita olemassa olevat tiedostot';
 $lang['rssfailed']             = 'Virhe tapahtui noudettaessa tätä syötettä: ';
 $lang['nothingfound']          = 'Mitään ei löytynyt.';
 $lang['mediaselect']           = 'Mediatiedoston valinta';
@@ -180,6 +192,10 @@ $lang['mail_changed']          = 'sivu muutettu:';
 $lang['mail_subscribe_list']   = 'muuttuneet sivut nimiavaruudessa:';
 $lang['mail_new_user']         = 'uusi käyttäjä:';
 $lang['mail_upload']           = 'tiedosto lähetetty:';
+$lang['changes_type']          = 'Näytä muutokset:';
+$lang['pages_changes']         = 'Sivut';
+$lang['media_changes']         = 'Mediatiedostot';
+$lang['both_changes']          = 'Sivut ja mediatiedostot';
 $lang['qb_bold']               = 'Lihavoitu teksti';
 $lang['qb_italic']             = 'Kursivoitu teksti';
 $lang['qb_underl']             = 'Alleviivattu teksti';
@@ -220,6 +236,9 @@ $lang['img_copyr']             = 'Tekijänoikeus';
 $lang['img_format']            = 'Formaatti';
 $lang['img_camera']            = 'Kamera';
 $lang['img_keywords']          = 'Avainsanat';
+$lang['img_width']             = 'Leveys';
+$lang['img_height']            = 'Korkeus';
+$lang['img_manager']           = 'Näytä mediamanagerissa';
 $lang['subscr_subscribe_success'] = '%s lisätty %s tilauslistalle';
 $lang['subscr_subscribe_error'] = 'Virhe lisättäessä %s tilauslistalle %s';
 $lang['subscr_subscribe_noaddress'] = 'Login tiedoissasi ei ole sähköpostiosoitetta. Sinua ei voi lisätä tilaukseen';
@@ -284,3 +303,23 @@ $lang['hours']                 = '%d tuntia sitten';
 $lang['minutes']               = '%d minuuttia sitten';
 $lang['seconds']               = '% sekuntia sitten';
 $lang['wordblock']             = 'Muutostasi ei talletettu, koska se sisältää estettyä tekstiä (spam).';
+$lang['media_uploadtab']       = 'Lähetä';
+$lang['media_searchtab']       = 'Etsi';
+$lang['media_viewtab']         = 'Näytä';
+$lang['media_edittab']         = 'Muokkaa';
+$lang['media_historytab']      = 'Historia';
+$lang['media_thumbsview']      = 'Pikkukuvat';
+$lang['media_listview']        = 'Lista';
+$lang['media_sort']            = 'Järjestä';
+$lang['media_sort_name']       = 'nimen mukaan';
+$lang['media_sort_date']       = 'päivämäärän mukaan';
+$lang['media_upload']          = 'Lähetä <strong>%s</strong> nimiavaruuteen';
+$lang['media_search']          = 'Etsi <strong>%s</strong> nimiavaruudesta';
+$lang['media_edit']            = 'Muokkaa';
+$lang['media_history']         = 'Nämä ovat vanhat versiot tiedostosta.';
+$lang['media_meta_edited']     = 'Metadataa muokattu';
+$lang['media_perm_read']       = 'Anteeksi. Sinulla ei ole riittävästi oikeuksia lukeaksesi tiedostoja.';
+$lang['media_perm_upload']     = 'Anteeksi. Sinulla ei ole riittävästi oikeuksia lähettääksesi tiedostoja.';
+$lang['media_update']          = 'Lähetä uusi versio';
+$lang['media_restore']         = 'Palauta tämä versio';
+$lang['plugin_install_err']    = 'Liitännäinen asentui virheellisesti. Nimeä liitännäisen hakemisto \'%s\' -> \'%s\'';
diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php
index ae082e9e73c64f6d9af1793b1594c8f57a1e414c..60b86b3468dccac6165872040ab66530b5e452e7 100644
--- a/inc/lang/fr/lang.php
+++ b/inc/lang/fr/lang.php
@@ -7,7 +7,7 @@
  * @author Antoine Fixary <antoine.fixary@freesbee.fr>
  * @author cumulus <pta-n56@myamail.com>
  * @author Gwenn Gueguen <contact@demisel.net>
- * @author Guy Brand <gb@isis.u-strasbg.fr>
+ * @author Guy Brand <gb@unistra.fr>
  * @author Fabien Chabreuil <fabien@integralpersonality.com>
  * @author Stéphane Chamberland <stephane.chamberland@ec.gc.ca>
  * @author Delassaux Julien <julien@delassaux.fr>
@@ -63,6 +63,8 @@ $lang['btn_recover']           = 'Récupérer le brouillon';
 $lang['btn_draftdel']          = 'Effacer le brouillon';
 $lang['btn_revert']            = 'Restaurer';
 $lang['btn_register']          = 'S\'enregistrer';
+$lang['btn_apply']             = 'Appliquer';
+$lang['btn_media']             = 'Gestionnaire de médias';
 $lang['loggedinas']            = 'Connecté en tant que ';
 $lang['user']                  = 'Utilisateur';
 $lang['pass']                  = 'Mot de passe';
@@ -107,9 +109,8 @@ $lang['txt_filename']          = 'Donnez un « wikiname » (optionnel) ';
 $lang['txt_overwrt']           = 'Écraser le fichier cible';
 $lang['lockedby']              = 'Actuellement bloqué par';
 $lang['lockexpire']            = 'Le blocage expire à';
-$lang['js']['willexpire']            = 'Votre blocage pour modifier cette page expire dans une minute.\nPour éviter les conflits, utiliser le bouton « Aperçu » pour réinitialiser le minuteur.';
-$lang['js']['notsavedyet']     = 'Les modifications non enregistrées seront perdues.
-Voulez-vous vraiment continuer ?';
+$lang['js']['willexpire']      = 'Votre verrouillage pour la modification de cette page expire dans une minute.\nPour éviter les conflits, utilisez le bouton « Aperçu » pour réinitialiser le minuteur.';
+$lang['js']['notsavedyet']     = 'Les modifications non enregistrées seront perdues. Voulez-vous vraiment continuer ?';
 $lang['js']['searchmedia']     = 'Chercher des fichiers';
 $lang['js']['keepopen']        = 'Gardez la fenêtre ouverte pendant la sélection';
 $lang['js']['hidedetails']     = 'Masquer détails';
@@ -135,11 +136,22 @@ $lang['js']['mediaright']      = 'Aligner l\'image sur la droite.';
 $lang['js']['mediacenter']     = 'Centrer l\'image';
 $lang['js']['medianoalign']    = 'Ne pas aligner.';
 $lang['js']['nosmblinks']      = 'Les liens vers les partages Windows ne fonctionnent qu\'avec Microsoft Internet Explorer.
-Vous pouvez toujours copier puis coller le lien.';
+                                  Vous pouvez toujours copier puis coller le lien.';
 $lang['js']['linkwiz']         = 'Assistant Lien';
 $lang['js']['linkto']          = 'Lien vers :';
 $lang['js']['del_confirm']     = 'Effacer cette entrée ?';
 $lang['js']['mu_btn']          = 'Envoyer plusieurs fichiers en même temps';
+$lang['js']['restore_confirm'] = 'Voulez vous vraiment restaurer cette version ?';
+$lang['js']['media_diff']      = 'Voir les différences:';
+$lang['js']['media_diff_both'] = 'Côte à côte';
+$lang['js']['media_diff_opacity'] = 'Calque';
+$lang['js']['media_diff_portions'] = 'Curseur';
+$lang['js']['media_select']    = 'Sélection de fichiers…';
+$lang['js']['media_upload_btn'] = 'Télécharger';
+$lang['js']['media_done_btn']  = 'Terminé';
+$lang['js']['media_drop']      = 'Déposez des fichiers ici pour les télécharger';
+$lang['js']['media_cancel']    = 'supprimer';
+$lang['js']['media_overwrt']   = 'Écraser les fichiers existants';
 $lang['rssfailed']             = 'Une erreur s\'est produite en récupérant ce flux : ';
 $lang['nothingfound']          = 'Pas de réponse.';
 $lang['mediaselect']           = 'Sélection de fichier';
@@ -194,6 +206,10 @@ $lang['mail_changed']          = 'page modifiée :';
 $lang['mail_subscribe_list']   = 'pages modifiées dans la catégorie :';
 $lang['mail_new_user']         = 'nouvel utilisateur :';
 $lang['mail_upload']           = 'fichier envoyé :';
+$lang['changes_type']          = 'Voir les changements';
+$lang['pages_changes']         = 'Pages';
+$lang['media_changes']         = 'Fichier multimédias';
+$lang['both_changes']          = 'Pages et fichiers multimédias';
 $lang['qb_bold']               = 'Emphase forte (gras)';
 $lang['qb_italic']             = 'Emphase (italique)';
 $lang['qb_underl']             = 'Souligné';
@@ -234,6 +250,9 @@ $lang['img_copyr']             = 'Copyright';
 $lang['img_format']            = 'Format';
 $lang['img_camera']            = 'Appareil photo';
 $lang['img_keywords']          = 'Mots-clés';
+$lang['img_width']             = 'Largeur';
+$lang['img_height']            = 'Hauteur';
+$lang['img_manager']           = 'Voir dans le gestionnaire de médias';
 $lang['subscr_subscribe_success'] = '%s a été ajouté à la liste de souscription de %s';
 $lang['subscr_subscribe_error'] = 'Erreur en ajoutant %s à la liste de souscription de %s';
 $lang['subscr_subscribe_noaddress'] = 'Il n\'y a pas d\'adresse associée à votre identifiant, vous ne pouvez pas être ajouté à la liste de souscription';
@@ -298,3 +317,27 @@ $lang['hours']                 = 'il y a %d heures';
 $lang['minutes']               = 'il y a %d minutes';
 $lang['seconds']               = 'il y a %d secondes';
 $lang['wordblock']             = 'Vos modifications n\'ont pas été sauvegardées parce qu\'elles contiennent des textes non autorisé (spam).';
+$lang['media_uploadtab']       = 'Télécharger';
+$lang['media_searchtab']       = 'Rechercher';
+$lang['media_file']            = 'Fichier';
+$lang['media_viewtab']         = 'Voir';
+$lang['media_edittab']         = 'Éditer';
+$lang['media_historytab']      = 'Historique';
+$lang['media_list_thumbs']     = 'Aperçus';
+$lang['media_list_rows']       = 'Lignes';
+$lang['media_sort_name']       = 'Tri par nom';
+$lang['media_sort_date']       = 'Tri par date';
+$lang['media_namespaces']      = 'Choisissez un espace de nom';
+$lang['media_files']           = 'Fichiers présents dans';
+$lang['media_upload']          = 'Télécharger dans la catégorie <strong>%s</strong>.';
+$lang['media_search']          = 'Chercher dans la catégorie <strong>%s</strong>.';
+$lang['media_view']            = '%s';
+$lang['media_viewold']         = '%s dans %s';
+$lang['media_edit']            = 'Éditer %s';
+$lang['media_history']         = 'Historique du %s';
+$lang['media_meta_edited']     = 'métadonnées éditées';
+$lang['media_perm_read']       = 'Désolé, vous n\'avez pas les droits pour lire les fichiers.';
+$lang['media_perm_upload']     = 'Désolé, vous n\'avez pas les droits pour télécharger des fichiers.';
+$lang['media_update']          = 'Télécharger une nouvelle version';
+$lang['media_restore']         = 'Restaurer cette version';
+$lang['plugin_install_err']    = 'Extension mal installée. Renommez le dossier de l\'extension \'%s\' en \'%s\'.';
diff --git a/inc/lang/gl/lang.php b/inc/lang/gl/lang.php
index a3caeff6dfd0ff238851bf0b576e7007fbaab0cb..01938b3a0222c4658eb7fcb5b18d2cedbe5e4905 100644
--- a/inc/lang/gl/lang.php
+++ b/inc/lang/gl/lang.php
@@ -137,7 +137,6 @@ Sempre podes copiar e colar a ligazón.';
 $lang['js']['linkwiz']         = 'Asistente de ligazóns';
 $lang['js']['linkto']          = 'Ligazón para:';
 $lang['js']['del_confirm']     = 'Estás certo de quereres eliminar os elementos seleccionados?';
-$lang['js']['mu_btn']          = 'Subir varios arquivos de vez';
 $lang['mediausage']            = 'Emprega a seguinte sintaxe para inserires unha referencia a este arquivo:';
 $lang['mediaview']             = 'Ver arquivo orixinal';
 $lang['mediaroot']             = 'raigaña';
diff --git a/inc/lang/he/lang.php b/inc/lang/he/lang.php
index 589088320cafd4167974682cb971517d181d3361..f295e44a9e30ed78bfef7416ecf797445a775022 100644
--- a/inc/lang/he/lang.php
+++ b/inc/lang/he/lang.php
@@ -126,7 +126,6 @@ $lang['js']['nosmblinks']      = 'קישור לכונני שיתוף של Window
 $lang['js']['linkwiz']         = 'אשף הקישורים';
 $lang['js']['linkto']          = 'קישור אל:';
 $lang['js']['del_confirm']     = 'באמת למחוק?';
-$lang['js']['mu_btn']          = 'העלאת מספר קבצים יחד';
 $lang['rssfailed']             = 'אירע כשל בעת קבלת הזנה זו:';
 $lang['nothingfound']          = 'לא נמצאו תוצאות.';
 $lang['mediaselect']           = 'קובצי מדיה';
diff --git a/inc/lang/hr/lang.php b/inc/lang/hr/lang.php
index a85214cf72519abd534e0949c1911eef38e1593c..ef10d7720213489d3b1b4b7d08448cdbc811cecb 100644
--- a/inc/lang/hr/lang.php
+++ b/inc/lang/hr/lang.php
@@ -123,7 +123,6 @@ $lang['js']['nosmblinks']      = 'Linkovi na dijeljene Windows mape rade samo s
 $lang['js']['linkwiz']         = 'ÄŒarobnjak za poveznice';
 $lang['js']['linkto']          = 'Poveznica na:';
 $lang['js']['del_confirm']     = 'Zbilja želite obrisati odabrane stavke?';
-$lang['js']['mu_btn']          = 'Postavi više datoteka odjednom';
 $lang['rssfailed']             = 'Došlo je do greške prilikom preuzimanja feed-a: ';
 $lang['nothingfound']          = 'Traženi dokumetni nisu pronađeni.';
 $lang['mediaselect']           = 'Mediafile datoteke';
diff --git a/inc/lang/hu/lang.php b/inc/lang/hu/lang.php
index 89ad779488fca245aafecc1f17d11e27529c8e2d..23419a2bdcf470673e639b7cbde4da3a42e647bd 100644
--- a/inc/lang/hu/lang.php
+++ b/inc/lang/hu/lang.php
@@ -127,7 +127,6 @@ A hivatkozást másolni és beszúrni ettől fügetlenül mndig tudod.';
 $lang['js']['linkwiz']         = 'Hivatkozás varázsló';
 $lang['js']['linkto']          = 'Hivatkozás erre:';
 $lang['js']['del_confirm']     = 'Valóban törölni akarod a kiválasztott elem(ek)et?';
-$lang['js']['mu_btn']          = 'Több fájl feltöltése egyszerre';
 $lang['rssfailed']             = 'Hiba történt ennek a betöltésekor: ';
 $lang['nothingfound']          = 'Semmit sem találtam.';
 $lang['mediaselect']           = 'Médiafájl kiválasztása';
diff --git a/inc/lang/ia/lang.php b/inc/lang/ia/lang.php
index abf1e67869afdc9377a8796a609e7f6b916ef2c2..8398f29f003afaccafd9a7658642c407b8a5e840 100644
--- a/inc/lang/ia/lang.php
+++ b/inc/lang/ia/lang.php
@@ -143,7 +143,6 @@ Tu pote nonobstante copiar e collar le ligamine.';
 $lang['js']['linkwiz']         = 'Assistente pro ligamines';
 $lang['js']['linkto']          = 'Ligar verso:';
 $lang['js']['del_confirm']     = 'Realmente deler le entrata(s) seligite?';
-$lang['js']['mu_btn']          = 'Incargar plure files simultaneemente';
 $lang['mediausage']            = 'Usa le syntaxe sequente pro referer a iste file:';
 $lang['mediaview']             = 'Vider file original';
 $lang['mediaroot']             = 'radice';
diff --git a/inc/lang/is/lang.php b/inc/lang/is/lang.php
index 7388e69089e296027de0c26c21465530a5ccc5ba..0e281e58d64b1a61e562620298669495a54eb541 100644
--- a/inc/lang/is/lang.php
+++ b/inc/lang/is/lang.php
@@ -45,8 +45,6 @@ $lang['btn_backlink']          = 'Hvað tengist hingað';
 $lang['btn_backtomedia']       = 'Aftur til miðlaskrá';
 $lang['btn_subscribe']         = 'Vakta';
 $lang['btn_unsubscribe']       = 'Afvakta';
-$lang['btn_subscribens']       = 'Vakta breytingar á nafnrými';
-$lang['btn_unsubscribens']     = 'Afvakta breytingar á nafnrými';
 $lang['btn_profile']           = 'Uppfæra notanda';
 $lang['btn_reset']             = 'Endurstilla';
 $lang['btn_resendpwd']         = 'Senda nýtt aðgangsorð með tölvupósti';
diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php
index 8812b148db934c90cfb59d07fbc9a90c99ca72ad..9f4d4200465f6cfeecd93f7019d71a14b047ceb0 100644
--- a/inc/lang/it/lang.php
+++ b/inc/lang/it/lang.php
@@ -129,7 +129,6 @@ $lang['js']['nosmblinks']      = 'I collegamenti con le risorse condivise di Win
 $lang['js']['linkwiz']         = 'Collegamento guidato';
 $lang['js']['linkto']          = 'Collega a:';
 $lang['js']['del_confirm']     = 'Eliminare veramente questa voce?';
-$lang['js']['mu_btn']          = 'Carica più di un file alla volta';
 $lang['rssfailed']             = 'Si è verificato un errore cercando questo feed: ';
 $lang['nothingfound']          = 'Nessun risultato trovato.';
 $lang['mediaselect']           = 'Selezione dei file';
diff --git a/inc/lang/ja/lang.php b/inc/lang/ja/lang.php
index b0b93450eebe3bf6a5eed9403524ee6fe0a24857..1eeb6bb7336f06a9597b59ffb941dc9722977b9f 100644
--- a/inc/lang/ja/lang.php
+++ b/inc/lang/ja/lang.php
@@ -123,7 +123,6 @@ $lang['js']['nosmblinks']      = 'ウィンドウズの共有フォルダへリ
 $lang['js']['linkwiz']         = 'リンクウィザード';
 $lang['js']['linkto']          = 'リンク先:';
 $lang['js']['del_confirm']     = '選択した項目を本当に削除しますか?';
-$lang['js']['mu_btn']          = '複数のファイルを一度にアップロード';
 $lang['rssfailed']             = 'RSSの取得に失敗しました:';
 $lang['nothingfound']          = '該当文書はありませんでした。';
 $lang['mediaselect']           = 'メディアファイルを選択';
diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php
index 7b55ebe7144ff69c3528b432add9eabf870293fe..91825c797276539b07ab4de9cd162a4eaf32d9b1 100644
--- a/inc/lang/ko/lang.php
+++ b/inc/lang/ko/lang.php
@@ -125,7 +125,6 @@ $lang['js']['nosmblinks']      = '윈도우 공유 파일과의 연결은 MS 인
 $lang['js']['linkwiz']         = '링크 마법사';
 $lang['js']['linkto']          = '다음으로 연결:';
 $lang['js']['del_confirm']     = '정말로 선택된 항목(들)을 삭제하시겠습니까?';
-$lang['js']['mu_btn']          = '여러 파일들을 한번에 업로드합니다.';
 $lang['rssfailed']             = 'feed 가져오기 실패: ';
 $lang['nothingfound']          = '아무 것도 없습니다.';
 $lang['mediaselect']           = '미디어 파일 선택';
diff --git a/inc/lang/la/lang.php b/inc/lang/la/lang.php
index 00312f7a104364b1839059ce02630dc85cce523d..fd34a4ef88a884488d44f8ec0d9efef114472b7b 100644
--- a/inc/lang/la/lang.php
+++ b/inc/lang/la/lang.php
@@ -125,7 +125,6 @@ Adhuc transcribere nexum potes.';
 $lang['js']['linkwiz']         = 'Connectendi ductor';
 $lang['js']['linkto']          = 'Nexum ad:';
 $lang['js']['del_confirm']     = 'Delere electas res uin?';
-$lang['js']['mu_btn']          = 'Plura documenta uno tempore onerare';
 $lang['rssfailed']             = 'Error in restituendo ';
 $lang['nothingfound']          = 'Nihil inuentum est.';
 $lang['mediaselect']           = 'Documenta uisiua:';
diff --git a/inc/lang/lt/lang.php b/inc/lang/lt/lang.php
index 121e2530811679b016e60d5e1d890c242644a573..d14a0695a59e52fae90dfa8a1b800594c08b37fa 100644
--- a/inc/lang/lt/lang.php
+++ b/inc/lang/lt/lang.php
@@ -41,8 +41,6 @@ $lang['btn_backlink']          = 'AtgalinÄ—s nuorodos';
 $lang['btn_backtomedia']       = 'Atgal į Mediabylos išsirinkimą';
 $lang['btn_subscribe']         = 'Užsisakyti keitimų prenumeratą';
 $lang['btn_unsubscribe']       = 'Atsisakyti keitimų prenumeratos';
-$lang['btn_subscribens']       = 'Užsakyti vardų srities prenumeratą';
-$lang['btn_unsubscribens']     = 'Atsisakyti vardų srities prenumeratos';
 $lang['btn_profile']           = 'Atnaujinti profilį';
 $lang['btn_reset']             = 'Atstata';
 $lang['btn_resendpwd']         = 'Išsiųsti naują slaptažodį';
@@ -115,7 +113,6 @@ $lang['js']['keepopen']        = 'Pažymėjus palikti langą atvertą';
 $lang['js']['hidedetails']     = 'PaslÄ—pti Detales';
 $lang['js']['nosmblinks']      = 'Nurodos į "Windows shares" veikia tik su Microsoft Internet Explorer naršykle.
 Vis dėlto, jūs galite nukopijuoti šią nuorodą.';
-$lang['js']['mu_btn']          = 'Pateikite kelis failus vienu ypu';
 $lang['mediausage']            = 'Failo nuorodai užrašyti naudokite tokią sintaksę:';
 $lang['mediaview']             = 'Žiūrėti pirminį failą';
 $lang['mediaroot']             = 'pradžia (root)';
diff --git a/inc/lang/lv/lang.php b/inc/lang/lv/lang.php
index 64e22c56a36d0e7438111acef8873a3dc4862b06..205d2e56d6a4a5a7415c66058235aa60f58c61b8 100644
--- a/inc/lang/lv/lang.php
+++ b/inc/lang/lv/lang.php
@@ -45,6 +45,8 @@ $lang['btn_recover']           = 'Atjaunot melnrakstu';
 $lang['btn_draftdel']          = 'Dzēst melnrakstu';
 $lang['btn_revert']            = 'Atjaunot';
 $lang['btn_register']          = 'Reģistrēties';
+$lang['btn_apply']             = 'Labi';
+$lang['btn_media']             = 'Mēdiju pārvaldnieks';
 $lang['loggedinas']            = 'Pieteicies kā';
 $lang['user']                  = 'Lietotājvārds';
 $lang['pass']                  = 'Parole';
@@ -89,7 +91,7 @@ $lang['txt_filename']          = 'Ievadi vikivārdu (nav obligāts)';
 $lang['txt_overwrt']           = 'Aizstāt esošo failu';
 $lang['lockedby']              = 'Patlaban bloÄ·Ä“jis ';
 $lang['lockexpire']            = 'BloÄ·Ä“jums beigsies ';
-$lang['js']['willexpire']            = 'Tavs bloķējums uz šo lapu pēc minūtes beigsies.\nLai izvairītos no konflikta, nospied Iepriekšapskata pogu\n un bloķējuma laiku sāks skaitīt no jauna.';
+$lang['js']['willexpire']      = 'Tavs bloķējums uz šo lapu pēc minūtes beigsies.\nLai izvairītos no konflikta, nospied Iepriekšapskata pogu\n un bloķējuma laiku sāks skaitīt no jauna.';
 $lang['js']['notsavedyet']     = 'Veiktas bet nav saglabātas izmaiņas.
 Vai tiešām tās nevajag?';
 $lang['js']['searchmedia']     = 'Meklēt failus';
@@ -122,6 +124,15 @@ $lang['js']['linkwiz']         = 'Saišu vednis';
 $lang['js']['linkto']          = 'Saite uz: ';
 $lang['js']['del_confirm']     = 'Dzēst šo šķirkli?';
 $lang['js']['mu_btn']          = 'Augšuplādēt uzreiz vairākus failus.';
+$lang['js']['restore_confirm'] = 'Tiešām atjaunot šo versiju';
+$lang['js']['media_diff']      = 'Skatīt atšķirību';
+$lang['js']['media_diff_both'] = 'Blakus';
+$lang['js']['media_diff_opacity'] = 'Pārklāti';
+$lang['js']['media_select']    = 'Norādīt failus...';
+$lang['js']['media_upload_btn'] = 'Augšuplādēt';
+$lang['js']['media_done_btn']  = 'Gatavs';
+$lang['js']['media_drop']      = 'Nomet te augšuplādējamos failus';
+$lang['js']['media_overwrt']   = 'Rakstīt pāri esošajiem failiem';
 $lang['rssfailed']             = 'Kļūda saņemot saturu no ';
 $lang['nothingfound']          = 'Nekas nav atrasts.';
 $lang['mediaselect']           = 'Mēdiju faila izvēle';
@@ -160,7 +171,7 @@ $lang['diff_type']             = 'Skatīt atšķirības:';
 $lang['diff_inline']           = 'Iekļauti';
 $lang['diff_side']             = 'Blakus';
 $lang['line']                  = 'Rinda';
-$lang['breadcrumb']            = 'Ceļš';
+$lang['breadcrumb']            = 'Apmeklēts';
 $lang['youarehere']            = 'Tu atrodies Å¡eit';
 $lang['lastmod']               = 'Labota';
 $lang['by']                    = ', labojis';
@@ -176,6 +187,10 @@ $lang['mail_changed']          = 'lapa mainīta:';
 $lang['mail_subscribe_list']   = 'Nodaļā mainītās lapas:';
 $lang['mail_new_user']         = 'Jauns lietotājs:';
 $lang['mail_upload']           = 'augšupielādētais fails:';
+$lang['changes_type']          = 'Skatīt izmaiņas';
+$lang['pages_changes']         = 'Lapās';
+$lang['media_changes']         = 'MÄ“diju failos';
+$lang['both_changes']          = 'Gan lapās, gan mēdiju failos';
 $lang['qb_bold']               = 'Trekninājums';
 $lang['qb_italic']             = 'Kursīvs';
 $lang['qb_underl']             = 'Pasvītrojums';
@@ -216,6 +231,9 @@ $lang['img_copyr']             = 'Autortiesības';
 $lang['img_format']            = 'Formāts';
 $lang['img_camera']            = 'Fotoaparāts';
 $lang['img_keywords']          = 'Atslēgvārdi';
+$lang['img_width']             = 'Platums';
+$lang['img_height']            = 'Augstums';
+$lang['img_manager']           = 'Skatīt mēdiju pārvaldniekā';
 $lang['subscr_subscribe_success'] = '%s pievienots %s abonēšanas sarakstam';
 $lang['subscr_subscribe_error'] = 'Kļūme pievienojot %s %s abonēšanas sarakstam.';
 $lang['subscr_subscribe_noaddress'] = 'Nav zināma jūsu e-pasta adrese, tāpēc nevarat abonēt.';
@@ -281,3 +299,27 @@ $lang['hours']                 = 'pirms %d stundām';
 $lang['minutes']               = 'pirms %d minūtēm';
 $lang['seconds']               = 'pirms %d sekundēm';
 $lang['wordblock']             = 'Grozījumus nevarēju saglabāt, jo tie satur aizliegto vārdu (spamu).';
+$lang['media_uploadtab']       = 'Augšuplādēt';
+$lang['media_searchtab']       = 'Meklēt';
+$lang['media_file']            = 'Fails';
+$lang['media_viewtab']         = 'Skatīt';
+$lang['media_edittab']         = 'Labot';
+$lang['media_historytab']      = 'VÄ“sture';
+$lang['media_list_thumbs']     = 'Sīktēli';
+$lang['media_list_rows']       = 'Rindas';
+$lang['media_sort_name']       = 'Nosaukums';
+$lang['media_sort_date']       = 'Datums';
+$lang['media_namespaces']      = 'Norādīt nodaļu';
+$lang['media_files']           = 'Faili nodaļā s%';
+$lang['media_upload']          = 'Augšuplādēt nodaļā s%';
+$lang['media_search']          = 'Meklēt nodaļā s%';
+$lang['media_view']            = 's%';
+$lang['media_viewold']         = 's% nodaļā s%';
+$lang['media_edit']            = 'Labot %s';
+$lang['media_history']         = 's% vēsture';
+$lang['media_meta_edited']     = 'metadati laboti';
+$lang['media_perm_read']       = 'Atvainojiet, jums nav tiesību skatīt failus. ';
+$lang['media_perm_upload']     = 'Atvainojiet, jums nav tiesību augšupielādēt. ';
+$lang['media_update']          = 'Augšupielādēt jaunu versiju';
+$lang['media_restore']         = 'Atjaunot Å¡o versiju';
+$lang['plugin_install_err']    = 'Modulis aplami instalēts.  Pārdēvē moduļa direktoriju s% par s%.';
diff --git a/inc/lang/mk/lang.php b/inc/lang/mk/lang.php
index b7d43309201db6454d1842378a9da7de812af7c6..ca4a746cd8b75697a76e95fe92e915d93a2459d7 100644
--- a/inc/lang/mk/lang.php
+++ b/inc/lang/mk/lang.php
@@ -117,7 +117,6 @@ $lang['js']['nosmblinks']      = 'Поврзувањето со Windows Shares 
 $lang['js']['linkwiz']         = 'Волшебник за врски';
 $lang['js']['linkto']          = 'Врска до:';
 $lang['js']['del_confirm']     = 'Дали навистина да ги избришам избраните датотеки?';
-$lang['js']['mu_btn']          = 'Качете повеќе датотеки наеднаш';
 $lang['mediausage']            = 'Користете ја следнава синтакса за референцирање кон оваа датотека:';
 $lang['mediaview']             = 'Види ја оригиналната датотека';
 $lang['mediaroot']             = 'root';
diff --git a/inc/lang/mr/lang.php b/inc/lang/mr/lang.php
index ae9d05bfd82bf22170074f3050e7abeeb7217a99..63fda3e5ab7e17fcb93745af90bd2ed3514606d9 100644
--- a/inc/lang/mr/lang.php
+++ b/inc/lang/mr/lang.php
@@ -45,8 +45,6 @@ $lang['btn_backlink']          = 'येथे काय जोडले आह
 $lang['btn_backtomedia']       = 'परत माध्यम फाइल निवडीकड़े';
 $lang['btn_subscribe']         = 'पृष्ठाच्या बदलांची पुरवणी (फीड) लावा ';
 $lang['btn_unsubscribe']       = 'पृष्ठाच्या बदलांची पुरवणी (फीड) बंद करा';
-$lang['btn_subscribens']       = 'नामसमुहाच्या (नेमस्पेस) बदलांची पुरवणी (फीड) लावा';
-$lang['btn_unsubscribens']     = 'नामसमुहाच्या (नेमस्पेस) बदलांची पुरवणी (फीड) बंद करा';
 $lang['btn_profile']           = 'प्रोफाइल अद्ययावत करा';
 $lang['btn_reset']             = 'रिसेट';
 $lang['btn_resendpwd']         = 'कृपया परवलीचा नवीन शब्द माझ्या इमेल पत्त्यावर पाठविणे.';
@@ -118,7 +116,6 @@ $lang['mediafiles']            = 'मध्ये उपलब्ध असल
 $lang['js']['keepopen']        = 'निवड केल्यावर विण्डो उघडी ठेवा';
 $lang['js']['hidedetails']     = 'सविस्तर मजकूर लपवा';
 $lang['js']['nosmblinks']      = 'विन्डोज़ शेअर ला लिंक केल्यास ते फक्त मायक्रोसॉफ़्ट इन्टरनेट एक्स्प्लोरर वरच चालते. तरी तुम्ही लिंक कॉपी करू शकता.';
-$lang['js']['mu_btn']          = 'एक वेळेस अनेक फाइल वापरा';
 $lang['mediausage']            = 'ह्या फाइलचा संदर्भ देण्यासाठी खालील सिन्टॅक्स वापरा :';
 $lang['mediaview']             = 'मूळ फाइल बघू ';
 $lang['mediaroot']             = 'रूट';
diff --git a/inc/lang/ne/lang.php b/inc/lang/ne/lang.php
index 53c701b23b39ae6e6e6bc5b68b1d99aa82b71719..97e2dde5cd1d9fee325074e1f7c376fe417177e9 100644
--- a/inc/lang/ne/lang.php
+++ b/inc/lang/ne/lang.php
@@ -38,8 +38,6 @@ $lang['btn_backlink']          = 'पछाडिका लिङ्कहरु
 $lang['btn_backtomedia']       = 'मिडिया छनौटमा फर्कनुहोस्';
 $lang['btn_subscribe']         = 'पृष्ठ परिवर्तन ग्राह्य गर्नुहोस्';
 $lang['btn_unsubscribe']       = 'पृष्ठ परिवर्तन अग्राह्य गर्नुहोस्';
-$lang['btn_subscribens']       = 'नेमस्पेस परिवर्तन ग्राह्य गर्नुहोस् ';
-$lang['btn_unsubscribens']     = 'नेमस्पेस परिवर्तन अग्राह्य गर्नुहोस् ';
 $lang['btn_profile']           = 'प्रोफाइल अध्यावधिक गर्नुहोस् ';
 $lang['btn_reset']             = 'पूर्वरुपमा फर्काउनुहोस';
 $lang['btn_resendpwd']         = 'नयाँ प्रवेश शव्द(पासवर्ड) पठाउनुहोस् ';
@@ -110,7 +108,6 @@ $lang['mediafiles']            = ' उपलब्ध फाइलहरु ';
 $lang['js']['keepopen']        = 'छनौटमा विन्डो खुला राख्नुहोस् ';
 $lang['js']['hidedetails']     = 'जानकारी लुकाउनु होस् ';
 $lang['js']['nosmblinks']      = 'विन्डोहरु लिङ्क गर्दा माइक्रो सफ्ट एक्सप्लोररमामात्र  काम साझा हुन्छ । तर कपि गर्न र टास्न मिल्छ।   ';
-$lang['js']['mu_btn']          = 'धेरै वटा फाइलहरु एकैपटक अपलोड गर्नुहोस् ।';
 $lang['mediausage']            = 'फाइललाई रेफरेन्स गर्न निम्न सुत्र प्रयोग गर्नुहोस् :';
 $lang['mediaview']             = 'सक्कली फाइल हेर्नुहोस् ';
 $lang['mediaroot']             = 'रुट(मूख्य प्रयोगकर्ता)';
diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php
index 6090babd9ea39eb0bfbb38380fe9af9575582f25..62d23b0d20c6f349150cb6d807da5eb681e924d2 100644
--- a/inc/lang/nl/lang.php
+++ b/inc/lang/nl/lang.php
@@ -14,6 +14,7 @@
  * @author Matthias Carchon <webmaster@c-mattic.be>
  * @author Marijn Hofstra <hofstra.m@gmail.com>
  * @author Timon Van Overveldt <timonvo@gmail.com>
+ * @author Jeroen
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -55,6 +56,8 @@ $lang['btn_recover']           = 'Herstel concept';
 $lang['btn_draftdel']          = 'Verwijder concept';
 $lang['btn_revert']            = 'Herstellen';
 $lang['btn_register']          = 'Registreren';
+$lang['btn_apply']             = 'Toepassen';
+$lang['btn_media']             = 'Media beheerder';
 $lang['loggedinas']            = 'Ingelogd als';
 $lang['user']                  = 'Gebruikersnaam';
 $lang['pass']                  = 'Wachtwoord';
@@ -99,7 +102,7 @@ $lang['txt_filename']          = 'Vul nieuwe naam in (optioneel)';
 $lang['txt_overwrt']           = 'Overschrijf bestaand bestand';
 $lang['lockedby']              = 'Momenteel in gebruik door';
 $lang['lockexpire']            = 'Exclusief gebruiksrecht vervalt op';
-$lang['js']['willexpire']            = 'Je exclusieve gebruiksrecht voor het aanpassen van deze pagina verloopt over een minuut.\nKlik op de Voorbeeld-knop om het exclusieve gebruiksrecht te verlengen.';
+$lang['js']['willexpire']      = 'Je exclusieve gebruiksrecht voor het aanpassen van deze pagina verloopt over een minuut.\nKlik op de Voorbeeld-knop om het exclusieve gebruiksrecht te verlengen.';
 $lang['js']['notsavedyet']     = 'Nog niet bewaarde wijzigingen zullen verloren gaan.
 Weet je zeker dat je wilt doorgaan?';
 $lang['js']['searchmedia']     = 'Zoek naar bestanden';
@@ -131,7 +134,14 @@ Je kan de link wel kopiëren en plakken.';
 $lang['js']['linkwiz']         = 'Linkwizard';
 $lang['js']['linkto']          = 'Link naar:';
 $lang['js']['del_confirm']     = 'Item(s) verwijderen?';
-$lang['js']['mu_btn']          = 'Meerdere files tegelijk uploaden';
+$lang['js']['restore_confirm'] = 'Werkelijk deze versie terugzetten?';
+$lang['js']['media_diff']      = 'Verschillen bekijken:';
+$lang['js']['media_diff_both'] = 'Naast elkaar';
+$lang['js']['media_diff_opacity'] = 'Doorschijnend';
+$lang['js']['media_select']    = 'Selecteer bestanden';
+$lang['js']['media_done_btn']  = 'Klaar';
+$lang['js']['media_cancel']    = 'Verwijderen';
+$lang['js']['media_overwrt']   = 'Bestaande bestanden overschrijven';
 $lang['rssfailed']             = 'Er is een fout opgetreden bij het ophalen van de feed: ';
 $lang['nothingfound']          = 'Er werd niets gevonden.';
 $lang['mediaselect']           = 'Bestandsselectie';
@@ -186,6 +196,9 @@ $lang['mail_changed']          = 'pagina aangepast:';
 $lang['mail_subscribe_list']   = 'Pagina\'s veranderd in namespace:';
 $lang['mail_new_user']         = 'nieuwe gebruiker:';
 $lang['mail_upload']           = 'bestand geüpload:';
+$lang['pages_changes']         = 'Pagina\'s';
+$lang['media_changes']         = 'Media bestanden';
+$lang['both_changes']          = 'Zowel pagina\'s als media bestanden';
 $lang['qb_bold']               = 'Vette tekst';
 $lang['qb_italic']             = 'Cursieve tekst';
 $lang['qb_underl']             = 'Onderstreepte tekst';
@@ -226,6 +239,9 @@ $lang['img_copyr']             = 'Copyright';
 $lang['img_format']            = 'Formaat';
 $lang['img_camera']            = 'Camera';
 $lang['img_keywords']          = 'Trefwoorden';
+$lang['img_width']             = 'Breedte';
+$lang['img_height']            = 'Hoogte';
+$lang['img_manager']           = 'In media beheerder bekijken';
 $lang['subscr_subscribe_success'] = '%s is ingeschreven voor %s';
 $lang['subscr_subscribe_error'] = 'Fout bij inschrijven van %s voor %s';
 $lang['subscr_subscribe_noaddress'] = 'Er is geen emailadres geassocieerd met uw account, u kunt daardoor niet worden ingeschreven.';
@@ -290,3 +306,22 @@ $lang['hours']                 = '%d uren geleden';
 $lang['minutes']               = '%d minuten geleden';
 $lang['seconds']               = '%d seconden geleden';
 $lang['wordblock']             = 'Uw wijziging is niet opgeslagen omdat deze niet-toegestane tekst bevat (spam).';
+$lang['media_searchtab']       = 'Zoeken';
+$lang['media_file']            = 'Bestand';
+$lang['media_viewtab']         = 'Beeld';
+$lang['media_edittab']         = 'Bewerken';
+$lang['media_historytab']      = 'Geschiedenis';
+$lang['media_list_rows']       = 'Regels';
+$lang['media_sort_name']       = 'Naam';
+$lang['media_sort_date']       = 'Datum';
+$lang['media_namespaces']      = 'Kies naamruimte';
+$lang['media_files']           = 'Bestanden in %s';
+$lang['media_search']          = 'Zoeken in %s';
+$lang['media_view']            = '%s';
+$lang['media_edit']            = '%s bewerken';
+$lang['media_history']         = 'Geschiedenis van %s';
+$lang['media_meta_edited']     = 'Metagegevens bewerkt';
+$lang['media_perm_read']       = 'Sorry, u heeft niet voldoende rechten om bestanden te lezen.';
+$lang['media_perm_upload']     = 'Sorry, u heeft niet voldoende rechten om bestanden te uploaden.';
+$lang['media_restore']         = 'Deze versie terugzetten';
+$lang['plugin_install_err']    = 'Plugin is juist geinstalleerd. Hernoem plugin map \'%s\' naar \'%s\'.';
diff --git a/inc/lang/no/adminplugins.txt b/inc/lang/no/adminplugins.txt
index 32499a2e4302855b729c26ee7237a63a48367924..091ae4d7efeb42078c4199cd4debf8f53ce48ce1 100644
--- a/inc/lang/no/adminplugins.txt
+++ b/inc/lang/no/adminplugins.txt
@@ -1 +1 @@
-====== Ekstra tilleggene ======
\ No newline at end of file
+====== Ekstra tillegg ======
\ No newline at end of file
diff --git a/inc/lang/no/conflict.txt b/inc/lang/no/conflict.txt
index 89479af4f522ecd9904c83265bbd03dbf68c7010..855034685f68b3894eb3309b76be75f1cfe28d4f 100644
--- a/inc/lang/no/conflict.txt
+++ b/inc/lang/no/conflict.txt
@@ -1,4 +1,4 @@
-====== Det fins en nyere versjon ======
+====== Det finnes en nyere versjon ======
 
 Det fins en nyere versjon av dokumentet du har redigert. Dette kan skje når en annen bruker redigerer dokumentet samtidig med deg.
 
diff --git a/inc/lang/no/lang.php b/inc/lang/no/lang.php
index fa946ca02f3a78aff98f385f19c63c5b827a5292..88d21b53614bb0d75ba921afc8a7eaaa6ed20826 100644
--- a/inc/lang/no/lang.php
+++ b/inc/lang/no/lang.php
@@ -16,11 +16,12 @@
  * @author Lisa Ditlefsen <lisa@vervesearch.com>
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Rune Rasmussen syntaxerror.no@gmail.com
+ * @author Jon Bøe <jonmagneboe@hotmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
-$lang['doublequoteopening']    = '“';
-$lang['doublequoteclosing']    = '”';
+$lang['doublequoteopening']    = '«';
+$lang['doublequoteclosing']    = '»';
 $lang['singlequoteopening']    = '‘';
 $lang['singlequoteclosing']    = '’';
 $lang['apostrophe']            = '\'';
@@ -57,6 +58,8 @@ $lang['btn_recover']           = 'Gjennvinn kladd';
 $lang['btn_draftdel']          = 'Slett kladd';
 $lang['btn_revert']            = 'Gjenopprette';
 $lang['btn_register']          = 'Registrer deg';
+$lang['btn_apply']             = 'Bruk';
+$lang['btn_media']             = 'Mediefiler';
 $lang['loggedinas']            = 'Innlogget som';
 $lang['user']                  = 'Brukernavn';
 $lang['pass']                  = 'Passord';
@@ -101,7 +104,7 @@ $lang['txt_filename']          = 'Skriv inn wikinavn (alternativt)';
 $lang['txt_overwrt']           = 'Overskriv eksisterende fil';
 $lang['lockedby']              = 'Stengt av';
 $lang['lockexpire']            = 'Avstengningen opphører';
-$lang['js']['willexpire']            = 'Din redigeringslås for dette dokumentet kommer snart til å opphøre.\nFor å unngå versjonskonflikter bør du forhåndsvise dokumentet ditt for å forlenge redigeringslåsen.';
+$lang['js']['willexpire']      = 'Din redigeringslås for dette dokumentet kommer snart til å opphøre.\nFor å unngå versjonskonflikter bør du forhåndsvise dokumentet ditt for å forlenge redigeringslåsen.';
 $lang['js']['notsavedyet']     = 'Ulagrede endringer vil gå tapt.
 Vil du fortsette?';
 $lang['js']['searchmedia']     = 'Søk for filer';
@@ -133,7 +136,17 @@ Du kan fortsatt kopiere og lime inn lenken.';
 $lang['js']['linkwiz']         = 'guide til lenker';
 $lang['js']['linkto']          = 'Lenke til:';
 $lang['js']['del_confirm']     = 'Slett denne oppføringen?';
-$lang['js']['mu_btn']          = 'Last opp flere filer samtidig';
+$lang['js']['restore_confirm'] = 'Er du sikker på at du vil gjenopprette denne versjonen?';
+$lang['js']['media_diff']      = 'Vis forskjeller:';
+$lang['js']['media_diff_both'] = 'Side ved side';
+$lang['js']['media_diff_opacity'] = 'Gjennomskinnelighet';
+$lang['js']['media_diff_portions'] = 'Glidebryter';
+$lang['js']['media_select']    = 'Velg filer…';
+$lang['js']['media_upload_btn'] = 'Last opp';
+$lang['js']['media_done_btn']  = 'Ferdig';
+$lang['js']['media_drop']      = 'Dra filer hit for å laste dem opp';
+$lang['js']['media_cancel']    = 'fjern';
+$lang['js']['media_overwrt']   = 'Erstatt eksisterende filer';
 $lang['rssfailed']             = 'En feil oppstod da denne kilden skulle hentes:';
 $lang['nothingfound']          = 'Ingen data funnet.';
 $lang['mediaselect']           = 'Valg av mediafil';
@@ -169,6 +182,7 @@ $lang['diff']                  = 'Vis forskjeller mot nåværende versjon';
 $lang['diff2']                 = 'Vis forskjeller mellom valgte versjoner';
 $lang['difflink']              = 'Lenk til denne sammenligningen';
 $lang['diff_type']             = 'Vis forskjeller:';
+$lang['diff_inline']           = 'I teksten';
 $lang['diff_side']             = 'Side ved side';
 $lang['line']                  = 'Linje';
 $lang['breadcrumb']            = 'Spor';
@@ -187,6 +201,10 @@ $lang['mail_changed']          = 'side endret:';
 $lang['mail_subscribe_list']   = 'side endret i \'namespace\':';
 $lang['mail_new_user']         = 'ny bruker:';
 $lang['mail_upload']           = 'fil opplastet:';
+$lang['changes_type']          = 'Vis endringer av';
+$lang['pages_changes']         = 'Sider';
+$lang['media_changes']         = 'Mediefiler';
+$lang['both_changes']          = 'BÃ¥de sider og mediefiler';
 $lang['qb_bold']               = 'Fet tekst';
 $lang['qb_italic']             = 'Kursiv tekst';
 $lang['qb_underl']             = 'Understreket tekst';
@@ -227,12 +245,25 @@ $lang['img_copyr']             = 'Opphavsrett';
 $lang['img_format']            = 'Format';
 $lang['img_camera']            = 'Kamera';
 $lang['img_keywords']          = 'Nøkkelord';
+$lang['img_width']             = 'Bredde';
+$lang['img_height']            = 'Høyde';
+$lang['img_manager']           = 'Vis i mediefilbehandler';
+$lang['subscr_subscribe_success'] = 'La til %s som abonnent på %s';
+$lang['subscr_subscribe_error'] = 'Klarte ikke å legge til %s som abonnent på %s';
+$lang['subscr_subscribe_noaddress'] = 'Brukeren din er ikke registrert med noen adresse. Du kan derfor ikke legges til som abonnent.';
+$lang['subscr_unsubscribe_success'] = 'Avsluttet %s sitt abonnement på %s';
+$lang['subscr_unsubscribe_error'] = 'Klarte ikke å avslutte %s sitt abonnement på %s';
+$lang['subscr_already_subscribed'] = '%s abonnerer allerede på %s';
+$lang['subscr_not_subscribed'] = '%s abonnerer ikke på %s';
+$lang['subscr_m_not_subscribed'] = 'Du abonnerer ikke på denne sida eller dette navnerommet';
 $lang['subscr_m_new_header']   = 'Legg til abonnement';
 $lang['subscr_m_current_header'] = 'Gjeldende abonnementer';
 $lang['subscr_m_unsubscribe']  = 'Avmeld';
 $lang['subscr_m_subscribe']    = 'PÃ¥meld';
 $lang['subscr_m_receive']      = 'Motta';
 $lang['subscr_style_every']    = 'e-post for alle endringer';
+$lang['subscr_style_digest']   = 'e-post med sammendrag av endringer for hver side (%.2f dager mellom hver)';
+$lang['subscr_style_list']     = 'liste med sider som er endra siden forrige e-post (%.2f dager mellom hver)';
 $lang['authmodfailed']         = 'Feilkonfigurert brukerautorisasjon. Vennligst innformer Wiki-admin.';
 $lang['authtempfail']          = 'Brukerautorisasjon er midlertidig utilgjengelig. Om dette vedvarer, vennligst informer Wiki-admin.';
 $lang['i_chooselang']          = 'Velg ditt språk';
@@ -285,3 +316,27 @@ $lang['hours']                 = '%d timer siden';
 $lang['minutes']               = '%d minutter siden';
 $lang['seconds']               = '%d sekunder siden';
 $lang['wordblock']             = 'Din endring ble ikke lagret ettersom den inneholder blokkert tekst (søppel).';
+$lang['media_uploadtab']       = 'Last opp';
+$lang['media_searchtab']       = 'Søk';
+$lang['media_file']            = 'Fil';
+$lang['media_viewtab']         = 'Vis';
+$lang['media_edittab']         = 'Rediger';
+$lang['media_historytab']      = 'Historikk';
+$lang['media_list_thumbs']     = 'Miniatyrbilder';
+$lang['media_list_rows']       = 'Rader';
+$lang['media_sort_name']       = 'etter navn';
+$lang['media_sort_date']       = 'etter dato';
+$lang['media_namespaces']      = 'Velg navnerom';
+$lang['media_files']           = 'Filer i %s';
+$lang['media_upload']          = 'Last opp til navnerommet <strong>%s</strong>.';
+$lang['media_search']          = 'Søk i navnerommet <strong>%s</strong>.';
+$lang['media_view']            = '%s';
+$lang['media_viewold']         = '%s på %s';
+$lang['media_edit']            = 'Rediger';
+$lang['media_history']         = 'Dette er de tidligere versjonene av fila.';
+$lang['media_meta_edited']     = 'metadata er endra';
+$lang['media_perm_read']       = 'Beklager, du har ikke tilgang til å lese filer.';
+$lang['media_perm_upload']     = 'Beklager, du har ikke tilgang til å laste opp filer.';
+$lang['media_update']          = 'Last opp ny versjon';
+$lang['media_restore']         = 'Gjenopprett denne versjonen';
+$lang['plugin_install_err']    = 'Tillegget ble feil installert. Skift navn på mappa \'%s\' til \'%s\'.';
diff --git a/inc/lang/no/newpage.txt b/inc/lang/no/newpage.txt
index 8f4b8da79369b53778fa8a3dc49f0bca0db6c54d..f712998d2ce82085d9fff9795c36cd09120ad191 100644
--- a/inc/lang/no/newpage.txt
+++ b/inc/lang/no/newpage.txt
@@ -1,3 +1,3 @@
-====== Det fins ikke noe innhold ======
+====== Dette emnet har ikke noe innhold ======
 
 Du har klikket på en lenke til et emne som ikke finnes ennå. Du kan skape det gjennom å klikke på ''**Lag denne siden**''.
diff --git a/inc/lang/no/norev.txt b/inc/lang/no/norev.txt
index dfd71db0fac80362bf9ff72e577dabc79ad3e209..cc58c99e334a6eccf95b1b5ed8fff050c5c04116 100644
--- a/inc/lang/no/norev.txt
+++ b/inc/lang/no/norev.txt
@@ -1,4 +1,4 @@
-====== Det fins ingen slik versjon ======
+====== Versjonen finnes ikke ======
 
-Den angitte versjonen fins ikke. Bruk ''**Historikk**'' for en oversikt over de versjoner som fins av dette dokumentet.
+Den angitte versjonen finnes ikke. Bruk ''**Historikk**'' for en oversikt over de versjoner som finnes av dette dokumentet.
 
diff --git a/inc/lang/no/registermail.txt b/inc/lang/no/registermail.txt
index e1fae2b90152d40bce1465a7e767e3bace6e5675..35ed253ab9f1f4bc22d91966fa6d7de067b434e0 100644
--- a/inc/lang/no/registermail.txt
+++ b/inc/lang/no/registermail.txt
@@ -1,4 +1,4 @@
-En ny bruker har registret seg, her er detaljene:
+En ny bruker har registrert seg, her er detaljene:
 
 Brukernavn  : @NEWUSER@
 Fult navn   : @NEWNAME@
diff --git a/inc/lang/no/stopwords.txt b/inc/lang/no/stopwords.txt
index 2b2ab11e25bcc16e3d14b68582faad1502f0f48e..9a4c302d96605f4c5dd4184a33db0852da4aff27 100644
--- a/inc/lang/no/stopwords.txt
+++ b/inc/lang/no/stopwords.txt
@@ -1,130 +1,68 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-alle
-andre
-arbeid
-begge
-bort
-bra
-bruke
-denne
-der
-deres
+# Dette er en liste med ord som indeksereren ignorerer, ett ord per linje.
+# Når du redigerer siden, pass på å bruke UNIX linjeslutt (enkel ny linje).
+# Ord kortere enn 3 bokstaver er automatisk ignorert.
+# Listen er basert på http://helmer.aksis.uib.no/nta/ord10000.txt
+i
+og
 det
-din
-disse
-eller
-ene
-eneste
-enhver
-enn
-folk
+er
+på
+til
+som
+en
+Ã¥
 for
-fordi
-forsÛke
-fra
-fÃ…
-fÛr
-fÛrst
-gjorde
-gjÛre
-god
-gÃ…
-hadde
-han
-hans
-hennes
-her
-hva
-hvem
-hver
-hvilken
-hvis
-hvor
-hvordan
-hvorfor
-ikke
-inn
-innen
-kan
-kunne
-lage
-lang
-lik
-like
-makt
-mange
+av
+at
+har
 med
-meg
-meget
-men
-mens
-mer
-mest
-min
-mye
-mÃ…
-mÃ…te
-navn
-nei
-nÃ…
-nÃ…r
-ogsÃ…
-opp
-oss
-over
-part
-punkt
-pÃ…
-rett
-riktig
-samme
-sant
-siden
-sist
-skulle
-slik
-slutt
-som
-start
-stille
-sÃ…
-tid
-til
-tilbake
-tilstand
-under
-uten
-var
-ved
-verdi
-vil
-ville
-vite
-vÃ…r
-vÖre
-vÖrt
-om
-er
-og
-du
-dine
 de
-deres
-com
-for
+ikke
+den
+han
+om
+et
 fra
-inni
-hvordan
-det
-dette
+men
+vi
 var
-hva
-når
-hvor
-hvem
+jeg
+seg
+sier
 vil
-med
+kan
+ble
+skal
+etter
+også
+så
+ut
+Ã¥r
+nå
+da
+dette
+blir
+ved
+mot
+hadde
+to
+hun
+over
+være
+ha
+må
+går
+opp
+få
+andre
+eller
+bare
+sin
+mer
+inn
+før
+bli
+vært
+enn
+alle
 www
\ No newline at end of file
diff --git a/inc/lang/no/subscr_digest.txt b/inc/lang/no/subscr_digest.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6afd0cc5c88fad72abeb527181686de384cbed54
--- /dev/null
+++ b/inc/lang/no/subscr_digest.txt
@@ -0,0 +1,20 @@
+Hei!
+
+Siden @PAGE@ på wikien @TITLE@ har blitt endret.
+Her er endringene:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+Gammel versjon : @OLDPAGE@
+Ny versjon: @NEWPAGE@
+
+For å avslutte varslingen, logg inn på
+@DOKUWIKIURL@ og gå til 
+@NEWPAGE@
+og avslutt abonnementet på endringer av siden eller i navnerommet.
+
+--
+Denne e-posten ble generert av DokuWiki på
+@DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/no/subscr_form.txt b/inc/lang/no/subscr_form.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c3df69e02479b585cda7e06630a439774b51885f
--- /dev/null
+++ b/inc/lang/no/subscr_form.txt
@@ -0,0 +1,3 @@
+====== Administrere abonnement ======
+
+Denne sida lar deg administrere abonnementene dine for denne sida og dette navnerommet.
\ No newline at end of file
diff --git a/inc/lang/no/subscr_list.txt b/inc/lang/no/subscr_list.txt
new file mode 100644
index 0000000000000000000000000000000000000000..72cd307cb7b29231d0c2654855e983591a6bdbf7
--- /dev/null
+++ b/inc/lang/no/subscr_list.txt
@@ -0,0 +1,17 @@
+Hei!
+
+Sider i navnerommet @PAGE@ på wikien @TITLE@ har blitt endra.
+Her er endringene:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+For å avslutte varslinga, logg inn på
+@DOKUWIKIURL@ og gå til 
+@NEWPAGE@
+og avslutt abonnementet på endringer av sida eller i navnerommet.
+
+--
+Denne e-posten ble generert av DokuWiki på
+@DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/no/subscr_single.txt b/inc/lang/no/subscr_single.txt
new file mode 100644
index 0000000000000000000000000000000000000000..25296da5810b89823dc544ed10f1aa0c9b00b8ed
--- /dev/null
+++ b/inc/lang/no/subscr_single.txt
@@ -0,0 +1,23 @@
+Hei!
+
+Siden @PAGE@ på wikien @TITLE@ har blitt endret.
+Her er endringene:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+Dato : @DATE@
+Bruker : @USER@
+Sammendrag: @SUMMARY@
+Gammel versjon : @OLDPAGE@
+Ny versjon: @NEWPAGE@
+
+For å avslutte varslingen, logg inn på
+@DOKUWIKIURL@, gå til 
+@NEWPAGE@
+og avslutt abonnementet på endringer av siden eller i navnerommet.
+
+--
+Denne e-posten ble generert av DokuWiki på
+@DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/no/updateprofile.txt b/inc/lang/no/updateprofile.txt
index 5565e528f6274763b2c2d9be8d7c31d5912e6769..b2e37e76dc54c4666e2721c44e42b6f6ced851aa 100644
--- a/inc/lang/no/updateprofile.txt
+++ b/inc/lang/no/updateprofile.txt
@@ -1,5 +1,5 @@
 ====== Oppdater din brukerprofil ======
 
-Du behøver bare fylle ut de felter du ønsker å endre. Du kan ikke endre ditt brukernavn.
+Du behøver bare fylle ut de felter du ønsker å endre. Du kan ikke endre brukernavnet ditt.
 
 
diff --git a/inc/lang/no/uploadmail.txt b/inc/lang/no/uploadmail.txt
index b01905009be2f5e03b72a0af2d92a902338d4a80..2890d962da9b7630665a1090a12bd469f5fe942b 100644
--- a/inc/lang/no/uploadmail.txt
+++ b/inc/lang/no/uploadmail.txt
@@ -1,6 +1,7 @@
 En fil ble lastet opp på din DokuWiki. Her er detaljene:
 
 Fil : @MEDIA@
+Gammel versjon: @OLD@
 Dato : @DATE@
 Nettleser : @BROWSER@
 IP-adresse : @IPADDRESS@
diff --git a/inc/lang/pl/lang.php b/inc/lang/pl/lang.php
index f9bf57852a108f47aa92f46d5ffcc511160991ea..a6fc3d52e3de6d50fc0592ccda5f1c17b143b51d 100644
--- a/inc/lang/pl/lang.php
+++ b/inc/lang/pl/lang.php
@@ -129,7 +129,6 @@ Możesz skopiować odnośnik.';
 $lang['js']['linkwiz']         = 'Tworzenie odnośników';
 $lang['js']['linkto']          = 'Link do';
 $lang['js']['del_confirm']     = 'Czy na pewno usunąć?';
-$lang['js']['mu_btn']          = 'Wyślij wiele plików na raz';
 $lang['rssfailed']             = 'Wystąpił błąd przy pobieraniu tych danych: ';
 $lang['nothingfound']          = 'Nic nie znaleziono.';
 $lang['mediaselect']           = 'Wysyłanie pliku';
diff --git a/inc/lang/pt-br/lang.php b/inc/lang/pt-br/lang.php
index 0abe8a6b61d79fd49c41c689c6ace703f8e00cfa..066b3acaa5284807783d238aa51bf7232e2614b5 100644
--- a/inc/lang/pt-br/lang.php
+++ b/inc/lang/pt-br/lang.php
@@ -18,6 +18,7 @@
  * @author Sergio Motta <sergio@cisne.com.br>
  * @author Isaias Masiero Filho <masiero@masiero.org>
  * @author Frederico Guimarães <frederico@teia.bio.br>
+ * @author Balaco Baco <balacobaco@imap.cc>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -103,7 +104,7 @@ $lang['txt_filename']          = 'Enviar como (opcional)';
 $lang['txt_overwrt']           = 'Substituir o arquivo existente';
 $lang['lockedby']              = 'Atualmente bloqueada por';
 $lang['lockexpire']            = 'O bloqueio expira em';
-$lang['js']['willexpire']            = 'O seu bloqueio de edição deste página irá expirar em um minuto.\nPara evitar conflitos de edição, clique no botão de visualização para reiniciar o temporizador de bloqueio.';
+$lang['js']['willexpire']      = 'O seu bloqueio de edição deste página irá expirar em um minuto.\nPara evitar conflitos de edição, clique no botão de visualização para reiniciar o temporizador de bloqueio.';
 $lang['js']['notsavedyet']     = 'As alterações não salvas serão perdidas.
 Deseja realmente continuar?';
 $lang['js']['searchmedia']     = 'Buscar por arquivos';
@@ -135,7 +136,6 @@ Entretanto, você ainda pode copiar e colar o atalho.';
 $lang['js']['linkwiz']         = 'Link Wizard';
 $lang['js']['linkto']          = 'Link para:';
 $lang['js']['del_confirm']     = 'Deseja realmente excluir o(s) item(ns) selecionado(s)?';
-$lang['js']['mu_btn']          = 'Enviar vários arquivos de uma vez';
 $lang['rssfailed']             = 'Ocorreu um erro durante a atualização dessa fonte: ';
 $lang['nothingfound']          = 'Não foi encontrado nada.';
 $lang['mediaselect']           = 'Arquivos de mídia';
diff --git a/inc/lang/pt/lang.php b/inc/lang/pt/lang.php
index dba379df5bf224a3e6a0db9b4a769d44f3ed03ec..3c3a8d9dad9decd25e6193d6f0ff1479d25e971e 100644
--- a/inc/lang/pt/lang.php
+++ b/inc/lang/pt/lang.php
@@ -12,11 +12,12 @@
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
-$lang['doublequoteopening']    = '“';
-$lang['doublequoteclosing']    = '”';
-$lang['singlequoteopening']    = '‘';
-$lang['singlequoteclosing']    = '’';
-$lang['apostrophe']            = '´';
+$lang['doublequoteopening']    = '“';//&ldquo;
+$lang['doublequoteclosing']    = '”';//&rdquo;
+$lang['singlequoteopening']    = '‘';//&lsquo;
+$lang['singlequoteclosing']    = '’';//&rsquo;
+$lang['apostrophe']            = '’';//&rsquo;
+
 $lang['btn_edit']              = 'Editar página';
 $lang['btn_source']            = 'Ver fonte';
 $lang['btn_show']              = 'Ver página';
@@ -50,6 +51,9 @@ $lang['btn_recover']           = 'Recuperar rascunho';
 $lang['btn_draftdel']          = 'Apagar rascunho';
 $lang['btn_revert']            = 'Restaurar';
 $lang['btn_register']          = 'Registar';
+$lang['btn_apply']             = 'Aplicar';
+$lang['btn_media']             = 'Gestor de Media';
+
 $lang['loggedinas']            = 'Está em sessão como';
 $lang['user']                  = 'Utilizador';
 $lang['pass']                  = 'Senha';
@@ -64,6 +68,7 @@ $lang['badlogin']              = 'O utilizador inválido ou senha inválida.';
 $lang['minoredit']             = 'Alterações Menores';
 $lang['draftdate']             = 'Rascunho automaticamente gravado em';
 $lang['nosecedit']             = 'A página foi modificada entretanto. Como a informação da secção estava desactualizada, foi carregada a página inteira.';
+
 $lang['regmissing']            = 'Por favor, preencha todos os campos.';
 $lang['reguexists']            = 'Este utilizador já está inscrito. Por favor escolha outro nome de utilizador.';
 $lang['regsuccess']            = 'O utilizador foi criado e a senha foi enviada para o endereço de correio electrónico usado na inscrição.';
@@ -73,10 +78,12 @@ $lang['regbadmail']            = 'O endereço de correio electrónico é inváli
 $lang['regbadpass']            = 'As duas senhas não são idênticas, por favor tente de novo.';
 $lang['regpwmail']             = 'A sua senha DokuWiki';
 $lang['reghere']               = 'Para se registar, clique em';
+
 $lang['profna']                = 'Este Wiki não suporta modificações aos perfis.';
 $lang['profnochange']          = 'Nada alteração, nada a fazer.';
 $lang['profnoempty']           = 'Não são permitidos nomes ou endereços em branco.';
 $lang['profchanged']           = 'Perfil do utilizador actualizado com sucesso.';
+
 $lang['pwdforget']             = 'Esqueceu a sua senha? Pedir nova senha';
 $lang['resendna']              = 'Este wiki não suporta reenvio de senhas.';
 $lang['resendpwd']             = 'Enviar nova senha para';
@@ -85,8 +92,10 @@ $lang['resendpwdnouser']       = 'Não foi possível encontrar este utilizador.'
 $lang['resendpwdbadauth']      = 'O código de autenticação não é válido. Por favor, assegure-se de que o link de confirmação está completo.';
 $lang['resendpwdconfirm']      = 'O link de confirmação foi enviado por e-mail.';
 $lang['resendpwdsuccess']      = 'A nova senha foi enviada por e-mail.';
+
 $lang['license']               = 'Excepto menção em contrário, o conteúdo neste wiki está sob a seguinte licença:';
 $lang['licenseok']             = 'Nota: Ao editar esta página você aceita disponibilizar o seu conteúdo sob a seguinte licença:';
+
 $lang['searchmedia']           = 'Procurar nome de ficheiro:';
 $lang['searchmedia_in']        = 'Procurar em %s';
 $lang['txt_upload']            = 'Escolha ficheiro para carregar';
@@ -94,9 +103,10 @@ $lang['txt_filename']          = 'Carregar como (opcional)';
 $lang['txt_overwrt']           = 'Escrever por cima do ficheiro já existente';
 $lang['lockedby']              = 'Bloqueado por';
 $lang['lockexpire']            = 'Expira em';
-$lang['js']['willexpire']            = 'O bloqueio de edição para este documento irá expirar num minuto.\nPara evitar conflitos de edição, clique no botão <Prever> para re-iniciar o temporizador de bloqueio.';
-$lang['js']['notsavedyet']     = 'Existem alterações não gravadas, que serão perdidas se continuar.
-Deseja realmente continuar?';
+$lang['js']['willexpire']      = 'O bloqueio de edição para este documento irá expirar num minuto.\nPara evitar conflitos use o botão Prever para re-iniciar o temporizador de bloqueio.';
+
+$lang['js']['notsavedyet']     = 'Alterações não gravadas serão perdidas.';
+
 $lang['js']['searchmedia']     = 'Procurar por ficheiros';
 $lang['js']['keepopen']        = 'Mantenha a janela aberta durante a selecção';
 $lang['js']['hidedetails']     = 'Esconder Detalhes';
@@ -125,8 +135,8 @@ $lang['js']['nosmblinks']      = 'Ligação a pastas Windows partilhadas apenas
 Pode no entanto copiar e colar o link.';
 $lang['js']['linkwiz']         = 'Assistente de Criação de Ligação';
 $lang['js']['linkto']          = 'Ligação para:';
-$lang['js']['del_confirm']     = 'Remover esta entrada?';
-$lang['js']['mu_btn']          = 'Enviar múltiplos ficheiros de uma vez';
+$lang['js']['del_confirm']     = 'Remover o(s) item(s) selecionados?';
+$lang['js']['restore_confirm'] = 'Restaurar esta versão?';
 $lang['rssfailed']             = 'Ocorreu um erro neste canal RSS: ';
 $lang['nothingfound']          = 'Nada foi encontrado.';
 $lang['mediaselect']           = 'Selecção de ficheiros';
@@ -176,6 +186,10 @@ $lang['external_edit']         = 'Edição externa';
 $lang['summary']               = 'Sumário da Edição';
 $lang['noflash']               = 'O <a href="http://www.adobe.com/products/flashplayer/">Plugin Adobe Flash</a> é necessário para exibir este conteúdo.';
 $lang['download']              = 'Descarregar Snippet';
+$lang['changes_type']          = 'Ver alterações de';
+$lang['pages_changes']         = 'Páginas';
+$lang['media_changes']         = 'Ficheiros Media';
+$lang['both_changes']          = 'Tanto páginas como ficheiros media';
 $lang['mail_newpage']          = 'documento adicionado:';
 $lang['mail_changed']          = 'documento modificado:';
 $lang['mail_subscribe_list']   = 'páginas alteradas no espaço de nome:';
@@ -221,6 +235,9 @@ $lang['img_copyr']             = 'Copyright';
 $lang['img_format']            = 'Formato';
 $lang['img_camera']            = 'Câmara';
 $lang['img_keywords']          = 'Palavras-Chave';
+$lang['img_width']             = 'Largura';
+$lang['img_height']            = 'Altura';
+$lang['img_manager']           = 'Ver em gestor de media';
 $lang['subscr_subscribe_success'] = 'Adicionado %s à lista de subscrição para %s';
 $lang['subscr_subscribe_error'] = 'Erro ao adicionar %s à lista de subscrição para %s';
 $lang['subscr_subscribe_noaddress'] = 'Não existe endereço algum associado com o seu nome de utilizador, não pode ser adicionado à lista de subscrição';
@@ -285,3 +302,36 @@ $lang['hours']                 = '%d horas atrás';
 $lang['minutes']               = '%d minutos atrás';
 $lang['seconds']               = '%d segundos atrás';
 $lang['wordblock']             = 'A sua alteração não foi guardada porque contém texto bloqueado (spam).';
+
+$lang['media_uploadtab']  = 'Enviar';
+$lang['media_searchtab']  = 'Procurar';
+$lang['media_viewtab']    = 'Ver';
+$lang['media_edittab']    = 'Editar';
+$lang['media_historytab'] = 'Histórico';
+$lang['media_sort']       = 'Ordenar';
+$lang['media_sort_name']  = 'Ordenar por nome';
+$lang['media_sort_date']  = 'Ordenar por data';
+$lang['media_upload']     = 'Enviar para o grupo <strong>%s</strong>.';
+$lang['media_search']     = 'Procurar no grupo <strong>%s</strong>.';
+$lang['media_view']       = '%s';
+$lang['media_edit']       = 'Editar %s';
+$lang['media_history']    = 'Histórico do %s';
+$lang['media_meta_edited']= 'metadata editada';
+$lang['media_perm_read']  = 'Perdão, não tem permissão para ler ficheiros.';
+$lang['media_perm_upload']= 'Perdão, não tem permissão para enviar ficheiros.';
+$lang['media_update']     = 'enviar nova versão';
+$lang['media_restore']    = 'Restaurar esta versão';
+
+$lang['js']['media_diff']          = 'Ver diferenças:';
+$lang['js']['media_diff_both']     = 'Lado a Lado';
+$lang['js']['media_diff_opacity']  = 'Sobreposição';
+$lang['js']['media_diff_portions'] = 'Slider'; // Needs translation. 'Deslizador' ?
+
+$lang['js']['media_select']     = 'Selecione ficheiros…';
+$lang['js']['media_upload_btn'] = 'Enviar';
+$lang['js']['media_done_btn']   = 'Feito';
+$lang['js']['media_drop']       = 'Largue ficheiros aqui para enviar';
+$lang['js']['media_cancel']     = 'remover';
+$lang['js']['media_overwrt']    = 'Escrever por cima de ficheiros existentes';
+
+$lang['plugin_install_err'] = "Plugin instalado incorrectamente. Renomeie a pasta do plugin de '%s' para '%s'.";
diff --git a/inc/lang/pt/uploadmail.txt b/inc/lang/pt/uploadmail.txt
index 597ba4a0143ec40c899116bc74918f94097160c3..bb571ffaed91f747274777913ebc3016f5cb42f1 100644
--- a/inc/lang/pt/uploadmail.txt
+++ b/inc/lang/pt/uploadmail.txt
@@ -1,15 +1,15 @@
 Um ficheiro foi carregado. Aqui estão os detalhes:
 
-Ficheiro : @MEDIA@
-Data : @DATE@
-Browser : @BROWSER@
-Endereço IP : @IPADDRESS@
-Hostname : @HOSTNAME@
-Tamanho : @SIZE@
-MIME Type : @MIME@
-Utilizador : @USER@
-
-----
+Ficheiro       : @MEDIA@
+Revisão antiga : @OLD@
+Data           : @DATE@
+Navegador      : @BROWSER@
+Endereço IP    : @IPADDRESS@
+Hostname       : @HOSTNAME@
+Tamanho        : @SIZE@
+MIME Type      : @MIME@
+Utilizador     : @USER@
 
+-- 
 Esta mensagem foi gerada pelo DokuWiki em
-@DOKUWIKIURL@
\ No newline at end of file
+@DOKUWIKIURL@
diff --git a/inc/lang/ro/lang.php b/inc/lang/ro/lang.php
index b8d7520e6b75d54fb969ecd518da00461895b933..91f8ebb97bee9a37a90f0e9f66e0670c5a1cd51e 100644
--- a/inc/lang/ro/lang.php
+++ b/inc/lang/ro/lang.php
@@ -7,6 +7,7 @@
  * @author Sergiu Baltariu <s_baltariu@yahoo.com>
  * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
  * @author Emanuel-Emeric AndraÅŸi <em.andrasi@mandrivausers.ro>
+ * @author Marius OLAR <olarmariusalex@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -48,6 +49,8 @@ $lang['btn_recover']           = 'Recuperează schiţă';
 $lang['btn_draftdel']          = 'Şterge schiţă';
 $lang['btn_revert']            = 'Revenire';
 $lang['btn_register']          = 'Înregistrează';
+$lang['btn_apply']             = 'Aplică';
+$lang['btn_media']             = 'Administrare media';
 $lang['loggedinas']            = 'Logat ca ÅŸi';
 $lang['user']                  = 'Utilizator';
 $lang['pass']                  = 'Parola';
@@ -92,7 +95,7 @@ $lang['txt_filename']          = 'Încarcă fişierul ca (opţional)';
 $lang['txt_overwrt']           = 'Suprascrie fiÅŸierul existent';
 $lang['lockedby']              = 'Momentan blocat de';
 $lang['lockexpire']            = 'Blocarea expiră la';
-$lang['js']['willexpire']            = 'Blocarea pentru editarea paginii expiră intr-un minut.\nPentru a preveni conflictele foloseşte butonul de previzualizare pentru resetarea blocării.';
+$lang['js']['willexpire']      = 'Blocarea pentru editarea paginii expiră intr-un minut.\nPentru a preveni conflictele foloseşte butonul de previzualizare pentru resetarea blocării.';
 $lang['js']['notsavedyet']     = 'Există modificări nesalvate, care se vor pierde.
 Doreşti să continui?';
 $lang['js']['searchmedia']     = 'Caută fişiere';
@@ -124,7 +127,17 @@ Puteţi însă copia şi insera legătura.';
 $lang['js']['linkwiz']         = 'Asistent legătură';
 $lang['js']['linkto']          = 'Legătură la:';
 $lang['js']['del_confirm']     = 'Doriţi într-adevăr ştergerea elementelor selectate?';
-$lang['js']['mu_btn']          = 'Încarcă mai multe fişiere simultan';
+$lang['js']['restore_confirm'] = 'Sunteți sigur că doriți restaurarea acestei versiuni?';
+$lang['js']['media_diff']      = 'Arată diferențele:';
+$lang['js']['media_diff_both'] = 'Unul lângă altul';
+$lang['js']['media_diff_opacity'] = 'Străveziu';
+$lang['js']['media_diff_portions'] = 'Lovește cu putere';
+$lang['js']['media_select']    = 'Selectează fișierele...';
+$lang['js']['media_upload_btn'] = 'Încarcă';
+$lang['js']['media_done_btn']  = 'Gata';
+$lang['js']['media_drop']      = 'Lasă fișierele aici pentru încărcarea lor';
+$lang['js']['media_cancel']    = 'înlătură';
+$lang['js']['media_overwrt']   = 'Suprascrie fișierele deja existente';
 $lang['rssfailed']             = 'A apărut o eroare in timpul descărcării acestui cîmp: ';
 $lang['nothingfound']          = 'Nu am găsit nimic.';
 $lang['mediaselect']           = 'Selectare fiÅŸiere media';
@@ -179,6 +192,10 @@ $lang['mail_changed']          = 'page schimbată:';
 $lang['mail_subscribe_list']   = 'pagini modificate în spaţiul de nume:';
 $lang['mail_new_user']         = 'utilizator nou';
 $lang['mail_upload']           = 'fişier încărcat:';
+$lang['changes_type']          = 'Vizualizare modificări';
+$lang['pages_changes']         = 'Pagini';
+$lang['media_changes']         = 'Fișiere media';
+$lang['both_changes']          = 'Ambele pagini ÅŸi fiÅŸiere media';
 $lang['qb_bold']               = 'Text ÃŽngroÅŸat';
 $lang['qb_italic']             = 'Text Italic';
 $lang['qb_underl']             = 'Text Subliniat';
@@ -219,6 +236,9 @@ $lang['img_copyr']             = 'Copyright';
 $lang['img_format']            = 'Format';
 $lang['img_camera']            = 'Camera';
 $lang['img_keywords']          = 'Cuvinte cheie';
+$lang['img_width']             = 'Lățime';
+$lang['img_height']            = 'Înălțime';
+$lang['img_manager']           = 'Vizualizează în administratorul media';
 $lang['subscr_subscribe_success'] = 'Adăugat %s la lista de abonare pentru %s';
 $lang['subscr_subscribe_error'] = 'Eroare la adăugarea %s la lista de abonare pentru %s';
 $lang['subscr_subscribe_noaddress'] = 'Nu există adresa asociată cu logarea dvs., nu puteţi fi adăugat la lista de abonare';
@@ -271,7 +291,7 @@ $lang['mu_ready']              = 'pregătit pentru încărcare';
 $lang['mu_done']               = 'complet';
 $lang['mu_fail']               = 'eÅŸuat';
 $lang['mu_authfail']           = 'sesiunea a expirat';
-$lang['mu_progress']           = '@PCT@% incărcat';
+$lang['mu_progress']           = '@PCT@% încărcat';
 $lang['mu_filetypes']          = 'Tipuri de fiÅŸiere permise';
 $lang['mu_info']               = 'fişiere încărcate';
 $lang['mu_lasterr']            = 'Ultima eroare:';
@@ -284,3 +304,27 @@ $lang['hours']                 = 'acum %d ore';
 $lang['minutes']               = 'acum %d minute';
 $lang['seconds']               = 'acum %d secunde';
 $lang['wordblock']             = 'Modificarea dvs. nu au fost salvate deoarece conţine text blocat (spam).';
+$lang['media_uploadtab']       = 'Încarcă';
+$lang['media_searchtab']       = 'Căutare';
+$lang['media_file']            = 'Fișier';
+$lang['media_viewtab']         = 'Vizualizare';
+$lang['media_edittab']         = 'Editare';
+$lang['media_historytab']      = 'Istoric';
+$lang['media_list_thumbs']     = 'Miniaturi';
+$lang['media_list_rows']       = 'Linii';
+$lang['media_sort_name']       = 'Nume';
+$lang['media_sort_date']       = 'Data';
+$lang['media_namespaces']      = 'Alegeți numele se spațiu';
+$lang['media_files']           = 'Fișiere în %s';
+$lang['media_upload']          = 'Încarcă în %s';
+$lang['media_search']          = 'Caută în %s';
+$lang['media_view']            = '%s';
+$lang['media_viewold']         = '%s în %s';
+$lang['media_edit']            = 'Editare %s';
+$lang['media_history']         = 'Istoricul pentru %s';
+$lang['media_meta_edited']     = 'metadate editate';
+$lang['media_perm_read']       = 'Ne pare rău, dar nu aveți suficiente drepturi pentru a putea citi fișiere.';
+$lang['media_perm_upload']     = 'Ne pare rău, dar nu aveți suficiente drepturi pentru a putea încărca fișiere.';
+$lang['media_update']          = 'Încarcă noua versiune';
+$lang['media_restore']         = 'Restaurează această versiune';
+$lang['plugin_install_err']    = 'Modul instalat greșit. Redenumește directorul modulului \'%s\' în \'%s\'.';
diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php
index ce9e54819fde59cbaf9ebb8829ba04c854c60ce5..eda838451858aea08611b9938c6e2ec0926aba9b 100644
--- a/inc/lang/ru/lang.php
+++ b/inc/lang/ru/lang.php
@@ -22,11 +22,12 @@
  */
 $lang['encoding']              = ' utf-8';
 $lang['direction']             = 'ltr';
-$lang['doublequoteopening']    = '«';
-$lang['doublequoteclosing']    = '»';
-$lang['singlequoteopening']    = '„';
-$lang['singlequoteclosing']    = '“';
-$lang['apostrophe']            = '’';
+$lang['doublequoteopening']    = '«'; //&ldquo;
+$lang['doublequoteclosing']    = '»'; //&rdquo;
+$lang['singlequoteopening']    = '„'; //&lsquo;
+$lang['singlequoteclosing']    = '“'; //&rsquo;
+$lang['apostrophe']            = '’'; //&rsquo;
+
 $lang['btn_edit']              = 'Править страницу';
 $lang['btn_source']            = 'Показать исходный текст';
 $lang['btn_show']              = 'Показать страницу';
@@ -60,6 +61,9 @@ $lang['btn_recover']           = 'Восстановить черновик';
 $lang['btn_draftdel']          = 'Удалить черновик';
 $lang['btn_revert']            = 'Восстановить';
 $lang['btn_register']          = 'Зарегистрироваться';
+$lang['btn_apply']             = 'Применить';
+$lang['btn_media']             = 'Media Manager';
+
 $lang['loggedinas']            = 'Зашли как';
 $lang['user']                  = 'Логин';
 $lang['pass']                  = 'Пароль';
@@ -74,6 +78,7 @@ $lang['badlogin']              = 'Извините, неверное имя по
 $lang['minoredit']             = 'Небольшие изменения';
 $lang['draftdate']             = 'Черновик сохранён';
 $lang['nosecedit']             = 'За это время страница была изменена и информация о секции устарела. Загружена полная версия страницы.';
+
 $lang['regmissing']            = 'Извините, вам следует заполнить все поля.';
 $lang['reguexists']            = 'Извините, пользователь с таким логином уже существует.';
 $lang['regsuccess']            = 'Пользователь создан, пароль выслан на адрес электронной почты.';
@@ -83,10 +88,12 @@ $lang['regbadmail']            = 'Данный вами адрес электр
 $lang['regbadpass']            = 'Два введённых пароля не идентичны. Пожалуйста, попробуйте ещё раз.';
 $lang['regpwmail']             = 'Ваш пароль для системы «ДокуВики»';
 $lang['reghere']               = 'У вас ещё нет аккаунта? Зарегистрируйтесь';
+
 $lang['profna']                = 'Данная вики не поддерживает изменение профиля';
 $lang['profnochange']          = 'Изменений не было внесено, профиль не обновлён.';
 $lang['profnoempty']           = 'Логин и адрес электронной почты не могут быть пустыми.';
 $lang['profchanged']           = 'Профиль пользователя успешно обновлён.';
+
 $lang['pwdforget']             = 'Забыли пароль? Получите новый';
 $lang['resendna']              = 'Данная вики не поддерживает повторную отправку пароля.';
 $lang['resendpwd']             = 'Выслать пароль для';
@@ -95,8 +102,10 @@ $lang['resendpwdnouser']       = 'Пользователь с таким лог
 $lang['resendpwdbadauth']      = 'Извините, неверный код авторизации. Убедитесь, что вы полностью скопировали ссылку. ';
 $lang['resendpwdconfirm']      = 'Ссылка для подтверждения пароля была выслана по электронной почте. ';
 $lang['resendpwdsuccess']      = 'Ваш новый пароль был выслан по электронной почте.';
+
 $lang['license']               = 'За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:';
 $lang['licenseok']             = 'Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии:';
+
 $lang['searchmedia']           = 'Поиск по имени файла:';
 $lang['searchmedia_in']        = 'Поиск в %s';
 $lang['txt_upload']            = 'Выберите файл для загрузки';
@@ -104,7 +113,7 @@ $lang['txt_filename']          = 'Введите имя файла в вики (
 $lang['txt_overwrt']           = 'Перезаписать существующий файл';
 $lang['lockedby']              = 'В данный момент заблокирован';
 $lang['lockexpire']            = 'Блокировка истекает в';
-$lang['js']['willexpire']            = 'Ваша блокировка редактирования этой страницы истекает в течение минуты.\nЧтобы избежать конфликтов и сбросить таймер блокировки, нажмите кнопку просмотра.';
+$lang['js']['willexpire']      = 'Ваша блокировка редактирования этой страницы истекает в течение минуты.\nЧтобы избежать конфликтов и сбросить таймер блокировки, нажмите кнопку просмотра.';
 $lang['js']['notsavedyet']     = 'Несохранённые изменения будут потеряны. Вы действительно хотите продолжить?';
 $lang['js']['searchmedia']     = 'Поиск файлов';
 $lang['js']['keepopen']        = 'Не закрывать окно после выбора';
@@ -134,9 +143,22 @@ $lang['js']['nosmblinks']      = 'Ссылка на сетевые катало
 $lang['js']['linkwiz']         = 'Мастер ссылок';
 $lang['js']['linkto']          = 'Ссылка на:';
 $lang['js']['del_confirm']     = 'Вы на самом деле желаете удалить выбранное?';
-$lang['js']['mu_btn']          = 'Загрузить несколько файлов одновременно';
+$lang['js']['willexpire']      = 'Ваша блокировка этой страницы на редактирование истекает в течении минуты.\nЧтобы предотвратить конфликты используйте кнопку "Просмотр" для сброса таймера блокировки.';
+$lang['js']['restore_confirm']     = 'Действительно восстановить эту версию?';
+$lang['js']['media_diff']          = 'Просмотр отличий:';
+$lang['js']['media_diff_both']     = 'Рядом';
+$lang['js']['media_diff_opacity']  = 'Наложением';
+$lang['js']['media_diff_portions'] = 'Частями';
+$lang['js']['media_select']        = 'Выбрать файлы…';
+$lang['js']['media_upload_btn']    = 'Загрузить';
+$lang['js']['media_done_btn']      = 'Готово';
+$lang['js']['media_drop']          = 'Переместите файлы сюда для загрузки';
+$lang['js']['media_cancel']        = 'отменить';
+$lang['js']['media_overwrt']       = 'Перезаписать существующие файлы';
+
 $lang['rssfailed']             = 'Произошла ошибка при получении следующей новостной ленты: ';
 $lang['nothingfound']          = 'Ничего не найдено.';
+
 $lang['mediaselect']           = 'Выбор медиафайла';
 $lang['fileupload']            = 'Загрузка медиафайла';
 $lang['uploadsucc']            = 'Загрузка произведена успешно';
@@ -161,6 +183,7 @@ $lang['mediaextchange']        = 'Расширение изменилось: с
 $lang['reference']             = 'Ссылки для';
 $lang['ref_inuse']             = 'Этот файл не может быть удалён, так как он используется на следующих страницах:';
 $lang['ref_hidden']            = 'Некоторые ссылки находятся на страницах, на чтение которых у вас нет прав доступа';
+
 $lang['hits']                  = 'соответствий';
 $lang['quickhits']             = 'Соответствия в названиях страниц';
 $lang['toc']                   = 'Содержание';
@@ -184,11 +207,18 @@ $lang['external_edit']         = 'внешнее изменение';
 $lang['summary']               = 'Сводка изменений';
 $lang['noflash']               = 'Для просмотра этого содержимого требуется <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.';
 $lang['download']              = 'Скачать код';
+
 $lang['mail_newpage']          = 'страница добавлена:';
 $lang['mail_changed']          = 'страница изменена:';
 $lang['mail_subscribe_list']   = 'изменились страницы в пространстве имён:';
 $lang['mail_new_user']         = 'новый пользователь:';
 $lang['mail_upload']           = 'файл закачан:';
+
+$lang['changes_type']          = 'Посмотреть изменения';
+$lang['pages_changes']         = 'Страниц';
+$lang['media_changes']         = 'Медиа файлов';
+$lang['both_changes']          = 'И страниц и медиа файлов';
+
 $lang['qb_bold']               = 'Полужирный';
 $lang['qb_italic']             = 'Курсив';
 $lang['qb_underl']             = 'Подчёркнутый';
@@ -213,8 +243,11 @@ $lang['qb_media']              = 'Добавить изображения или
 $lang['qb_sig']                = 'Вставить подпись';
 $lang['qb_smileys']            = 'Смайлики';
 $lang['qb_chars']              = 'Специальные символы';
+
 $lang['upperns']               = 'Перейти в родительское пространство имён';
+
 $lang['admin_register']        = 'Добавить пользователя';
+
 $lang['metaedit']              = 'Править метаданные';
 $lang['metasaveerr']           = 'Ошибка записи метаданных';
 $lang['metasaveok']            = 'Метаданные сохранены';
@@ -229,24 +262,33 @@ $lang['img_copyr']             = 'Авторские права';
 $lang['img_format']            = 'Формат';
 $lang['img_camera']            = 'Модель';
 $lang['img_keywords']          = 'Ключевые слова';
-$lang['subscr_subscribe_success'] = 'Добавлен %s в подписку на %s';
-$lang['subscr_subscribe_error'] = 'Невозможно добавить %s в подписку на %s';
+$lang['img_width']             = 'Ширина';
+$lang['img_height']            = 'Высота';
+$lang['img_manager']           = 'Просмотр в media manager';
+
+$lang['subscr_subscribe_success']   = 'Добавлен %s в подписку на %s';
+$lang['subscr_subscribe_error']     = 'Невозможно добавить %s в подписку на %s';
 $lang['subscr_subscribe_noaddress'] = 'Нет адреса электронной почты, сопоставленного с вашей учётной записью. Вы не можете подписаться на рассылку';
 $lang['subscr_unsubscribe_success'] = 'Удалён %s из подписки на %s';
-$lang['subscr_unsubscribe_error'] = 'Ошибка удаления %s из подписки на %s';
-$lang['subscr_already_subscribed'] = '%s уже подписан на %s';
-$lang['subscr_not_subscribed'] = '%s не подписан на %s';
-$lang['subscr_m_not_subscribed'] = 'Вы не подписаны на текущую страницу или пространство имён.';
-$lang['subscr_m_new_header']   = 'Добавить подписку';
-$lang['subscr_m_current_header'] = 'Текущие подписки';
-$lang['subscr_m_unsubscribe']  = 'Отменить подписку';
-$lang['subscr_m_subscribe']    = 'Подписаться';
-$lang['subscr_m_receive']      = 'Получить';
-$lang['subscr_style_every']    = 'уведомлять о каждом изменении';
-$lang['subscr_style_digest']   = 'сводка изменений по каждой странице';
-$lang['subscr_style_list']     = 'перечислять изменившиеся страницы с прошлого уведомления';
+$lang['subscr_unsubscribe_error']   = 'Ошибка удаления %s из подписки на %s';
+$lang['subscr_already_subscribed']  = '%s уже подписан на %s';
+$lang['subscr_not_subscribed']      = '%s не подписан на %s';
+// Manage page for subscriptions
+$lang['subscr_m_not_subscribed']    = 'Вы не подписаны на текущую страницу или пространство имён.';
+$lang['subscr_m_new_header']        = 'Добавить подписку';
+$lang['subscr_m_current_header']    = 'Текущие подписки';
+$lang['subscr_m_unsubscribe']       = 'Отменить подписку';
+$lang['subscr_m_subscribe']         = 'Подписаться';
+$lang['subscr_m_receive']           = 'Получить';
+$lang['subscr_style_every']         = 'уведомлять о каждом изменении';
+$lang['subscr_style_digest']        = 'сводка изменений по каждой странице';
+$lang['subscr_style_list']          = 'перечислять изменившиеся страницы с прошлого уведомления';
+
+/* auth.class language support */
 $lang['authmodfailed']         = 'Неправильная конфигурация аутентификации пользователя. Пожалуйста, сообщите об этом своему администратору вики.';
 $lang['authtempfail']          = 'Аутентификация пользователей временно недоступна. Если проблема продолжается какое-то время, пожалуйста, сообщите об этом своему администратору вики.';
+
+/* installer strings */
 $lang['i_chooselang']          = 'Выберите свой язык/Choose your language';
 $lang['i_installer']           = 'Установка «ДокуВики»';
 $lang['i_wikiname']            = 'Название вики';
@@ -254,8 +296,8 @@ $lang['i_enableacl']           = 'Разрешить ограничение пр
 $lang['i_superuser']           = 'Суперпользователь';
 $lang['i_problems']            = 'Программа установки столкнулась с проблемами, перечисленными ниже. Чтобы продолжить, вам необходимо их устранить. ';
 $lang['i_modified']            = 'Из соображений безопасности эта программа запускается только на новой, неизменённой установке «ДокуВики».
-Вам нужно либо заново распаковать скачанный пакет установки, либо обратиться к полной
-<a href="http://www.dokuwiki.org/install">инструкции по установке «ДокуВики»</a>';
+                                  Вам нужно либо заново распаковать скачанный пакет установки, либо обратиться к полной
+                                  <a href="http://www.dokuwiki.org/install">инструкции по установке «ДокуВики»</a>';
 $lang['i_funcna']              = 'Функция PHP <code>%s</code> недоступна. Может быть, она по какой-то причине заблокирована вашим хостером?';
 $lang['i_phpver']              = 'Ваша версия PHP (<code>%s</code>) ниже требуемой (<code>%s</code>). Вам необходимо обновить установленную версию PHP.';
 $lang['i_permfail']            = '<code>%s</code> недоступна для записи «ДокуВики». Вам необходимо исправить системные права доступа для этой директории!';
@@ -264,7 +306,7 @@ $lang['i_writeerr']            = 'Не удалось создать <code>%s</c
 $lang['i_badhash']             = 'dokuwiki.php не распознан или изменён (хэш=<code>%s</code>)';
 $lang['i_badval']              = '<code>%s</code> — недопустимое или пустое значение';
 $lang['i_success']             = 'Конфигурация прошла успешно. Теперь вы можете удалить файл install.php. Переходите к
-                        <a href="doku.php">своей новой «ДокуВики»</a>.';
+                                 <a href="doku.php">своей новой «ДокуВики»</a>.';
 $lang['i_failure']             = 'При записи в файлы конфигурации были обнаружены ошибки. Возможно, вам придётся исправить их вручную, прежде чем вы сможете использовать <a href="doku.php">свою новую «ДокуВики»</a>.';
 $lang['i_policy']              = 'Исходная политика прав доступа';
 $lang['i_pol0']                = 'Открытая вики (чтение, запись, закачка файлов для всех)';
@@ -272,6 +314,7 @@ $lang['i_pol1']                = 'Общедоступная вики (чтен
 $lang['i_pol2']                = 'Закрытая вики (чтение, запись и загрузка файлов только для зарегистрированных пользователей)';
 $lang['i_retry']               = 'Повторить попытку';
 $lang['i_license']             = 'Пожалуйста, выберите тип лицензии для своей вики:';
+
 $lang['mu_intro']              = 'Здесь вы можете загрузить несколько файлов сразу. Кликните на «обзор», чтобы добавить их в список. Нажмите «загрузить», когда будете готовы.';
 $lang['mu_gridname']           = 'Имя файла';
 $lang['mu_gridsize']           = 'Размер';
@@ -287,6 +330,7 @@ $lang['mu_progress']           = '@PCT@% загружено';
 $lang['mu_filetypes']          = 'Допустимые типы файлов';
 $lang['mu_info']               = 'файлов загружено.';
 $lang['mu_lasterr']            = 'Последняя ошибка:';
+
 $lang['recent_global']         = 'Вы просматриваете изменения в пространстве имён <b>%s</b>. Вы можете также <a href="%s">просмотреть недавние изменения во всей вики</a>.';
 $lang['years']                 = '%d лет назад';
 $lang['months']                = '%d месяц(ев) назад';
@@ -295,4 +339,24 @@ $lang['days']                  = '%d дней назад';
 $lang['hours']                 = '%d час(ов) назад';
 $lang['minutes']               = '%d минут назад';
 $lang['seconds']               = '%d секунд назад';
+
 $lang['wordblock']             = 'Ваши изменения не сохранены, поскольку они содержат блокируемые слова (спам).';
+
+$lang['media_uploadtab']       = 'Загрузка';
+$lang['media_searchtab']       = 'Поиск';
+$lang['media_viewtab']         = 'Просмотр';
+$lang['media_edittab']         = 'Правка';
+$lang['media_historytab']      = 'История';
+$lang['media_sort_name']       = 'Сортировка по имени';
+$lang['media_sort_date']       = 'Сортировка по дате';
+$lang['media_upload']          = 'Загрузка в пространство имён <strong>%s</strong>.';
+$lang['media_search']          = 'Поиск в пространстве имён <strong>%s</strong>.';
+$lang['media_view']            = '%s';
+$lang['media_edit']            = 'Правка %s';
+$lang['media_meta_edited']     = 'метаданные изменены';
+$lang['media_perm_read']       = 'Извините, у Вас недостаточно прав для чтения файлов.';
+$lang['media_perm_upload']     = 'Извините, у Вас недостаточно прав для загрузки файлов.';
+$lang['media_update']          = 'Загрузить новую версию';
+$lang['media_restore']         = 'Восстановить эту версию';
+
+$lang['plugin_install_err']    = "Плагин установлен некорректно. Переименуйте папку плагина из '%s' в '%s'.";
diff --git a/inc/lang/ru/uploadmail.txt b/inc/lang/ru/uploadmail.txt
index fd7c4a7f851ddb7704332f5733ca4815af327e2c..77f79231efe763b34f23e0d5a0128bb0c2a24ced 100644
--- a/inc/lang/ru/uploadmail.txt
+++ b/inc/lang/ru/uploadmail.txt
@@ -1,13 +1,14 @@
 В вашу вики был закачан файл. Подробная информация:
 
-Файл        : @MEDIA@
-Дата        : @DATE@
-Браузер     : @BROWSER@
-Адрес IP    : @IPADDRESS@
-Хост        : @HOSTNAME@
-Размер      : @SIZE@
-Тип MIME    : @MIME@
-Пользователь: @USER@
+Файл         : @MEDIA@
+Старая версия: @OLD@
+Дата         : @DATE@
+Браузер      : @BROWSER@
+Адрес IP     : @IPADDRESS@
+Хост         : @HOSTNAME@
+Размер       : @SIZE@
+Тип MIME     : @MIME@
+Пользователь : @USER@
 
 -- 
 Это письмо было сгенерировано «ДокуВики» по адресу
diff --git a/inc/lang/sk/lang.php b/inc/lang/sk/lang.php
index 4dab977b98a2223b66b65b0abaaf4f39f1d20a01..c0d45da58cb3466fa9c2fd7e59e05b3f04a6a575 100644
--- a/inc/lang/sk/lang.php
+++ b/inc/lang/sk/lang.php
@@ -48,6 +48,8 @@ $lang['btn_recover']           = 'Obnoviť koncept';
 $lang['btn_draftdel']          = 'Zmazať koncept';
 $lang['btn_revert']            = 'Obnoviť';
 $lang['btn_register']          = 'Registrovať';
+$lang['btn_apply']             = 'Použiť';
+$lang['btn_media']             = 'Správa médií';
 $lang['loggedinas']            = 'Prihlásený(á) ako';
 $lang['user']                  = 'Užívateľské meno';
 $lang['pass']                  = 'Heslo';
@@ -92,7 +94,7 @@ $lang['txt_filename']          = 'Uložiť ako (voliteľné)';
 $lang['txt_overwrt']           = 'Prepísať existujúci súbor';
 $lang['lockedby']              = 'Práve zamknuté:';
 $lang['lockexpire']            = 'Zámok stratí platnosť:';
-$lang['js']['willexpire']            = 'Váš zámok pre editáciu za chvíľu stratí platnosť.\nAby ste predišli konfliktom, stlačte tlačítko Náhľad a zámok sa predĺži.';
+$lang['js']['willexpire']      = 'Váš zámok pre editáciu za chvíľu stratí platnosť.\nAby ste predišli konfliktom, stlačte tlačítko Náhľad a zámok sa predĺži.';
 $lang['js']['notsavedyet']     = 'Neuložené zmeny budú stratené.
 Chcete naozaj pokračovať?';
 $lang['js']['searchmedia']     = 'Hľadať súbory';
@@ -101,7 +103,7 @@ $lang['js']['hidedetails']     = 'Skryť detaily';
 $lang['js']['mediatitle']      = 'Nastavenia odkazu';
 $lang['js']['mediadisplay']    = 'Typ odkazu';
 $lang['js']['mediaalign']      = 'Zarovnanie';
-$lang['js']['mediasize']       = 'Veľkosť obrázku';
+$lang['js']['mediasize']       = 'Veľkosť obrázka';
 $lang['js']['mediatarget']     = 'Cieľ odkazu';
 $lang['js']['mediaclose']      = 'Zatvoriť';
 $lang['js']['mediainsert']     = 'Vložiť';
@@ -124,7 +126,17 @@ Aj napriek tomu tento odkaz môžete skopírovať a vložiť inde.';
 $lang['js']['linkwiz']         = 'Sprievodca odkazmi';
 $lang['js']['linkto']          = 'Odkaz na:';
 $lang['js']['del_confirm']     = 'Zmazať túto položku?';
-$lang['js']['mu_btn']          = 'Nahrať viac súborov súčasne';
+$lang['js']['restore_confirm'] = 'Skutočne obnoviť túto verziu?';
+$lang['js']['media_diff']      = 'Zobraziť rozdiely:';
+$lang['js']['media_diff_both'] = 'Vedľa seba';
+$lang['js']['media_diff_opacity'] = 'Presvitaním';
+$lang['js']['media_diff_portions'] = 'Potiahnutím';
+$lang['js']['media_select']    = 'Vybrať súbory...';
+$lang['js']['media_upload_btn'] = 'Nahrať';
+$lang['js']['media_done_btn']  = 'Hotovo';
+$lang['js']['media_drop']      = 'Pridajte súbory potiahnutím myšou';
+$lang['js']['media_cancel']    = 'odstrániť';
+$lang['js']['media_overwrt']   = 'Prepísať existujúce súbory';
 $lang['rssfailed']             = 'Nastala chyba pri vytváraní tohto RSS: ';
 $lang['nothingfound']          = 'Nič nenájdené.';
 $lang['mediaselect']           = 'Výber dokumentu';
@@ -179,6 +191,10 @@ $lang['mail_changed']          = 'stránka zmenená:';
 $lang['mail_subscribe_list']   = 'stránky zmenené v mennom priestore:';
 $lang['mail_new_user']         = 'nový užívateľ:';
 $lang['mail_upload']           = 'nahraný súbor:';
+$lang['changes_type']          = 'Prehľad zmien';
+$lang['pages_changes']         = 'Stránok';
+$lang['media_changes']         = 'Média súborov';
+$lang['both_changes']          = 'Stránok spolu s média súbormi';
 $lang['qb_bold']               = 'Tučné';
 $lang['qb_italic']             = 'Kurzíva';
 $lang['qb_underl']             = 'Podčiarknutie';
@@ -219,6 +235,9 @@ $lang['img_copyr']             = 'Kopírovacie práva';
 $lang['img_format']            = 'Formát';
 $lang['img_camera']            = 'Fotoaparát';
 $lang['img_keywords']          = 'Kľúčové slová';
+$lang['img_width']             = 'Šírka';
+$lang['img_height']            = 'Výška';
+$lang['img_manager']           = 'Prezrieť v správcovi médií';
 $lang['subscr_subscribe_success'] = 'Používateľ %s bol pridaný do zoznamu hlásení o zmenách %s';
 $lang['subscr_subscribe_error'] = 'Chyba pri pridaní používateľa %s do zoznamu hlásení o zmenách %s';
 $lang['subscr_subscribe_noaddress'] = 'Vaše prihlasovacie meno nemá priradenú žiadnu email adresu, nemôžete byť pridaný do zoznamu hlásení o zmenách';
@@ -283,3 +302,27 @@ $lang['hours']                 = 'pred %d hodinami';
 $lang['minutes']               = 'pred %d minútami';
 $lang['seconds']               = 'pred %d sekundami';
 $lang['wordblock']             = 'Vaše zmeny neboli uložené, pretože obsahovali nepovolený text (spam).';
+$lang['media_uploadtab']       = 'Nahrať';
+$lang['media_searchtab']       = 'Hľadať';
+$lang['media_file']            = 'Súbor';
+$lang['media_viewtab']         = 'Náhľad';
+$lang['media_edittab']         = 'Upraviť';
+$lang['media_historytab']      = 'História';
+$lang['media_list_thumbs']     = 'Miniatúry';
+$lang['media_list_rows']       = 'Zoznam';
+$lang['media_sort_name']       = 'Meno';
+$lang['media_sort_date']       = 'Dátum';
+$lang['media_namespaces']      = 'Vybrať priestor';
+$lang['media_files']           = 'Súbory v %s';
+$lang['media_upload']          = 'Nahrať do %s';
+$lang['media_search']          = 'Hľadať v %s';
+$lang['media_view']            = '%s';
+$lang['media_viewold']         = '%s v %s';
+$lang['media_edit']            = 'Upraviť %s';
+$lang['media_history']         = 'História %s';
+$lang['media_meta_edited']     = 'metadáta upravené';
+$lang['media_perm_read']       = 'Prepáčte, ale nemáte dostatočné oprávnenie na čítanie súborov.';
+$lang['media_perm_upload']     = 'Prepáčte, ale nemáte dostatočné oprávnenie na nahrávanie súborov.';
+$lang['media_update']          = 'Nahrať novú verziu';
+$lang['media_restore']         = 'Obnoviť túto verziu';
+$lang['plugin_install_err']    = 'Plugin nebol nainštalovaný úspešne. Premenujte adresár s pluginom \'%s\' na \'%s\'.';
diff --git a/inc/lang/sl/lang.php b/inc/lang/sl/lang.php
index 55c895b2d2704f791b2467ad70b49dabfd4be58d..9acf1350416d56ecd140396ac35d1f3fb7f959ae 100644
--- a/inc/lang/sl/lang.php
+++ b/inc/lang/sl/lang.php
@@ -123,7 +123,6 @@ $lang['js']['nosmblinks']      = 'Povezovanje do souporabnih datotek sistema Win
 $lang['js']['linkwiz']         = 'ÄŒarovnik za povezave';
 $lang['js']['linkto']          = 'Poveži na:';
 $lang['js']['del_confirm']     = 'Ali naj se res izbrišejo izbrani predmeti?';
-$lang['js']['mu_btn']          = 'Pošiljanje več dokumentov hkrati.';
 $lang['rssfailed']             = 'Prišlo je do napake med pridobivanjem vira: ';
 $lang['nothingfound']          = 'Ni najdenih predmetov.';
 $lang['mediaselect']           = 'Predstavne datoteke';
diff --git a/inc/lang/sq/lang.php b/inc/lang/sq/lang.php
index ea2f018b314e3161222faeb2cc118eecc5ecc632..87d0f30b516f1385546c470eb068f43ce48fe938 100644
--- a/inc/lang/sq/lang.php
+++ b/inc/lang/sq/lang.php
@@ -120,7 +120,6 @@ $lang['js']['nosmblinks']      = 'Lidhja te Windows shares funksionon vetëm në
 $lang['js']['linkwiz']         = 'Magjistari i Link';
 $lang['js']['linkto']          = 'Lidh tek:';
 $lang['js']['del_confirm']     = 'Fshiji vërtetë objektet e përzgjedhura?';
-$lang['js']['mu_btn']          = 'Ngarko shumë skedarë njëkohësisht';
 $lang['mediausage']            = 'Përdor sintaksën e mëposhtme për të referuar këtë skedar:';
 $lang['mediaview']             = 'Shiko skedarin origjinal';
 $lang['mediaroot']             = 'rrënja';
diff --git a/inc/lang/sr/lang.php b/inc/lang/sr/lang.php
index a868f1d815ab2f83f31b623fcea9d4faf3c978f3..22bcf4e33aad6279a74f1828606fd8dc79cc2814 100644
--- a/inc/lang/sr/lang.php
+++ b/inc/lang/sr/lang.php
@@ -123,7 +123,6 @@ $lang['js']['nosmblinks']      = 'Повезивање са Windows дељени
 $lang['js']['linkwiz']         = 'Чаробњак за стварање везе';
 $lang['js']['linkto']          = 'Повежи ка:';
 $lang['js']['del_confirm']     = 'Обриши овај унос?';
-$lang['js']['mu_btn']          = 'Слање више датотека одједном';
 $lang['rssfailed']             = 'Дошло је до грешке приликом преузимања овог довода: ';
 $lang['nothingfound']          = 'Ништа није нађено.';
 $lang['mediaselect']           = 'Избор медијске датотеке';
diff --git a/inc/lang/sv/lang.php b/inc/lang/sv/lang.php
index d6f90a5f4a2c529865f548163bfd382b2c9b3860..943509fede668bab0ba19655e67f0b741136610d 100644
--- a/inc/lang/sv/lang.php
+++ b/inc/lang/sv/lang.php
@@ -131,7 +131,6 @@ Du kan fortfarande klippa och klistra in länken om du använder en annan webbl
 $lang['js']['linkwiz']         = 'Snabbguide Länkar';
 $lang['js']['linkto']          = 'Länk till:';
 $lang['js']['del_confirm']     = 'Vill du verkligen radera?';
-$lang['js']['mu_btn']          = 'Ladda upp flera filer samtidigt';
 $lang['rssfailed']             = 'Ett fel uppstod när detta RSS-flöde skulle hämtas: ';
 $lang['nothingfound']          = 'Inga filer hittades.';
 $lang['mediaselect']           = 'Mediafiler';
diff --git a/inc/lang/th/lang.php b/inc/lang/th/lang.php
index e9dffa2c1f012b3d1cf52f03cd51812c980cb003..0d061396139ddb41dbf4bbe0e19d4bb815beffaf 100644
--- a/inc/lang/th/lang.php
+++ b/inc/lang/th/lang.php
@@ -46,8 +46,6 @@ $lang['btn_backlink']          = 'หน้าที่ลิงก์มา';
 $lang['btn_backtomedia']       = 'กลับไปยังหน้าเลือกไฟล์สื่อ';
 $lang['btn_subscribe']         = 'เฝ้าดู';
 $lang['btn_unsubscribe']       = 'เลิกเฝ้าดู';
-$lang['btn_subscribens']       = 'สมัครเพื่อตามการเปลี่ยนแปลงเนมสเปซ';
-$lang['btn_unsubscribens']     = 'ยกเลิกสมัครเพื่อตามการเปลี่ยนแปลงเนมสเปซ';
 $lang['btn_profile']           = 'แก้ข้อมูลผู้ใช้';
 $lang['btn_reset']             = 'เริ่มใหม่';
 $lang['btn_resendpwd']         = 'ลืมรหัส ส่งให้ใหม่ทางอีเมล';
@@ -126,7 +124,6 @@ $lang['js']['nosmblinks']      = 'เชื่อมไปยังหน้า
 $lang['js']['linkwiz']         = 'ลิงค์วิเศษ';
 $lang['js']['linkto']          = 'ลิงค์ไป:';
 $lang['js']['del_confirm']     = 'ต้องการลบรายการที่เลือกจริงๆหรือ?';
-$lang['js']['mu_btn']          = 'อัพโหลดหลายๆไฟล์ในครั้งเดียว';
 $lang['mediausage']            = 'ให้ใช้ไวยกรณ์ต่อไปนี้เพื่ออ้างอิงไฟล์นี้';
 $lang['mediaview']             = 'ดูไฟล์ต้นฉบับ';
 $lang['mediaroot']             = 'ราก(รูท)';
diff --git a/inc/lang/tr/lang.php b/inc/lang/tr/lang.php
index 0b76a6e8123b3848f0503db1d8105c0352c5d13b..94b1c951a067afa6e9ed99f93d03f3613fddc3af 100644
--- a/inc/lang/tr/lang.php
+++ b/inc/lang/tr/lang.php
@@ -124,7 +124,6 @@ $lang['js']['nosmblinks']      = 'Windows paylaşımı sadece Microsoft Internet
 $lang['js']['linkwiz']         = 'Bağlantı sihirbazı';
 $lang['js']['linkto']          = 'Bağlantı:';
 $lang['js']['del_confirm']     = 'Bu giriÅŸi sil?';
-$lang['js']['mu_btn']          = 'Birden fazla dosyayı bir seferde gönder';
 $lang['rssfailed']             = 'Bu beslemeyi çekerken hata oluştu: ';
 $lang['nothingfound']          = 'Hiçbir şey yok.';
 $lang['mediaselect']           = 'Çokluortam dosyası seçimi';
diff --git a/inc/lang/uk/lang.php b/inc/lang/uk/lang.php
index 6b80bc75c78e17f87b1a5a1086cf3c21ccde2243..22d61c9bfcad8d13fa8947b07d5b29b101b5f832 100644
--- a/inc/lang/uk/lang.php
+++ b/inc/lang/uk/lang.php
@@ -126,7 +126,6 @@ $lang['js']['nosmblinks']      = 'Посилання на мережеві па
 $lang['js']['linkwiz']         = 'Чарівник посилань';
 $lang['js']['linkto']          = 'Посилання на:';
 $lang['js']['del_confirm']     = 'Дійсно знищити обрані елементи?';
-$lang['js']['mu_btn']          = 'Завантажити одночасно кілька файлів';
 $lang['rssfailed']             = 'Виникла помилка під час отримання RSS-стрічки: ';
 $lang['nothingfound']          = 'Нічого не знайдено.';
 $lang['mediaselect']           = 'Вибір медіа-файлу';
diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php
index 2222125f536080f459d4b9711f89da07b53987ec..a46869d6c2a70369d268f045401568cbf7b55233 100644
--- a/inc/lang/zh-tw/lang.php
+++ b/inc/lang/zh-tw/lang.php
@@ -126,7 +126,6 @@ $lang['js']['nosmblinks']      = '只有在 Microsoft IE 下才能執行「連
 $lang['js']['linkwiz']         = '建立連結精靈';
 $lang['js']['linkto']          = '連結至:';
 $lang['js']['del_confirm']     = '確定刪除選取的項目?';
-$lang['js']['mu_btn']          = '上傳多個檔案';
 $lang['rssfailed']             = '擷取 RSS 饋送檔時發生錯誤:';
 $lang['nothingfound']          = '沒找到任何結果。';
 $lang['mediaselect']           = '媒體檔案';
diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php
index 31e6dc238122ed37ea31dd59c97fdccd063cd681..6e6dff6f4f5251f509457d0c65198ea901b90a2e 100644
--- a/inc/lang/zh/lang.php
+++ b/inc/lang/zh/lang.php
@@ -13,6 +13,7 @@
  * @author caii <zhoucaiqi@gmail.com>
  * @author Hiphen Lee <jacob.b.leung@gmail.com>
  * @author caii, patent agent in China <zhoucaiqi@gmail.com>
+ * @author lainme993@gmail.com
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -54,6 +55,8 @@ $lang['btn_recover']           = '恢复草稿';
 $lang['btn_draftdel']          = '删除草稿';
 $lang['btn_revert']            = '恢复';
 $lang['btn_register']          = '注册';
+$lang['btn_apply']             = '应用';
+$lang['btn_media']             = '媒体管理器';
 $lang['loggedinas']            = '登录为';
 $lang['user']                  = '用户名';
 $lang['pass']                  = '密码';
@@ -98,7 +101,7 @@ $lang['txt_filename']          = '上传并重命名为(可选)';
 $lang['txt_overwrt']           = '覆盖已存在的同名文件';
 $lang['lockedby']              = '目前已被下列人员锁定';
 $lang['lockexpire']            = '预计锁定解除于';
-$lang['js']['willexpire']            = '您对本页的独有编辑权将于一分钟之后解除。\n为了防止与其他人的编辑冲突,请使用预览按钮重设计时器。';
+$lang['js']['willexpire']      = '您对本页的独有编辑权将于一分钟之后解除。\n为了防止与其他人的编辑冲突,请使用预览按钮重设计时器。';
 $lang['js']['notsavedyet']     = '未保存的更改将丢失。
 真的要继续?';
 $lang['js']['searchmedia']     = '查找文件';
@@ -130,7 +133,17 @@ $lang['js']['nosmblinks']      = '连接到 Windows 共享功能只有在 IE 浏
 $lang['js']['linkwiz']         = '链接向导';
 $lang['js']['linkto']          = '链接到:';
 $lang['js']['del_confirm']     = '真的要删除选中的项目吗?';
-$lang['js']['mu_btn']          = '一次上传了多个文件';
+$lang['js']['restore_confirm'] = '确实要恢复这个版本么?';
+$lang['js']['media_diff']      = '查看差异:';
+$lang['js']['media_diff_both'] = '肩并肩';
+$lang['js']['media_diff_opacity'] = '叠加';
+$lang['js']['media_diff_portions'] = '滑块';
+$lang['js']['media_select']    = '选择文件……';
+$lang['js']['media_upload_btn'] = '上传';
+$lang['js']['media_done_btn']  = '完成';
+$lang['js']['media_drop']      = '拖拽文件到此处来上传';
+$lang['js']['media_cancel']    = '删除';
+$lang['js']['media_overwrt']   = '覆盖已存在的文件';
 $lang['rssfailed']             = '获取该 RSS 信息时产生错误:';
 $lang['nothingfound']          = '什么都没有找到。';
 $lang['mediaselect']           = '媒体文件';
@@ -185,6 +198,10 @@ $lang['mail_changed']          = '更改页面:';
 $lang['mail_subscribe_list']   = '命名空间中改变的页面:';
 $lang['mail_new_user']         = '新用户:';
 $lang['mail_upload']           = '已上传的文件:';
+$lang['changes_type']          = '查看何种更改';
+$lang['pages_changes']         = '页面';
+$lang['media_changes']         = '媒体文件';
+$lang['both_changes']          = '页面和媒体文件';
 $lang['qb_bold']               = '粗体';
 $lang['qb_italic']             = '斜体';
 $lang['qb_underl']             = '下划线';
@@ -225,6 +242,9 @@ $lang['img_copyr']             = '版权';
 $lang['img_format']            = '格式';
 $lang['img_camera']            = '相机';
 $lang['img_keywords']          = '关键字';
+$lang['img_width']             = '宽度';
+$lang['img_height']            = '高度';
+$lang['img_manager']           = '在媒体管理器中查看';
 $lang['subscr_subscribe_success'] = '添加 %s 到 %s 的订阅列表';
 $lang['subscr_subscribe_error'] = '添加 %s 到 %s 的订阅列表中出现错误';
 $lang['subscr_subscribe_noaddress'] = '没有与您登录信息相关联的地址,您无法被添加到订阅列表';
@@ -293,3 +313,23 @@ $lang['hours']                 = '%d小时前';
 $lang['minutes']               = '%d分钟前';
 $lang['seconds']               = '%d秒前';
 $lang['wordblock']             = '您的更改没有被保存,因为它包含被屏蔽的文字(垃圾信息)。';
+$lang['media_uploadtab']       = '上传';
+$lang['media_searchtab']       = '搜索';
+$lang['media_viewtab']         = '查看';
+$lang['media_edittab']         = '编辑';
+$lang['media_historytab']      = '历史';
+$lang['media_thumbsview']      = '缩略图';
+$lang['media_listview']        = '列表';
+$lang['media_sort']            = '排序';
+$lang['media_sort_name']       = '按名称';
+$lang['media_sort_date']       = '按日期';
+$lang['media_upload']          = '上传到 <strong>%s</strong> 命名空间。';
+$lang['media_search']          = '在 <strong>%s</strong> 命名空间中搜索。';
+$lang['media_edit']            = '编辑';
+$lang['media_history']         = '这些是文件的旧版本。';
+$lang['media_meta_edited']     = '元数据已编辑';
+$lang['media_perm_read']       = '抱歉,您没有足够权限读取这些文件。';
+$lang['media_perm_upload']     = '抱歉,您没有足够权限来上传文件。';
+$lang['media_update']          = '上传新版本';
+$lang['media_restore']         = '恢复这个版本';
+$lang['plugin_install_err']    = '插件安装不正确。重命名插件目录“%s”为“%s”。';
diff --git a/inc/media.php b/inc/media.php
index 451a205db15d5c2e9d6c1ec0191ce80c8a5b2dfa..9d3e90a54b8ca738a25db271a08d1b8da28e98ad 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -108,10 +108,10 @@ function media_metaform($id,$auth){
     $src = mediaFN($id);
 
     // output
-    $action = media_managerURL(array('tab_details' => 'view'));
-    echo '<form action="'.$action.'" id="mediamanager__save_meta" accept-charset="utf-8" method="post" class="meta">'.NL;
-
-    formSecurityToken();
+    $form = new Doku_Form(array('action' => media_managerURL(array('tab_details' => 'view')),
+                                'class' => 'meta'));
+    $form->addHidden('img', $id);
+    $form->addHidden('mediado', 'save');
     foreach($fields as $key => $field){
         // get current value
         if (empty($field[0])) continue;
@@ -125,34 +125,22 @@ function media_metaform($id,$auth){
         $p['class'] = 'edit';
         $p['id']    = 'meta__'.$key;
         $p['name']  = 'meta['.$field[0].']';
+        $p_attrs    = array('class' => 'edit');
 
-        // put label
-        echo '<div class="metafield">';
-        echo '<label for="meta__'.$key.'">';
-        echo ($lang[$field[1]]) ? $lang[$field[1]] : $field[1];
-        echo ':</label>';
-
-        // put input field
+        $form->addElement('<div class="row">');
         if($field[2] == 'text'){
-            $p['value'] = $value;
-            $p['type']  = 'text';
-            $att = buildAttributes($p);
-            echo "<input $att/>".NL;
+            $form->addElement(form_makeField('text', $p['name'], $value, ($lang[$field[1]]) ? $lang[$field[1]] : $field[1] . ':', $p['id'], $p['class'], $p_attrs));
         }else{
             $att = buildAttributes($p);
-            echo "<textarea $att rows=\"6\" cols=\"50\">".formText($value).'</textarea>'.NL;
+            $form->addElement('<label for="meta__'.$key.'">'.$lang[$field[1]].'</label>');
+            $form->addElement("<textarea $att rows=\"6\" cols=\"50\">".formText($value).'</textarea>');
         }
-        echo '</div>'.NL;
+        $form->addElement('</div>'.NL);
     }
-    echo '<div class="buttons">'.NL;
-    echo '<input type="hidden" name="img" value="'.hsc($id).'" />'.NL;
-    echo '<input type="hidden" name="mediado" value="save" />';
-
-    $do = 'mediado';
-    echo '<input name="'.$do.'[save]" type="submit" value="'.$lang['btn_save'].
-        '" title="'.$lang['btn_save'].' [S]" accesskey="s" class="button" />'.NL;
-    echo '</div>'.NL;
-    echo '</form>'.NL;
+    $form->addElement('<div class="buttons">');
+    $form->addElement(form_makeButton('submit', '', $lang['btn_save'], array('accesskey' => 's', 'name' => 'mediado[save]')));
+    $form->addElement('</div>'.NL);
+    $form->printForm();
 }
 
 /**
@@ -588,12 +576,7 @@ function media_filelist($ns,$auth=null,$jump='',$fullscreenview=false,$sort=fals
             echo '<div class="nothing">'.$lang['nothingfound'].'</div>'.NL;
         }else {
             if ($fullscreenview) {
-                $view = $_REQUEST['view'];
-                if ($view == 'list') {
-                    echo '<ul class="mediamanager-list" id="mediamanager__file_list">';
-                } else {
-                    echo '<ul class="mediamanager-thumbs" id="mediamanager__file_list">';
-                }
+                echo '<ul class="' . _media_get_list_type() . '">';
             }
             foreach($data as $item){
                 if (!$fullscreenview) {
@@ -602,47 +585,32 @@ function media_filelist($ns,$auth=null,$jump='',$fullscreenview=false,$sort=fals
                     media_printfile_thumbs($item,$auth,$jump);
                 }
             }
-            if ($fullscreenview) echo '</ul>';
+            if ($fullscreenview) echo '</ul>'.NL;
         }
     }
     if (!$fullscreenview) media_searchform($ns);
 }
 
-/**
- * Prints mediamanager tab
- *
- * @author Kate Arzamastseva <pshns@ukr.net>
- * @param string $link - tab href
- * @param string $class - tab css class
- * @param string $name - tab caption
- * @param boolean $selected - is tab selected
- */
-function media_tab($link, $class, $name, $selected=false) {
-    if ($selected) $class .= ' selected';
-    $tab = '<a href="'.$link.'" class="'.$class.'" >'.$name.'</a>';
-    echo $tab;
-}
-
 /**
  * Prints tabs for files list actions
  *
  * @author Kate Arzamastseva <pshns@ukr.net>
+ * @author Adrian Lang <mail@adrianlang.de>
+ *
  * @param string $selected_tab - opened tab
  */
+
 function media_tabs_files($selected_tab = ''){
     global $lang;
+    $tabs = array();
+    foreach(array('files'  => 'mediaselect',
+                  'upload' => 'media_uploadtab',
+                  'search' => 'media_searchtab') as $tab => $caption) {
+        $tabs[$tab] = array('href'    => media_managerURL(array('tab_files' => $tab), '&'),
+                            'caption' => $lang[$caption]);
+    }
 
-    echo '<div class="mediamanager-tabs" id="mediamanager__tabs_files">';
-
-    media_tab(media_managerURL(array('tab_files' => 'files')),
-        'files', $lang['mediaselect'], ($selected_tab == 'files'));
-    media_tab(media_managerURL(array('tab_files' => 'upload')),
-        'upload', $lang['media_uploadtab'], ($selected_tab == 'upload'));
-    media_tab(media_managerURL(array('tab_files' => 'search')),
-        'search', $lang['media_searchtab'], ($selected_tab == 'search'));
-
-    echo '<div class="clearer"></div>';
-    echo '</div>';
+    html_tabs($tabs, $selected_tab);
 }
 
 /**
@@ -654,23 +622,21 @@ function media_tabs_files($selected_tab = ''){
 function media_tabs_details($image, $selected_tab = ''){
     global $lang, $conf;
 
-    echo '<div class="mediamanager-tabs" id="mediamanager__tabs_details">';
-
-    media_tab(media_managerURL(array('tab_details' => 'view')),
-        'view', $lang['media_viewtab'], ($selected_tab == 'view'));
+    $tabs = array();
+    $tabs['view'] = array('href'    => media_managerURL(array('tab_details' => 'view'), '&'),
+                          'caption' => $lang['media_viewtab']);
 
     list($ext, $mime) = mimetype($image);
     if ($mime == 'image/jpeg' && @file_exists(mediaFN($image))) {
-        media_tab(media_managerURL(array('tab_details' => 'edit')),
-            'edit', $lang['media_edittab'], ($selected_tab == 'edit'));
+        $tabs['edit'] = array('href'    => media_managerURL(array('tab_details' => 'edit'), '&'),
+                              'caption' => $lang['media_edittab']);
     }
     if ($conf['mediarevisions']) {
-        media_tab(media_managerURL(array('tab_details' => 'history')),
-            'history', $lang['media_historytab'], ($selected_tab == 'history'));
+        $tabs['history'] = array('href'    => media_managerURL(array('tab_details' => 'history'), '&'),
+                                 'caption' => $lang['media_historytab']);
     }
 
-    echo '<div class="clearer"></div>';
-    echo '</div>';
+    html_tabs($tabs, $selected_tab);
 }
 
 /**
@@ -678,42 +644,43 @@ function media_tabs_details($image, $selected_tab = ''){
  *
  * @author Kate Arzamastseva <pshns@ukr.net>
  */
-function media_tab_files_options($ns, $sort){
-    global $lang;
-
-    echo '<div class="background-container">';
-
-    echo '<strong class="namespace">';
-    echo $ns ? $ns : '['.$lang['mediaroot'].']';
-    echo '</strong>';
-
-    echo '<div id="mediamanager__tabs_list">';
-
-    echo '<a href="'.media_managerURL(array('view' => 'thumbs')).'" id="mediamanager__link_thumbs" >';
-    echo $lang['media_thumbsview'];
-    echo '</a>';
-
-    echo '<a href="'.media_managerURL(array('view' => 'list')).'" id="mediamanager__link_list" >';
-    echo $lang['media_listview'];
-    echo '</a>';
-
-    echo '</div>';
-
-    echo '<div id="mediamanager__sort">';
-    $form = new Doku_Form(array('action'=>media_managerURL(array(), '&'), 'id' => 'mediamanager__form_sort'));
-    $form->addElement(form_makeListboxField(
-                        'sort',
-                        array(
-                            'name' => $lang['media_sort_name'],
-                            'date' => $lang['media_sort_date']),
-                        $sort,
-                        $lang['media_sort']));
+function media_tab_files_options(){
+    global $lang, $NS;
+    $form = new Doku_Form(array('class' => 'options', 'method' => 'get',
+                                'action' => wl($ID)));
+    $media_manager_params = media_managerURL(array(), '', false, true);
+    foreach($media_manager_params as $pKey => $pVal){
+        $form->addHidden($pKey, $pVal);
+    }
+    $form->addHidden('sectok', null);
+    if (isset($_REQUEST['q'])) {
+        $form->addHidden('q', $_REQUEST['q']);
+    }
+    $form->addElement('<ul>'.NL);
+    foreach(array('list' => array('listType', array('thumbs', 'rows')),
+                  'sort' => array('sortBy', array('name', 'date')))
+            as $group => $content) {
+        $checked = "_media_get_${group}_type";
+        $checked = $checked();
+
+        $form->addElement('<li class="' . $content[0] . '">');
+        foreach($content[1] as $option) {
+            $attrs = array();
+            if ($checked == $option) {
+                $attrs['checked'] = 'checked';
+            }
+            $form->addElement(form_makeRadioField($group, $option,
+                                       $lang['media_' . $group . '_' . $option],
+                                                  $content[0] . '__' . $option,
+                                                  $option, $attrs));
+        }
+        $form->addElement('</li>'.NL);
+    }
+    $form->addElement('<li>');
     $form->addElement(form_makeButton('submit', '', $lang['btn_apply']));
+    $form->addElement('</li>'.NL);
+    $form->addElement('</ul>'.NL);
     $form->printForm();
-    echo '</div>';
-
-    echo '<div class="clearer"></div>';
-    echo '</div>';
 }
 
 /**
@@ -723,14 +690,24 @@ function media_tab_files_options($ns, $sort){
  * @return string - sort type
  */
 function _media_get_sort_type() {
-    $sort = $_REQUEST['sort'];
-    if (!$sort && (strpos($_COOKIE['DOKU_PREFS'], 'sort') >= 0)) {
-        $parts = explode('#', $_COOKIE['DOKU_PREFS']);
-            for ($i = 0; $i < count($parts); $i+=2){
-                if ($parts[$i] == 'sort') $sort = $parts[$i+1];
-            }
+    return _media_get_display_param('sort', array('default' => 'name', 'date'));
+}
+
+function _media_get_list_type() {
+    return _media_get_display_param('list', array('default' => 'thumbs', 'rows'));
+}
+
+function _media_get_display_param($param, $values) {
+    if (isset($_REQUEST[$param]) && in_array($_REQUEST[$param], $values)) {
+        // FIXME: Set cookie
+        return $_REQUEST[$param];
+    } else {
+        $val = get_doku_pref($param, $values['default']);
+        if (!in_array($val, $values)) {
+            $val = $values['default'];
+        }
+        return $val;
     }
-    return $sort;
 }
 
 /**
@@ -742,16 +719,11 @@ function media_tab_files($ns,$auth=null,$jump='') {
     global $lang;
     if(is_null($auth)) $auth = auth_quickaclcheck("$ns:*");
 
-    $sort = _media_get_sort_type();
-    media_tab_files_options($ns, $sort);
-
-    echo '<div class="scroll-container" >';
     if($auth < AUTH_READ){
         echo '<div class="nothing">'.$lang['media_perm_read'].'</div>'.NL;
     }else{
-        media_filelist($ns,$auth,$jump,true,$sort);
+        media_filelist($ns,$auth,$jump,true,_media_get_sort_type());
     }
-    echo '</div>';
 }
 
 /**
@@ -763,14 +735,12 @@ function media_tab_upload($ns,$auth=null,$jump='') {
     global $lang;
     if(is_null($auth)) $auth = auth_quickaclcheck("$ns:*");
 
-    echo '<div class="background-container">';
-    echo sprintf($lang['media_upload'], $ns ? $ns : '['.$lang['mediaroot'].']');
-    echo '</div>';
-
-    echo '<div class="scroll-container">';
-    if ($auth >= AUTH_UPLOAD) echo '<div class="upload">' . $lang['mediaupload'] . '</div>';
+    echo '<div class="upload">'.NL;
+    if ($auth >= AUTH_UPLOAD) {
+        echo '<p>' . $lang['mediaupload'] . '</p>';
+    }
     media_uploadform($ns, $auth, true);
-    echo '</div>';
+    echo '</div>'.NL;
 }
 
 /**
@@ -784,14 +754,13 @@ function media_tab_search($ns,$auth=null) {
     $do = $_REQUEST['mediado'];
     $query = $_REQUEST['q'];
     if (!$query) $query = '';
+    echo '<div class="search">'.NL;
 
-    $sort = _media_get_sort_type();
-    media_tab_files_options($ns, $sort);
-
-    echo '<div class="scroll-container">';
     media_searchform($ns, $query, true);
-    if ($do == 'searchlist') media_searchlist($query,$ns,$auth,true,$sort);
-    echo '</div>';
+    if ($do == 'searchlist') {
+        media_searchlist($query,$ns,$auth,true,_media_get_sort_type());
+    }
+    echo '</div>'.NL;
 }
 
 /**
@@ -803,14 +772,6 @@ function media_tab_view($image, $ns, $auth=null, $rev=false) {
     global $lang, $conf;
     if(is_null($auth)) $auth = auth_quickaclcheck("$ns:*");
 
-    echo '<div class="background-container">';
-    list($ext,$mime,$dl) = mimetype($image,false);
-    $class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
-    $class = 'select mediafile mf_'.$class;
-    echo '<span class="'.$class.'" >'.$image.'</span>';
-    echo '</div>';
-
-    echo '<div class="scroll-container">';
     if ($image && $auth >= AUTH_READ) {
         $meta = new JpegMeta(mediaFN($image, $rev));
         media_preview($image, $auth, $rev, $meta);
@@ -818,9 +779,8 @@ function media_tab_view($image, $ns, $auth=null, $rev=false) {
         media_details($image, $auth, $rev, $meta);
 
     } else {
-        echo '<div class="nothing">'.$lang['media_perm_read'].'</div>';
+        echo '<div class="nothing">'.$lang['media_perm_read'].'</div>'.NL;
     }
-    echo '</div>';
 }
 
 /**
@@ -832,16 +792,10 @@ function media_tab_edit($image, $ns, $auth=null) {
     global $lang;
     if(is_null($auth)) $auth = auth_quickaclcheck("$ns:*");
 
-    echo '<div class="background-container">';
-    echo $lang['media_edit'];
-    echo '</div>';
-
-    echo '<div class="scroll-container">';
     if ($image) {
         list($ext, $mime) = mimetype($image);
         if ($mime == 'image/jpeg') media_metaform($image,$auth);
     }
-    echo '</div>';
 }
 
 /**
@@ -854,11 +808,6 @@ function media_tab_history($image, $ns, $auth=null) {
     if(is_null($auth)) $auth = auth_quickaclcheck("$ns:*");
     $do = $_REQUEST['mediado'];
 
-    echo '<div class="background-container">';
-    echo $lang['media_history'];
-    echo '</div>';
-
-    echo '<div class="scroll-container">';
     if ($auth >= AUTH_READ && $image) {
         if ($do == 'diff'){
             media_diff($image, $ns, $auth);
@@ -869,7 +818,6 @@ function media_tab_history($image, $ns, $auth=null) {
     } else {
         echo '<div class="nothing">'.$lang['media_perm_read'].'</div>'.NL;
     }
-    echo '</div>';
 }
 
 /**
@@ -878,13 +826,12 @@ function media_tab_history($image, $ns, $auth=null) {
  * @author Kate Arzamastseva <pshns@ukr.net>
  */
 function media_preview($image, $auth, $rev=false, $meta=false) {
-    global $lang;
-
-    echo '<div class="mediamanager__preview">';
 
     $size = media_image_preview_size($image, $rev, $meta);
 
     if ($size) {
+        echo '<div class="image">';
+
         $more = array();
         if ($rev) {
             $more['rev'] = $rev;
@@ -896,10 +843,10 @@ function media_preview($image, $auth, $rev=false, $meta=false) {
         $more['w'] = $size[0];
         $more['h'] = $size[1];
         $src = ml($image, $more);
-        echo '<img src="'.$src.'" alt="'.$image.'" style="max-width: '.$size[0].'px;" />';
-    }
+        echo '<img src="'.$src.'" alt="" style="max-width: '.$size[0].'px;" />';
 
-    echo '</div>';
+        echo '</div>'.NL;
+    }
 }
 
 /**
@@ -910,24 +857,7 @@ function media_preview($image, $auth, $rev=false, $meta=false) {
 function media_preview_buttons($image, $auth, $rev=false) {
     global $lang, $conf;
 
-    echo '<div class="mediamanager__preview_buttons">';
-
-    $more = '';
-    if ($rev) {
-        $more = "rev=$rev";
-    } else {
-        $t = @filemtime(mediaFN($image));
-        $more = "t=$t";
-    }
-    $link = ml($image,$more,true,'&');
-
-    if (@file_exists(mediaFN($image, $rev))) {
-
-        // view original file button
-        $form = new Doku_Form(array('action'=>$link, 'target'=>'_blank'));
-        $form->addElement(form_makeButton('submit','',$lang['mediaview']));
-        $form->printForm();
-    }
+    echo '<ul class="actions">'.NL;
 
     if($auth >= AUTH_DELETE && !$rev && @file_exists(mediaFN($image))){
 
@@ -935,8 +865,9 @@ function media_preview_buttons($image, $auth, $rev=false) {
         $form = new Doku_Form(array('id' => 'mediamanager__btn_delete',
             'action'=>media_managerURL(array('delete' => $image), '&')));
         $form->addElement(form_makeButton('submit','',$lang['btn_delete']));
+        echo '<li>';
         $form->printForm();
-
+        echo '</li>'.NL;
     }
 
     $auth_ow = (($conf['mediarevisions']) ? AUTH_UPLOAD : AUTH_DELETE);
@@ -946,7 +877,9 @@ function media_preview_buttons($image, $auth, $rev=false) {
         $form = new Doku_Form(array('id' => 'mediamanager__btn_update',
             'action'=>media_managerURL(array('image' => $image, 'mediado' => 'update'), '&')));
         $form->addElement(form_makeButton('submit','',$lang['media_update']));
+        echo '<li>';
         $form->printForm();
+        echo '</li>'.NL;
     }
 
     if($auth >= AUTH_UPLOAD && $rev && $conf['mediarevisions'] && @file_exists(mediaFN($image, $rev))){
@@ -957,10 +890,12 @@ function media_preview_buttons($image, $auth, $rev=false) {
         $form->addHidden('mediado','restore');
         $form->addHidden('rev',$rev);
         $form->addElement(form_makeButton('submit','',$lang['media_restore']));
+        echo '<li>';
         $form->printForm();
+        echo '</li>'.NL;
     }
 
-    echo '</div>';
+    echo '</ul>'.NL;
 }
 
 /**
@@ -1046,17 +981,17 @@ function media_details($image, $auth, $rev=false, $meta=false) {
     if (!$meta) $meta = new JpegMeta(mediaFN($image, $rev));
     $tags = media_file_tags($meta);
 
-    echo '<dl class="img_tags">';
+    echo '<dl>'.NL;
     foreach($tags as $tag){
         if ($tag['value']) {
             $value = cleanText($tag['value']);
             echo '<dt>'.$lang[$tag['tag'][1]].':</dt><dd>';
             if ($tag['tag'][2] == 'date') echo dformat($value);
             else echo hsc($value);
-            echo '</dd>';
+            echo '</dd>'.NL;
         }
     }
-    echo '</dl>';
+    echo '</dl>'.NL;
 }
 
 /**
@@ -1150,14 +1085,19 @@ function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
         $difftype = $_REQUEST['difftype'];
 
         if (!$fromajax) {
-            $form = new Doku_Form(array('action'=>media_managerURL(array(), '&'),
-                'id' => 'mediamanager__form_diffview'));
+            $form = new Doku_Form(array(
+                'action' => media_managerURL(array(), '&'),
+                'method' => 'get',
+                'id' => 'mediamanager__form_diffview',
+                'class' => 'diffView'
+            ));
+            $form->addHidden('sectok', null);
             $form->addElement('<input type="hidden" name="rev2[]" value="'.$l_rev.'" ></input>');
             $form->addElement('<input type="hidden" name="rev2[]" value="'.$r_rev.'" ></input>');
             $form->addHidden('mediado', 'diff');
             $form->printForm();
 
-            echo '<div id="mediamanager__diff" >';
+            echo NL.'<div id="mediamanager__diff" >'.NL;
         }
 
         if ($difftype == 'opacity' || $difftype == 'portions') {
@@ -1167,57 +1107,76 @@ function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
         }
     }
 
-    echo '<div class="mediamanager-preview">';
-    echo '<ul id="mediamanager__diff_table">';
+    list($l_head, $r_head) = html_diff_head($l_rev, $r_rev, $image, true);
+
+    ?>
+    <table>
+      <tr>
+        <th><?php echo $l_head; ?></th>
+        <th><?php echo $r_head; ?></th>
+      </tr>
+    <?php
 
-    echo '<li>';
+    echo '<tr class="image">';
+    echo '<td>';
     media_preview($image, $auth, $l_rev, $l_meta);
-    echo '</li>';
+    echo '</td>';
 
-    echo '<li>';
+    echo '<td>';
     media_preview($image, $auth, $r_rev, $r_meta);
-    echo '</li>';
+    echo '</td>';
+    echo '</tr>'.NL;
 
-    echo '<li>';
+    echo '<tr class="actions">';
+    echo '<td>';
     media_preview_buttons($image, $auth, $l_rev);
-    echo '</li>';
+    echo '</td>';
 
-    echo '<li>';
+    echo '<td>';
     media_preview_buttons($image, $auth, $r_rev);
-    echo '</li>';
+    echo '</td>';
+    echo '</tr>'.NL;
 
     $l_tags = media_file_tags($l_meta);
     $r_tags = media_file_tags($r_meta);
+    // FIXME r_tags-only stuff
     foreach ($l_tags as $key => $l_tag) {
         if ($l_tag['value'] != $r_tags[$key]['value']) {
-            $r_tags[$key]['class'] = 'highlighted';
-            $l_tags[$key]['class'] = 'highlighted';
+            $r_tags[$key]['highlighted'] = true;
+            $l_tags[$key]['highlighted'] = true;
         } else if (!$l_tag['value'] || !$r_tags[$key]['value']) {
             unset($r_tags[$key]);
             unset($l_tags[$key]);
         }
     }
 
+    echo '<tr>';
     foreach(array($l_tags,$r_tags) as $tags){
-        echo '<li><div>';
+        echo '<td>'.NL;
 
         echo '<dl class="img_tags">';
         foreach($tags as $tag){
             $value = cleanText($tag['value']);
             if (!$value) $value = '-';
             echo '<dt>'.$lang[$tag['tag'][1]].':</dt>';
-            echo '<dd class="'.$tag['class'].'" >';
+            echo '<dd>';
+            if ($tag['highlighted']) {
+                echo '<strong>';
+            }
             if ($tag['tag'][2] == 'date') echo dformat($value);
             else echo hsc($value);
+            if ($tag['highlighted']) {
+                echo '</strong>';
+            }
             echo '</dd>';
         }
-        echo '</dl>';
+        echo '</dl>'.NL;
 
-        echo '</div></li>';
+        echo '</td>';
     }
+    echo '</tr>'.NL;
 
-    echo '</ul>';
-    echo '</div>';
+    echo '</table>'.NL;
 
     if ($is_img && !$fromajax) echo '</div>';
 }
@@ -1241,8 +1200,6 @@ function media_image_diff($image, $l_rev, $r_rev, $l_size, $r_size, $type) {
         }
     }
 
-    echo '<div class="mediamanager-preview">';
-
     $l_more = array('rev' => $l_rev, 'h' => $l_size[1], 'w' => $l_size[0]);
     $r_more = array('rev' => $r_rev, 'h' => $l_size[1], 'w' => $l_size[0]);
 
@@ -1250,19 +1207,17 @@ function media_image_diff($image, $l_rev, $r_rev, $l_size, $r_size, $type) {
     $r_src = ml($image, $r_more);
 
     // slider
-    echo '<div id="mediamanager__'.$type.'_slider" style="max-width: '.($l_size[0]-20).'px;" ></div>';
+    echo '<div class="slider" style="max-width: '.($l_size[0]-20).'px;" ></div>'.NL;
 
-    // two image's in div's
-    echo '<div id="mediamanager__diff_layout">';
-    echo '<div id="mediamanager__diff_'.$type.'_image1" style="max-width: '.$l_size[0].'px;">';
+    // two images in divs
+    echo '<div class="imageDiff ' . $type . '">'.NL;
+    echo '<div class="image1" style="max-width: '.$l_size[0].'px;">';
     echo '<img src="'.$l_src.'" alt="" />';
-    echo '</div>';
-    echo '<div id="mediamanager__diff_'.$type.'_image2" style="max-width: '.$l_size[0].'px;">';
+    echo '</div>'.NL;
+    echo '<div class="image2" style="max-width: '.$l_size[0].'px;">';
     echo '<img src="'.$r_src.'" alt="" />';
-    echo '</div>';
-    echo '</div>';
-
-    echo '</div>';
+    echo '</div>'.NL;
+    echo '</div>'.NL;
 }
 
 /**
@@ -1344,18 +1299,13 @@ function media_searchlist($query,$ns,$auth=null,$fullscreen=false,$sort=''){
         echo '<div class="nothing">'.$lang['nothingfound'].'</div>'.NL;
     }else {
         if ($fullscreen) {
-            $view = $_REQUEST['view'];
-            if ($view == 'list') {
-                echo '<ul class="mediamanager-list" id="mediamanager__file_list">';
-            } else {
-                echo '<ul class="mediamanager-thumbs" id="mediamanager__file_list">';
-            }
+            echo '<ul class="' . _media_get_list_type() . '">';
         }
         foreach($evdata['data'] as $item){
             if (!$fullscreen) media_printfile($item,$item['perm'],'',true);
             else media_printfile_thumbs($item,$item['perm'],false,true);
         }
-        if ($fullscreen) echo '</ul>';
+        if ($fullscreen) echo '</ul>'.NL;
     }
 }
 
@@ -1413,6 +1363,20 @@ function media_printfile($item,$auth,$jump,$display_namespace=false){
     echo ' <a href="'.$link.'" target="_blank"><img src="'.DOKU_BASE.'lib/images/magnifier.png" '.
         'alt="'.$lang['mediaview'].'" title="'.$lang['mediaview'].'" class="btn" /></a>';
 
+    // mediamanager button
+    $link = wl('',array('do'=>'media','image'=>$item['id']));
+    echo ' <a href="'.$link.'" target="_blank"><img src="'.DOKU_BASE.'lib/images/mediamanager.png" '.
+        'alt="'.$lang['btn_media'].'" title="'.$lang['btn_media'].'" class="btn" /></a>';
+
+    // delete button
+    if($item['writable'] && $auth >= AUTH_DELETE){
+        $link = DOKU_BASE.'lib/exe/mediamanager.php?delete='.rawurlencode($item['id']).
+            '&amp;sectok='.getSecurityToken();
+        echo ' <a href="'.$link.'" class="btn_media_delete" title="'.$item['id'].'">'.
+            '<img src="'.DOKU_BASE.'lib/images/trash.png" alt="'.$lang['btn_delete'].'" '.
+            'title="'.$lang['btn_delete'].'" class="btn" /></a>';
+    }
+
     echo '<div class="example" id="ex_'.str_replace(':','_',$item['id']).'">';
     echo $lang['mediausage'].' <code>{{:'.$item['id'].'}}</code>';
     echo '</div>';
@@ -1447,42 +1411,42 @@ function media_printfile_thumbs($item,$auth,$jump=false,$display_namespace=false
     $file = utf8_decodeFN($item['file']);
 
     // output
-    echo '<li><div>';
+    echo '<li><dl>'.NL;
 
+        echo '<dt>';
     if($item['isimg']) {
         media_printimgdetail($item, true);
 
     } else {
         echo '<a name="d_:'.$item['id'].'" class="image" title="'.$item['id'].'" href="'.
             media_managerURL(array('image' => hsc($item['id']), 'ns' => getNS($item['id']),
-            'tab_details' => 'view')).'"><span>';
+            'tab_details' => 'view')).'">';
         echo media_printicon($item['id']);
-        echo '</span></a>';
+        echo '</a>';
     }
-    //echo '<input type=checkbox />';
+    echo '</dt>'.NL;
     if (!$display_namespace) {
         $name = hsc($file);
     } else {
         $name = hsc($item['id']);
     }
-    echo '<a href="'.media_managerURL(array('image' => hsc($item['id']), 'ns' => getNS($item['id']),
-        'tab_details' => 'view')).'" name="h_:'.$item['id'].'" class="name">'.$name.'</a>';
+    echo '<dd class="name"><a href="'.media_managerURL(array('image' => hsc($item['id']), 'ns' => getNS($item['id']),
+        'tab_details' => 'view')).'" name="h_:'.$item['id'].'">'.$name.'</a></dd>'.NL;
 
     if($item['isimg']){
         $size = '';
         $size .= (int) $item['meta']->getField('File.Width');
         $size .= '&#215;';
         $size .= (int) $item['meta']->getField('File.Height');
-        echo '<span class="size">'.$size.'</span>';
+        echo '<dd class="size">'.$size.'</dd>'.NL;
     } else {
-        echo '<span class="size">&nbsp;</span>';
+        echo '<dd class="size">&nbsp;</dd>'.NL;
     }
     $date = dformat($item['mtime']);
-    echo '<span class="date">'.$date.'</span>';
+    echo '<dd class="date">'.$date.'</dd>'.NL;
     $filesize = filesize_h($item['size']);
-    echo '<span class="filesize">'.$filesize.'</span>';
-    echo '<div class="clearer"></div>';
-    echo '</div></li>'.NL;
+    echo '<dd class="filesize">'.$filesize.'</dd>'.NL;
+    echo '</dl></li>'.NL;
 }
 
 /**
@@ -1490,43 +1454,38 @@ function media_printfile_thumbs($item,$auth,$jump=false,$display_namespace=false
  */
 function media_printimgdetail($item, $fullscreen=false){
     // prepare thumbnail
-    if (!$fullscreen) {
-        $size_array[] = 120;
-    } else {
-        $size_array = array(90, 40);
-    }
-    foreach ($size_array as $index => $size) {
-        $w = (int) $item['meta']->getField('File.Width');
-        $h = (int) $item['meta']->getField('File.Height');
-        if($w>$size || $h>$size){
-            if (!$fullscreen) {
-                $ratio = $item['meta']->getResizeRatio($size);
-            } else {
-                $ratio = $item['meta']->getResizeRatio($size,$size);
-            }
-            $w = floor($w * $ratio);
-            $h = floor($h * $ratio);
-        }
-        $src = ml($item['id'],array('w'=>$w,'h'=>$h,'t'=>$item['mtime']));
-        $p = array();
+    $size = $fullscreen ? 90 : 120;
+
+    $w = (int) $item['meta']->getField('File.Width');
+    $h = (int) $item['meta']->getField('File.Height');
+    if($w>$size || $h>$size){
         if (!$fullscreen) {
-            $p['width']  = $w;
-            $p['height'] = $h;
+            $ratio = $item['meta']->getResizeRatio($size);
+        } else {
+            $ratio = $item['meta']->getResizeRatio($size,$size);
         }
-        $p['alt']    = $item['id'];
-        $p['class']  = 'thumb';
-        $att = buildAttributes($p);
+        $w = floor($w * $ratio);
+        $h = floor($h * $ratio);
+    }
+    $src = ml($item['id'],array('w'=>$w,'h'=>$h,'t'=>$item['mtime']));
+    $p = array();
+    if (!$fullscreen) {
+        // In fullscreen mediamanager view, image resizing is done via CSS.
+        $p['width']  = $w;
+        $p['height'] = $h;
+    }
+    $p['alt']    = $item['id'];
+    $att = buildAttributes($p);
 
-        // output
-        if ($fullscreen) {
-            echo '<a name="'.($index ? 'd' : 'l').'_:'.$item['id'].'" class="image'.$index.'" title="'.$item['id'].'" href="'.
-                media_managerURL(array('image' => hsc($item['id']), 'ns' => getNS($item['id']), 'tab_details' => 'view')).'">';
-            echo '<span><img src="'.$src.'" '.$att.' /></span>';
-            echo '</a>';
-        }
+    // output
+    if ($fullscreen) {
+        echo '<a name="l_:'.$item['id'].'" class="image thumb" href="'.
+            media_managerURL(array('image' => hsc($item['id']), 'ns' => getNS($item['id']), 'tab_details' => 'view')).'">';
+        echo '<img src="'.$src.'" '.$att.' />';
+        echo '</a>';
     }
 
-    if ($fullscreen) return '';
+    if ($fullscreen) return;
 
     echo '<div class="detail">';
     echo '<div class="thumb">';
@@ -1568,18 +1527,16 @@ function media_managerURL($params=false, $amp='&amp;', $abs=false, $params_array
     global $ID;
 
     $gets = array('do' => 'media');
-    $media_manager_params = array('tab_files', 'tab_details', 'image', 'ns', 'view');
+    $media_manager_params = array('tab_files', 'tab_details', 'image', 'ns', 'list', 'sort');
     foreach ($media_manager_params as $x) {
         if (isset($_REQUEST[$x])) $gets[$x] = $_REQUEST[$x];
     }
 
     if ($params) {
-        foreach ($params as $k => $v) {
-            $gets[$k] = $v;
-        }
+        $gets = $params + $gets;
     }
     unset($gets['id']);
-    if ($gets['delete']) {
+    if (isset($gets['delete'])) {
         unset($gets['image']);
         unset($gets['tab_details']);
     }
@@ -1641,9 +1598,9 @@ function media_uploadform($ns, $auth, $fullscreen = false){
         $form->addElement(form_makeCloseTag('p'));
     }
 
-    echo '<div id="mediamanager__uploader">';
+    echo NL.'<div id="mediamanager__uploader">'.NL;
     html_form('upload', $form);
-    echo '</div>';
+    echo '</div>'.NL;
 }
 
 /**
@@ -1657,16 +1614,18 @@ function media_searchform($ns,$query='',$fullscreen=false){
 
     // The default HTML search form
     $params = array('id' => 'dw__mediasearch');
-    if (!$fullscreen) $params['action'] = DOKU_BASE.'lib/exe/mediamanager.php';
-    else $params['action'] = media_managerURL(array(), '&');
+    if (!$fullscreen) {
+        $params['action'] = DOKU_BASE.'lib/exe/mediamanager.php';
+    } else {
+        $params['action'] = media_managerURL(array(), '&');
+    }
     $form = new Doku_Form($params);
-    if (!$fullscreen) $form->addElement('<div class="upload">' . $lang['mediasearch'] . '</div>');
-    $form->addElement(formSecurityToken());
     $form->addHidden('ns', $ns);
-    if (!$fullscreen) $form->addHidden('do', 'searchlist');
-    else $form->addHidden('mediado', 'searchlist');
+    $form->addHidden($fullscreen ? 'mediado' : 'do', 'searchlist');
+
+    if (!$fullscreen) $form->addElement('<div class="upload">' . $lang['mediasearch'] . '</div>'.NL);
     $form->addElement(form_makeOpenTag('p'));
-    $form->addElement(form_makeTextField('q', $query,$lang['searchmedia'],'mediamanager__sort_textfield','',array('title'=>sprintf($lang['searchmedia_in'],hsc($ns).':*'))));
+    $form->addElement(form_makeTextField('q', $query,$lang['searchmedia'],'','',array('title'=>sprintf($lang['searchmedia_in'],hsc($ns).':*'))));
     $form->addElement(form_makeButton('submit', '', $lang['btn_search']));
     $form->addElement(form_makeCloseTag('p'));
     html_form('searchmedia', $form);
diff --git a/inc/pageutils.php b/inc/pageutils.php
index 81dcb66e7f5ec4bddf3c4042a0884b64e759de0d..31b5f9ff94ac9de58479d29b610352ee9ab2b106 100644
--- a/inc/pageutils.php
+++ b/inc/pageutils.php
@@ -134,6 +134,7 @@ function cleanID($raw_id,$ascii=false,$media=false){
     $id = preg_replace('#:+#',':',$id);
     $id = ($media ? trim($id,':.-') : trim($id,':._-'));
     $id = preg_replace('#:[:\._\-]+#',':',$id);
+    $id = preg_replace('#[:\._\-]+:#',':',$id);
 
     $cache[(string)$raw_id] = $id;
     return($id);
diff --git a/inc/parser/handler.php b/inc/parser/handler.php
index 22a50d1b78680132446c8929e45064ca6f929d28..55b715ad9d258d6e05829058fd53fba5878a808d 100644
--- a/inc/parser/handler.php
+++ b/inc/parser/handler.php
@@ -1489,10 +1489,10 @@ class Doku_Handler_Block {
         }
     }
 
-    function openParagraph($pos){
+    function openParagraph($pos){
         if ($this->inParagraph) return;
         $this->calls[] = array('p_open',array(), $pos);
-        $this->inParagraph = true;
+        $this->inParagraph = true;
         $this->skipEol = true;
     }
 
@@ -1503,11 +1503,12 @@ class Doku_Handler_Block {
      *
      * @author Andreas Gohr <andi@splitbrain.org>
      */
-    function closeParagraph($pos){
+    function closeParagraph($pos){
         if (!$this->inParagraph) return;
         // look back if there was any content - we don't want empty paragraphs
         $content = '';
-        for($i=count($this->calls)-1; $i>=0; $i--){
+        $ccount = count($this->calls);
+        for($i=$ccount-1; $i>=0; $i--){
             if($this->calls[$i][0] == 'p_open'){
                 break;
             }elseif($this->calls[$i][0] == 'cdata'){
@@ -1520,18 +1521,19 @@ class Doku_Handler_Block {
 
         if(trim($content)==''){
             //remove the whole paragraph
-            array_splice($this->calls,$i);
-        }else{
-            // remove ending linebreaks in the paragraph
-            $i=count($this->calls)-1;
+            //array_splice($this->calls,$i); // <- this is much slower than the loop below
+            for($x=$ccount; $x>$i; $x--) array_pop($this->calls);
+        }else{
+            // remove ending linebreaks in the paragraph
+            $i=count($this->calls)-1;
             if ($this->calls[$i][0] == 'cdata') $this->calls[$i][1][0] = rtrim($this->calls[$i][1][0],DOKU_PARSER_EOL);
             $this->calls[] = array('p_close',array(), $pos);
         }
 
-        $this->inParagraph = false;
+        $this->inParagraph = false;
         $this->skipEol = true;
     }
-    
+
     function addCall($call) {
         $key = count($this->calls);
         if ($key and ($call[0] == 'cdata') and ($this->calls[$key-1][0] == 'cdata')) {
@@ -1553,7 +1555,7 @@ class Doku_Handler_Block {
      * @author Andreas Gohr <andi@splitbrain.org>
      */
     function process($calls) {
-        // open first paragraph
+        // open first paragraph
         $this->openParagraph(0);
         foreach ( $calls as $key => $call ) {
             $cname = $call[0];
diff --git a/inc/template.php b/inc/template.php
index 96e0668c251f66fee83e561bd86784e4e24c91e5..c70e407d65468d72f6768ab374abe2b9fec53841 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -480,10 +480,15 @@ function tpl_actionlink($type,$pre='',$suf='',$inner='',$return=false){
             $linktarget = wl($id, $params);
         }
         $caption = $lang['btn_' . $type];
+        $akey = $addTitle = '';
+        if($accesskey){
+            $akey = 'accesskey="'.$accesskey.'" ';
+            $addTitle = ' ['.strtoupper($accesskey).']';
+        }
         $out = tpl_link($linktarget, $pre.(($inner)?$inner:$caption).$suf,
                         'class="action ' . $type . '" ' .
-                        'accesskey="' . $accesskey . '" rel="nofollow" ' .
-                        'title="' . hsc($caption) . '"', 1);
+                        $akey . 'rel="nofollow" ' .
+                        'title="' . hsc($caption).$addTitle . '"', 1);
     }
     if ($return) return $out;
     echo $out;
@@ -626,10 +631,6 @@ function tpl_get_action($type) {
                 return false;
             }
             break;
-        case 'subscribens':
-            // Superseded by subscribe/subscription
-            return '';
-            break;
         case 'media':
             break;
         default:
@@ -1136,29 +1137,35 @@ function tpl_mediaFileList(){
     global $AUTH;
     global $NS;
     global $JUMPTO;
+    global $lang;
 
     $opened_tab = $_REQUEST['tab_files'];
     if (!$opened_tab || !in_array($opened_tab, array('files', 'upload', 'search'))) $opened_tab = 'files';
     if ($_REQUEST['mediado'] == 'update') $opened_tab = 'upload';
 
+    echo '<h2 class="a11y">' . $lang['mediaselect'] . '</h2>'.NL;
+
     media_tabs_files($opened_tab);
 
+    echo '<div class="panelHeader">'.NL;
+    echo '<h3>';
+    $tabTitle = ($NS) ? $NS : '['.$lang['mediaroot'].']';
+    printf($lang['media_' . $opened_tab], '<strong>'.$tabTitle.'</strong>');
+    echo '</h3>'.NL;
+    if ($opened_tab === 'search' || $opened_tab === 'files') {
+        media_tab_files_options();
+    }
+    echo '</div>'.NL;
+
+    echo '<div class="panelContent">'.NL;
     if ($opened_tab == 'files') {
-        echo '<div id="mediamanager__files">';
         media_tab_files($NS,$AUTH,$JUMPTO);
-        echo '</div>';
-
     } elseif ($opened_tab == 'upload') {
-        echo '<div id="mediamanager__files">';
         media_tab_upload($NS,$AUTH,$JUMPTO);
-        echo '</div>';
-
     } elseif ($opened_tab == 'search') {
-        echo '<div id="mediamanager__files">';
         media_tab_search($NS,$AUTH);
-        echo '</div>';
     }
-
+    echo '</div>'.NL;
 }
 
 /**
@@ -1170,7 +1177,7 @@ function tpl_mediaFileList(){
  * @author Kate Arzamastseva <pshns@ukr.net>
  */
 function tpl_mediaFileDetails($image, $rev){
-    global $AUTH, $NS, $conf, $DEL;
+    global $AUTH, $NS, $conf, $DEL, $lang;
 
     $removed = (!file_exists(mediaFN($image)) && file_exists(mediaMetaFN($image, '.changes')) && $conf['mediarevisions']);
     if (!$image || (!file_exists(mediaFN($image)) && !$removed) || $DEL) return '';
@@ -1195,21 +1202,31 @@ function tpl_mediaFileDetails($image, $rev){
 
     media_tabs_details($image, $opened_tab);
 
+    echo '<div class="panelHeader"><h3>';
+    list($ext,$mime,$dl) = mimetype($image,false);
+    $class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
+    $class = 'select mediafile mf_'.$class;
+    $tabTitle = '<strong class="'.$class.'">'.$image.'</strong>';
+    if ($opened_tab === 'view' && $rev) {
+        printf($lang['media_viewold'], $tabTitle, dformat($rev));
+    } else {
+        printf($lang['media_' . $opened_tab], $tabTitle);
+    }
+    echo '</h3></div>'.NL;
+
+    echo '<div class="panelContent">'.NL;
+
     if ($opened_tab == 'view') {
-        echo '<div id="mediamanager__details">';
         media_tab_view($image, $NS, $AUTH, $rev);
-        echo '</div>';
 
     } elseif ($opened_tab == 'edit' && !$removed) {
-        echo '<div id="mediamanager__details">';
         media_tab_edit($image, $NS, $AUTH);
-        echo '</div>';
 
     } elseif ($opened_tab == 'history' && $conf['mediarevisions']) {
-        echo '<div id="mediamanager__details">';
         media_tab_history($image,$NS,$AUTH);
-        echo '</div>';
     }
+
+    echo '</div>'.NL;
 }
 
 /**
@@ -1482,45 +1499,40 @@ function tpl_favicon($types=array('favicon')) {
  * @author Kate Arzamastseva <pshns@ukr.net>
  */
 function tpl_media() {
-    //
     global $DEL, $NS, $IMG, $AUTH, $JUMPTO, $REV, $lang, $fullscreen, $conf;
     $fullscreen = true;
-    require_once(DOKU_INC.'lib/exe/mediamanager.php');
+    require_once DOKU_INC.'lib/exe/mediamanager.php';
 
     if ($_REQUEST['image']) $image = cleanID($_REQUEST['image']);
     if (isset($IMG)) $image = $IMG;
     if (isset($JUMPTO)) $image = $JUMPTO;
     if (isset($REV) && !$JUMPTO) $rev = $REV;
 
-    echo '<div id="mediamanager__page">';
-    echo '<h1>'.$lang['btn_media'].'</h1>';
-    echo '<div id="mediamanager__layout">';
-
-    echo '<div id="mediamanager__layout_namespaces" class="layout-resizable" >';
+    echo '<div id="mediamanager__page">'.NL;
+    echo '<h1>'.$lang['btn_media'].'</h1>'.NL;
     html_msgarea();
-    echo '<div class="mediamanager-tabs">';
-    echo '<a href="#" class="selected">'.hsc($lang['namespaces']).'</a>';
-    echo '<div class="clearer"></div>';
-    echo '</div>';
-    echo '<div class="background-container">';
-    echo hsc($lang['namespaces']);
-    echo '</div>';
-    echo '<div class="scroll-container">';
-    tpl_mediaTree();
-    echo '</div>';
-    echo '</div>';
 
-    echo '<div id="mediamanager__layout_list" class="layout-resizable" >';
+    echo '<div class="panel namespaces">'.NL;
+    echo '<h2>'.$lang['namespaces'].'</h2>'.NL;
+    echo '<div class="panelHeader">';
+    echo $lang['media_namespaces'];
+    echo '</div>'.NL;
+
+    echo '<div class="panelContent" id="media__tree">'.NL;
+    media_nstree($NS);
+    echo '</div>'.NL;
+    echo '</div>'.NL;
+
+    echo '<div class="panel filelist">'.NL;
     tpl_mediaFileList();
-    echo '</div>';
+    echo '</div>'.NL;
 
-    echo '<div id="mediamanager__layout_detail" class="layout" >';
+    echo '<div class="panel file">'.NL;
+    echo '<h2 class="a11y">'.$lang['media_file'].'</h2>'.NL;
     tpl_mediaFileDetails($image, $rev);
-    echo '</div>';
+    echo '</div>'.NL;
 
-    echo '<div class="clearer"></div>';
-    echo '</div>';
-    echo '</div>';
+    echo '</div>'.NL;
 }
 
 //Setup VIM: ex: et ts=4 :
diff --git a/inc/utf8.php b/inc/utf8.php
index 303987e4f7175debc1e2abfca3c6bf6023bcebb8..9d0d17f78fba1f0f3c9a39aad0272316b1279ea7 100644
--- a/inc/utf8.php
+++ b/inc/utf8.php
@@ -1219,7 +1219,7 @@ if(empty($UTF8_SPECIAL_CHARS)) $UTF8_SPECIAL_CHARS = array(
 global $UTF8_SPECIAL_CHARS2;
 if(empty($UTF8_SPECIAL_CHARS2)) $UTF8_SPECIAL_CHARS2 =
     "\x1A".' !"#$%&\'()+,/;<=>?@[\]^`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•�'.
-    '�—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½�'.
+    '�—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½�'.
     '�¿×÷ˇ˘˙˚˛˜˝̣̀́̃̉΄΅·ϖְֱֲֳִֵֶַָֹֻּֽ־ֿ�'.
     '�ׁׂ׃׳״،؛؟ـًٌٍَُِّْ٪฿‌‍‎‏–—―‗‘’‚“”�'.
     '��†‡•…‰′″‹›⁄₧₪₫€№℘™Ωℵ←↑→↓↔↕↵'.
diff --git a/install.php b/install.php
index 5d71db515219d4b4eac66e3c2f452638e61a95e9..2f600c925ccb43df68d7d1a0b4b85c0be11d80d7 100644
--- a/install.php
+++ b/install.php
@@ -48,6 +48,7 @@ $dokuwiki_hash = array(
     '2009-12-25'   => '993c4b2b385643efe5abf8e7010e11f4',
     '2010-11-07'   => '7921d48195f4db21b8ead6d9bea801b8',
     '2011-05-25'   => '4241865472edb6fa14a1227721008072',
+    '2011-11-10'   => 'b46ff19a7587966ac4df61cbab1b8b31',
 );
 
 
diff --git a/lib/_fla/.htaccess b/lib/_fla/.htaccess
deleted file mode 100644
index 055d099c772b155fa0749e628b58e7f49b649c30..0000000000000000000000000000000000000000
--- a/lib/_fla/.htaccess
+++ /dev/null
@@ -1,4 +0,0 @@
-## no access to the fla directory
-order allow,deny
-deny from all
-Satisfy All
diff --git a/lib/_fla/MultipleUpload.as b/lib/_fla/MultipleUpload.as
deleted file mode 100644
index 259441656d333bc6e352727d6e2bbd569d720960..0000000000000000000000000000000000000000
--- a/lib/_fla/MultipleUpload.as
+++ /dev/null
@@ -1,330 +0,0 @@
-/**
- * Flash Multi Upload
- *
- * Based on a example from Alastair Dawson
- *
- * @link http://blog.vixiom.com/2006/09/08/multiple-file-upload-with-flash-and-ruby-on-rails/
- * @author Alastair Dawson
- * @author Andreas Gohr <andi@splitbrain.org>
- * @license MIT <http://www.opensource.org/licenses/mit-license.php>
- */
-
-// delegate
-import mx.utils.Delegate;
-// ui components
-import mx.controls.DataGrid;
-import mx.controls.gridclasses.DataGridColumn
-import mx.controls.Button;
-import mx.controls.TextInput;
-import mx.controls.CheckBox;
-import mx.controls.Label;
-// file reference
-import flash.net.FileReferenceList;
-import flash.net.FileReference;
-
-class MultipleUpload {
-
-    private var fileRef:FileReferenceList;
-    private var fileRefListener:Object;
-    private var list:Array;
-    private var dp:Array;
-
-    private var files_dg:DataGrid;
-    private var browse_btn:Button;
-    private var upload_btn:Button;
-    private var ns_input:TextInput;
-    private var ns_label:Label;
-    private var overwrite_cb:CheckBox;
-
-    private var url:String;
-    private var upurl:String;
-    private var current:Number;
-    private var done:Number;
-    private var lasterror:String;
-
-    /**
-     * Constructor.
-     *
-     * Initializes the needed objects and stage objects
-     */
-    public function MultipleUpload(fdg:DataGrid, bb:Button, ub:Button, nsi:TextInput, nsl:Label, ob:CheckBox) {
-        // references for objects on the stage
-        files_dg = fdg;
-        browse_btn = bb;
-        upload_btn = ub;
-        ns_input = nsi;
-        ns_label = nsl;
-        overwrite_cb = ob;
-
-        // file list references & listener
-        fileRef = new FileReferenceList();
-        fileRefListener = new Object();
-        fileRef.addListener(fileRefListener);
-
-        // setup
-        iniUI();
-        inifileRefListener();
-    }
-
-    /**
-     * Initializes the User Interface
-     *
-     * Uses flashvars to access possibly localized names
-     */
-    private function iniUI() {
-        // register button handlers
-        browse_btn.onRelease = Delegate.create(this, this.browse);
-        upload_btn.onRelease = Delegate.create(this, this.upload);
-
-        // columns for dataGrid
-        var col:DataGridColumn;
-        col = new DataGridColumn('name');
-        col.headerText = ( _root.L_gridname ? _root.L_gridname : 'Filename' );
-        col.sortable = false;
-        files_dg.addColumn(col);
-        col = new DataGridColumn('size');
-        col.headerText = ( _root.L_gridsize ? _root.L_gridsize : 'Size' );
-        col.sortable = false;
-        files_dg.addColumn(col);
-        col = new DataGridColumn('status');
-        col.headerText = ( _root.L_gridstat ? _root.L_gridstat : 'Status' );
-        col.sortable = false;
-        files_dg.addColumn(col);
-
-        // label translations
-        if(_root.L_overwrite) overwrite_cb.label = _root.L_overwrite;
-        if(_root.L_browse)    browse_btn.label   = _root.L_browse;
-        if(_root.L_upload)    upload_btn.label   = _root.L_upload;
-        if(_root.L_namespace) ns_label.text     = _root.L_namespace;
-
-        // prefill input field
-        if(_root.O_ns) ns_input.text = _root.O_ns;
-
-        // disable buttons
-        upload_btn.enabled = false;
-        if(!_root.O_overwrite) overwrite_cb.visible = false;
-
-        // initalize the data provider list
-        dp   = new Array();
-        list = new Array();
-        files_dg.spaceColumnsEqually();
-    }
-
-    /**
-     * Open files selection dialog
-     *
-     * Adds the allowed file types
-     */
-    private function browse() {
-        if(_root.O_extensions){
-            var exts:Array = _root.O_extensions.split('|');
-            var filter:Object = new Object();
-            filter.description = (_root.L_filetypes ? _root.L_filetypes : 'Allowed filetypes');
-            filter.extension   = '';
-            for(var i:Number = 0; i<exts.length; i++){
-                filter.extension += '*.'+exts[i]+';';
-            }
-            filter.extension = filter.extension.substr(0,filter.extension.length-1);
-            var apply:Array = new Array();
-            apply.push(filter);
-            fileRef.browse(apply);
-        }else{
-            fileRef.browse();
-        }
-    }
-
-    /**
-     * Initiates the upload process
-     */
-    private function upload() {
-        // prepare backend URL
-        this.url  = _root.O_backend; // from flashvars
-        this.url += '&ns='+escape(ns_input.text);
-
-        // prepare upload url
-        this.upurl = this.url;
-        this.upurl += '&sectok='+escape(_root.O_sectok);
-        this.upurl += '&authtok='+escape(_root.O_authtok);
-        if(overwrite_cb.selected) this.upurl += '&ow=1';
-
-        // disable buttons
-        upload_btn.enabled = false;
-        browse_btn.enabled = false;
-        ns_input.enabled = false;
-        overwrite_cb.enabled = false;
-
-        // init states
-        this.current = -1;
-        this.done = 0;
-        this.lasterror = '';
-
-        // start process detached
-        _global.setTimeout(this,'uploadNext',100);
-        nextFrame();
-    }
-
-    /**
-     * Uploads the next file in the list
-     */
-    private function uploadNext(){
-        this.current++;
-        if(this.current >= this.list.length){
-            return this.uploadDone();
-        }
-
-        var file = this.list[this.current];
-
-        if(_root.O_maxsize && (file.size > _root.O_maxsize)){
-            this.lasterror = (_root.L_toobig ? _root.L_toobig : 'too big');
-            _global.setTimeout(this,'uploadNext',100);
-            nextFrame();
-        }else{
-            file.addListener(fileRefListener);
-            file.upload(upurl);
-            // continues in the handlers
-        }
-    }
-
-    /**
-     * Redirect to the namespace and set a success/error message
-     *
-     * Called when all files in the list where processed
-     */
-    private function uploadDone(){
-        var info = (_root.L_info ? _root.L_info : 'files uploaded');
-        if(this.done == this.list.length){
-            this.url += '&msg1='+escape(this.done+'/'+this.list.length+' '+info);
-        }else{
-            var lasterr = (_root.L_lasterr ? _root.L_lasterr : 'Last error:');
-            this.url += '&err='+escape(this.done+'/'+this.list.length+' '+info+' '+lasterr+' '+this.lasterror);
-        }
-
-        // when done redirect
-        getURL(this.url,'_self');
-    }
-
-    /**
-     * Set the status of a given file in the data grid
-     */
-    private function setStatus(file,msg){
-        for(var i:Number = 0; i < list.length; i++) {
-            if (list[i].name == file.name) {
-                files_dg.editField(i, 'status', msg);
-                nextFrame();
-                return;
-            }
-        }
-    }
-
-    /**
-     * Initialize the file reference listener
-     */
-    private function inifileRefListener() {
-        fileRefListener.onSelect        = Delegate.create(this, this.onSelect);
-        fileRefListener.onCancel        = Delegate.create(this, this.onCancel);
-        fileRefListener.onOpen          = Delegate.create(this, this.onOpen);
-        fileRefListener.onProgress      = Delegate.create(this, this.onProgress);
-        fileRefListener.onComplete      = Delegate.create(this, this.onComplete);
-        fileRefListener.onHTTPError     = Delegate.create(this, this.onHTTPError);
-        fileRefListener.onIOError       = Delegate.create(this, this.onIOError);
-        fileRefListener.onSecurityError = Delegate.create(this, this.onSecurityError);
-    }
-
-    /**
-     * Handle file selection
-     *
-     * Files are added as in a list of references and beautified into the data grid dataprovider array
-     *
-     * Multiple browses will add to the list
-     */
-    private function onSelect(fileRefList:FileReferenceList) {
-        var sel = fileRefList.fileList;
-        for(var i:Number = 0; i < sel.length; i++) {
-            // check size
-            var stat:String;
-            if(_root.O_maxsize && sel[i].size > _root.O_maxsize){
-                stat = (_root.L_toobig ? _root.L_toobig : 'too big');
-            }else{
-                stat = (_root.L_ready ? _root.L_ready : 'ready for upload');
-            }
-            // add to grid
-            dp.push({name:sel[i].name, size:Math.round(sel[i].size / 1000) + " kb", status:stat});
-            // add to reference list
-            list.push(sel[i]);
-        }
-        // update dataGrid
-        files_dg.dataProvider = dp;
-        files_dg.spaceColumnsEqually();
-
-        if(list.length > 0) upload_btn.enabled = true;
-    }
-
-    /**
-     * Does nothing
-     */
-    private function onCancel() {
-    }
-
-    /**
-     * Does nothing
-     */
-    private function onOpen(file:FileReference) {
-    }
-
-    /**
-     * Set the upload progress
-     */
-    private function onProgress(file:FileReference, bytesLoaded:Number, bytesTotal:Number) {
-        var percentDone = Math.round((bytesLoaded / bytesTotal) * 100);
-        var msg:String = 'uploading @PCT@%';
-        if(_root.L_progress) msg = _root.L_progress;
-        msg = msg.split('@PCT@').join(percentDone);
-        this.setStatus(file,msg);
-    }
-
-    /**
-     * Handle upload completion
-     */
-    private function onComplete(file:FileReference) {
-        this.setStatus(file,(_root.L_done ? _root.L_done : 'complete'));
-        this.done++;
-        uploadNext();
-    }
-
-    /**
-     * Handle upload errors
-     */
-    private function onHTTPError(file:FileReference, httpError:Number) {
-        var error;
-        if(httpError == 400){
-            error = (_root.L_fail ? _root.L_fail : 'failed');
-        }else if(httpError == 401){
-            error = (_root.L_authfail ? _root.L_authfail : 'auth failed');
-        }else{
-            error = "HTTP Error " + httpError
-        }
-        this.setStatus(file,error);
-        this.lasterror = error;
-        uploadNext();
-    }
-
-    /**
-     * Handle IO errors
-     */
-    private function onIOError(file:FileReference) {
-        this.setStatus(file,"IO Error");
-        this.lasterror = "IO Error";
-        uploadNext();
-    }
-
-    /**
-     * Handle Security errors
-     */
-    private function onSecurityError(file:FileReference, errorString:String) {
-        this.setStatus(file,"SecurityError: " + errorString);
-        this.lasterror = "SecurityError: " + errorString;
-        uploadNext();
-    }
-
-
-}
diff --git a/lib/_fla/README b/lib/_fla/README
deleted file mode 100644
index 6ecc72ac13d3d58b74bb4608914ec7b4585d1d65..0000000000000000000000000000000000000000
--- a/lib/_fla/README
+++ /dev/null
@@ -1,4 +0,0 @@
-This directory contains the sources for the Flash Multiuploader. Its based on
-a example from Alastair Dawson given at
-http://blog.vixiom.com/2006/09/08/multiple-file-upload-with-flash-and-ruby-on-rails/
-
diff --git a/lib/_fla/index.html b/lib/_fla/index.html
deleted file mode 100644
index d614603ac8a72e31458ce0b5947810ff43f8a61e..0000000000000000000000000000000000000000
--- a/lib/_fla/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="refresh" content="0; URL=../../" />
-<meta name="robots" content="noindex" />
-<title>nothing here...</title>
-</head>
-<body>
-<!-- this is just here to prevent directory browsing -->
-</body>
-</html>
diff --git a/lib/_fla/multipleUpload.fla b/lib/_fla/multipleUpload.fla
deleted file mode 100644
index 22061696024011208c1a06a8fa8fc416b1912d73..0000000000000000000000000000000000000000
Binary files a/lib/_fla/multipleUpload.fla and /dev/null differ
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index d4ef8dc116bc95831aa399c978ab2db2754b36e2..f8d62cb577353fb47da16a11d891a9e2ea8141e2 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -281,7 +281,8 @@ function ajax_mediaupload(){
         }
         $result = array('error' => $msg['msg'], 'ns' => $NS);
     }
-    echo htmlspecialchars(json_encode($result), ENT_NOQUOTES);
+    $json = new JSON;
+    echo htmlspecialchars($json->encode($result), ENT_NOQUOTES);
 }
 
 function dir_delete($path) {
diff --git a/lib/exe/css.php b/lib/exe/css.php
index 81f47d8fa85c9d6d51fe8dbd730f65b605f5416e..d54e2e46c3e012076dbd4020f3d6b9dd7c26bb6b 100644
--- a/lib/exe/css.php
+++ b/lib/exe/css.php
@@ -319,7 +319,8 @@ function css_compress($css){
 
     // strip whitespaces
     $css = preg_replace('![\r\n\t ]+!',' ',$css);
-    $css = preg_replace('/ ?([:;,{}\/]) ?/','\\1',$css);
+    $css = preg_replace('/ ?([;,{}\/]) ?/','\\1',$css);
+    $css = preg_replace('/ ?: /',':',$css);
 
     // shorten colors
     $css = preg_replace("/#([0-9a-fA-F]{1})\\1([0-9a-fA-F]{1})\\2([0-9a-fA-F]{1})\\3/", "#\\1\\2\\3",$css);
diff --git a/lib/exe/js.php b/lib/exe/js.php
index 33f8c695dc1c55116c6cdacf3320d030fe784e4f..b7f2fd2224e9e1781ebdb66eb73c5ad50f8eabda 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -88,6 +88,7 @@ function js_out(){
     // add some global variables
     print "var DOKU_BASE   = '".DOKU_BASE."';";
     print "var DOKU_TPL    = '".DOKU_TPL."';";
+    // FIXME: Move those to JSINFO
     print "var DOKU_UHN    = ".((int) useHeading('navigation')).";";
     print "var DOKU_UHC    = ".((int) useHeading('content')).";";
 
@@ -106,10 +107,7 @@ function js_out(){
         echo "\n\n/* XXXXXXXXXX end of " . str_replace(DOKU_INC, '', $file) . " XXXXXXXXXX */\n\n";
     }
 
-
     // init stuff
-    js_runonstart("addEvent(document,'click',closePopups)");
-    js_runonstart("initToolbar('tool__bar','wiki__text',toolbar)");
     if($conf['locktime'] != 0){
         js_runonstart("dw_locktimer.init(".($conf['locktime'] - 60).",".$conf['usedraft'].")");
     }
@@ -220,7 +218,7 @@ function js_escape($string){
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function js_runonstart($func){
-    echo "addInitEvent(function(){ $func; });".NL;
+    echo "jQuery(function(){ $func; });".NL;
 }
 
 /**
diff --git a/lib/exe/multipleUpload.swf b/lib/exe/multipleUpload.swf
deleted file mode 100644
index 888aab04553e7698f558db137598c78667ec88e0..0000000000000000000000000000000000000000
Binary files a/lib/exe/multipleUpload.swf and /dev/null differ
diff --git a/lib/exe/xmlrpc.php b/lib/exe/xmlrpc.php
index 8b572d21321ea9c197d566260f1e3fb5370d4cee..e5e3298aec13735e5c0dc717c1de9ffbda54df01 100644
--- a/lib/exe/xmlrpc.php
+++ b/lib/exe/xmlrpc.php
@@ -7,7 +7,7 @@ if(isset($HTTP_RAW_POST_DATA)) $HTTP_RAW_POST_DATA = trim($HTTP_RAW_POST_DATA);
 /**
  * Increased whenever the API is changed
  */
-define('DOKU_XMLRPC_API_VERSION',5);
+define('DOKU_XMLRPC_API_VERSION', 6);
 
 require_once(DOKU_INC.'inc/init.php');
 session_write_close();  //close session
@@ -53,6 +53,11 @@ class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer {
      */
     function call($methodname, $args){
         if(!in_array($methodname,$this->public_methods) && !$this->checkAuth()){
+            if (!isset($_SERVER['REMOTE_USER'])) {
+                header('HTTP/1.1 401 Unauthorized');
+            } else {
+                header('HTTP/1.1 403 Forbidden');
+            }
             return new IXR_Error(-32603, 'server error. not authorized to call method "'.$methodname.'".');
         }
         return parent::call($methodname, $args);
@@ -579,8 +584,12 @@ class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer {
 
         // save temporary file
         @unlink($ftmp);
-        $buff = base64_decode($file);
-        io_saveFile($ftmp, $buff);
+        if (preg_match('/^[A-Za-z0-9\+\/]*={0,2}$/', $file) === 1) {
+            // DEPRECATED: Double-decode file if it still looks like base64
+            // after first decoding (which is done by the library)
+            $file = base64_decode($file);
+        }
+        io_saveFile($ftmp, $file);
 
         $res = media_save(array('name' => $ftmp), $id, $params['ow'], $auth, 'rename');
         if (is_array($res)) {
@@ -853,11 +862,22 @@ class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer {
         global $auth;
         if(!$conf['useacl']) return 0;
         if(!$auth) return 0;
+
+        @session_start(); // reopen session for login
         if($auth->canDo('external')){
-            return $auth->trustExternal($user,$pass,false);
+            $ok = $auth->trustExternal($user,$pass,false);
         }else{
-            return auth_login($user,$pass,false,true);
+            $evdata = array(
+                'user'     => $user,
+                'password' => $pass,
+                'sticky'   => false,
+                'silent'   => true,
+            );
+            $ok = trigger_event('AUTH_LOGIN_CHECK', $evdata, 'auth_login_wrapper');
         }
+        session_write_close(); // we're done with the session
+
+        return $ok;
     }
 
 
diff --git a/lib/images/mediamanager.png b/lib/images/mediamanager.png
new file mode 100644
index 0000000000000000000000000000000000000000..822b8458aad4d10125fa0c5201913b59d6a6b07b
Binary files /dev/null and b/lib/images/mediamanager.png differ
diff --git a/lib/images/multiupload.png b/lib/images/multiupload.png
deleted file mode 100644
index bc16c76d6f010d05ffd49058887501351fc52f8f..0000000000000000000000000000000000000000
Binary files a/lib/images/multiupload.png and /dev/null differ
diff --git a/lib/plugins/acl/lang/bg/lang.php b/lib/plugins/acl/lang/bg/lang.php
index 0746e32c94cf06ec7bd21dfb5b854ed7f28c389c..e260be918eada86082d0a9cb66c8c40e4cec7c3d 100644
--- a/lib/plugins/acl/lang/bg/lang.php
+++ b/lib/plugins/acl/lang/bg/lang.php
@@ -21,7 +21,7 @@ $lang['p_group_ns']            = 'Членовете на групата <b clas
 $lang['p_choose_id']           = 'Моля, <b>въведете потребител или група</b> в полето отгоре, за да видите или промените правата за страницата <b class="aclpage">%s</b>.';
 $lang['p_choose_ns']           = 'Моля, <b>въведете потребител или група</b> в полето отгоре, за да видите или промените правата за именното пространство <b class="aclns">%s</b>.';
 $lang['p_inherited']           = 'Бележка: Тези разрешения не са зададени директно, а са наследени от други групи или именни пространства.';
-$lang['p_isadmin']             = 'Бележка: Избраната група или потребител има всички права, защото е определен за суперпотребител.';
+$lang['p_isadmin']             = 'Бележка: Избраната група или потребител има всички права, защото е определен за супер потребител.';
 $lang['p_include']             = 'Висши права включват по-нисшите такива. Правата за създаване, качване и изтриване са приложими само за именни пространства, но не  за страници.';
 $lang['current']               = 'Текущи ACL права';
 $lang['where']                 = 'Страница/Именно пространство';
diff --git a/lib/plugins/acl/lang/de-informal/lang.php b/lib/plugins/acl/lang/de-informal/lang.php
index e24584a55f5340b9789e93bd72b636c66dc2ae72..3f4b08c2ad26c74b66078737ee2667fa74382235 100644
--- a/lib/plugins/acl/lang/de-informal/lang.php
+++ b/lib/plugins/acl/lang/de-informal/lang.php
@@ -7,6 +7,7 @@
  * @author Marcel Metz <marcel_metz@gmx.de>
  * @author Matthias Schulte <post@lupo49.de>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['admin_acl']             = 'Zugriffskontrollsystem Management';
 $lang['acl_group']             = 'Gruppe';
diff --git a/lib/plugins/acl/lang/de/lang.php b/lib/plugins/acl/lang/de/lang.php
index 3c6bf8cf0624114bec952e20194a0ba0ebb9210e..eb23636c4e24ec9b4574000017b4857ed82de6b8 100644
--- a/lib/plugins/acl/lang/de/lang.php
+++ b/lib/plugins/acl/lang/de/lang.php
@@ -19,6 +19,8 @@
  * @author Robert Bogenschneider <robog@gmx.de>
  * @author Niels Lange <niels@boldencursief.nl>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Paul Lachewsky <kaeptn.haddock@gmail.com>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['admin_acl']             = 'Zugangsverwaltung';
 $lang['acl_group']             = 'Gruppe';
diff --git a/lib/plugins/acl/lang/el/lang.php b/lib/plugins/acl/lang/el/lang.php
index e2f6c35dc3581f9a3eef35e0f0e3821b0638f132..e1cd26755cdbed85cb8c84fc8fc0a88861a64396 100644
--- a/lib/plugins/acl/lang/el/lang.php
+++ b/lib/plugins/acl/lang/el/lang.php
@@ -13,6 +13,7 @@
  * @author Αθανάσιος Νταής <homunculus@wana.gr>
  * @author Konstantinos Koryllos <koryllos@gmail.com>
  * @author George Petsagourakis <petsagouris@gmail.com>
+ * @author Petros Vidalis <pvidalis@gmail.com>
  */
 $lang['admin_acl']             = 'Διαχείριση Δικαιωμάτων Πρόσβασης';
 $lang['acl_group']             = 'Ομάδα';
diff --git a/lib/plugins/acl/lang/eo/help.txt b/lib/plugins/acl/lang/eo/help.txt
index 0c03b86053d4e4bb356ed9068238b4841a56a985..cc3f63e5ad90eb477c956502940ea45f385c696e 100644
--- a/lib/plugins/acl/lang/eo/help.txt
+++ b/lib/plugins/acl/lang/eo/help.txt
@@ -8,4 +8,4 @@ La suba agordilo permesas al vi rigardi kaj modifi la rajtojn de elektita uzanto
 
 En la suba tabelo ĉiuj aktuale difinitaj alirkontrolaj reguloj estas montritaj. Vi povas uzi ĝin por rapide forigi aŭ ŝanĝi multoblajn regulojn.
 
-Legado de la [[doku>acl|oficiala dokumentaro pri ACL]] povus helpi vin bone kompreni kiel alirkontrolo funkcias en DokuWiki.
\ No newline at end of file
+Legado de la [[doku&gt;acl|oficiala dokumentaro pri ACL]] povus helpi vin bone kompreni kiel alirkontrolo funkcias en DokuWiki.
\ No newline at end of file
diff --git a/lib/plugins/acl/lang/eo/lang.php b/lib/plugins/acl/lang/eo/lang.php
index 85b262e8c4160fe1e8e5149251fc725c496bb33c..72ce576eeeca269cf25e9e9c17269d42bcbfb431 100644
--- a/lib/plugins/acl/lang/eo/lang.php
+++ b/lib/plugins/acl/lang/eo/lang.php
@@ -10,6 +10,7 @@
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Robert Bogenschneider <robog@GMX.de>
  * @author Robert BOGENSCHNEIDER <robog@gmx.de>
+ * @author Robert BOGENSCHNEIDER <bogi@UEA.org>
  */
 $lang['admin_acl']             = 'Administrado de Alirkontrola Listo (ACL)';
 $lang['acl_group']             = 'Grupo';
@@ -18,12 +19,12 @@ $lang['acl_perms']             = 'Rajtoj por';
 $lang['page']                  = 'Paĝo';
 $lang['namespace']             = 'Nomspaco';
 $lang['btn_select']            = 'Elekti';
-$lang['p_user_id']             = 'Uzanto <b class="acluser">%s</b> aktuale havas la jenajn rajtojn en la paĝo <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_user_ns']             = 'Uzanto <b class="acluser">%s</b> aktuale havas la jenajn rajtojn en la nomspaco <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_group_id']            = 'Anoj de la grupo <b class="aclgroup">%s</b> aktuale havas la jenajn rajtojn en la paĝo <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_group_ns']            = 'Anoj de la grupo <b class="aclgroup">%s</b> aktuale havas la jenajn rajtojn en la nomspaco <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_choose_id']           = 'Bonvole <b>enmeti uzanton aŭ grupon</b> en la suba agordilo por rigardi aŭ redakti la aron da rajtoj por la paĝo <b class="aclpage">%s</b>.';
-$lang['p_choose_ns']           = 'Bonvole <b>enmeti uzanton aÅ­ grupon</b> en la suba agordilo por rigardi aÅ­ redakti la aron da rajtoj por la nomspaco <b class="aclns">%s</b>.';
+$lang['p_user_id']             = 'Uzanto &lt;b class=&quot;acluser&quot;&gt;%s&lt;/b&gt; aktuale havas la jenajn rajtojn en la paĝo &lt;b class=&quot;aclpage&quot;&gt;%s&lt;/b&gt;: &lt;i&gt;%s&lt;/i&gt;.';
+$lang['p_user_ns']             = 'Uzanto &lt;b class=&quot;acluser&quot;&gt;%s&lt;/b&gt; aktuale havas la jenajn rajtojn en la nomspaco &lt;b class=&quot;aclns&quot;&gt;%s&lt;/b&gt;: &lt;i&gt;%s&lt;/i&gt;.';
+$lang['p_group_id']            = 'Anoj de la grupo &lt;b class=&quot;aclgroup&quot;&gt;%s&lt;/b&gt; aktuale havas la jenajn rajtojn en la paĝo &lt;b class=&quot;aclpage&quot;&gt;%s&lt;/b&gt;: &lt;i&gt;%s&lt;/i&gt;.';
+$lang['p_group_ns']            = 'Anoj de la grupo &lt;b class=&quot;aclgroup&quot;&gt;%s&lt;/b&gt; aktuale havas la jenajn rajtojn en la nomspaco &lt;b class=&quot;aclns&quot;&gt;%s&lt;/b&gt;: &lt;i&gt;%s&lt;/i&gt;.';
+$lang['p_choose_id']           = 'Bonvolu &lt;b&gt;enmeti uzanton aŭ grupon&lt;/b&gt; en la suba agordilo por rigardi aŭ redakti la aron da rajtoj por la paĝo &lt;b class=&quot;aclpage&quot;&gt;%s&lt;/b&gt;.';
+$lang['p_choose_ns']           = 'Bonvolu &lt;b&gt;enmeti uzanton aÅ­ grupon&lt;/b&gt; en la suba agordilo por rigardi aÅ­ redakti la aron da rajtoj por la nomspaco &lt;b class=&quot;aclns&quot;&gt;%s&lt;/b&gt;.';
 $lang['p_inherited']           = 'Rimarko: tiuj rajtoj ne estis rekte difinitaj, sed ili estis hereditaj el aliaj pli superaj grupoj aÅ­ nomspacoj.';
 $lang['p_isadmin']             = 'Rimarko: la elektita grupo aŭ uzanto ĉiam havas plenan rajtaron ĉar ĝi estas difinita kiel superuzanto.';
 $lang['p_include']             = 'Plialtaj permesoj inkluzivas malpli altajn. La permesoj por Krei, Alŝuti kaj Forigi nur aplikeblas al nomspacoj, ne al paĝoj.';
diff --git a/lib/plugins/acl/lang/es/lang.php b/lib/plugins/acl/lang/es/lang.php
index 91a4ca1a11361a45cf27033130a983eb489a60ae..ee50a7530cf04e501d0d4496a67582d616690644 100644
--- a/lib/plugins/acl/lang/es/lang.php
+++ b/lib/plugins/acl/lang/es/lang.php
@@ -21,6 +21,7 @@
  * @author Mauro Javier Giamberardino <mgiamberardino@gmail.com>
  * @author emezeta <emezeta@infoprimo.com>
  * @author Oscar Ciudad <oscar@jacho.net>
+ * @author Ruben Figols <ruben.figols@gmail.com>
  */
 $lang['admin_acl']             = 'Administración de lista de control de acceso';
 $lang['acl_group']             = 'Grupo';
diff --git a/lib/plugins/acl/lang/fr/lang.php b/lib/plugins/acl/lang/fr/lang.php
index fd3f40dfcb1e902936aa0245576f03ed01587772..86f493b52bc6e3f4c8d7d2f93d332c5200dd9a46 100644
--- a/lib/plugins/acl/lang/fr/lang.php
+++ b/lib/plugins/acl/lang/fr/lang.php
@@ -7,11 +7,10 @@
  * @author Antoine Fixary <antoine.fixary@freesbee.fr>
  * @author cumulus <pta-n56@myamail.com>
  * @author Gwenn Gueguen <contact@demisel.net>
- * @author Guy Brand <gb@isis.u-strasbg.fr>
+ * @author Guy Brand <gb@unistra.fr>
  * @author Fabien Chabreuil <fabien@integralpersonality.com>
  * @author Stéphane Chamberland <stephane.chamberland@ec.gc.ca>
  * @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
- * @author gb@isis.u-strasbg.fr
  * @author stephane.gully@gmail.com
  * @author Guillaume Turri <guillaume.turri@gmail.com>
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
diff --git a/lib/plugins/acl/lang/nl/lang.php b/lib/plugins/acl/lang/nl/lang.php
index f9adb5f040de0d84751310d9e6559641a02a4bbb..686909644d8486ad419378b1e6b7f155947720d0 100644
--- a/lib/plugins/acl/lang/nl/lang.php
+++ b/lib/plugins/acl/lang/nl/lang.php
@@ -16,6 +16,7 @@
  * @author Matthias Carchon webmaster@c-mattic.be
  * @author Marijn Hofstra <hofstra.m@gmail.com>
  * @author Timon Van Overveldt <timonvo@gmail.com>
+ * @author Jeroen
  */
 $lang['admin_acl']             = 'Toegangsrechten';
 $lang['acl_group']             = 'Groep';
diff --git a/lib/plugins/acl/lang/no/lang.php b/lib/plugins/acl/lang/no/lang.php
index 71df0b382c0a53473f7a9abb0bd3d7adb2cfa91d..587f9c2fc1bb93bab6351404ca655baab66f11c5 100644
--- a/lib/plugins/acl/lang/no/lang.php
+++ b/lib/plugins/acl/lang/no/lang.php
@@ -16,6 +16,7 @@
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
  * @author Rune Rasmussen syntaxerror.no@gmail.com
+ * @author Jon Bøe <jonmagneboe@hotmail.com>
  */
 $lang['admin_acl']             = 'Administrasjon av lister for adgangskontroll (ACL)';
 $lang['acl_group']             = 'Gruppe';
@@ -40,7 +41,7 @@ $lang['perm']                  = 'Tillatelser';
 $lang['acl_perm0']             = 'Ingen';
 $lang['acl_perm1']             = 'Lese';
 $lang['acl_perm2']             = 'Redigere';
-$lang['acl_perm4']             = 'Lage';
+$lang['acl_perm4']             = 'Opprette';
 $lang['acl_perm8']             = 'Laste opp';
 $lang['acl_perm16']            = 'Slette';
 $lang['acl_new']               = 'Legg til ny oppføring';
diff --git a/lib/plugins/acl/lang/pt-br/lang.php b/lib/plugins/acl/lang/pt-br/lang.php
index 0ebcbf5095fa5b1ee5ae2ac83506e17c298cf57e..a0c997600f2db2c381c78ba750cfb904d473dcde 100644
--- a/lib/plugins/acl/lang/pt-br/lang.php
+++ b/lib/plugins/acl/lang/pt-br/lang.php
@@ -18,6 +18,7 @@
  * @author Luis Dantas <luisdantas@gmail.com>
  * @author Sergio Motta sergio@cisne.com.br
  * @author Isaias Masiero Filho <masiero@masiero.org>
+ * @author Balaco Baco <balacobaco@imap.cc>
  */
 $lang['admin_acl']             = 'Administração da Lista de Controles de Acesso';
 $lang['acl_group']             = 'Grupo';
diff --git a/lib/plugins/acl/lang/ro/lang.php b/lib/plugins/acl/lang/ro/lang.php
index 296baa291fc592afb3b46476744b74c86b3e6083..0c13d72236651725424181f325a2711ddf4a6f1f 100644
--- a/lib/plugins/acl/lang/ro/lang.php
+++ b/lib/plugins/acl/lang/ro/lang.php
@@ -8,6 +8,7 @@
  * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
  * @author Emanuel-Emeric AndraÅŸi <em.andrasi@mandrivausers.ro>
  * @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
+ * @author Marius OLAR <olarmariusalex@gmail.com>
  */
 $lang['admin_acl']             = 'Managementul Listei de Control a Accesului';
 $lang['acl_group']             = 'Grup';
diff --git a/lib/plugins/acl/lang/zh/lang.php b/lib/plugins/acl/lang/zh/lang.php
index 581d085399e0ddc40758fac69c5092ca47ecff3d..986fa769aa76e9d39c76b317621e495eb51ff95a 100644
--- a/lib/plugins/acl/lang/zh/lang.php
+++ b/lib/plugins/acl/lang/zh/lang.php
@@ -13,6 +13,7 @@
  * @author caii <zhoucaiqi@gmail.com>
  * @author Hiphen Lee <jacob.b.leung@gmail.com>
  * @author caii, patent agent in China <zhoucaiqi@gmail.com>
+ * @author lainme993@gmail.com
  */
 $lang['admin_acl']             = '访问控制列表(ACL)管理器';
 $lang['acl_group']             = '组';
diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js
index 2598bcef844f6dc6995718bdefa7e6c784d86c57..d912a24072a49e7d3b0bdd2764f941242d850ffc 100644
--- a/lib/plugins/acl/script.js
+++ b/lib/plugins/acl/script.js
@@ -33,7 +33,7 @@ var dw_acl = {
                                show_sublist,
                                'html'
                            );
-    },
+                       },
 
                        toggle_display: function ($clicky, opening) {
                            $clicky.attr('src',
diff --git a/lib/plugins/config/lang/bg/lang.php b/lib/plugins/config/lang/bg/lang.php
index 2489b0d25e5cde8553c6783a3fef49e29e6ec726..ff03fd9e280304c31560e07a36b1e72c45b0a917 100644
--- a/lib/plugins/config/lang/bg/lang.php
+++ b/lib/plugins/config/lang/bg/lang.php
@@ -41,6 +41,7 @@ $lang['lang']                  = 'Език';
 $lang['basedir']               = 'Главна директория (напр. <code>/dokuwiki/</code>). Оставете празно, за да бъде засечена автоматично.';
 $lang['baseurl']               = 'URL адрес (напр. <code>http://www.yourserver.com</code>). Оставете празно, за да бъде засечен автоматично.';
 $lang['savedir']               = 'Директория за записване на данните';
+$lang['cookiedir']             = 'Път за бисквитките. Оставите ли полето празно ще се ползва горния URL адрес.';
 $lang['start']                 = 'Име на началната страница';
 $lang['title']                 = 'Име на Wiki-то';
 $lang['template']              = 'Шаблон';
@@ -76,7 +77,7 @@ $lang['authtype']              = 'Метод за удостоверяване';
 $lang['passcrypt']             = 'Метод за криптиране на паролите';
 $lang['defaultgroup']          = 'Стандартна група';
 $lang['superuser']             = 'Супер потребител -  група, потребител или списък със стойности разделени чрез запетая (user1,@group1,user2) с пълен достъп до всички страници и функции без значение от настройките на списъците за достъп (ACL)';
-$lang['manager']               = 'Управител - група, потребител или списък със стойности разделени чрез запетая (user1,@group1,user2) с достъп до определени управленски фунции ';
+$lang['manager']               = 'Управител - група, потребител или списък със стойности разделени чрез запетая (user1,@group1,user2) с достъп до определени управленски функции ';
 $lang['profileconfirm']        = 'Потвърждаване на промени в профила с парола';
 $lang['disableactions']        = 'Изключване функции на DokuWiki';
 $lang['disableactions_check']  = 'Проверка';
@@ -101,17 +102,18 @@ $lang['compression']           = 'Метод за компресия на attic
 $lang['cachetime']             = 'Макс. период за съхраняване на кеша (сек)';
 $lang['locktime']              = 'Макс. период за съхраняване на заключените файлове (сек)';
 $lang['fetchsize']             = 'Максимален размер (байтове), който fetch.php може да сваля';
-$lang['notify']                = 'Пращане на съобщения за промени по странците на следната eл. поща';
+$lang['notify']                = 'Пращане на съобщения за промени по страниците на следната eл. поща';
 $lang['registernotify']        = 'Пращане на информация за нови потребители на следната ел. поща';
 $lang['mailfrom']              = 'Ел. поща, която да се ползва за автоматично изпращане на ел. писма';
 $lang['mailprefix']            = 'Представка за темите (поле subject) на автоматично изпращаните ел. писма';
 $lang['gzip_output']           = 'Кодиране на съдържанието с gzip за xhtml';
 $lang['gdlib']                 = 'Версия на GD Lib';
 $lang['im_convert']            = 'Път до инструмента за трансформация на ImageMagick';
-$lang['jpg_quality']           = 'Kачество на JPG компресията (0-100)';
+$lang['jpg_quality']           = 'Качество на JPG компресията (0-100)';
 $lang['subscribers']           = 'Включване на поддръжката за абониране към страници';
 $lang['subscribe_time']        = 'Време след което абонаментните списъци и обобщения се изпращат (сек); Трябва да е по-малко от времето определено в recent_days.';
 $lang['compress']              = 'Компактен CSS и javascript изглед';
+$lang['cssdatauri']            = 'Максимален размер, в байтове, до който изображенията посочени в .CSS файл ще бъдат вграждани в стила (stylesheet), за да се намали броя на HTTP заявките. Техниката не работи за версиите на IE преди 8! Препоръчителни стойности: <code>400</code> до <code>600</code> байта. Въведете <code>0</code> за изключване.';
 $lang['hidepages']             = 'Скриване на съвпадащите страници (regular expressions)';
 $lang['send404']               = 'Пращане на "HTTP 404/Page Not Found" за несъществуващи страници';
 $lang['sitemap']               = 'Генериране на Google sitemap (дни)';
diff --git a/lib/plugins/config/lang/de-informal/lang.php b/lib/plugins/config/lang/de-informal/lang.php
index ab7f59eac7e86a1fae83633f97b74b52a79a8bec..1de388214f51410de58cf8c81581fdc4ac892f97 100644
--- a/lib/plugins/config/lang/de-informal/lang.php
+++ b/lib/plugins/config/lang/de-informal/lang.php
@@ -7,6 +7,7 @@
  * @author Marcel Metz <marcel_metz@gmx.de>
  * @author Matthias Schulte <post@lupo49.de>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['menu']                  = 'Einstellungen';
 $lang['error']                 = 'Einstellungen wurden nicht aktualisiert auf Grund eines ungültigen Wertes. Bitte überprüfe deine Änderungen und versuche es erneut.<br />Die/der ungültige(n) Wert(e) werden durch eine rote Umrandung hervorgehoben.';
@@ -41,6 +42,7 @@ $lang['lang']                  = 'Sprache';
 $lang['basedir']               = 'Installationsverzeichnis';
 $lang['baseurl']               = 'Installationspfad (URL)';
 $lang['savedir']               = 'Ordner zum Speichern von Daten';
+$lang['cookiedir']             = 'Cookie Pfad. Leer lassen, um die Standard-Url zu belassen.';
 $lang['start']                 = 'Name der Startseite';
 $lang['title']                 = 'Wiki Titel';
 $lang['template']              = 'Vorlage';
@@ -111,9 +113,10 @@ $lang['jpg_quality']           = 'JPEG Kompressionsqualität (0-100)';
 $lang['subscribers']           = 'E-Mail-Abos zulassen';
 $lang['subscribe_time']        = 'Zeit nach der Zusammenfassungs- und Änderungslisten-E-Mails verschickt werden; Dieser Wert sollte kleiner als die in recent_days konfigurierte Zeit sein.';
 $lang['compress']              = 'JavaScript und Stylesheets komprimieren';
+$lang['cssdatauri']            = 'Größe in Bytes, bis zu der Bilder in css-Dateien referenziert werden können, um HTTP-Anfragen zu minimieren. Diese Technik funktioniert nicht im IE 7 und älter! <code>400</code> bis <code>600</code> Bytes sind gute Werte. Setze <code>0</code> für inaktive Funktion.';
 $lang['hidepages']             = 'Seiten verstecken (Regulärer Ausdruck)';
 $lang['send404']               = 'Sende "HTTP 404/Seite nicht gefunden" für nicht existierende Seiten';
-$lang['sitemap']               = 'Erzeugte Google Sitemaps (Tage)';
+$lang['sitemap']               = 'Erzeuge Google Sitemaps (Tage)';
 $lang['broken_iua']            = 'Falls die Funktion ignore_user_abort auf deinem System nicht funktioniert, könnte der Such-Index nicht funktionieren. IIS+PHP/CGI ist bekannt dafür. Siehe auch <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a>.';
 $lang['xsendfile']             = 'Den X-Sendfile-Header nutzen, um Dateien direkt vom Webserver ausliefern zu lassen? Dein Webserver muss dies unterstützen!';
 $lang['renderer_xhtml']        = 'Standard-Renderer für die normale (XHTML) Wiki-Ausgabe.';
diff --git a/lib/plugins/config/lang/de/lang.php b/lib/plugins/config/lang/de/lang.php
index b4746d7574481874bf7a9b285bdc97bd038710ab..09e3f76f91a721ecc73af5086b9add1f77b37597 100644
--- a/lib/plugins/config/lang/de/lang.php
+++ b/lib/plugins/config/lang/de/lang.php
@@ -15,6 +15,8 @@
  * @author Robert Bogenschneider <robog@gmx.de>
  * @author Niels Lange <niels@boldencursief.nl>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Paul Lachewsky <kaeptn.haddock@gmail.com>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['menu']                  = 'Konfiguration';
 $lang['error']                 = 'Die Einstellungen wurden wegen einer fehlerhaften Eingabe nicht gespeichert.
@@ -50,8 +52,8 @@ $lang['dmode']                 = 'Rechte für neue Verzeichnisse';
 $lang['lang']                  = 'Sprache';
 $lang['basedir']               = 'Installationsverzeichnis';
 $lang['baseurl']               = 'Installationspfad (URL)';
-$lang['cookiedir']             = 'Cookiepfad. Frei lassen, um den gleichen Pfad wie "baseurl" zu benutzen.';
 $lang['savedir']               = 'Speicherverzeichnis';
+$lang['cookiedir']             = 'Cookiepfad. Frei lassen, um den gleichen Pfad wie "baseurl" zu benutzen.';
 $lang['start']                 = 'Startseitenname';
 $lang['title']                 = 'Titel des Wikis';
 $lang['template']              = 'Designvorlage (Template)';
@@ -122,6 +124,13 @@ $lang['jpg_quality']           = 'JPEG Kompressionsqualität (0-100)';
 $lang['subscribers']           = 'E-Mail-Abos zulassen';
 $lang['subscribe_time']        = 'Zeit nach der Zusammenfassungs- und Änderungslisten-E-Mails verschickt werden; Dieser Wert sollte kleiner als die in recent_days konfigurierte Zeit sein.';
 $lang['compress']              = 'JavaScript und Stylesheets komprimieren';
+$lang['cssdatauri']            = 'Oberer Grenzwert in Bytes für Dateigrössen. Im CSS referenzierte Bilddateien unter diesem Grenzwert werden direkt ins Stylesheet eingebettet um den "HTTP request header overload" zu reduzieren.
+Diese Technik funktioniert nicht im Internet Explorer 7 und älter!
+
+Empfohlene Einstellung: <code>400</code> to <code>600</code> Bytes.
+Setzen Sie die Einstellung auf <code>0</code> um die Funktion zu deaktivieren.
+
+ ';
 $lang['hidepages']             = 'Seiten verstecken (Regulärer Ausdruck)';
 $lang['send404']               = 'Bei nicht vorhandenen Seiten mit 404 Fehlercode antworten';
 $lang['sitemap']               = 'Google Sitemap erzeugen (Tage)';
diff --git a/lib/plugins/config/lang/el/lang.php b/lib/plugins/config/lang/el/lang.php
index ed7af0ff4d911e8ff49e7c56a8b371433224311d..9f5d121de6405d30054bdaa0790c9a549a52c31e 100644
--- a/lib/plugins/config/lang/el/lang.php
+++ b/lib/plugins/config/lang/el/lang.php
@@ -11,6 +11,7 @@
  * @author Αθανάσιος Νταής <homunculus@wana.gr>
  * @author Konstantinos Koryllos <koryllos@gmail.com>
  * @author George Petsagourakis <petsagouris@gmail.com>
+ * @author Petros Vidalis <pvidalis@gmail.com>
  */
 $lang['menu']                  = 'Ρυθμίσεις';
 $lang['error']                 = 'Οι ρυθμίσεις σας δεν έγιναν δεκτές λόγω λανθασμένης τιμής κάποιας ρύθμισης. Διορθώστε την λάθος τιμή και προσπαθήστε ξανά.
@@ -46,6 +47,7 @@ $lang['lang']                  = 'Γλώσσα';
 $lang['basedir']               = 'Αρχικός Φάκελος';
 $lang['baseurl']               = 'Αρχικό URL';
 $lang['savedir']               = 'Φάκελος για την αποθήκευση δεδομένων';
+$lang['cookiedir']             = 'Διαδρομή cookie. Αφήστε την κενή για την χρησιμοποίηση της αρχικής URL.';
 $lang['start']                 = 'Ονομασία αρχικής σελίδας';
 $lang['title']                 = 'Τίτλος Wiki';
 $lang['template']              = 'Πρότυπο προβολής';
@@ -116,6 +118,7 @@ $lang['jpg_quality']           = 'Ποιότητα συμπίεσης JPG (0-100
 $lang['subscribers']           = 'Να επιτρέπεται η εγγραφή στην ενημέρωση αλλαγών σελίδας';
 $lang['subscribe_time']        = 'Χρόνος μετά τον οποίο οι λίστες ειδοποιήσεων και τα συνοπτικά θα αποστέλλονται (δευτερόλεπτα). Αυτό θα πρέπει να είναι μικρότερο από τον χρόνο που έχει η ρύθμιση recent_days.';
 $lang['compress']              = 'Συμπίεση αρχείων CSS και javascript';
+$lang['cssdatauri']            = 'Το μέγεθος σε bytes στο οποίο οι εικόνες που αναφέρονται σε CSS αρχεία θα πρέπει να είναι ενσωματωμένες για τη μείωση των απαιτήσεων μιας κεφαλίδας αίτησης HTTP . Αυτή η τεχνική δεν θα λειτουργήσει σε IE <8! <code> 400 </ code> με <code> 600 </ code> bytes είναι μια καλή τιμή. Ορίστε την τιμή <code> 0 </ code> για να το απενεργοποιήσετε.';
 $lang['hidepages']             = 'Φίλτρο απόκρυψης σελίδων (regular expressions)';
 $lang['send404']               = 'Αποστολή "HTTP 404/Page Not Found" για σελίδες που δεν υπάρχουν';
 $lang['sitemap']               = 'Δημιουργία Google sitemap (ημέρες)';
diff --git a/lib/plugins/config/lang/en/lang.php b/lib/plugins/config/lang/en/lang.php
index 8609e278f8e858520598109ebe44ecde0420a51e..380f2fd1d98c3e0333f28c12dd68976c11b75737 100644
--- a/lib/plugins/config/lang/en/lang.php
+++ b/lib/plugins/config/lang/en/lang.php
@@ -134,7 +134,7 @@ $lang['jpg_quality'] = 'JPG compression quality (0-100)';
 $lang['subscribers'] = 'Enable page subscription support';
 $lang['subscribe_time'] = 'Time after which subscription lists and digests are sent (sec); This should be smaller than the time specified in recent_days.';
 $lang['compress']    = 'Compact CSS and javascript output';
-$lang['cssdatauri']  = 'Size in bytes up to which images referenced in CSS files should be embedded right into the stylesheet to reduce HTTP request header overhead. This technique won\'t work in IE < 8! <code>400</code> to <code>600</code> bytes is a good value. Set <code>0</code> to disable.';
+$lang['cssdatauri']  = 'Size in bytes up to which images referenced in CSS files should be embedded right into the stylesheet to reduce HTTP request header overhead. This technique won\'t work in IE 7 and below! <code>400</code> to <code>600</code> bytes is a good value. Set <code>0</code> to disable.';
 $lang['hidepages']   = 'Hide matching pages (regular expressions)';
 $lang['send404']     = 'Send "HTTP 404/Page Not Found" for non existing pages';
 $lang['sitemap']     = 'Generate Google sitemap (days)';
diff --git a/lib/plugins/config/lang/eo/intro.txt b/lib/plugins/config/lang/eo/intro.txt
index 641f68d9f18e682c3a5341706ab8a89af15d45c8..c717d9a4d260b6d64261c5b96cad3e5b754012b1 100644
--- a/lib/plugins/config/lang/eo/intro.txt
+++ b/lib/plugins/config/lang/eo/intro.txt
@@ -1,6 +1,6 @@
 ====== Administrilo de Agordoj ======
 
-Uzu tiun ĉi paĝon por kontroli la difinojn de via DokuWiki-instalo. Por helpo pri specifaj difinoj aliru al [[doku>config]]. Por pli detaloj pri tiu ĉi kromaĵo, vidu [[doku>plugin:config]].
+Uzu tiun ĉi paĝon por kontroli la difinojn de via DokuWiki-instalo. Por helpo pri specifaj difinoj aliru al [[doku&gt;config]]. Por pli detaloj pri tiu ĉi kromaĵo, vidu [[doku&gt;plugin:config]].
 
 Difinoj montrataj kun hela ruĝa fono estas protektitaj kaj ne povas esti modifataj per tiu ĉi kromaĵo. Difinoj kun blua fono estas aprioraj valoroj kaj difinoj montrataj kun blanka fono estis iam difinataj por tiu ĉi specifa instalo. Ambaŭ blua kaj blanka difinoj povas esti modifataj.
 
diff --git a/lib/plugins/config/lang/eo/lang.php b/lib/plugins/config/lang/eo/lang.php
index 8a9ee3840c222928d07a87eb8dd514d561728d6d..b0411ec141b48a5d17bffd88a3e251e9edcf24df 100644
--- a/lib/plugins/config/lang/eo/lang.php
+++ b/lib/plugins/config/lang/eo/lang.php
@@ -11,13 +11,14 @@
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Robert Bogenschneider <robog@GMX.de>
  * @author Robert BOGENSCHNEIDER <robog@gmx.de>
+ * @author Robert BOGENSCHNEIDER <bogi@UEA.org>
  */
 $lang['menu']                  = 'Agordaj Difinoj';
-$lang['error']                 = 'La difinoj ne estas ĝisdatigitaj pro malvalida valoro: kompleze reviziu viajn ŝanĝojn kaj resubmetu ilin.
-<br />La malkorekta(j) valoro(j) estas ĉirkaŭita(j) de ruĝa kadro.';
+$lang['error']                 = 'La difinoj ne estas ĝisdatigitaj pro malvalida valoro: bonvolu revizii viajn ŝanĝojn kaj resubmeti ilin.
+&lt;br /&gt;La malkorekta(j) valoro(j) estas ĉirkaŭita(j) de ruĝa kadro.';
 $lang['updated']               = 'La difinoj estis sukcese ĝisdatigitaj.';
 $lang['nochoice']              = '(neniu alia elekto disponeblas)';
-$lang['locked']                = 'La difin-dosiero ne povas esti ĝisdatigita; se tio ne estas intenca, <br /> certiĝu, ke la dosieroj de lokaj difinoj havas korektajn nomojn kaj permesojn.';
+$lang['locked']                = 'La difin-dosiero ne povas esti ĝisdatigita; se tio ne estas intenca, &lt;br /&gt; certiĝu, ke la dosieroj de lokaj difinoj havas korektajn nomojn kaj permesojn.';
 $lang['danger']                = 'Danĝero: ŝanĝo tiun opcion povus igi vian vikion kaj la agordan menuon neatingebla.';
 $lang['warning']               = 'Averto: ŝanĝi tiun opcion povus rezulti en neatendita konduto.';
 $lang['security']              = 'Sekureca averto: ŝanĝi tiun opcion povus krei sekurecan riskon.';
@@ -46,6 +47,7 @@ $lang['lang']                  = 'Lingvo';
 $lang['basedir']               = 'Baza dosierujo';
 $lang['baseurl']               = 'Baza URL';
 $lang['savedir']               = 'Dosierujo por konservi datenaron';
+$lang['cookiedir']             = 'Kuketopado. Lasu malplena por uzi baseurl.';
 $lang['start']                 = 'Nomo de la hejmpaĝo';
 $lang['title']                 = 'Titolo de la vikio';
 $lang['template']              = 'Åœablono';
@@ -57,7 +59,7 @@ $lang['youarehere']            = 'Hierarkiaj paderoj';
 $lang['typography']            = 'Fari tipografiajn anstataÅ­igojn';
 $lang['htmlok']                = 'Ebligi enmeton de HTML-aĵoj';
 $lang['phpok']                 = 'Ebligi enmeton de PHP-aĵoj';
-$lang['dformat']               = 'Formato de datoj (vidu la PHP-an funkcion <a href="http://www.php.net/strftime">strftime</a>)';
+$lang['dformat']               = 'Formato de datoj (vidu la PHP-an funkcion &lt;a href=&quot;http://www.php.net/strftime&quot;&gt;strftime&lt;/a&gt;)';
 $lang['signature']             = 'Subskribo';
 $lang['toptoclevel']           = 'Supera nivelo por la enhavtabelo';
 $lang['tocminheads']           = 'Minimuma kvanto da ĉeftitoloj, kiu difinas ĉu la TOC estas kreita.';
@@ -68,10 +70,10 @@ $lang['deaccent']              = 'Netaj paĝnomoj';
 $lang['useheading']            = 'Uzi unuan titolon por paĝnomoj';
 $lang['refcheck']              = 'Kontrolo por referencoj al aŭdvidaĵoj';
 $lang['refshow']               = 'Nombro da referencoj al aŭdvidaĵoj por montri';
-$lang['allowdebug']            = 'Ebligi kodumpurigadon <b>malebligu se ne necese!</b>';
+$lang['allowdebug']            = 'Ebligi kodumpurigadon &lt;b&gt;malebligu se ne necese!&lt;/b&gt;';
 $lang['usewordblock']          = 'Bloki spamon surbaze de vortlisto';
-$lang['indexdelay']            = 'Prokrasto antaÅ­ ol indeksi (sek.)';
-$lang['relnofollow']           = 'Uzi rel="nofollow" kun eksteraj ligiloj';
+$lang['indexdelay']            = 'Prokrasto antaÅ­ ol indeksi (en sekundoj)';
+$lang['relnofollow']           = 'Uzi rel=&quot;nofollow&quot; kun eksteraj ligiloj';
 $lang['mailguard']             = 'Nebuligi retadresojn';
 $lang['iexssprotect']          = 'Ekzameni elŝutaĵojn kontraŭ eblaj malicaj ĴavaSkripto aŭ HTML-a kodumaĵo';
 $lang['showuseras']            = 'Kion montrigi dum indiko al la uzanto kiu laste redaktis paĝon.';
@@ -103,26 +105,28 @@ $lang['fnencode']              = 'Kodiga metodo por ne-ASCII-aj dosiernomoj.';
 $lang['autoplural']            = 'Kontroli pluralajn formojn en ligiloj';
 $lang['compression']           = 'Kompaktigmetodo por arkivaj dosieroj';
 $lang['cachetime']             = 'Maksimuma aĝo por provizmemoro (sek.)';
-$lang['locktime']              = 'Maksimuma aĝo por serurdosierojn (sek.)';
-$lang['fetchsize']             = 'Maksimuma grandeco (bitokoj) permesita al "fetch.php" elŝuti el ekstere';
+$lang['locktime']              = 'Maksimuma aĝo por serurdosieroj (sek.)';
+$lang['fetchsize']             = 'Maksimuma grandeco (bitokoj), kiun fetch.php rajtas elŝuti el ekstere';
 $lang['notify']                = 'Sendi avizojn pri ŝanĝoj al tiu ĉi retadreso';
-$lang['registernotify']        = 'Sendi informon pri ĵus aliĝintoj al tiu ĉi retadreso';
+$lang['registernotify']        = 'Sendi informon pri ĵusaj aliĝintoj al tiu ĉi retadreso';
 $lang['mailfrom']              = 'Retadreso uzota por aŭtomataj retmesaĝoj ';
 $lang['mailprefix']            = 'Retpoŝta temo-prefikso por uzi en aŭtomataj mesaĝoj';
-$lang['gzip_output']           = 'Uzi gzip-a enhav-enkodigo por XHTML';
-$lang['gdlib']                 = 'Versio de GD Lib';
+$lang['gzip_output']           = 'Uzi gzip-an enhav-enkodigon por XHTML';
+$lang['gdlib']                 = 'Versio de GD-Lib';
 $lang['im_convert']            = 'Pado al la konvertilo de ImageMagick';
 $lang['jpg_quality']           = 'Kompaktiga kvalito de JPG (0-100)';
 $lang['subscribers']           = 'Ebligi subtenon de avizoj pri ŝanĝoj sur paĝoj';
 $lang['subscribe_time']        = 'Tempo, post kiu abonlistoj kaj kolektaĵoj sendiĝas (sek); Tio estu pli malgranda ol la tempo indikita en recent_days.';
 $lang['compress']              = 'Kompaktigi CSS-ajn kaj ĵavaskriptajn elmetojn';
+$lang['cssdatauri']            = 'Grandeco en bitokoj, ĝis kiom en CSS-dosieroj referencitaj bildoj estu enmetataj rekte en la stilfolion por malgrandigi vanan HTTP-kapan trafikon. Tiu tekniko ne funkcias en IE 7 aŭ pli frua!
+&lt;code&gt;400&lt;/code&gt; ĝis &lt;code&gt;600&lt;/code&gt; bitokoj estas bona grandeco. Indiku &lt;code&gt;0&lt;/code&gt; por malebligi enmeton.';
 $lang['hidepages']             = 'Kaŝi kongruantajn paĝojn (laŭ regulaj esprimoj)';
-$lang['send404']               = 'Sendi la mesaĝon "HTTP 404/Ne Trovita Paĝo" por ne ekzistantaj paĝoj';
-$lang['sitemap']               = 'Krei Guglan paĝarmapon "sitemap" (po kiom tagoj)';
-$lang['broken_iua']            = 'Ĉu la funkcio "ignore_user_abort" difektas en via sistemo? Tio povus misfunkciigi la serĉindekson. IIS+PHP/CGI estas konata kiel fuŝaĵo. Vidu <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Cimon 852</a> por pli da informoj.';
-$lang['xsendfile']             = 'Ĉu oni uzu la kaplinion X-Sendfile por ebligi al la retservilo liveri fiksajn dosierojn? Via retservilo bezonus subteni tion.';
+$lang['send404']               = 'Sendi la mesaĝon &quot;HTTP 404/Paĝo ne trovita&quot; por ne ekzistantaj paĝoj';
+$lang['sitemap']               = 'Krei Guglan paĝarmapon &quot;sitemap&quot; (po kiom tagoj)';
+$lang['broken_iua']            = 'Ĉu la funkcio &quot;ignore_user_abort&quot; difektas en via sistemo? Tio povus misfunkciigi la serĉindekson. IIS+PHP/CGI estas konata kiel fuŝaĵo. Vidu &lt;a href=&quot;http://bugs.splitbrain.org/?do=details&amp;task_id=852&quot;&gt;Cimon 852&lt;/a&gt; por pli da informoj.';
+$lang['xsendfile']             = 'Ĉu uzi la kaplinion X-Sendfile por ebligi al la retservilo liveri fiksajn dosierojn? Via retservilo bezonus subteni tion.';
 $lang['renderer_xhtml']        = 'Prezentilo por la ĉefa vikia rezulto (xhtml)';
-$lang['renderer__core']        = '%s (DokuWiki-a nukleo)';
+$lang['renderer__core']        = '%s (DokuWiki-a kerno)';
 $lang['renderer__plugin']      = '%s (kromaĵo)';
 $lang['rememberme']            = 'Permesi longdaÅ­ran ensalutajn kuketojn (rememoru min)';
 $lang['rss_type']              = 'XML-a tipo de novaĵ-fluo';
@@ -131,16 +135,16 @@ $lang['rss_content']           = 'Kion montri en la XML-aj novaĵ-flueroj?';
 $lang['rss_update']            = 'Intertempo por ĝisdatigi XML-an novaĵ-fluon (sek.)';
 $lang['recent_days']           = 'Kiom da freŝaj ŝanĝoj por teni (tagoj)';
 $lang['rss_show_summary']      = 'XML-a novaĵ-fluo montras resumon en la titolo';
-$lang['target____wiki']        = 'Parametro "target" (celo) por internaj ligiloj';
-$lang['target____interwiki']   = 'Parametro "target" (celo) por intervikiaj ligiloj';
-$lang['target____extern']      = 'Parametro "target" (celo) por eksteraj ligiloj';
-$lang['target____media']       = 'Parametro "target" (celo) por aŭdvidaĵaj ligiloj';
-$lang['target____windows']     = 'Parametro "target" (celo) por Vindozaj ligiloj';
-$lang['proxy____host']         = 'Retservilnomo de la "Proxy"';
-$lang['proxy____port']         = 'Pordo ĉe la "Proxy"';
-$lang['proxy____user']         = 'Uzantonomo ĉe la "Proxy"';
-$lang['proxy____pass']         = 'Pasvorto ĉe la "Proxy"';
-$lang['proxy____ssl']          = 'Uzi SSL por konekti al la "Proxy"';
+$lang['target____wiki']        = 'Parametro &quot;target&quot; (celo) por internaj ligiloj';
+$lang['target____interwiki']   = 'Parametro &quot;target&quot; (celo) por intervikiaj ligiloj';
+$lang['target____extern']      = 'Parametro &quot;target&quot; (celo) por eksteraj ligiloj';
+$lang['target____media']       = 'Parametro &quot;target&quot; (celo) por aŭdvidaĵaj ligiloj';
+$lang['target____windows']     = 'Parametro &quot;target&quot; (celo) por Vindozaj ligiloj';
+$lang['proxy____host']         = 'Retservilnomo de la &quot;Proxy&quot;';
+$lang['proxy____port']         = 'Pordo ĉe la &quot;Proxy&quot;';
+$lang['proxy____user']         = 'Uzantonomo ĉe la &quot;Proxy&quot;';
+$lang['proxy____pass']         = 'Pasvorto ĉe la &quot;Proxy&quot;';
+$lang['proxy____ssl']          = 'Uzi SSL por konekti al la &quot;Proxy&quot;';
 $lang['proxy____except']       = 'Regula esprimo por URL-oj, kiujn la servilo preterrigardu.';
 $lang['safemodehack']          = 'Ebligi sekuran modon';
 $lang['ftp____host']           = 'FTP-a servilo por sekura modo';
@@ -158,7 +162,7 @@ $lang['userewrite_o_2']        = 'Interne de DokuWiki';
 $lang['deaccent_o_0']          = 'ne';
 $lang['deaccent_o_1']          = 'forigi supersignojn';
 $lang['deaccent_o_2']          = 'latinigi';
-$lang['gdlib_o_0']             = 'GD Lib ne disponiĝas';
+$lang['gdlib_o_0']             = 'GD-Lib ne disponeblas';
 $lang['gdlib_o_1']             = 'Versio 1.x';
 $lang['gdlib_o_2']             = 'AÅ­tomata detekto';
 $lang['rss_type_o_rss']        = 'RSS 0.91';
@@ -167,8 +171,8 @@ $lang['rss_type_o_rss2']       = 'RSS 2.0';
 $lang['rss_type_o_atom']       = 'Atom 0.3';
 $lang['rss_type_o_atom1']      = 'Atom 1.0';
 $lang['rss_content_o_abstract'] = 'Resumo';
-$lang['rss_content_o_diff']    = 'Unuigita "Diff"';
-$lang['rss_content_o_htmldiff'] = '"Diff" tabelo formatita laÅ­ HTML';
+$lang['rss_content_o_diff']    = 'Unuigita &quot;Diff&quot;';
+$lang['rss_content_o_htmldiff'] = '&quot;Diff&quot;-tabelo formatita laÅ­ HTML';
 $lang['rss_content_o_html']    = 'Enhavo laŭ kompleta HTML-paĝo';
 $lang['rss_linkto_o_diff']     = 'diferenca rigardo';
 $lang['rss_linkto_o_page']     = 'la reviziita paĝo';
@@ -178,13 +182,13 @@ $lang['compression_o_0']       = 'nenio';
 $lang['compression_o_gz']      = 'gzip';
 $lang['compression_o_bz2']     = 'bz2';
 $lang['xsendfile_o_0']         = 'ne uzi';
-$lang['xsendfile_o_1']         = 'Propra kaplinio "lighttpd" (antaŭ lanĉo 1.5)';
+$lang['xsendfile_o_1']         = 'Propra kaplinio &quot;lighttpd&quot; (antaÅ­ versio 1.5)';
 $lang['xsendfile_o_2']         = 'Ordinara kaplinio X-Sendfile';
 $lang['xsendfile_o_3']         = 'Propra kaplinio Nginx X-Accel-Redirect';
 $lang['showuseras_o_loginname'] = 'Ensalut-nomo';
 $lang['showuseras_o_username'] = 'Kompleta nomo de uzanto';
-$lang['showuseras_o_email']    = 'Retadreso de uzanto (sekur-montrita laÅ­ agordo de \'mailguard\')';
-$lang['showuseras_o_email_link'] = 'Retadreso de uzanto kiel ligilo \'mailto:\'';
+$lang['showuseras_o_email']    = 'Retadreso de uzanto (sekur-montrita laÅ­ agordo de mailguard)';
+$lang['showuseras_o_email_link'] = 'Retadreso de uzanto kiel mailto:-ligilo';
 $lang['useheading_o_0']        = 'Neniam';
 $lang['useheading_o_navigation'] = 'Nur foliumado';
 $lang['useheading_o_content']  = 'Nur vikia enhavo';
diff --git a/lib/plugins/config/lang/es/lang.php b/lib/plugins/config/lang/es/lang.php
index ccb963ff1a46541d8bd561c3817ebcd13c45fdcd..1189a678138f0914bbe8fb3e3643c63df7c2bb1d 100644
--- a/lib/plugins/config/lang/es/lang.php
+++ b/lib/plugins/config/lang/es/lang.php
@@ -21,6 +21,7 @@
  * @author Mauro Javier Giamberardino <mgiamberardino@gmail.com>
  * @author emezeta <emezeta@infoprimo.com>
  * @author Oscar Ciudad <oscar@jacho.net>
+ * @author Ruben Figols <ruben.figols@gmail.com>
  */
 $lang['menu']                  = 'Parámetros de configuración';
 $lang['error']                 = 'Los parámetros no han sido actualizados a causa de un valor inválido, por favor revise los cambios y re-envíe el formulario. <br /> Los valores incorrectos se mostrarán con un marco rojo alrededor.';
@@ -55,6 +56,7 @@ $lang['lang']                  = 'Idioma';
 $lang['basedir']               = 'Directorio de base';
 $lang['baseurl']               = 'URL de base';
 $lang['savedir']               = 'Directorio para guardar los datos';
+$lang['cookiedir']             = 'Ruta para las Cookie. Dejar en blanco para usar la ruta básica.';
 $lang['start']                 = 'Nombre de la página inicial';
 $lang['title']                 = 'Título del wiki';
 $lang['template']              = 'Plantilla';
diff --git a/lib/plugins/config/lang/fi/lang.php b/lib/plugins/config/lang/fi/lang.php
index 0e9bad0307897ac6943281fe12e8ae2453d3aab1..9598a0d930e61c12b938565ffeb74c99f9a8e03d 100644
--- a/lib/plugins/config/lang/fi/lang.php
+++ b/lib/plugins/config/lang/fi/lang.php
@@ -42,6 +42,7 @@ $lang['lang']                  = 'Kieli';
 $lang['basedir']               = 'Perushakemisto';
 $lang['baseurl']               = 'Perus URL';
 $lang['savedir']               = 'Hakemisto tietojen tallennukseen.';
+$lang['cookiedir']             = 'Cookien path. Jätä tyhjäksi käyttääksesi baseurl arvoa';
 $lang['start']                 = 'Alkusivun nimi';
 $lang['title']                 = 'Wikin nimi';
 $lang['template']              = 'Sivumalli';
diff --git a/lib/plugins/config/lang/fr/lang.php b/lib/plugins/config/lang/fr/lang.php
index 1de255b408a3a9e96d45ee2839517d82aad22ef0..8f669a629d90ac9c56109ab50643f2635911c2af 100644
--- a/lib/plugins/config/lang/fr/lang.php
+++ b/lib/plugins/config/lang/fr/lang.php
@@ -3,10 +3,9 @@
  * french language file
  *
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Guy Brand <gb@isis.u-strasbg.fr>
+ * @author Guy Brand <gb@unistra.fr>
  * @author Delassaux Julien <julien@delassaux.fr>
  * @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
- * @author gb@isis.u-strasbg.fr
  * @author stephane.gully@gmail.com
  * @author Guillaume Turri <guillaume.turri@gmail.com>
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
@@ -51,6 +50,7 @@ $lang['lang']                  = 'Langue';
 $lang['basedir']               = 'Répertoire de base (ex. : <code>/dokuwiki/</code>). Laisser vide pour une détection automatique.';
 $lang['baseurl']               = 'URL de base. Laisser vide pour une détection automatique.';
 $lang['savedir']               = 'Répertoire de stockage';
+$lang['cookiedir']             = 'Chemin des cookies. Laissez vide pour utiliser l\'URL de base.';
 $lang['start']                 = 'Nom de la page d\'accueil';
 $lang['title']                 = 'Titre du wiki';
 $lang['template']              = 'Modèle';
diff --git a/lib/plugins/config/lang/nl/lang.php b/lib/plugins/config/lang/nl/lang.php
index bf1ce46c125cf33a4e8a0031e4107c7237a72d10..f6574ee2c6813dd05443a5586aa6e302d8a6f575 100644
--- a/lib/plugins/config/lang/nl/lang.php
+++ b/lib/plugins/config/lang/nl/lang.php
@@ -13,6 +13,7 @@
  * @author Matthias Carchon webmaster@c-mattic.be
  * @author Marijn Hofstra <hofstra.m@gmail.com>
  * @author Timon Van Overveldt <timonvo@gmail.com>
+ * @author Jeroen
  */
 $lang['menu']                  = 'Configuratie-instellingen';
 $lang['error']                 = 'De instellingen zijn niet gewijzigd wegens een incorrecte waarde, kijk je wijzigingen na en sla dan opnieuw op.<br />Je kunt de incorrecte waarde(s) herkennen aan de rode rand.';
@@ -47,6 +48,7 @@ $lang['lang']                  = 'Taal';
 $lang['basedir']               = 'Basisdirectory';
 $lang['baseurl']               = 'Basis-URL';
 $lang['savedir']               = 'Directory om data op te slaan';
+$lang['cookiedir']             = 'Cookie pad. Laat leeg om de basis URL te gebruiken.';
 $lang['start']                 = 'Naam startpagina';
 $lang['title']                 = 'Titel van de wiki';
 $lang['template']              = 'Sjabloon';
diff --git a/lib/plugins/config/lang/no/lang.php b/lib/plugins/config/lang/no/lang.php
index 6ac765cbf10231893fbd1a28970c3307c4294591..3c489014984d501b42ee8aa292718ce8ceb7abd0 100644
--- a/lib/plugins/config/lang/no/lang.php
+++ b/lib/plugins/config/lang/no/lang.php
@@ -13,6 +13,7 @@
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
  * @author Rune Rasmussen syntaxerror.no@gmail.com
+ * @author Jon Bøe <jonmagneboe@hotmail.com>
  */
 $lang['menu']                  = 'Konfigurasjonsinnstillinger';
 $lang['error']                 = 'Innstillingene ble ikke oppdatert på grunn av en eller flere ugyldig verdier. Vennligst se gjennom endringene og prøv på nytt.
@@ -52,6 +53,7 @@ $lang['lang']                  = 'Språk';
 $lang['basedir']               = 'Grunnkatalog';
 $lang['baseurl']               = 'Grunn-nettadresse';
 $lang['savedir']               = 'Mappe for lagring av data';
+$lang['cookiedir']             = 'Sti for informasjonskapsler. La stå blankt for å bruke grunn-nettadressa.';
 $lang['start']                 = 'Sidenavn på forsiden';
 $lang['title']                 = 'Navn på Wikien';
 $lang['template']              = 'Mal';
@@ -106,6 +108,7 @@ $lang['useslash']              = 'Bruk / som skilletegn mellom navnerom i URLer'
 $lang['usedraft']              = 'Lagre kladd automatisk under redigering';
 $lang['sepchar']               = 'Skilletegn mellom ord i sidenavn';
 $lang['canonical']             = 'Bruk fulle URLer (i stedet for relative)';
+$lang['fnencode']              = 'Metode for å kode ikke-ASCII-filnavn';
 $lang['autoplural']            = 'Se etter flertallsformer i lenker';
 $lang['compression']           = 'Metode for komprimering av gamle filer';
 $lang['cachetime']             = 'Maksimal alder på hurtiglager (sekunder)';
@@ -114,12 +117,15 @@ $lang['fetchsize']             = 'Maksimal størrelse (byter) fetch.php kan last
 $lang['notify']                = 'Send meldinger om endringer denne e-postadressen';
 $lang['registernotify']        = 'Send info om nylig registrerte brukere til denne e-postadressen';
 $lang['mailfrom']              = 'Avsenderadresse for automatiske e-poster';
+$lang['mailprefix']            = 'Prefiks for emne i automatiske e-poster ';
 $lang['gzip_output']           = 'Bruk gzip Content-Encoding for XHTML';
 $lang['gdlib']                 = 'Versjon av libGD';
 $lang['im_convert']            = 'Sti til ImageMagicks konverteringsverktøy';
 $lang['jpg_quality']           = 'JPEG-kvalitet (0-100)';
 $lang['subscribers']           = 'Åpne for abonnement på endringer av en side';
+$lang['subscribe_time']        = 'Hvor lenge det skal gå mellom utsending av e-poster med endringer (i sekunder). Denne verdien bør være mindre enn verdien i recent_days.';
 $lang['compress']              = 'Kompakt CSS og JavaScript';
+$lang['cssdatauri']            = 'Opp til denne størrelsen (i bytes) skal bilder som er vist til i CSS-filer kodes direkte inn i fila for å redusere antall HTTP-forespørsler. Denne teknikken fungerer ikke i IE < 8! Mellom <code>400</code> og <code>600</code> bytes er fornuftige verdier. Bruk <code>0</code> for å skru av funksjonen.';
 $lang['hidepages']             = 'Skjul sider fra automatiske lister (regulære uttrykk)';
 $lang['send404']               = 'Send "HTTP 404/Page Not Found" for ikke-eksisterende sider';
 $lang['sitemap']               = 'Lag Google-sidekart (dager)';
@@ -145,6 +151,7 @@ $lang['proxy____port']         = 'Proxyport';
 $lang['proxy____user']         = 'Brukernavn på proxyserver';
 $lang['proxy____pass']         = 'Passord på proxyserver';
 $lang['proxy____ssl']          = 'Bruk SSL for å koble til proxyserver';
+$lang['proxy____except']       = 'Regulært uttrykk for URLer som ikke trenger en proxy.';
 $lang['safemodehack']          = 'Bruk safemode-hack';
 $lang['ftp____host']           = 'FTP-server for safemode-hack';
 $lang['ftp____port']           = 'FTP-port for safemode-hack';
@@ -192,3 +199,4 @@ $lang['useheading_o_0']        = 'Aldri';
 $lang['useheading_o_navigation'] = 'Kun navigering';
 $lang['useheading_o_content']  = 'Kun wiki-innhold';
 $lang['useheading_o_1']        = 'Alltid';
+$lang['readdircache']          = 'Maksimal alder for mellomlagring av mappa med søkeindekser (sekunder)';
diff --git a/lib/plugins/config/lang/pt-br/lang.php b/lib/plugins/config/lang/pt-br/lang.php
index 9e5798e30eedb07be4a97dfb50c8c6b98cf9008e..093e60ff808bf01bf13438fe3c8b63605b93867a 100644
--- a/lib/plugins/config/lang/pt-br/lang.php
+++ b/lib/plugins/config/lang/pt-br/lang.php
@@ -15,6 +15,7 @@
  * @author Luis Dantas <luisdantas@gmail.com>
  * @author Sergio Motta sergio@cisne.com.br
  * @author Isaias Masiero Filho <masiero@masiero.org>
+ * @author Balaco Baco <balacobaco@imap.cc>
  */
 $lang['menu']                  = 'Configurações do DokuWiki';
 $lang['error']                 = 'As configurações não foram atualizadas devido a um valor inválido. Por favor, reveja suas alterações e reenvie-as.<br />O(s) valor(es) incorreto(s) serão exibidos contornados por uma borda vermelha.';
@@ -51,6 +52,7 @@ $lang['lang']                  = 'Idioma';
 $lang['basedir']               = 'Diretório base';
 $lang['baseurl']               = 'URL base';
 $lang['savedir']               = 'Diretório para salvar os dados';
+$lang['cookiedir']             = 'Caminhos dos cookies. Deixe em branco para usar a url base.';
 $lang['start']                 = 'Nome da página inicial';
 $lang['title']                 = 'Título do wiki';
 $lang['template']              = 'Modelo';
@@ -121,6 +123,7 @@ $lang['jpg_quality']           = 'Qualidade de compressão do JPG (0-100)';
 $lang['subscribers']           = 'Habilitar o suporte ao monitoramento de páginas';
 $lang['subscribe_time']        = 'Tempo de espera antes do envio das listas e mensagens de monitoramento (segundos); este tempo deve ser menor que o especificado no parâmetro recent_days';
 $lang['compress']              = 'Compactar as saídas de CSS e JavaScript';
+$lang['cssdatauri']            = 'Tamanho máximo em bytes para o qual as imagens referenciadas em arquivos CSS devam ser incorporadas na folha de estilos (o arquivo CSS) para reduzir o custo dos pedidos HTTP. Essa técnica não funcionará na versões do IE < 8!  Valores de <code>400</code> a <code>600</code> são bons. Defina o valor <code>0</code> para desativar.';
 $lang['hidepages']             = 'Esconder páginas correspondentes (expressão regular)';
 $lang['send404']               = 'Enviar "HTTP 404/Página não encontrada" para páginas não existentes';
 $lang['sitemap']               = 'Gerar Google Sitemap (dias)';
diff --git a/lib/plugins/config/lang/pt/lang.php b/lib/plugins/config/lang/pt/lang.php
index f4382aa940e83da20b074168d144048268f16568..fe05bd28121df54992cdccef3399e3b47cd32cd2 100644
--- a/lib/plugins/config/lang/pt/lang.php
+++ b/lib/plugins/config/lang/pt/lang.php
@@ -112,7 +112,7 @@ $lang['jpg_quality']           = 'Compressão/Qualidade JPG (0-100)';
 $lang['subscribers']           = 'Habilitar o suporte a subscrição de páginas ';
 $lang['subscribe_time']        = 'Tempo após o qual as listas de subscrição e "digests" são enviados (seg.); Isto deve ser inferior ao tempo especificado em recent_days.';
 $lang['compress']              = 'Compactar as saídas de CSS e JavaScript';
-$lang['cssdatauri']            = 'Tamanho em bytes até ao qual as imagens referenciadas em ficheiros CSS devem ser embutidas diretamente no CSS para reduzir a carga de pedidos HTTP extra. Esta técnica não funciona em IE < 8! <code>400</code> a <code>600</code> bytes é um bom valor. Escolher <code>0</code> para desativar.';
+$lang['cssdatauri']            = 'Tamanho em bytes até ao qual as imagens referenciadas em ficheiros CSS devem ser embutidas diretamente no CSS para reduzir a carga de pedidos HTTP extra. Esta técnica não funciona em IE 7 e abaixo! <code>400</code> a <code>600</code> bytes é um bom valor. Escolher <code>0</code> para desativar.';
 $lang['hidepages']             = 'Esconder páginas correspondentes (expressões regulares)';
 $lang['send404']               = 'Enviar "HTTP 404/Página não encontrada" para páginas não existentes';
 $lang['sitemap']               = 'Gerar Sitemap Google (dias)';
diff --git a/lib/plugins/config/lang/ro/lang.php b/lib/plugins/config/lang/ro/lang.php
index 8ea9239139fd79dc585bf92c61a67c2d6664da6c..6b0a0e91af3423c235d5ef82712550e32307aa69 100644
--- a/lib/plugins/config/lang/ro/lang.php
+++ b/lib/plugins/config/lang/ro/lang.php
@@ -8,6 +8,7 @@
  * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
  * @author Emanuel-Emeric AndraÅŸi <em.andrasi@mandrivausers.ro>
  * @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
+ * @author Marius OLAR <olarmariusalex@gmail.com>
  */
 $lang['menu']                  = 'Setări de Configurare';
 $lang['error']                 = 'Setări nu au fost actualizate datorită unei valori incorecte; verificaţi modificările şi încercaţi din nou. <br /> Valorile incorecte vor apărea într-un chenar roşu.';
@@ -42,6 +43,7 @@ $lang['lang']                  = 'Limbă';
 $lang['basedir']               = 'Director bază';
 $lang['baseurl']               = 'URL bază ';
 $lang['savedir']               = 'Director pentru salvarea datelor';
+$lang['cookiedir']             = 'Cale Cookie. Lăsați gol pentru a utiliza baseurl.';
 $lang['start']                 = 'Numele paginii de start';
 $lang['title']                 = 'Titlul wiki';
 $lang['template']              = 'Åžablon';
@@ -112,6 +114,7 @@ $lang['jpg_quality']           = 'Calitatea compresiei JPG (0-100)';
 $lang['subscribers']           = 'Activează suportul pentru subscrierea paginii';
 $lang['subscribe_time']        = 'Timpul după care lista de abonare şi digestie sunt trimise (sec); Aceasta ar trebui să fie mai mic decât timpul specificat în recent_days.';
 $lang['compress']              = 'Compactează codul CSS şi javascript produs';
+$lang['cssdatauri']            = 'Dimensiunea în octeți până la care imaginile regasite în fișierele CSS ar trebui să fie incluse direct în stylesheet pentru a reduce supraîncărcarea antetului cererii HTTP. Această tehnică nu va funcționa în IE < 8! <code>400</code> până la <code>600</code> octeți sunt suficienți. Introduceți <code>0</code> pentru a dezactiva această opțiune.';
 $lang['hidepages']             = 'Ascunde paginile pereche (expresii regulate)';
 $lang['send404']               = 'Trimite mesajul "HTTP 404/Page Not Found" pentru paginile inexistente';
 $lang['sitemap']               = 'Generează Google sitemap (zile)';
diff --git a/lib/plugins/config/lang/sk/lang.php b/lib/plugins/config/lang/sk/lang.php
index 79f54dc4d156a751c330d9ad4987467ae3bc871e..72ce10775b1cb5ad19fbdc6ed08b3b0adb43876c 100644
--- a/lib/plugins/config/lang/sk/lang.php
+++ b/lib/plugins/config/lang/sk/lang.php
@@ -37,9 +37,10 @@ $lang['_msg_setting_no_default'] = 'Žiadna predvolená hodnota.';
 $lang['fmode']                 = 'Spôsob vytvárania súborov';
 $lang['dmode']                 = 'Spôsob vytvárania adresárov';
 $lang['lang']                  = 'Jazyk';
-$lang['basedir']               = 'Základný adresár';
-$lang['baseurl']               = 'Základná URL';
+$lang['basedir']               = 'Hlavný adresár (napr. <code>/dokuwiki/</code>). Prázdna hodnota znamená použitie autodetekcie.';
+$lang['baseurl']               = 'Adresa servera (napr. <code>http://www.yourserver.com</code>). Prázdna hodnota znamená použitie autodetekcie.';
 $lang['savedir']               = 'Adresár pre ukladanie dát';
+$lang['cookiedir']             = 'Cesta k cookies. Prázdna hodnota znamená použitie adresy servera.';
 $lang['start']                 = 'Názov štartovacej stránky';
 $lang['title']                 = 'Názov wiki';
 $lang['template']              = 'Šablóna';
@@ -110,6 +111,7 @@ $lang['jpg_quality']           = 'Kvalita JPG kompresie (0-100)';
 $lang['subscribers']           = 'Povoliť podporu informovania o zmenách stránky';
 $lang['subscribe_time']        = 'Časový inteval, po uplynutí ktorého sú zasielané informácie o zmenách stránky alebo menného priestoru (sek); hodnota by mala byť menšia ako čas zadaný pri položke recent_days.';
 $lang['compress']              = 'Komprimovať CSS a javascript výstup';
+$lang['cssdatauri']            = 'Veľkosť v bytoch, do ktorej by mali byť obrázky s odkazom v CSS vložené priamo do štýlu z dôvodu obmedzenia HTTP požiadaviek. Tento postup nefunguje v IE verzie 7 a nižšie! Vhodná hodnota je od <code>400</code> do <code>600</code> bytov. Hodnota <code>0</code> deaktivuje túto metódu.';
 $lang['hidepages']             = 'Skryť zodpovedajúce stránky (regulárne výrazy)';
 $lang['send404']               = 'Poslať "HTTP 404/Page Not Found" pre neexistujúce stránky';
 $lang['sitemap']               = 'Generovať Google sitemap (dni)';
diff --git a/lib/plugins/config/lang/zh/lang.php b/lib/plugins/config/lang/zh/lang.php
index 0aeb977e7ddaef56b647f71eb506fb6298c41fa5..7a7f0f5042e9451f288555cb3653ba91aee79f14 100644
--- a/lib/plugins/config/lang/zh/lang.php
+++ b/lib/plugins/config/lang/zh/lang.php
@@ -13,6 +13,7 @@
  * @author caii <zhoucaiqi@gmail.com>
  * @author Hiphen Lee <jacob.b.leung@gmail.com>
  * @author caii, patent agent in China <zhoucaiqi@gmail.com>
+ * @author lainme993@gmail.com
  */
 $lang['menu']                  = '配置设置';
 $lang['error']                 = '由于非法参数,设置没有更新。请检查您做的改动并重新提交。
@@ -49,6 +50,7 @@ $lang['lang']                  = '语言';
 $lang['basedir']               = '根目录';
 $lang['baseurl']               = '根路径(URL)';
 $lang['savedir']               = '保存数据的目录';
+$lang['cookiedir']             = 'Cookie 路径。留空以使用 baseurl。';
 $lang['start']                 = '开始页面的名称';
 $lang['title']                 = '维基站点的标题';
 $lang['template']              = '模版';
@@ -120,6 +122,7 @@ $lang['subscribers']           = '启用页面订阅支持';
 $lang['subscribe_time']        = '订阅列表和摘要发送的时间间隔(秒);这应当小于指定的最近更改保留时间(recent_days)。
 ';
 $lang['compress']              = '使 CSS 和 javascript 的输出更紧密';
+$lang['cssdatauri']            = '字节数。CSS 文件引用的图片若小于该字节,则被直接嵌入样式表中来减少 HTTP 请求头的开销。这个技术在 IE 中不起作用。<code>400</code> 到 <code>600</code> 字节是不错的值。设置为 <code>0</code> 则禁用。';
 $lang['hidepages']             = '隐藏匹配的界面(正则表达式)';
 $lang['send404']               = '发送 "HTTP 404/页面没有找到" 错误信息给不存在的页面';
 $lang['sitemap']               = '生成 Google sitemap(天)';
diff --git a/lib/plugins/config/settings/config.class.php b/lib/plugins/config/settings/config.class.php
index 54fe2ad9c4e24c7bc2204545fdee552a528be9c9..adf7d217ac442a63506090fb029f9ea4604d90a5 100644
--- a/lib/plugins/config/settings/config.class.php
+++ b/lib/plugins/config/settings/config.class.php
@@ -774,8 +774,8 @@ if (!class_exists('setting_dirchoice')) {
           if ($entry == '.' || $entry == '..') continue;
           if ($this->_pattern && !preg_match($this->_pattern,$entry)) continue;
 
-          $file = (is_link($this->_dir.$entry)) ? readlink($this->_dir.$entry) : $entry;
-          if (is_dir($this->_dir.$file)) $list[] = $entry;
+          $file = (is_link($this->_dir.$entry)) ? readlink($this->_dir.$entry) : $this->_dir.$entry;
+          if (is_dir($file)) $list[] = $entry;
         }
         closedir($dh);
       }
diff --git a/lib/plugins/plugin/lang/de-informal/lang.php b/lib/plugins/plugin/lang/de-informal/lang.php
index 0bd142e23947f70e5af20e8ece9ff6998bffff8b..0c7fb5cdfd13590067037bb410835767f958186a 100644
--- a/lib/plugins/plugin/lang/de-informal/lang.php
+++ b/lib/plugins/plugin/lang/de-informal/lang.php
@@ -7,6 +7,7 @@
  * @author Marcel Metz <marcel_metz@gmx.de>
  * @author Matthias Schulte <post@lupo49.de>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['menu']                  = 'Plugins verwalten';
 $lang['download']              = 'Herunterladen und installieren einer neuen Erweiterung';
diff --git a/lib/plugins/plugin/lang/de/lang.php b/lib/plugins/plugin/lang/de/lang.php
index 6c1bd033cac3a6feee82fcacc015b51a56ec4beb..db39b89d4307d5a7c7684f783422f8b3c16ced58 100644
--- a/lib/plugins/plugin/lang/de/lang.php
+++ b/lib/plugins/plugin/lang/de/lang.php
@@ -16,6 +16,8 @@
  * @author Robert Bogenschneider <robog@gmx.de>
  * @author Niels Lange <niels@boldencursief.nl>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Paul Lachewsky <kaeptn.haddock@gmail.com>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['menu']                  = 'Plugins verwalten';
 $lang['download']              = 'Neues Plugin herunterladen und installieren';
diff --git a/lib/plugins/plugin/lang/el/lang.php b/lib/plugins/plugin/lang/el/lang.php
index d28a04ae2320000637fd5af1f01d1016ef36d95e..bd6dc20137b62d3be1bf569d53c18ebf9834cbea 100644
--- a/lib/plugins/plugin/lang/el/lang.php
+++ b/lib/plugins/plugin/lang/el/lang.php
@@ -11,6 +11,7 @@
  * @author Αθανάσιος Νταής <homunculus@wana.gr>
  * @author Konstantinos Koryllos <koryllos@gmail.com>
  * @author George Petsagourakis <petsagouris@gmail.com>
+ * @author Petros Vidalis <pvidalis@gmail.com>
  */
 $lang['menu']                  = 'Διαχείριση Επεκτάσεων';
 $lang['download']              = 'Κατεβάστε και εγκαταστήστε μια νέα επέκταση (plugin)';
@@ -56,3 +57,4 @@ $lang['enabled']               = 'Η επέκταση %s ενεργοποιήθ
 $lang['notenabled']            = 'Η επέκταση %s δεν μπορεί να ενεργοποιηθεί. Ελέγξτε τα δικαιώματα πρόσβασης.';
 $lang['disabled']              = 'Η επέκταση %s απενεργοποιήθηκε.';
 $lang['notdisabled']           = 'Η επέκταση %s δεν μπορεί να απενεργοποιηθεί. Ελέγξτε τα δικαιώματα πρόσβασης.';
+$lang['packageinstalled']      = 'Το πακέτο της επέκτασης (%d επέκταση(εις): %s) εγκαστήθηκε επιτυχημένα.';
diff --git a/lib/plugins/plugin/lang/eo/admin_plugin.txt b/lib/plugins/plugin/lang/eo/admin_plugin.txt
index c97dddf56ea5c48a725514e8675c76eddefa35e7..8cc59843b0dd5ef80666c3ad57af963d9c62dd7e 100644
--- a/lib/plugins/plugin/lang/eo/admin_plugin.txt
+++ b/lib/plugins/plugin/lang/eo/admin_plugin.txt
@@ -1,3 +1,3 @@
 ====== Administrado de Kromaĵoj ======
 
-En tiu ĉi paĝo vi povas administri ĉion pri DokuWiki-aj [[doku>plugins|kromaĵoj]]. Por sukcesi elŝuti kaj instali kromaĵon, via dosierujo de kromaĵoj devas esti konservebla por la retservilo.
+En tiu ĉi paĝo vi povas administri ĉion pri DokuWiki-aj [[doku&gt;plugins|kromaĵoj]]. Por sukcesi elŝuti kaj instali kromaĵon, via dosierujo de kromaĵoj devas esti konservebla por la retservilo.
diff --git a/lib/plugins/plugin/lang/eo/lang.php b/lib/plugins/plugin/lang/eo/lang.php
index a70bea30c03d1b3473caf423a1bfd436a1b37bc0..ab9af73e19e042a0db2fa06a0045cf2dc24415e8 100644
--- a/lib/plugins/plugin/lang/eo/lang.php
+++ b/lib/plugins/plugin/lang/eo/lang.php
@@ -11,6 +11,7 @@
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Robert Bogenschneider <robog@GMX.de>
  * @author Robert BOGENSCHNEIDER <robog@gmx.de>
+ * @author Robert BOGENSCHNEIDER <bogi@UEA.org>
  */
 $lang['menu']                  = 'Administri Kromaĵojn';
 $lang['download']              = 'Elŝuti kaj instali novan kromaĵon';
@@ -50,9 +51,10 @@ $lang['error_download']        = 'Maleblas elŝuti la kromaĵan dosieron: %s';
 $lang['error_badurl']          = 'Suspektinda malbona URL - maleblas difini la dosieran nomon el la URL';
 $lang['error_dircreate']       = 'Maleblas krei provizoran dosierujon por ricevi elŝutaĵon';
 $lang['error_decompress']      = 'La administrilo de kromaĵoj ne kapablis malkompakti la elŝutitan dosieron. Tio povas esti pro malkompleta elŝuto, tiaokaze vi devus provi refoje; aŭ eble la kompakta formato ne estas konata, tiaokaze vi bezonos elŝuti kaj instali la kromaĵon permane.';
-$lang['error_copy']            = 'Okazis eraro de dosierkopio dum provo instali dosierojn por la kromaĵo <em>%s</em>: la disko povus esti plenplena aŭ aliro-rajtoj povus esti misdifinitaj. Tio povus rezulti en malkomplete instalita kromaĵo kaj igi vian vikion malstabila.';
-$lang['error_delete']          = 'Okazis eraro dum provo forigi la kromaĵon <em>%s</em>. Plejprobable tio sekvas de nesufiĉa rajto por aliri la dosieron aŭ ties ujon.';
+$lang['error_copy']            = 'Okazis eraro de dosierkopio dum provo instali dosierojn por la kromaĵo &lt;em&gt;%s&lt;/em&gt;: la disko povus esti plenplena aŭ aliro-rajtoj povus esti misdifinitaj. Tio povus rezulti en malkomplete instalita kromaĵo kaj igi vian vikion malstabila.';
+$lang['error_delete']          = 'Okazis eraro dum provo forigi la kromaĵon &lt;em&gt;%s&lt;/em&gt;. Plejprobable tio sekvas de nesufiĉa rajto por aliri la dosieron aŭ ties ujon.';
 $lang['enabled']               = 'La kromaĵo %s estas ebligita.';
 $lang['notenabled']            = 'La kromaĵo %s ne povis esti ebligita, kontrolu dosier-permesojn.';
 $lang['disabled']              = 'La kromaĵo %s estas malebligita.';
 $lang['notdisabled']           = 'La kromaĵo %s ne povis esti malebligita, kontrolu dosier-permesojn.';
+$lang['packageinstalled']      = 'Kromaĵa pakaĵo (%d kromaĵo(j): %s) sukcese instalitaj.';
diff --git a/lib/plugins/plugin/lang/es/lang.php b/lib/plugins/plugin/lang/es/lang.php
index 2726a5ffa5c9da277b423cdd22f18708a99b2760..53d6d63fd0821d1eaeddae25d54edaafff72bcae 100644
--- a/lib/plugins/plugin/lang/es/lang.php
+++ b/lib/plugins/plugin/lang/es/lang.php
@@ -21,6 +21,7 @@
  * @author Mauro Javier Giamberardino <mgiamberardino@gmail.com>
  * @author emezeta <emezeta@infoprimo.com>
  * @author Oscar Ciudad <oscar@jacho.net>
+ * @author Ruben Figols <ruben.figols@gmail.com>
  */
 $lang['menu']                  = 'Administración de Plugins';
 $lang['download']              = 'Descargar e instalar un nuevo plugin';
diff --git a/lib/plugins/plugin/lang/fr/lang.php b/lib/plugins/plugin/lang/fr/lang.php
index 0ff26da19fd59abf753763ff589d7546a3eb7088..b86c57b535c63679ad40a56029d43da84ca3129c 100644
--- a/lib/plugins/plugin/lang/fr/lang.php
+++ b/lib/plugins/plugin/lang/fr/lang.php
@@ -3,10 +3,9 @@
  * french language file
  *
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Guy Brand <gb@isis.u-strasbg.fr>
+ * @author Guy Brand <gb@unistra.fr>
  * @author Delassaux Julien <julien@delassaux.fr>
  * @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
- * @author gb@isis.u-strasbg.fr
  * @author stephane.gully@gmail.com
  * @author Guillaume Turri <guillaume.turri@gmail.com>
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
diff --git a/lib/plugins/plugin/lang/nl/lang.php b/lib/plugins/plugin/lang/nl/lang.php
index 66cd7c0a2d1986f10e284a73a8d6d47791e90d02..d13e46ff87fcf1959a4eac3e760619b59ddcd676 100644
--- a/lib/plugins/plugin/lang/nl/lang.php
+++ b/lib/plugins/plugin/lang/nl/lang.php
@@ -11,6 +11,7 @@
  * @author Matthias Carchon webmaster@c-mattic.be
  * @author Marijn Hofstra <hofstra.m@gmail.com>
  * @author Timon Van Overveldt <timonvo@gmail.com>
+ * @author Jeroen
  */
 $lang['menu']                  = 'Plugins beheren';
 $lang['download']              = 'Download en installeer een nieuwe plugin';
diff --git a/lib/plugins/plugin/lang/no/lang.php b/lib/plugins/plugin/lang/no/lang.php
index a95ea00855fde923f2d852aee90b73d79d4f4011..41f6d115380d0d360183dcec4931643184728582 100644
--- a/lib/plugins/plugin/lang/no/lang.php
+++ b/lib/plugins/plugin/lang/no/lang.php
@@ -13,6 +13,7 @@
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
  * @author Rune Rasmussen syntaxerror.no@gmail.com
+ * @author Jon Bøe <jonmagneboe@hotmail.com>
  */
 $lang['menu']                  = 'Behandle tillegg';
 $lang['download']              = 'Last ned og installer et tillegg';
@@ -58,3 +59,4 @@ $lang['enabled']               = 'Tillegget %s aktivert';
 $lang['notenabled']            = 'Plugin %s kunne ikke aktiveres, sjekk filrettighetene.';
 $lang['disabled']              = 'Plugin %s deaktivert';
 $lang['notdisabled']           = 'Plugin %s kunne ikke deaktiveres, sjekk filrettighetene.';
+$lang['packageinstalled']      = 'Installasjonen av tilleggspakka (%d tillegg: %s) var vellykka';
diff --git a/lib/plugins/plugin/lang/pt-br/lang.php b/lib/plugins/plugin/lang/pt-br/lang.php
index bae96273049cd3822117a549b6abd0f5dc737ef9..e8b23dae994cb351bf70499f5dccb20dc68627af 100644
--- a/lib/plugins/plugin/lang/pt-br/lang.php
+++ b/lib/plugins/plugin/lang/pt-br/lang.php
@@ -15,6 +15,7 @@
  * @author Luis Dantas <luisdantas@gmail.com>
  * @author Sergio Motta sergio@cisne.com.br
  * @author Isaias Masiero Filho <masiero@masiero.org>
+ * @author Balaco Baco <balacobaco@imap.cc>
  */
 $lang['menu']                  = 'Gerenciar Plug-ins';
 $lang['download']              = 'Baixar e instalar um novo plug-in';
diff --git a/lib/plugins/plugin/lang/ro/lang.php b/lib/plugins/plugin/lang/ro/lang.php
index 5f37ed4559f6f67287ea8c0eabec53f0945cbf23..9c90f77a3a41d2c916bf28d5d8354812884c51f6 100644
--- a/lib/plugins/plugin/lang/ro/lang.php
+++ b/lib/plugins/plugin/lang/ro/lang.php
@@ -8,6 +8,7 @@
  * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
  * @author Emanuel-Emeric AndraÅŸi <em.andrasi@mandrivausers.ro>
  * @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
+ * @author Marius OLAR <olarmariusalex@gmail.com>
  */
 $lang['menu']                  = 'Administrează plugin-uri';
 $lang['download']              = 'Descarcă şi instalează un nou plugin';
@@ -53,3 +54,4 @@ $lang['enabled']               = 'Plugin %s activat.';
 $lang['notenabled']            = 'Plugin-ul %s nu poate fi activat, verificaţi permisiunile fişierului.';
 $lang['disabled']              = 'Plugin %s dezactivat.';
 $lang['notdisabled']           = 'Plugin-ul %s nu poate fi dezactivat, verificaţi permisiunile fişierului.';
+$lang['packageinstalled']      = 'Pachet modul (%d modul(e): %s) instalat cu succes.';
diff --git a/lib/plugins/plugin/lang/zh/lang.php b/lib/plugins/plugin/lang/zh/lang.php
index 6fc1f4d7d5b43ff121277561010aebb0aa58e001..f8e0b55687edbc99b7488e59ddab831ed71c3b7c 100644
--- a/lib/plugins/plugin/lang/zh/lang.php
+++ b/lib/plugins/plugin/lang/zh/lang.php
@@ -13,6 +13,7 @@
  * @author caii <zhoucaiqi@gmail.com>
  * @author Hiphen Lee <jacob.b.leung@gmail.com>
  * @author caii, patent agent in China <zhoucaiqi@gmail.com>
+ * @author lainme993@gmail.com
  */
 $lang['menu']                  = '插件管理器';
 $lang['download']              = '下载并安装新的插件';
diff --git a/lib/plugins/popularity/lang/de-informal/lang.php b/lib/plugins/popularity/lang/de-informal/lang.php
index f884ed69033d5919df5d8b0696c6404c8eb15d6a..40e6c4343f6fc896a9225aa744e1dfc98806dbeb 100644
--- a/lib/plugins/popularity/lang/de-informal/lang.php
+++ b/lib/plugins/popularity/lang/de-informal/lang.php
@@ -7,6 +7,7 @@
  * @author Marcel Metz <marcel_metz@gmx.de>
  * @author Matthias Schulte <post@lupo49.de>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['name']                  = 'Popularitätsrückmeldung (kann eine Weile dauern, bis es fertig geladen wurde)';
 $lang['submit']                = 'Sende Daten';
diff --git a/lib/plugins/popularity/lang/de/lang.php b/lib/plugins/popularity/lang/de/lang.php
index 4649062f783a8903b6dff7d8c9cb672aa763b14b..42bdc14d54ee8fb5daf15f55885b385e6dac4fb9 100644
--- a/lib/plugins/popularity/lang/de/lang.php
+++ b/lib/plugins/popularity/lang/de/lang.php
@@ -13,6 +13,8 @@
  * @author Robert Bogenschneider <robog@gmx.de>
  * @author Niels Lange <niels@boldencursief.nl>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Paul Lachewsky <kaeptn.haddock@gmail.com>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['name']                  = 'Popularitäts-Feedback (Eventuell längere Ladezeit)';
 $lang['submit']                = 'Daten senden';
diff --git a/lib/plugins/popularity/lang/el/lang.php b/lib/plugins/popularity/lang/el/lang.php
index 41704fa062abf216e150b0fd599e746cdde6e560..32558b06001942e6de55e1b0acb8ce116f606b49 100644
--- a/lib/plugins/popularity/lang/el/lang.php
+++ b/lib/plugins/popularity/lang/el/lang.php
@@ -4,6 +4,7 @@
  *
  * @author Konstantinos Koryllos <koryllos@gmail.com>
  * @author George Petsagourakis <petsagouris@gmail.com>
+ * @author Petros Vidalis <pvidalis@gmail.com>
  */
 $lang['name']                  = 'Αναφορά Δημοτικότητας (ίσως αργήσει λίγο να εμφανιστεί)';
 $lang['submit']                = 'Αποστολή Δεδομένων';
diff --git a/lib/plugins/popularity/lang/eo/intro.txt b/lib/plugins/popularity/lang/eo/intro.txt
index 434f811b5472a4bed393ae4c7e0081e02dc6f3c3..8d9b3dde808d5d3726748c3b12505fa7e604a977 100644
--- a/lib/plugins/popularity/lang/eo/intro.txt
+++ b/lib/plugins/popularity/lang/eo/intro.txt
@@ -6,4 +6,4 @@ Ni instigas vin ripeti tiun agon iam kaj tiam por teni la disvolvigantojn inform
 
 La kolektita datenaro enhavas informon pri versio de la instalita DokuWiki, nombro kaj grandeco de la paĝoj kaj dosieroj, instalitaj kromaĵoj kaj informoj pri via PHP-sistemo.
 
-La kruda datenaro sendota estas montrita sube. Bonvole uzu la butonon "Sendi datenaron" por transŝuti tiun informaron.
\ No newline at end of file
+La kruda datenaro sendota estas montrita sube. Bonvole uzu la butonon &quot;Sendi datumaron&quot; por transŝuti tiun informaron.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/eo/lang.php b/lib/plugins/popularity/lang/eo/lang.php
index a7c124f51b707ff91d3da0a26e027dc8ad4a0094..e992e12ce06680f1b92f7f8372a23c2e17c977f4 100644
--- a/lib/plugins/popularity/lang/eo/lang.php
+++ b/lib/plugins/popularity/lang/eo/lang.php
@@ -9,9 +9,10 @@
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Robert Bogenschneider <robog@GMX.de>
  * @author Robert BOGENSCHNEIDER <robog@gmx.de>
+ * @author Robert BOGENSCHNEIDER <bogi@UEA.org>
  */
 $lang['name']                  = 'Populareca enketo (eble la ŝargo prokrastos iomete)';
-$lang['submit']                = 'Sendi datenaron';
+$lang['submit']                = 'Sendi datumaron';
 $lang['autosubmit']            = 'AÅ­tomate sendi datumaron monate';
 $lang['submissionFailed']      = 'La datumaro ne povis esti sendata pro la jena eraro:';
 $lang['submitDirectly']        = 'Vi povas sendi vi mem la datumaron per la sekva informilo.';
diff --git a/lib/plugins/popularity/lang/eo/submitted.txt b/lib/plugins/popularity/lang/eo/submitted.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c2bce4e9f2248a2d439cc97acedde3597f0e29e2
--- /dev/null
+++ b/lib/plugins/popularity/lang/eo/submitted.txt
@@ -0,0 +1,3 @@
+====== Enketo pri Populareco ======
+
+La datumoj estis senditaj sukcese.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/es/lang.php b/lib/plugins/popularity/lang/es/lang.php
index d78343a36b28e27d978a45d25315d6802f97b5fb..752fb7da4b2741de80c9e0c4d397f4ef51d7852c 100644
--- a/lib/plugins/popularity/lang/es/lang.php
+++ b/lib/plugins/popularity/lang/es/lang.php
@@ -18,6 +18,7 @@
  * @author Oscar M. Lage <r0sk10@gmail.com>
  * @author emezeta <emezeta@infoprimo.com>
  * @author Oscar Ciudad <oscar@jacho.net>
+ * @author Ruben Figols <ruben.figols@gmail.com>
  */
 $lang['name']                  = 'Retroinformación (Feedback) plugin Popularity';
 $lang['submit']                = 'Enviar datos';
diff --git a/lib/plugins/popularity/lang/fr/lang.php b/lib/plugins/popularity/lang/fr/lang.php
index 3ccc4cb5f39336ea0eb453e1c8dca9f3d67e2dde..ae12c66834b4434ef74ea9fd765041b4f52aeb02 100644
--- a/lib/plugins/popularity/lang/fr/lang.php
+++ b/lib/plugins/popularity/lang/fr/lang.php
@@ -2,8 +2,7 @@
 /**
  * French language file
  *
- * @author gb@isis.u-strasbg.fr
- * @author Guy Brand <gb@isis.u-strasbg.fr>
+ * @author Guy Brand <gb@unistra.fr>
  * @author stephane.gully@gmail.com
  * @author Guillaume Turri <guillaume.turri@gmail.com>
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
diff --git a/lib/plugins/popularity/lang/nl/lang.php b/lib/plugins/popularity/lang/nl/lang.php
index 0a8386f42b87bdfae4894220a73f982b7636647a..75c13013b518b66c3eac2816d188e3a592e40ba1 100644
--- a/lib/plugins/popularity/lang/nl/lang.php
+++ b/lib/plugins/popularity/lang/nl/lang.php
@@ -10,6 +10,7 @@
  * @author Matthias Carchon webmaster@c-mattic.be
  * @author Marijn Hofstra <hofstra.m@gmail.com>
  * @author Timon Van Overveldt <timonvo@gmail.com>
+ * @author Jeroen
  */
 $lang['name']                  = 'Populariteitsfeedback (kan even duren om in te laden)';
 $lang['submit']                = 'Verstuur';
diff --git a/lib/plugins/popularity/lang/no/lang.php b/lib/plugins/popularity/lang/no/lang.php
index e80016f921a7048cf5c6543c8d9d99771048865e..e283fc37149454c9f1889111c5d83cade2527727 100644
--- a/lib/plugins/popularity/lang/no/lang.php
+++ b/lib/plugins/popularity/lang/no/lang.php
@@ -10,6 +10,13 @@
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
  * @author Rune Rasmussen syntaxerror.no@gmail.com
+ * @author Thomas Nygreen <nygreen@gmail.com>
+ * @author Jon Bøe <jonmagneboe@hotmail.com>
  */
 $lang['name']                  = 'Popularitetsfeedback (kan ta litt tid å laste)';
 $lang['submit']                = 'Send data';
+$lang['autosubmit']            = 'Send data automatisk en gang i måneden';
+$lang['submissionFailed']      = 'Kunne ikke sende dataene på grunn av følgende feil:';
+$lang['submitDirectly']        = 'Du kan sende dataene manuelt ved å sende inn dette skjemaet.';
+$lang['autosubmitError']       = 'Den siste automatiske innsendinga feilet på grunn av følgende feil:';
+$lang['lastSent']              = 'Dataene er sendt';
diff --git a/lib/plugins/popularity/lang/no/submitted.txt b/lib/plugins/popularity/lang/no/submitted.txt
new file mode 100644
index 0000000000000000000000000000000000000000..239676a9dec894b3145b0b72169f2a1970729aec
--- /dev/null
+++ b/lib/plugins/popularity/lang/no/submitted.txt
@@ -0,0 +1,3 @@
+====== Tilbakemelding om popularitet ======
+
+Innsending av dataene var vellykka.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/pt-br/lang.php b/lib/plugins/popularity/lang/pt-br/lang.php
index 67a3abd7e5c4b6d923a6ca10bb8b5c13ac8ef21e..44d811d81aae7b41b289b8744bd807996ef372ef 100644
--- a/lib/plugins/popularity/lang/pt-br/lang.php
+++ b/lib/plugins/popularity/lang/pt-br/lang.php
@@ -14,6 +14,7 @@
  * @author Luis Dantas <luisdantas@gmail.com>
  * @author Sergio Motta sergio@cisne.com.br
  * @author Isaias Masiero Filho <masiero@masiero.org>
+ * @author Balaco Baco <balacobaco@imap.cc>
  */
 $lang['name']                  = 'Retorno de popularidade (pode demorar um pouco para carregar)';
 $lang['submit']                = 'Enviar dados';
diff --git a/lib/plugins/popularity/lang/ro/lang.php b/lib/plugins/popularity/lang/ro/lang.php
index 1644ea574af094ca18a56d19397dd5b794568836..7f3508362a9156282abe4c0979348af60ad28e44 100644
--- a/lib/plugins/popularity/lang/ro/lang.php
+++ b/lib/plugins/popularity/lang/ro/lang.php
@@ -6,6 +6,7 @@
  * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
  * @author Emanuel-Emeric AndraÅŸi <em.andrasi@mandrivausers.ro>
  * @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
+ * @author Marius OLAR <olarmariusalex@gmail.com>
  */
 $lang['name']                  = 'Feedback de popularitate (încărcarea poate dura mai mult)';
 $lang['submit']                = 'Trimite datele';
diff --git a/lib/plugins/popularity/lang/zh/lang.php b/lib/plugins/popularity/lang/zh/lang.php
index a2464762de69f90ed97d40201ae4d9c1a439bbfc..f45aaf4ff7df08e78cbf20454192533b520c47a5 100644
--- a/lib/plugins/popularity/lang/zh/lang.php
+++ b/lib/plugins/popularity/lang/zh/lang.php
@@ -12,6 +12,7 @@
  * @author caii <zhoucaiqi@gmail.com>
  * @author Hiphen Lee <jacob.b.leung@gmail.com>
  * @author caii, patent agent in China <zhoucaiqi@gmail.com>
+ * @author lainme993@gmail.com
  */
 $lang['name']                  = '人气反馈(载入可能需要一些时间)';
 $lang['submit']                = '发送数据';
diff --git a/lib/plugins/revert/lang/de-informal/lang.php b/lib/plugins/revert/lang/de-informal/lang.php
index b6709d2fa593f6287d103d44c28d7fe26199758e..c199bb55ba4c9dc59c1691e9b29681e71312f6e7 100644
--- a/lib/plugins/revert/lang/de-informal/lang.php
+++ b/lib/plugins/revert/lang/de-informal/lang.php
@@ -7,6 +7,7 @@
  * @author Marcel Metz <marcel_metz@gmx.de>
  * @author Matthias Schulte <post@lupo49.de>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['menu']                  = 'Zurückstellungsmanager';
 $lang['filter']                = 'Durchsuche als Spam markierte Seiten';
diff --git a/lib/plugins/revert/lang/de/lang.php b/lib/plugins/revert/lang/de/lang.php
index 0bc8e2ce0fd5504063ad507657cc2bb62d1db761..b430ce8768d7042a905fbc4fda5c06262888e1a1 100644
--- a/lib/plugins/revert/lang/de/lang.php
+++ b/lib/plugins/revert/lang/de/lang.php
@@ -14,6 +14,8 @@
  * @author Robert Bogenschneider <robog@gmx.de>
  * @author Niels Lange <niels@boldencursief.nl>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Paul Lachewsky <kaeptn.haddock@gmail.com>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['menu']                  = 'Seiten wieder herstellen';
 $lang['filter']                = 'Nach betroffenen Seiten suchen';
diff --git a/lib/plugins/revert/lang/el/lang.php b/lib/plugins/revert/lang/el/lang.php
index a0c3bb4ffa9ab28d252d8e60ee3d19e3445ac949..63454e4e9129b9b376ddc2af4e287e835f5c9f8e 100644
--- a/lib/plugins/revert/lang/el/lang.php
+++ b/lib/plugins/revert/lang/el/lang.php
@@ -9,6 +9,7 @@
  * @author Αθανάσιος Νταής <homunculus@wana.gr>
  * @author Konstantinos Koryllos <koryllos@gmail.com>
  * @author George Petsagourakis <petsagouris@gmail.com>
+ * @author Petros Vidalis <pvidalis@gmail.com>
  */
 $lang['menu']                  = 'Αποκατάσταση κακόβουλων αλλαγών σελίδων';
 $lang['filter']                = 'Αναζήτηση σελίδων που περιέχουν spam';
diff --git a/lib/plugins/revert/lang/eo/lang.php b/lib/plugins/revert/lang/eo/lang.php
index a46b0169e17c07bf7bc21e172d928bb1a6850931..a893fb145562b9b0284b00a50b35e01c7d0dbaa2 100644
--- a/lib/plugins/revert/lang/eo/lang.php
+++ b/lib/plugins/revert/lang/eo/lang.php
@@ -11,6 +11,7 @@
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Robert Bogenschneider <robog@GMX.de>
  * @author Robert BOGENSCHNEIDER <robog@gmx.de>
+ * @author Robert BOGENSCHNEIDER <bogi@UEA.org>
  */
 $lang['menu']                  = 'Administrado de restarigo';
 $lang['filter']                = 'Serĉi spamecajn paĝojn';
@@ -20,4 +21,4 @@ $lang['removed']               = '%s estas forigita';
 $lang['revstart']              = 'Restariga procezo estas ekigita. Tio povas daÅ­ri longan tempon. Se la skripto tro prokrastos antaÅ­ plenumo, vi bezonos restarigi po pli etaj blokoj.';
 $lang['revstop']               = 'Restariga procezo plenumiĝis sukcese.';
 $lang['note1']                 = 'Rimarko: tiu ĉi serĉo distingas usklecon';
-$lang['note2']                 = 'Rimarko: la paĝo restariĝos al la lasta versio ne enhavanta la menditan spaman terminon <i>%s</i>.';
+$lang['note2']                 = 'Rimarko: la paĝo restariĝos al la lasta versio ne enhavanta la menditan spaman terminon &lt;i&gt;%s&lt;/i&gt;.';
diff --git a/lib/plugins/revert/lang/es/lang.php b/lib/plugins/revert/lang/es/lang.php
index f793eb06d54bc6af795c83e5f533492ce92eaded..e235015d46011a7b52523935469fd40474e871bc 100644
--- a/lib/plugins/revert/lang/es/lang.php
+++ b/lib/plugins/revert/lang/es/lang.php
@@ -19,6 +19,7 @@
  * @author Mauro Javier Giamberardino <mgiamberardino@gmail.com>
  * @author emezeta <emezeta@infoprimo.com>
  * @author Oscar Ciudad <oscar@jacho.net>
+ * @author Ruben Figols <ruben.figols@gmail.com>
  */
 $lang['menu']                  = 'Restaurador';
 $lang['filter']                = 'Buscar páginas con spam';
diff --git a/lib/plugins/revert/lang/fr/lang.php b/lib/plugins/revert/lang/fr/lang.php
index 17a2c3a01c806c44e157c8a94ebbf49113e27271..15d4d39c3416839d23ed8c66b7153e82d4336b54 100644
--- a/lib/plugins/revert/lang/fr/lang.php
+++ b/lib/plugins/revert/lang/fr/lang.php
@@ -3,8 +3,7 @@
  * french language file
  * @author Delassaux Julien <julien@delassaux.fr>
  * @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
- * @author Guy Brand <gb@isis.u-strasbg.fr>
- * @author gb@isis.u-strasbg.fr
+ * @author Guy Brand <gb@unistra.fr>
  * @author stephane.gully@gmail.com
  * @author Guillaume Turri <guillaume.turri@gmail.com>
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
diff --git a/lib/plugins/revert/lang/nl/lang.php b/lib/plugins/revert/lang/nl/lang.php
index 21f8c2971a8f87020ff5e5fefb42b42efff974be..954bf1068829b6c5a070d1b9b67f8835cc3be88b 100644
--- a/lib/plugins/revert/lang/nl/lang.php
+++ b/lib/plugins/revert/lang/nl/lang.php
@@ -11,6 +11,7 @@
  * @author Matthias Carchon webmaster@c-mattic.be
  * @author Marijn Hofstra <hofstra.m@gmail.com>
  * @author Timon Van Overveldt <timonvo@gmail.com>
+ * @author Jeroen
  */
 $lang['menu']                  = 'Herstelmanager';
 $lang['filter']                = 'Zoek naar bekladde pagina\'s';
diff --git a/lib/plugins/revert/lang/no/lang.php b/lib/plugins/revert/lang/no/lang.php
index 6f9ba25559e6661ec01d41140dca32909ac233e4..2a6a2abd35088d86f0abdfc9568bbf2a930f0cb3 100644
--- a/lib/plugins/revert/lang/no/lang.php
+++ b/lib/plugins/revert/lang/no/lang.php
@@ -13,6 +13,7 @@
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
  * @author Rune Rasmussen syntaxerror.no@gmail.com
+ * @author Jon Bøe <jonmagneboe@hotmail.com>
  */
 $lang['menu']                  = 'Tilbakestillingsbehandler';
 $lang['filter']                = 'Søk etter søppelmeldinger';
diff --git a/lib/plugins/revert/lang/pt-br/lang.php b/lib/plugins/revert/lang/pt-br/lang.php
index 6d8ca2de527fd88d535b5e17111aeadae00f5eaa..7bdde6675c8143cadad9e7031d3c46da281bcc3b 100644
--- a/lib/plugins/revert/lang/pt-br/lang.php
+++ b/lib/plugins/revert/lang/pt-br/lang.php
@@ -15,6 +15,7 @@
  * @author Luis Dantas <luisdantas@gmail.com>
  * @author Sergio Motta sergio@cisne.com.br
  * @author Isaias Masiero Filho <masiero@masiero.org>
+ * @author Balaco Baco <balacobaco@imap.cc>
  */
 $lang['menu']                  = 'Gerenciador de reversões';
 $lang['filter']                = 'Procura por páginas com spam';
diff --git a/lib/plugins/revert/lang/ro/lang.php b/lib/plugins/revert/lang/ro/lang.php
index 6e534fd37b17e1bc17342fa06e480c74f3601cec..7397a1d74017748d3baf6341020a6db4e9f9dd21 100644
--- a/lib/plugins/revert/lang/ro/lang.php
+++ b/lib/plugins/revert/lang/ro/lang.php
@@ -8,6 +8,7 @@
  * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
  * @author Emanuel-Emeric AndraÅŸi <em.andrasi@mandrivausers.ro>
  * @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
+ * @author Marius OLAR <olarmariusalex@gmail.com>
  */
 $lang['menu']                  = 'Manager Reveniri';
 $lang['filter']                = 'Caută pagini cu posibil spam';
diff --git a/lib/plugins/revert/lang/zh/lang.php b/lib/plugins/revert/lang/zh/lang.php
index eb8733618dfdd92373992e72f0103c02bdfbbed9..c3d1639ff8ba24d352ac93665d34480291152a09 100644
--- a/lib/plugins/revert/lang/zh/lang.php
+++ b/lib/plugins/revert/lang/zh/lang.php
@@ -13,6 +13,7 @@
  * @author caii <zhoucaiqi@gmail.com>
  * @author Hiphen Lee <jacob.b.leung@gmail.com>
  * @author caii, patent agent in China <zhoucaiqi@gmail.com>
+ * @author lainme993@gmail.com
  */
 $lang['menu']                  = '还原管理器';
 $lang['filter']                = '搜索包含垃圾信息的页面';
diff --git a/lib/plugins/usermanager/lang/de-informal/lang.php b/lib/plugins/usermanager/lang/de-informal/lang.php
index 95b36c60f43d0fdfe899fff5ad83bd45956636a0..63ccdd6e401385696f5c5aa6ba041c95ecba99d5 100644
--- a/lib/plugins/usermanager/lang/de-informal/lang.php
+++ b/lib/plugins/usermanager/lang/de-informal/lang.php
@@ -7,6 +7,7 @@
  * @author Marcel Metz <marcel_metz@gmx.de>
  * @author Matthias Schulte <post@lupo49.de>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['menu']                  = 'Benutzerverwalter';
 $lang['noauth']                = '(Benutzeranmeldung ist nicht verfügbar)';
diff --git a/lib/plugins/usermanager/lang/de/lang.php b/lib/plugins/usermanager/lang/de/lang.php
index 090d1d1d9b940504dfcf02bde35d1d29844e5ad4..585c70a7652a207332229b97e1f3ff674562e446 100644
--- a/lib/plugins/usermanager/lang/de/lang.php
+++ b/lib/plugins/usermanager/lang/de/lang.php
@@ -15,6 +15,8 @@
  * @author Robert Bogenschneider <robog@gmx.de>
  * @author Niels Lange <niels@boldencursief.nl>
  * @author Christian Wichmann <nospam@zone0.de>
+ * @author Paul Lachewsky <kaeptn.haddock@gmail.com>
+ * @author Pierre Corell <info@joomla-praxis.de>
  */
 $lang['menu']                  = 'Benutzerverwaltung';
 $lang['noauth']                = '(Authentifizierungssystem nicht verfügbar)';
diff --git a/lib/plugins/usermanager/lang/el/lang.php b/lib/plugins/usermanager/lang/el/lang.php
index 8bfb1a380cafecfed21a12a637d9c5cca779e888..4b4d95379c524b881871db47c4ef2de63897e949 100644
--- a/lib/plugins/usermanager/lang/el/lang.php
+++ b/lib/plugins/usermanager/lang/el/lang.php
@@ -10,6 +10,7 @@
  * @author Αθανάσιος Νταής <homunculus@wana.gr>
  * @author Konstantinos Koryllos <koryllos@gmail.com>
  * @author George Petsagourakis <petsagouris@gmail.com>
+ * @author Petros Vidalis <pvidalis@gmail.com>
  */
 $lang['menu']                  = 'Διαχείριση Χρηστών';
 $lang['noauth']                = '(η είσοδος χρηστών δεν είναι δυνατή)';
diff --git a/lib/plugins/usermanager/lang/eo/lang.php b/lib/plugins/usermanager/lang/eo/lang.php
index a16b107c1c191b02345fe86820a5af6c86bbecdb..b5f1abc0eecd2e33b51bcf33aa44510565487a57 100644
--- a/lib/plugins/usermanager/lang/eo/lang.php
+++ b/lib/plugins/usermanager/lang/eo/lang.php
@@ -11,8 +11,9 @@
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Robert Bogenschneider <robog@GMX.de>
  * @author Robert BOGENSCHNEIDER <robog@gmx.de>
+ * @author Robert BOGENSCHNEIDER <bogi@UEA.org>
  */
-$lang['menu']                  = 'Administrado de Uzantoj';
+$lang['menu']                  = 'Administrado de uzantoj';
 $lang['noauth']                = '(identiĝo de uzantoj ne disponeblas)';
 $lang['nosupport']             = '(administro de uzantoj ne estas subtenata)';
 $lang['badauth']               = 'tiu identiĝa procezo ne validas';
diff --git a/lib/plugins/usermanager/lang/es/lang.php b/lib/plugins/usermanager/lang/es/lang.php
index 50138bf2b691a59a611097ccadd432bc8fdb446f..804df2a4ba7df52fd8a1bbadaba3a8643ae9dcef 100644
--- a/lib/plugins/usermanager/lang/es/lang.php
+++ b/lib/plugins/usermanager/lang/es/lang.php
@@ -20,6 +20,7 @@
  * @author Mauro Javier Giamberardino <mgiamberardino@gmail.com>
  * @author emezeta <emezeta@infoprimo.com>
  * @author Oscar Ciudad <oscar@jacho.net>
+ * @author Ruben Figols <ruben.figols@gmail.com>
  */
 $lang['menu']                  = 'Administración de usuarios';
 $lang['noauth']                = '(la autenticación de usuarios no está disponible)';
diff --git a/lib/plugins/usermanager/lang/fr/lang.php b/lib/plugins/usermanager/lang/fr/lang.php
index b6910663c3a02ebc2f1c833a550d97d45fdafe77..875b6d1a63291f36b824ec678fae740d476fd350 100644
--- a/lib/plugins/usermanager/lang/fr/lang.php
+++ b/lib/plugins/usermanager/lang/fr/lang.php
@@ -2,10 +2,9 @@
 /**
  * french language file
  *
- * @author Guy Brand <gb@isis.u-strasbg.fr>
+ * @author Guy Brand <gb@unistra.fr>
  * @author Delassaux Julien <julien@delassaux.fr>
  * @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
- * @author gb@isis.u-strasbg.fr
  * @author stephane.gully@gmail.com
  * @author Guillaume Turri <guillaume.turri@gmail.com>
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
diff --git a/lib/plugins/usermanager/lang/nl/lang.php b/lib/plugins/usermanager/lang/nl/lang.php
index a6ae402d8d6093471e68d125aff92cb99fa270f0..cac793386625b476b47b9e915553e7b87825ea47 100644
--- a/lib/plugins/usermanager/lang/nl/lang.php
+++ b/lib/plugins/usermanager/lang/nl/lang.php
@@ -11,6 +11,7 @@
  * @author Matthias Carchon webmaster@c-mattic.be
  * @author Marijn Hofstra <hofstra.m@gmail.com>
  * @author Timon Van Overveldt <timonvo@gmail.com>
+ * @author Jeroen
  */
 $lang['menu']                  = 'Gebruikersmanager';
 $lang['noauth']                = '(gebruikersauthenticatie niet beschikbaar)';
diff --git a/lib/plugins/usermanager/lang/no/lang.php b/lib/plugins/usermanager/lang/no/lang.php
index 31e27747db4847dc841e37b070175d9f083d7632..668863ec2c55c650595c682d1909cabd9f444b33 100644
--- a/lib/plugins/usermanager/lang/no/lang.php
+++ b/lib/plugins/usermanager/lang/no/lang.php
@@ -13,6 +13,7 @@
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
  * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
  * @author Rune Rasmussen syntaxerror.no@gmail.com
+ * @author Jon Bøe <jonmagneboe@hotmail.com>
  */
 $lang['menu']                  = 'Behandle brukere';
 $lang['noauth']                = '(autentisering av brukere ikke tilgjengelig)';
diff --git a/lib/plugins/usermanager/lang/pt-br/lang.php b/lib/plugins/usermanager/lang/pt-br/lang.php
index 4bc99fb0c45d323a23677df74d1883e468e6c682..285231f35a79596df1294d67c0095159479148eb 100644
--- a/lib/plugins/usermanager/lang/pt-br/lang.php
+++ b/lib/plugins/usermanager/lang/pt-br/lang.php
@@ -15,6 +15,7 @@
  * @author Luis Dantas <luisdantas@gmail.com>
  * @author Sergio Motta sergio@cisne.com.br
  * @author Isaias Masiero Filho <masiero@masiero.org>
+ * @author Balaco Baco <balacobaco@imap.cc>
  */
 $lang['menu']                  = 'Gerenciamento de Usuários';
 $lang['noauth']                = '(o gerenciamento de usuários não está disponível)';
diff --git a/lib/plugins/usermanager/lang/ro/lang.php b/lib/plugins/usermanager/lang/ro/lang.php
index 260814aed3bac4a9034f96186371b492ba47b07e..4c0afc896cf1d6d27440cdfb64aaba81491d3fe0 100644
--- a/lib/plugins/usermanager/lang/ro/lang.php
+++ b/lib/plugins/usermanager/lang/ro/lang.php
@@ -8,6 +8,7 @@
  * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
  * @author Emanuel-Emeric AndraÅŸi <em.andrasi@mandrivausers.ro>
  * @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
+ * @author Marius OLAR <olarmariusalex@gmail.com>
  */
 $lang['menu']                  = 'Manager Utilizatori';
 $lang['noauth']                = '(autentificarea utilizatorilor nu este disponibilă)';
diff --git a/lib/plugins/usermanager/lang/zh/lang.php b/lib/plugins/usermanager/lang/zh/lang.php
index 9bfa496c273437d1e6f48caa355d521428567f83..c1cb0c91aa74f3ffd0b03e370a0c1c478fdf9a6a 100644
--- a/lib/plugins/usermanager/lang/zh/lang.php
+++ b/lib/plugins/usermanager/lang/zh/lang.php
@@ -12,6 +12,7 @@
  * @author caii <zhoucaiqi@gmail.com>
  * @author Hiphen Lee <jacob.b.leung@gmail.com>
  * @author caii, patent agent in China <zhoucaiqi@gmail.com>
+ * @author lainme993@gmail.com
  */
 $lang['menu']                  = '用户管理器';
 $lang['noauth']                = '(用户认证不可用)';
diff --git a/lib/scripts/behaviour.js b/lib/scripts/behaviour.js
index cfdc8915775633a0d77262df967208d960daff46..20b408322439406b94796ec5e502eb188e9b959b 100644
--- a/lib/scripts/behaviour.js
+++ b/lib/scripts/behaviour.js
@@ -63,9 +63,7 @@ var dw_behaviour = {
     quickSelect: function(){
         jQuery('select.quickselect')
             .change(function(e){ e.target.form.submit(); })
-            .parents('form').find('input[type=submit]').each(function(){
-                if (!jQuery(this).hasClass('show')) jQuery(this).hide();
-            });
+            .closest('form').find('input[type=submit]').not('.show').hide();
     },
 
     /**
@@ -74,13 +72,13 @@ var dw_behaviour = {
      * @author Michael Klier <chi@chimeric.de>
      */
     checkWindowsShares: function() {
-        if(!LANG.nosmblinks || document.all !== null) {
+        if(!LANG.nosmblinks || typeof(document.all) !== 'undefined') {
             // No warning requested or none necessary
             return;
         }
 
         jQuery('a.windows').live('click', function(){
-            alert(LANG.nosmblinks);
+            alert(LANG.nosmblinks.replace(/\\n/,"\n"));
         });
     },
 
diff --git a/lib/scripts/compatibility.js b/lib/scripts/compatibility.js
index 39f703c7104c0492aedd47ee383f94e68ffb1b33..ea52153c54d9a5b9d65bab12cbb992f7aa4289cc 100644
--- a/lib/scripts/compatibility.js
+++ b/lib/scripts/compatibility.js
@@ -38,7 +38,7 @@ function DEPRECATED_WRAP(func, context) {
     return function () {
         DEPRECATED();
         return func.apply(context || this, arguments);
-    }
+    };
 }
 
 /**
@@ -98,6 +98,15 @@ var linkwiz = {
     toggle: DEPRECATED_WRAP(dw_linkwiz.toggle, dw_linkwiz)
 };
 
+var locktimer = {
+    init: DEPRECATED_WRAP(dw_locktimer.init, dw_locktimer),
+    reset: DEPRECATED_WRAP(dw_locktimer.reset, dw_locktimer),
+    warning: DEPRECATED_WRAP(dw_locktimer.warning, dw_locktimer),
+    clear: DEPRECATED_WRAP(dw_locktimer.clear, dw_locktimer),
+    refresh: DEPRECATED_WRAP(dw_locktimer.refresh, dw_locktimer),
+    refreshed: DEPRECATED_WRAP(dw_locktimer.refreshed, dw_locktimer)
+};
+
 var media_manager = {
     // treeattach, selectorattach, confirmattach are munched together into
     // dw_mediamanager.init
@@ -178,8 +187,29 @@ function prependChild(parent,element) {
 }
 
 function addEvent(element, type, handler) {
-    DEPRECATED('Use jQuery.bind() instead.');
-    jQuery(element).bind(type,{},handler);
+    DEPRECATED('Use jQuery.bind() instead. Note that jQuery’s behaviour' +
+               ' when a handler returns false differs from addEvent’s');
+    jQuery(element).bind(type,{},function (e) {
+        // returning false in an addEvent event handler did not prevent
+        // bubbling but just canceled handlers on this node and prevented
+        // default behavior, so wrap the handler call and mimic that behavior.
+        //
+        // Refer to jQuery.event.handle().
+        var ret = handler.apply(this, Array.prototype.slice.call(arguments, 0));
+        if (typeof ret !== 'undefined') {
+            if ( ret !== false ) {
+                return ret;
+            }
+            // What jQuery does.
+            e.result = ret;
+            e.preventDefault();
+            // Not what jQuery does. This would be: event.stopPropagation();
+            // Hack it so that immediate propagation (other event handlers on
+            // this element) appears stopped without stopping the actual
+            // propagation (bubbling)
+            e.isImmediatePropagationStopped = function () { return true; };
+        }
+    });
 }
 
 function removeEvent(element, type, handler) {
@@ -376,3 +406,9 @@ function gcs(node){
     }
 }
 
+/**
+ * Until 2011-05-25 "Rincewind", a code intended to fix some Safari issue
+ * always declared the global _timer. plugin:sortablejs relies on _timer
+ * being declared.
+ */
+var _timer;
diff --git a/lib/scripts/cookie.js b/lib/scripts/cookie.js
index 4dd77beeaa5ee34bf3a616b4e69b27f9d60698aa..3ad67bfa4884c40bd4c39a39324436b980c38042 100644
--- a/lib/scripts/cookie.js
+++ b/lib/scripts/cookie.js
@@ -9,7 +9,7 @@
 * @author Andreas Gohr <andi@splitbrain.org>
 * @author Michal Rezler <m.rezler@centrum.cz>
 */
-DokuCookie = {
+var DokuCookie = {
     data: {},
     name: 'DOKU_PREFS',
 
@@ -19,17 +19,18 @@ DokuCookie = {
      * @author Andreas Gohr <andi@splitbrain.org>
      */
     setValue: function(key,val){
-        var text = '';
+        var text = [],
+            _this = this;
         this.init();
         this.data[key] = val;
 
         //save the whole data array
-        jQuery.each(this.data, function (key, val) {
-            if (DokuCookie.data.hasOwnProperty(key)) {
-                text += '#'+encodeURIComponent(key)+'#'+encodeURIComponent(val);
-        }
+        jQuery.each(_this.data, function (key, val) {
+            if (_this.data.hasOwnProperty(key)) {
+                text.push(encodeURIComponent(key)+'#'+encodeURIComponent(val));
+            }
         });
-        jQuery.cookie(this.name,text.substr(1), {expires: 365, path: DOKU_BASE});
+        jQuery.cookie(this.name, text.join('#'), {expires: 365, path: DOKU_BASE});
     },
 
     /**
@@ -59,5 +60,5 @@ DokuCookie = {
                 this.data[decodeURIComponent(parts[i])] = decodeURIComponent(parts[i+1]);
             }
         }
-        }
+    }
 };
diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js
index 816568e9239395d928bd5b97b3059c38e436e9e2..33a8f61b587a6b8efca8ce40c032d5a7ec45344c 100644
--- a/lib/scripts/edit.js
+++ b/lib/scripts/edit.js
@@ -14,38 +14,36 @@
  * @author Michal Rezler <m.rezler@centrum.cz>
  */
 function createToolButton(icon,label,key,id,classname){
-    var $ = jQuery;
-    var btn = $('<button>');
-    var ico = $('<img />');
+    var $btn = jQuery(document.createElement('button')),
+        $ico = jQuery(document.createElement('img'));
 
-    // preapare the basic button stuff
-    btn.attr('class', 'toolbutton');
+    // prepare the basic button stuff
+    $btn.addClass('toolbutton');
     if(classname){
-        btn.attr('class', 'toolbutton '+classname);
+        $btn.addClass(classname);
     }
 
-    btn.attr('title', label);
+    $btn.attr('title', label);
     if(key){
-        btn.attr('title', label + ' ['+key.toUpperCase()+']')
+        $btn.attr('title', label + ' ['+key.toUpperCase()+']')
             .attr('accessKey', key);
     }
 
     // set IDs if given
     if(id){
-        btn.attr('id', id);
-        ico.attr('id', id+'_ico');
+        $btn.attr('id', id);
+        $ico.attr('id', id+'_ico');
     }
 
     // create the icon and add it to the button
-    if(icon.substr(0,1) == '/'){
-        ico.attr('src', icon);
-    }else{
-        ico.attr('src', DOKU_BASE+'lib/images/toolbar/'+icon);
+    if(icon.substr(0,1) !== '/'){
+        icon = DOKU_BASE + 'lib/images/toolbar/' + icon;
     }
-    btn.append(ico);
+    $ico.attr('src', icon);
+    $btn.append($ico);
 
-    // we have to return a javascript object (for compatibility reasons)
-    return btn[0];
+    // we have to return a DOM object (for compatibility reasons)
+    return $btn[0];
 }
 
 /**
@@ -63,69 +61,51 @@ function createToolButton(icon,label,key,id,classname){
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function createPicker(id,props,edid){
-    var icobase = props['icobase'];
-    var list = props['list'];
-    var $ = jQuery;
-
     // create the wrapping div
-    var picker = $('<div></div>');
+    var $picker = jQuery(document.createElement('div'));
 
-    var className = 'picker';
+    $picker.addClass('picker a11y');
     if(props['class']){
-        className += ' '+props['class'];
+        $picker.addClass(props['class']);
     }
 
-    picker.attr('class', className)
-        .attr('id', id)
-        .css('position', 'absolute')
-        .css('marginLeft', '-10000px') // no display:none, to keep access keys working
-        .css('marginTop', '-10000px');
+    $picker.attr('id', id).css('position', 'absolute');
+
+    function $makebutton(title) {
+        var $btn = jQuery(document.createElement('button'))
+            .addClass('pickerbutton').attr('title', title)
+            .bind('click', bind(pickerInsert, title, edid))
+            .appendTo($picker);
+        return $btn;
+    }
 
-    for(var key in list){
-        if (!list.hasOwnProperty(key)) continue;
+    jQuery.each(props.list, function (key, item) {
+        if (!props.list.hasOwnProperty(key)) {
+            return;
+        }
 
         if(isNaN(key)){
-            // associative array -> treat as image/value pairs
-            var btn = $('<button>');
-            btn.attr('class', 'pickerbutton')
-                .attr('title', key);
-
-            var ico = $('<img>');
-            if (list[key].substr(0,1) == '/') {
-                var src = list[key];
-            } else {
-                var src = DOKU_BASE+'lib/images/'+icobase+'/'+list[key];
+            // associative array -> treat as text => image pairs
+            if (item.substr(0,1) !== '/') {
+                item = DOKU_BASE+'lib/images/'+props.icobase+'/'+item;
             }
-
-            ico.attr('src', src);
-            btn.append(ico);
-
-            btn.bind('click', bind(pickerInsert, key, edid));
-            picker.append(btn);
-        }else if (typeof (list[key]) == 'string'){
+            jQuery(document.createElement('img'))
+                .attr('src', item)
+                .appendTo($makebutton(key));
+        }else if (typeof item == 'string'){
             // a list of text -> treat as text picker
-            var btn = $('<button>');
-            btn.attr('class', 'pickerbutton')
-                .attr('title', list[key]);
-
-            var txt = $(document.createTextNode(list[key]));
-            btn.append(txt);
-
-            btn.bind('click', bind(pickerInsert, list[key], edid));
-
-            picker.append(btn);
+            $makebutton(item).text(item);
         }else{
             // a list of lists -> treat it as subtoolbar
-            initToolbar(picker,edid,list);
-            break; // all buttons handled already
+            initToolbar($picker,edid,props.list);
+            return false; // all buttons handled already
         }
 
-    }
-    var body = $('body');
-    body.append(picker);
+    });
+    jQuery('body').append($picker);
 
-    // we have to return a javascript object (for compatibility reasons)
-    return picker[0];
+    // we have to return a DOM object (for compatibility reasons)
+    return $picker[0];
 }
 
 /**
@@ -147,9 +127,9 @@ function pickerInsert(text,edid){
  * @return boolean    If button should be appended
  * @author Gabriel Birke <birke@d-scribe.de>
  */
-function addBtnActionSignature(btn, props, edid) {
-    if(typeof(SIG) != 'undefined' && SIG != ''){
-        btn.bind('click', bind(insertAtCarret,edid,SIG));
+function addBtnActionSignature($btn, props, edid) {
+    if(typeof SIG != 'undefined' && SIG != ''){
+        $btn.bind('click', bind(insertAtCarret,edid,SIG));
         return true;
     }
     return false;
@@ -161,24 +141,27 @@ function addBtnActionSignature(btn, props, edid) {
  * @author Andreas Gohr <gohr@cosmocode.de>
  */
 function currentHeadlineLevel(textboxId){
-    var field     = $(textboxId);
-    var selection = getSelection(field);
-    var search    = "\n"+field.value.substr(0,selection.start);
-    var lasthl    = search.lastIndexOf("\n==");
-    if(lasthl == -1 && field.form.prefix){
+    var field = jQuery('#' + textboxId)[0],
+        s = false,
+        opts = [field.value.substr(0,getSelection(field).start)];
+    if (field.form.prefix) {
         // we need to look in prefix context
-        search = field.form.prefix.value;
-        lasthl    = search.lastIndexOf("\n==");
+        opts.push(field.form.prefix.value);
     }
-    search    = search.substr(lasthl+1,6);
 
-    if(search == '======') return 1;
-    if(search.substr(0,5) == '=====') return 2;
-    if(search.substr(0,4) == '====') return 3;
-    if(search.substr(0,3) == '===') return 4;
-    if(search.substr(0,2) == '==') return 5;
-
-    return 0;
+    jQuery.each(opts, function (_, opt) {
+        // Check whether there is a headline in the given string
+        var str = "\n" + opt,
+            lasthl = str.lastIndexOf("\n==");
+        if (lasthl !== -1) {
+            s = str.substr(lasthl+1,6);
+            return false;
+        }
+    });
+    if (s === false) {
+        return 0;
+    }
+    return 7 - s.match(/^={2,6}/)[0].length;
 }
 
 
@@ -191,21 +174,23 @@ window.textChanged = false;
  * Delete the draft before leaving the page
  */
 function deleteDraft() {
-    if (is_opera) return;
-    if (window.keepDraft) return;
+    if (is_opera || window.keepDraft) {
+        return;
+    }
 
-    // remove a possibly saved draft using ajax
-    var dwform = jQuery('#dw__editform');
-    if(dwform.length != 0) {
-
-        jQuery.post(
-            DOKU_BASE + 'lib/exe/ajax.php',
-            {
-                call: 'draftdel',
-                id: jQuery('#dw__editform input[name=id]').val()
-            }
-        );
+    var $dwform = jQuery('#dw__editform');
+
+    if($dwform.length === 0) {
+        return;
     }
+
+    // remove a possibly saved draft using ajax
+    jQuery.post(DOKU_BASE + 'lib/exe/ajax.php',
+        {
+            call: 'draftdel',
+            id: $dwform.find('input[name=id]').val()
+        }
+    );
 }
 
 /**
@@ -214,21 +199,24 @@ function deleteDraft() {
  *
  * Sets focus to the editbox as well
  */
-addInitEvent(function () {
-    var $ = jQuery;
-    var editform = $('#dw__editform');
-    if (editform.length == 0) return;
+jQuery(function () {
+    var $editform = jQuery('#dw__editform');
+    if ($editform.length == 0) {
+        return;
+    }
 
-    var edit_text = $('#wiki__text');
-    if (edit_text.length > 0) {
-        if(edit_text.attr('readOnly')) return;
+    var $edit_text = jQuery('#wiki__text');
+    if ($edit_text.length > 0) {
+        if($edit_text.attr('readOnly')) {
+            return;
+        }
 
         // set focus and place cursor at the start
-        var sel = getSelection(edit_text.get(0));
+        var sel = getSelection($edit_text[0]);
         sel.start = 0;
         sel.end   = 0;
         setSelection(sel);
-        edit_text.focus();
+        $edit_text.focus();
     }
 
     var checkfunc = function() {
@@ -236,8 +224,8 @@ addInitEvent(function () {
         summaryCheck();
     };
 
-    editform.change(checkfunc);
-    editform.keydown(checkfunc);
+    $editform.change(checkfunc);
+    $editform.keydown(checkfunc);
 
     window.onbeforeunload = function(){
         if(window.textChanged) {
@@ -247,13 +235,13 @@ addInitEvent(function () {
     window.onunload = deleteDraft;
 
     // reset change memory var on submit
-    $('#edbtn__save').click(
+    jQuery('#edbtn__save').click(
         function() {
             window.onbeforeunload = '';
             textChanged = false;
         }
     );
-    $('#edbtn__preview').click(
+    jQuery('#edbtn__preview').click(
         function() {
             window.onbeforeunload = '';
             textChanged = false;
@@ -261,9 +249,9 @@ addInitEvent(function () {
         }
     );
 
-    var summary = $('#edit__summary');
-    summary.change(summaryCheck);
-    summary.keyup(summaryCheck);
+    var $summary = jQuery('#edit__summary');
+    $summary.change(summaryCheck);
+    $summary.keyup(summaryCheck);
 
     if (textChanged) summaryCheck();
 });
@@ -274,11 +262,7 @@ addInitEvent(function () {
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function summaryCheck(){
-    var sum = jQuery('#edit__summary');
-
-    if (sum.val() === '') {
-        sum.attr('class', 'missing');
-    } else{
-        sum.attr('class', 'edit');
-    }
+    var $sum = jQuery('#edit__summary'),
+        missing = $sum.val() === '';
+    $sum.toggleClass('missing', missing).toggleClass('edit', !missing);
 }
diff --git a/lib/scripts/editor.js b/lib/scripts/editor.js
index 6d7f9f4a8d56bfe69ec9c4fc09665791cfc1fdfe..2009ce6afc82fccd5de3eb4dda8386db0cb67442 100644
--- a/lib/scripts/editor.js
+++ b/lib/scripts/editor.js
@@ -15,11 +15,15 @@ var dw_editor = {
      */
     init: function(){
         var $editor = jQuery('#wiki__text');
-        if(!$editor.length) return;
+        if($editor.length === 0) {
+            return;
+        }
 
         dw_editor.initSizeCtl('#size__ctl',$editor);
 
-        if($editor.attr('readOnly')) return;
+        if($editor.attr('readOnly')) {
+            return;
+        }
 
         // in Firefox, keypress doesn't send the correct keycodes,
         // in Opera, the default of keydown can't be prevented
@@ -40,34 +44,30 @@ var dw_editor = {
      * @param selector editor  the textarea to control
      */
     initSizeCtl: function(ctlarea,editor){
-        var $ctl      = jQuery(ctlarea);
-        var $textarea = jQuery(editor);
-        if(!$ctl.length || !$textarea.length) return;
-
-        var hgt = DokuCookie.getValue('sizeCtl');
-        if(hgt){
-            $textarea.css('height', hgt);
-        }else{
-            $textarea.css('height', '300px');
+        var $ctl      = jQuery(ctlarea),
+            $textarea = jQuery(editor);
+
+        if($ctl.length === 0 || $textarea.length === 0) {
+            return;
         }
 
+        $textarea.css('height', DokuCookie.getValue('sizeCtl') || '300px');
+
         var wrp = DokuCookie.getValue('wrapCtl');
         if(wrp){
             dw_editor.setWrap($textarea[0], wrp);
         } // else use default value
 
-        var l = document.createElement('img');
-        var s = document.createElement('img');
-        var w = document.createElement('img');
-        l.src = DOKU_BASE+'lib/images/larger.gif';
-        s.src = DOKU_BASE+'lib/images/smaller.gif';
-        w.src = DOKU_BASE+'lib/images/wrap.gif';
-        jQuery(l).click(function(){dw_editor.sizeCtl(editor,100);});
-        jQuery(s).click(function(){dw_editor.sizeCtl(editor,-100);});
-        jQuery(w).click(function(){dw_editor.toggleWrap(editor);});
-        $ctl.append(l);
-        $ctl.append(s);
-        $ctl.append(w);
+        jQuery.each([
+            ['larger', function(){dw_editor.sizeCtl(editor,100);}],
+            ['smaller', function(){dw_editor.sizeCtl(editor,-100);}],
+            ['wrap', function(){dw_editor.toggleWrap(editor);}],
+        ], function (_, img) {
+            jQuery(document.createElement('img'))
+                .attr('src', DOKU_BASE+'lib/images/' + img[0] + '.gif')
+                .click(img[1])
+                .appendTo($ctl);
+        });
     },
 
     /**
@@ -77,9 +77,8 @@ var dw_editor = {
      * @param int val          the relative value to resize in pixel
      */
     sizeCtl: function(editor,val){
-        var $textarea = jQuery(editor);
-        var height = parseInt($textarea.css('height'));
-        height += val;
+        var $textarea = jQuery(editor),
+            height = parseInt($textarea.css('height')) + val;
         $textarea.css('height', height+'px');
         DokuCookie.setValue('sizeCtl',$textarea.css('height'));
     },
@@ -91,13 +90,10 @@ var dw_editor = {
      * @param selector editor  the textarea to control
      */
     toggleWrap: function(editor){
-        var $textarea = jQuery(editor);
-        var wrap = textarea.attr('wrap');
-        if(wrap && wrap.toLowerCase() == 'off'){
-            dw_editor.setWrap(textarea[0], 'soft');
-        }else{
-            dw_editor.setWrap(textarea[0], 'off');
-        }
+        var $textarea = jQuery(editor),
+            wrap = $textarea.attr('wrap');
+        dw_editor.setWrap($textarea[0],
+                          (wrap && wrap.toLowerCase() == 'off') ? 'soft' : 'off');
         DokuCookie.setValue('wrapCtl',$textarea.attr('wrap'));
     },
 
@@ -134,13 +130,14 @@ var dw_editor = {
      * @param event e - the key press event object
      */
     keyHandler: function(e){
-        if(e.keyCode != 13 &&
-           e.keyCode != 8  &&
-           e.keyCode != 32) return;
-        var field     = e.target;
-        var selection = getSelection(field);
-        if(selection.getLength()) return; //there was text selected, keep standard behavior
-        var search    = "\n"+field.value.substr(0,selection.start);
+        if([8, 13, 32].indexOf(e.keyCode) === -1) {
+            return;
+        }
+        var selection = getSelection(this);
+        if(selection.getLength() > 0) {
+            return; //there was text selected, keep standard behavior
+        }
+        var search    = "\n"+this.value.substr(0,selection.start);
         var linestart = Math.max(search.lastIndexOf("\n"),
                                  search.lastIndexOf("\r")); //IE workaround
         search = search.substr(linestart);
@@ -149,19 +146,19 @@ var dw_editor = {
             // keep current indention for lists and code
             var match = search.match(/(\n  +([\*-] ?)?)/);
             if(match){
-                var scroll = field.scrollHeight;
+                var scroll = this.scrollHeight;
                 var match2 = search.match(/^\n  +[\*-]\s*$/);
                 // Cancel list if the last item is empty (i. e. two times enter)
-                if (match2 && field.value.substr(selection.start).match(/^($|\r?\n)/)) {
-                    field.value = field.value.substr(0, linestart) + "\n" +
-                                  field.value.substr(selection.start);
+                if (match2 && this.value.substr(selection.start).match(/^($|\r?\n)/)) {
+                    this.value = this.value.substr(0, linestart) + "\n" +
+                                 this.value.substr(selection.start);
                     selection.start = linestart + 1;
                     selection.end = linestart + 1;
                     setSelection(selection);
                 } else {
-                    insertAtCarret(field.id,match[1]);
+                    insertAtCarret(this.id,match[1]);
                 }
-                field.scrollTop += (field.scrollHeight - scroll);
+                this.scrollTop += (this.scrollHeight - scroll);
                 e.preventDefault(); // prevent enter key
                 return false;
             }
@@ -172,13 +169,13 @@ var dw_editor = {
                 var spaces = match[1].length-1;
 
                 if(spaces > 3){ // unindent one level
-                    field.value = field.value.substr(0,linestart)+
-                                  field.value.substr(linestart+2);
+                    this.value = this.value.substr(0,linestart)+
+                                 this.value.substr(linestart+2);
                     selection.start = selection.start - 2;
                     selection.end   = selection.start;
                 }else{ // delete list point
-                    field.value = field.value.substr(0,linestart)+
-                                  field.value.substr(selection.start);
+                    this.value = this.value.substr(0,linestart)+
+                                 this.value.substr(selection.start);
                     selection.start = linestart;
                     selection.end   = linestart;
                 }
@@ -190,8 +187,8 @@ var dw_editor = {
             // intend list item
             var match = search.match(/(\n  +)([*-] )$/);
             if(match){
-                field.value = field.value.substr(0,linestart)+'  '+
-                              field.value.substr(linestart);
+                this.value = this.value.substr(0,linestart)+'  '+
+                             this.value.substr(linestart);
                 selection.start = selection.start + 2;
                 selection.end   = selection.start;
                 setSelection(selection);
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index ed631a9eaa04328fc8be1b3a446e6830546e6b75..f92bdbc49711d8280043936ee8c7c7a2f5511b1f 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -76,23 +76,24 @@ qq.FileUploaderExtended = function(o){
         listElement: null,
 
         template: '<div class="qq-uploader">' +
-                '<div class="qq-upload-drop-area"><span>' + LANG.media_drop + '</span></div>' +
-                '<div class="qq-upload-button">' + LANG.media_select + '</div>' +
-                '<div class="qq-upload-list"></div>' +
-                '<div><input class="button" type="submit" value="' + LANG.media_upload_btn + '" id="mediamanager__upload_button">' +
-                '<label class="check"><input class="dw__ow" type="checkbox" value="1" name="ow"><span>' + LANG.media_overwrt + '</span></label>' +
-                '</div>' +
-             '</div>',
+            '<div class="qq-upload-drop-area"><span>' + LANG.media_drop + '</span></div>' +
+            '<div class="qq-upload-button">' + LANG.media_select + '</div>' +
+            '<ul class="qq-upload-list"></ul>' +
+            '<div class="qq-action-container">' +
+            '  <input class="qq-upload-action button" type="submit" value="' + LANG.media_upload_btn + '" id="mediamanager__upload_button">' +
+            '  <label class="qq-overwrite-check"><input type="checkbox" value="1" name="ow" class="dw__ow"> <span>' + LANG.media_overwrt + '</span></label>' +
+            '</div>' +
+            '</div>',
 
         // template for one item in file list
-        fileTemplate: '<div class="li">' +
-                '<span class="qq-upload-file qq-upload-file-hidden"></span>' +
-                '<input class="qq-upload-name-input edit" type="text">' +
-                '<span class="qq-upload-spinner-hidden"></span>' +
-                '<span class="qq-upload-size"></span>' +
-                '<a class="qq-upload-cancel" href="#">' + LANG.media_cancel + '</a>' +
-                '<span class="qq-upload-failed-text">Failed</span>' +
-            '</div>',
+        fileTemplate: '<li>' +
+              '<span class="qq-upload-file hidden"></span>' +
+            '  <input class="qq-upload-name-input edit" type="text" value="" />' +
+            '  <span class="qq-upload-spinner hidden"></span>' +
+            '  <span class="qq-upload-size"></span>' +
+            '  <a class="qq-upload-cancel" href="#">' + LANG.media_cancel + '</a>' +
+            '  <span class="qq-upload-failed-text error">Failed</span>' +
+            '</li>',
 
         classes: {
             // used to get elements from templates
@@ -101,6 +102,8 @@ qq.FileUploaderExtended = function(o){
             dropActive: 'qq-upload-drop-area-active',
             list: 'qq-upload-list',
             nameInput: 'qq-upload-name-input',
+            overwriteInput: 'qq-overwrite-check',
+            uploadButton: 'qq-upload-action',
             file: 'qq-upload-file',
 
             spinner: 'qq-upload-spinner',
@@ -111,7 +114,7 @@ qq.FileUploaderExtended = function(o){
             // used in css to hide progress spinner
             success: 'qq-upload-success',
             fail: 'qq-upload-fail',
-            failedText : 'qq-upload-failed-text'
+            failedText: 'qq-upload-failed-text'
         }
     });
 
@@ -160,7 +163,7 @@ qq.extend(qq.FileUploaderExtended.prototype, {
         var nameInput = this._find(item, 'nameInput');
         var fileElement = this._find(item, 'file');
         qq.setText(fileElement, nameInput.value);
-        qq.removeClass(fileElement, 'qq-upload-file-hidden');
+        qq.removeClass(fileElement, 'hidden');
         qq.remove(nameInput);
         jQuery('.qq-upload-button, #mediamanager__upload_button').remove();
         jQuery('.dw__ow').parent().hide();
@@ -211,8 +214,8 @@ qq.extend(qq.UploadHandlerForm.prototype, {
     },
 
     _uploadAll: function(params){
-         jQuery(".qq-upload-spinner-hidden").each(function (i) {
-            jQuery(this).addClass('qq-upload-spinner');
+         jQuery(".qq-upload-spinner").each(function (i) {
+            jQuery(this).removeClass('hidden');
         });
         for (key in this._inputs) {
             this.upload(key, params);
@@ -236,9 +239,9 @@ qq.extend(qq.UploadHandlerForm.prototype, {
         var nameInput = qq.toElement('<input name="mediaid" value="' + fileName + '" type="text">');
         form.appendChild(nameInput);
 
-	    var checked = jQuery('.dw__ow').attr('checked');
+        var checked = jQuery('.dw__ow').attr('checked');
         var owCheckbox = jQuery('.dw__ow').clone();
-    	owCheckbox.attr('checked', checked);
+        owCheckbox.attr('checked', checked);
         jQuery(form).append(owCheckbox);
 
         var self = this;
@@ -328,8 +331,8 @@ qq.extend(qq.UploadHandlerXhr.prototype, {
     },
 
     _uploadAll: function(params){
-        jQuery(".qq-upload-spinner-hidden").each(function (i) {
-            jQuery(this).addClass('qq-upload-spinner');
+        jQuery(".qq-upload-spinner").each(function (i) {
+            jQuery(this).removeClass('hidden');
         });
         for (key in this._files) {
             this.upload(key, params);
diff --git a/lib/scripts/index.js b/lib/scripts/index.js
index 96d4e2fb97e10eba907839cb5e71a8df409b839b..4b67a0b12d7736d17187d4612fe2650fd19a1bfb 100644
--- a/lib/scripts/index.js
+++ b/lib/scripts/index.js
@@ -1,6 +1,3 @@
-/*jslint white: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: false, newcap: true, immed: true */
-/*global jQuery, window, DOKU_BASE, DEPRECATED, bind*/
-
 var dw_index = jQuery('#index__tree').dw_tree({deferInit: true,
     load_data: function  (show_sublist, $clicky) {
         jQuery.post(
diff --git a/lib/scripts/jquery/jquery-ui-theme/smoothness.css b/lib/scripts/jquery/jquery-ui-theme/smoothness.css
index ad212daefd72ee0ca951e8cd2e155f8833caef38..910d24b95df3baa55177b6f51692ebcb1254b14b 100644
--- a/lib/scripts/jquery/jquery-ui-theme/smoothness.css
+++ b/lib/scripts/jquery/jquery-ui-theme/smoothness.css
@@ -1,5 +1,5 @@
 /*
- * jQuery UI CSS Framework 1.8.14
+ * jQuery UI CSS Framework 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -42,7 +42,7 @@
 
 
 /*
- * jQuery UI CSS Framework 1.8.14
+ * jQuery UI CSS Framework 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -56,9 +56,9 @@
 
 /* Component containers
 ----------------------------------*/
-.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.ui-widget { font-size: 1.1em; }
 .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; font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-size: 1em; }
 .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
 .ui-widget-content a { color: #222222; }
 .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
@@ -288,7 +288,7 @@
 /* Overlays */
 .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
 .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
- * jQuery UI Resizable 1.8.14
+ * jQuery UI Resizable 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -307,7 +307,7 @@
 .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 1.8.14
+ * jQuery UI Selectable 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -317,7 +317,7 @@
  */
 .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
 /*
- * jQuery UI Accordion 1.8.14
+ * jQuery UI Accordion 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -336,7 +336,7 @@
 .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 1.8.14
+ * jQuery UI Autocomplete 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -350,7 +350,7 @@
 * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
 
 /*
- * jQuery UI Menu 1.8.14
+ * jQuery UI Menu 1.8.16
  *
  * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -389,7 +389,7 @@
 	margin: -1px;
 }
 /*
- * jQuery UI Button 1.8.14
+ * jQuery UI Button 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -427,7 +427,7 @@ input.ui-button { padding: .4em 1em; }
 /* workarounds */
 button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
 /*
- * jQuery UI Dialog 1.8.14
+ * jQuery UI Dialog 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -448,7 +448,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
 .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
 .ui-draggable .ui-dialog-titlebar { cursor: move; }
 /*
- * jQuery UI Slider 1.8.14
+ * jQuery UI Slider 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -471,7 +471,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
 .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 1.8.14
+ * jQuery UI Tabs 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -489,7 +489,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
 .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 Datepicker 1.8.14
+ * jQuery UI Datepicker 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -556,7 +556,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
     width: 200px; /*must have*/
     height: 200px; /*must have*/
 }/*
- * jQuery UI Progressbar 1.8.14
+ * jQuery UI Progressbar 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
diff --git a/lib/scripts/jquery/jquery-ui.js b/lib/scripts/jquery/jquery-ui.js
index bc11b03156567db37899cbfc4a9907bde95c63e7..cd515f36129cfe56142ea40bedb65a3cf422be00 100644
--- a/lib/scripts/jquery/jquery-ui.js
+++ b/lib/scripts/jquery/jquery-ui.js
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI 1.8.14
+ * jQuery UI 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -18,7 +18,7 @@ if ( $.ui.version ) {
 }
 
 $.extend( $.ui, {
-	version: "1.8.14",
+	version: "1.8.16",
 
 	keyCode: {
 		ALT: 18,
@@ -58,6 +58,8 @@ $.extend( $.ui, {
 
 // plugins
 $.fn.extend({
+	propAttr: $.fn.prop || $.fn.attr,
+
 	_focus: $.fn.focus,
 	focus: function( delay, fn ) {
 		return typeof delay === "number" ?
@@ -311,7 +313,7 @@ $.extend( $.ui, {
 
 })( jQuery );
 /*!
- * jQuery UI Widget 1.8.14
+ * jQuery UI Widget 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -326,7 +328,10 @@ if ( $.cleanData ) {
 	var _cleanData = $.cleanData;
 	$.cleanData = function( elems ) {
 		for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
-			$( elem ).triggerHandler( "remove" );
+			try {
+				$( elem ).triggerHandler( "remove" );
+			// http://bugs.jquery.com/ticket/8235
+			} catch( e ) {}
 		}
 		_cleanData( elems );
 	};
@@ -337,7 +342,10 @@ if ( $.cleanData ) {
 			if ( !keepData ) {
 				if ( !selector || $.filter( selector, [ this ] ).length ) {
 					$( "*", this ).add( [ this ] ).each(function() {
-						$( this ).triggerHandler( "remove" );
+						try {
+							$( this ).triggerHandler( "remove" );
+						// http://bugs.jquery.com/ticket/8235
+						} catch( e ) {}
 					});
 				}
 			}
@@ -573,7 +581,7 @@ $.Widget.prototype = {
 
 })( jQuery );
 /*!
- * jQuery UI Mouse 1.8.14
+ * jQuery UI Mouse 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -587,7 +595,7 @@ $.Widget.prototype = {
 (function( $, undefined ) {
 
 var mouseHandled = false;
-$(document).mousedown(function(e) {
+$( document ).mouseup( function( e ) {
 	mouseHandled = false;
 });
 
@@ -623,7 +631,7 @@ $.widget("ui.mouse", {
 
 	_mouseDown: function(event) {
 		// don't let more than one widget handle mouseStart
-		if(mouseHandled) {return};
+		if( mouseHandled ) { return };
 
 		// we may have missed mouseup (out of window)
 		(this._mouseStarted && this._mouseUp(event));
@@ -632,7 +640,9 @@ $.widget("ui.mouse", {
 
 		var self = this,
 			btnIsLeft = (event.which == 1),
-			elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).closest(this.options.cancel).length : false);
+			// event.target.nodeName works around a bug in IE 8 with
+			// disabled inputs (#7620)
+			elIsCancel = (typeof this.options.cancel == "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
 		if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
 			return true;
 		}
@@ -733,7 +743,7 @@ $.widget("ui.mouse", {
 
 })(jQuery);
 /*
- * jQuery UI Draggable 1.8.14
+ * jQuery UI Draggable 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -814,15 +824,17 @@ $.widget("ui.draggable", $.ui.mouse, {
 		if (!this.handle)
 			return false;
 		
-		$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
-			$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
-			.css({
-				width: this.offsetWidth+"px", height: this.offsetHeight+"px",
-				position: "absolute", opacity: "0.001", zIndex: 1000
-			})
-			.css($(this).offset())
-			.appendTo("body");
-		});
+		if ( o.iframeFix ) {
+			$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
+				$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
+				.css({
+					width: this.offsetWidth+"px", height: this.offsetHeight+"px",
+					position: "absolute", opacity: "0.001", zIndex: 1000
+				})
+				.css($(this).offset())
+				.appendTo("body");
+			});
+		}
 
 		return true;
 
@@ -1237,7 +1249,7 @@ $.widget("ui.draggable", $.ui.mouse, {
 });
 
 $.extend($.ui.draggable, {
-	version: "1.8.14"
+	version: "1.8.16"
 });
 
 $.ui.plugin.add("draggable", "connectToSortable", {
@@ -1556,7 +1568,7 @@ $.ui.plugin.add("draggable", "zIndex", {
 
 })(jQuery);
 /*
- * jQuery UI Droppable 1.8.14
+ * jQuery UI Droppable 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -1704,7 +1716,7 @@ $.widget("ui.droppable", {
 });
 
 $.extend($.ui.droppable, {
-	version: "1.8.14"
+	version: "1.8.16"
 });
 
 $.ui.intersect = function(draggable, droppable, toleranceMode) {
@@ -1797,7 +1809,7 @@ $.ui.ddmanager = {
 	},
 	dragStart: function( draggable, event ) {
 		//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)
-		draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() {
+		draggable.element.parents( ":not(body,html)" ).bind( "scroll.droppable", function() {
 			if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );
 		});
 	},
@@ -1844,7 +1856,7 @@ $.ui.ddmanager = {
 
 	},
 	dragStop: function( draggable, event ) {
-		draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );
+		draggable.element.parents( ":not(body,html)" ).unbind( "scroll.droppable" );
 		//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)
 		if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );
 	}
@@ -1852,7 +1864,7 @@ $.ui.ddmanager = {
 
 })(jQuery);
 /*
- * jQuery UI Resizable 1.8.14
+ * jQuery UI Resizable 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -2402,7 +2414,7 @@ $.widget("ui.resizable", $.ui.mouse, {
 });
 
 $.extend($.ui.resizable, {
-	version: "1.8.14"
+	version: "1.8.16"
 });
 
 /*
@@ -2694,7 +2706,7 @@ var isNumber = function(value) {
 
 })(jQuery);
 /*
- * jQuery UI Selectable 1.8.14
+ * jQuery UI Selectable 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -2955,12 +2967,12 @@ $.widget("ui.selectable", $.ui.mouse, {
 });
 
 $.extend($.ui.selectable, {
-	version: "1.8.14"
+	version: "1.8.16"
 });
 
 })(jQuery);
 /*
- * jQuery UI Sortable 1.8.14
+ * jQuery UI Sortable 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -4032,12 +4044,12 @@ $.widget("ui.sortable", $.ui.mouse, {
 });
 
 $.extend($.ui.sortable, {
-	version: "1.8.14"
+	version: "1.8.16"
 });
 
 })(jQuery);
 /*
- * jQuery UI Effects 1.8.14
+ * jQuery UI Effects 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -4344,7 +4356,7 @@ $.fn.extend({
 /******************************************************************************/
 
 $.extend($.effects, {
-	version: "1.8.14",
+	version: "1.8.16",
 
 	// Saves a set of properties in a data storage
 	save: function(element, set) {
@@ -4405,9 +4417,16 @@ $.extend($.effects, {
 					border: 'none',
 					margin: 0,
 					padding: 0
-				});
+				}),
+			active = document.activeElement;
 
 		element.wrap(wrapper);
+
+		// Fixes #7595 - Elements lose focus when wrapped.
+		if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
+			$( active ).focus();
+		}
+		
 		wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually loose the reference to the wrapped element
 
 		// transfer positioning properties to the wrapper
@@ -4432,8 +4451,18 @@ $.extend($.effects, {
 	},
 
 	removeWrapper: function(element) {
-		if (element.parent().is('.ui-effects-wrapper'))
-			return element.parent().replaceWith(element);
+		var parent,
+			active = document.activeElement;
+		
+		if (element.parent().is('.ui-effects-wrapper')) {
+			parent = element.parent().replaceWith(element);
+			// Fixes #7595 - Elements lose focus when wrapped.
+			if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
+				$( active ).focus();
+			}
+			return parent;
+		}
+			
 		return element;
 	},
 
@@ -4783,7 +4812,7 @@ $.extend($.easing,
 
 })(jQuery);
 /*
- * jQuery UI Effects Blind 1.8.14
+ * jQuery UI Effects Blind 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -4832,7 +4861,7 @@ $.effects.blind = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Effects Bounce 1.8.14
+ * jQuery UI Effects Bounce 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -4910,7 +4939,7 @@ $.effects.bounce = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Effects Clip 1.8.14
+ * jQuery UI Effects Clip 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -4964,7 +4993,7 @@ $.effects.clip = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Effects Drop 1.8.14
+ * jQuery UI Effects Drop 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5014,7 +5043,7 @@ $.effects.drop = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Effects Explode 1.8.14
+ * jQuery UI Effects Explode 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5093,7 +5122,7 @@ $.effects.explode = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Effects Fade 1.8.14
+ * jQuery UI Effects Fade 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5125,7 +5154,7 @@ $.effects.fade = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Effects Fold 1.8.14
+ * jQuery UI Effects Fold 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5181,7 +5210,7 @@ $.effects.fold = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Effects Highlight 1.8.14
+ * jQuery UI Effects Highlight 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5231,7 +5260,7 @@ $.effects.highlight = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Effects Pulsate 1.8.14
+ * jQuery UI Effects Pulsate 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5282,7 +5311,7 @@ $.effects.pulsate = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Effects Scale 1.8.14
+ * jQuery UI Effects Scale 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5460,7 +5489,7 @@ $.effects.size = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Effects Shake 1.8.14
+ * jQuery UI Effects Shake 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5517,7 +5546,7 @@ $.effects.shake = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Effects Slide 1.8.14
+ * jQuery UI Effects Slide 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5567,7 +5596,7 @@ $.effects.slide = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Effects Transfer 1.8.14
+ * jQuery UI Effects Transfer 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -5612,7 +5641,7 @@ $.effects.transfer = function(o) {
 
 })(jQuery);
 /*
- * jQuery UI Accordion 1.8.14
+ * jQuery UI Accordion 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -6131,7 +6160,7 @@ $.widget( "ui.accordion", {
 });
 
 $.extend( $.ui.accordion, {
-	version: "1.8.14",
+	version: "1.8.16",
 	animations: {
 		slide: function( options, additions ) {
 			options = $.extend({
@@ -6223,7 +6252,7 @@ $.extend( $.ui.accordion, {
 
 })( jQuery );
 /*
- * jQuery UI Autocomplete 1.8.14
+ * jQuery UI Autocomplete 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -6272,7 +6301,7 @@ $.widget( "ui.autocomplete", {
 				"aria-haspopup": "true"
 			})
 			.bind( "keydown.autocomplete", function( event ) {
-				if ( self.options.disabled || self.element.attr( "readonly" ) ) {
+				if ( self.options.disabled || self.element.propAttr( "readOnly" ) ) {
 					return;
 				}
 
@@ -6835,7 +6864,7 @@ $.widget("ui.menu", {
 
 }(jQuery));
 /*
- * jQuery UI Button 1.8.14
+ * jQuery UI Button 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -6892,7 +6921,7 @@ $.widget( "ui.button", {
 			.bind( "reset.button", formResetHandler );
 
 		if ( typeof this.options.disabled !== "boolean" ) {
-			this.options.disabled = this.element.attr( "disabled" );
+			this.options.disabled = this.element.propAttr( "disabled" );
 		}
 
 		this._determineButtonType();
@@ -6989,7 +7018,7 @@ $.widget( "ui.button", {
 					return false;
 				}
 				$( this ).addClass( "ui-state-active" );
-				self.buttonElement.attr( "aria-pressed", true );
+				self.buttonElement.attr( "aria-pressed", "true" );
 
 				var radio = self.element[ 0 ];
 				radioGroup( radio )
@@ -6998,7 +7027,7 @@ $.widget( "ui.button", {
 						return $( this ).button( "widget" )[ 0 ];
 					})
 					.removeClass( "ui-state-active" )
-					.attr( "aria-pressed", false );
+					.attr( "aria-pressed", "false" );
 			});
 		} else {
 			this.buttonElement
@@ -7063,7 +7092,7 @@ $.widget( "ui.button", {
 			// we don't search against the document in case the element
 			// is disconnected from the DOM
 			var ancestor = this.element.parents().filter(":last"),
-				labelSelector = "label[for=" + this.element.attr("id") + "]";
+				labelSelector = "label[for='" + this.element.attr("id") + "']";
 			this.buttonElement = ancestor.find( labelSelector );
 			if ( !this.buttonElement.length ) {
 				ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();
@@ -7108,9 +7137,9 @@ $.widget( "ui.button", {
 		$.Widget.prototype._setOption.apply( this, arguments );
 		if ( key === "disabled" ) {
 			if ( value ) {
-				this.element.attr( "disabled", true );
+				this.element.propAttr( "disabled", true );
 			} else {
-				this.element.removeAttr( "disabled" );
+				this.element.propAttr( "disabled", false );
 			}
 			return;
 		}
@@ -7127,22 +7156,22 @@ $.widget( "ui.button", {
 				if ( $( this ).is( ":checked" ) ) {
 					$( this ).button( "widget" )
 						.addClass( "ui-state-active" )
-						.attr( "aria-pressed", true );
+						.attr( "aria-pressed", "true" );
 				} else {
 					$( this ).button( "widget" )
 						.removeClass( "ui-state-active" )
-						.attr( "aria-pressed", false );
+						.attr( "aria-pressed", "false" );
 				}
 			});
 		} else if ( this.type === "checkbox" ) {
 			if ( this.element.is( ":checked" ) ) {
 				this.buttonElement
 					.addClass( "ui-state-active" )
-					.attr( "aria-pressed", true );
+					.attr( "aria-pressed", "true" );
 			} else {
 				this.buttonElement
 					.removeClass( "ui-state-active" )
-					.attr( "aria-pressed", false );
+					.attr( "aria-pressed", "false" );
 			}
 		}
 	},
@@ -7251,7 +7280,7 @@ $.widget( "ui.buttonset", {
 
 }( jQuery ) );
 /*
- * jQuery UI Datepicker 1.8.14
+ * jQuery UI Datepicker 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -7264,7 +7293,7 @@ $.widget( "ui.buttonset", {
  */
 (function( $, undefined ) {
 
-$.extend($.ui, { datepicker: { version: "1.8.14" } });
+$.extend($.ui, { datepicker: { version: "1.8.16" } });
 
 var PROP_NAME = 'datepicker';
 var dpuuid = new Date().getTime();
@@ -7357,7 +7386,8 @@ function Datepicker() {
 		altFormat: '', // The date format to use for the alternate field
 		constrainInput: true, // The input is constrained by the current date format
 		showButtonPanel: false, // True to show button panel, false to not show it
-		autoSize: false // True to size the input for the date format, false to leave as is
+		autoSize: false, // True to size the input for the date format, false to leave as is
+		disabled: false // The initial disabled state
 	};
 	$.extend(this._defaults, this.regional['']);
 	this.dpDiv = bindHover($('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'));
@@ -7449,6 +7479,10 @@ $.extend(Datepicker.prototype, {
 			});
 		this._autoSize(inst);
 		$.data(target, PROP_NAME, inst);
+		//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
+		if( inst.settings.disabled ) {
+			this._disableDatepicker( target );
+		}
 	},
 
 	/* Make attachments based on settings. */
@@ -7528,7 +7562,13 @@ $.extend(Datepicker.prototype, {
 		this._setDate(inst, this._getDefaultDate(inst), true);
 		this._updateDatepicker(inst);
 		this._updateAlternate(inst);
-		inst.dpDiv.show();
+		//If disabled option is true, disable the datepicker before showing it (see ticket #5665)
+		if( inst.settings.disabled ) {
+			this._disableDatepicker( target );
+		}
+		// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
+		// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
+		inst.dpDiv.css( "display", "block" );
 	},
 
 	/* Pop-up the date picker in a "dialog" box.
@@ -7772,6 +7812,13 @@ $.extend(Datepicker.prototype, {
 									$.datepicker._currentClass + ')', inst.dpDiv);
 						if (sel[0])
 							$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
+							var onSelect = $.datepicker._get(inst, 'onSelect');
+							if (onSelect) {
+								var dateStr = $.datepicker._formatDate(inst);
+
+								// trigger custom callback
+								onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);
+							}
 						else
 							$.datepicker._hideDatepicker();
 						return false; // don't submit the form
@@ -7859,6 +7906,7 @@ $.extend(Datepicker.prototype, {
 	},
 
 	/* Pop-up the date picker for a given input field.
+       If false returned from beforeShow event handler do not show. 
 	   @param  input  element - the input field attached to the date picker or
 	                  event - if triggered by focus */
 	_showDatepicker: function(input) {
@@ -7875,7 +7923,12 @@ $.extend(Datepicker.prototype, {
 			$.datepicker._curInst.dpDiv.stop(true, true);
 		}
 		var beforeShow = $.datepicker._get(inst, 'beforeShow');
-		extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {}));
+		var beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};
+		if(beforeShowSettings === false){
+            //false
+			return;
+		}
+		extendRemove(inst.settings, beforeShowSettings);
 		inst.lastVal = null;
 		$.datepicker._lastInput = input;
 		$.datepicker._setDateFromField(inst);
@@ -8112,7 +8165,6 @@ $.extend(Datepicker.prototype, {
 	_selectMonthYear: function(id, select, period) {
 		var target = $(id);
 		var inst = this._getInst(target[0]);
-		inst._selectingMonthYear = false;
 		inst['selected' + (period == 'M' ? 'Month' : 'Year')] =
 		inst['draw' + (period == 'M' ? 'Month' : 'Year')] =
 			parseInt(select.options[select.selectedIndex].value,10);
@@ -8120,18 +8172,6 @@ $.extend(Datepicker.prototype, {
 		this._adjustDate(target);
 	},
 
-	/* Restore input focus after not changing month/year. */
-	_clickMonthYear: function(id) {
-		var target = $(id);
-		var inst = this._getInst(target[0]);
-		if (inst.input && inst._selectingMonthYear) {
-			setTimeout(function() {
-				inst.input.focus();
-			}, 0);
-		}
-		inst._selectingMonthYear = !inst._selectingMonthYear;
-	},
-
 	/* Action for selecting a day. */
 	_selectDay: function(id, month, year, td) {
 		var target = $(id);
@@ -8830,7 +8870,6 @@ $.extend(Datepicker.prototype, {
 			var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);
 			monthHtml += '<select class="ui-datepicker-month" ' +
 				'onchange="DP_jQuery_' + dpuuid + '.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'M\');" ' +
-				'onclick="DP_jQuery_' + dpuuid + '.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
 			 	'>';
 			for (var month = 0; month < 12; month++) {
 				if ((!inMinYear || month >= minDate.getMonth()) &&
@@ -8864,7 +8903,6 @@ $.extend(Datepicker.prototype, {
 				endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
 				inst.yearshtml += '<select class="ui-datepicker-year" ' +
 					'onchange="DP_jQuery_' + dpuuid + '.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' +
-					'onclick="DP_jQuery_' + dpuuid + '.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
 					'>';
 				for (; year <= endYear; year++) {
 					inst.yearshtml += '<option value="' + year + '"' +
@@ -9057,7 +9095,7 @@ $.fn.datepicker = function(options){
 $.datepicker = new Datepicker(); // singleton instance
 $.datepicker.initialized = false;
 $.datepicker.uuid = new Date().getTime();
-$.datepicker.version = "1.8.14";
+$.datepicker.version = "1.8.16";
 
 // Workaround for #4055
 // Add another global to avoid noConflict issues with inline event handlers
@@ -9065,7 +9103,7 @@ window['DP_jQuery_' + dpuuid] = $;
 
 })(jQuery);
 /*
- * jQuery UI Dialog 1.8.14
+ * jQuery UI Dialog 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -9176,7 +9214,7 @@ $.widget("ui.dialog", {
 				// setting tabIndex makes the div focusable
 				// setting outline to 0 prevents a border on focus in Mozilla
 				.attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
-					if (options.closeOnEscape && event.keyCode &&
+					if (options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
 						event.keyCode === $.ui.keyCode.ESCAPE) {
 						
 						self.close(event);
@@ -9372,7 +9410,7 @@ $.widget("ui.dialog", {
 
 		//Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed.
 		//  http://ui.jquery.com/bugs/ticket/3193
-		saveScroll = { scrollTop: self.element.attr('scrollTop'), scrollLeft: self.element.attr('scrollLeft') };
+		saveScroll = { scrollTop: self.element.scrollTop(), scrollLeft: self.element.scrollLeft() };
 		$.ui.dialog.maxZ += 1;
 		self.uiDialog.css('z-index', $.ui.dialog.maxZ);
 		self.element.attr(saveScroll);
@@ -9768,7 +9806,7 @@ $.widget("ui.dialog", {
 });
 
 $.extend($.ui.dialog, {
-	version: "1.8.14",
+	version: "1.8.16",
 
 	uuid: 0,
 	maxZ: 0,
@@ -9814,7 +9852,7 @@ $.extend($.ui.dialog.overlay, {
 
 			// allow closing by pressing the escape key
 			$(document).bind('keydown.dialog-overlay', function(event) {
-				if (dialog.options.closeOnEscape && event.keyCode &&
+				if (dialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
 					event.keyCode === $.ui.keyCode.ESCAPE) {
 					
 					dialog.close(event);
@@ -9943,7 +9981,7 @@ $.extend($.ui.dialog.overlay.prototype, {
 
 }(jQuery));
 /*
- * jQuery UI Position 1.8.14
+ * jQuery UI Position 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -10195,7 +10233,7 @@ if ( !$.offset.setOffset ) {
 
 }( jQuery ));
 /*
- * jQuery UI Progressbar 1.8.14
+ * jQuery UI Progressbar 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -10299,12 +10337,12 @@ $.widget( "ui.progressbar", {
 });
 
 $.extend( $.ui.progressbar, {
-	version: "1.8.14"
+	version: "1.8.16"
 });
 
 })( jQuery );
 /*
- * jQuery UI Slider 1.8.14
+ * jQuery UI Slider 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -10807,10 +10845,10 @@ $.widget( "ui.slider", $.ui.mouse, {
 				if ( value ) {
 					this.handles.filter( ".ui-state-focus" ).blur();
 					this.handles.removeClass( "ui-state-hover" );
-					this.handles.attr( "disabled", "disabled" );
+					this.handles.propAttr( "disabled", true );
 					this.element.addClass( "ui-disabled" );
 				} else {
-					this.handles.removeAttr( "disabled" );
+					this.handles.propAttr( "disabled", false );
 					this.element.removeClass( "ui-disabled" );
 				}
 				break;
@@ -10881,7 +10919,7 @@ $.widget( "ui.slider", $.ui.mouse, {
 			return this._valueMax();
 		}
 		var step = ( this.options.step > 0 ) ? this.options.step : 1,
-			valModStep = (val - this._valueMin()) % step;
+			valModStep = (val - this._valueMin()) % step,
 			alignValue = val - valModStep;
 
 		if ( Math.abs(valModStep) * 2 >= step ) {
@@ -10965,12 +11003,12 @@ $.widget( "ui.slider", $.ui.mouse, {
 });
 
 $.extend( $.ui.slider, {
-	version: "1.8.14"
+	version: "1.8.16"
 });
 
 }(jQuery));
 /*
- * jQuery UI Tabs 1.8.14
+ * jQuery UI Tabs 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -11669,7 +11707,7 @@ $.widget( "ui.tabs", {
 });
 
 $.extend( $.ui.tabs, {
-	version: "1.8.14"
+	version: "1.8.16"
 });
 
 /*
diff --git a/lib/scripts/jquery/jquery-ui.min.js b/lib/scripts/jquery/jquery-ui.min.js
index 882309218a75a582be79d5f4649fe1d3454ba32c..0202506b51ae0df521b9c824538b7c1946d37dea 100644
--- a/lib/scripts/jquery/jquery-ui.min.js
+++ b/lib/scripts/jquery/jquery-ui.min.js
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI 1.8.14
+ * jQuery UI 1.8.16
  *
  * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -7,29 +7,30 @@
  *
  * http://docs.jquery.com/UI
  */
-(function(a,d){function c(h,g){var i=h.nodeName.toLowerCase();if("area"===i){g=h.parentNode;i=g.name;if(!h.href||!i||g.nodeName.toLowerCase()!=="map")return false;h=a("img[usemap=#"+i+"]")[0];return!!h&&e(h)}return(/input|select|textarea|button|object/.test(i)?!h.disabled:"a"==i?h.href||g:g)&&e(h)}function e(h){return!a(h).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(!a.ui.version){a.extend(a.ui,{version:"1.8.14",
-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}});a.fn.extend({_focus:a.fn.focus,focus:function(h,g){return typeof h==="number"?this.each(function(){var i=this;setTimeout(function(){a(i).focus();
-g&&g.call(i)},h)}):this._focus.apply(this,arguments)},scrollParent:function(){var h;h=a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,
-"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!h.length?a(document):h},zIndex:function(h){if(h!==d)return this.css("zIndex",h);if(this.length){h=a(this[0]);for(var g;h.length&&h[0]!==document;){g=h.css("position");if(g==="absolute"||g==="relative"||g==="fixed"){g=parseInt(h.css("zIndex"),10);if(!isNaN(g)&&g!==0)return g}h=h.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",
-function(h){h.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(h,g){function i(l,o,n,k){a.each(b,function(){o-=parseFloat(a.curCSS(l,"padding"+this,true))||0;if(n)o-=parseFloat(a.curCSS(l,"border"+this+"Width",true))||0;if(k)o-=parseFloat(a.curCSS(l,"margin"+this,true))||0});return o}var b=g==="Width"?["Left","Right"]:["Top","Bottom"],f=g.toLowerCase(),j={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,
-outerHeight:a.fn.outerHeight};a.fn["inner"+g]=function(l){if(l===d)return j["inner"+g].call(this);return this.each(function(){a(this).css(f,i(this,l)+"px")})};a.fn["outer"+g]=function(l,o){if(typeof l!=="number")return j["outer"+g].call(this,l);return this.each(function(){a(this).css(f,i(this,l,true,o)+"px")})}});a.extend(a.expr[":"],{data:function(h,g,i){return!!a.data(h,i[3])},focusable:function(h){return c(h,!isNaN(a.attr(h,"tabindex")))},tabbable:function(h){var g=a.attr(h,"tabindex"),i=isNaN(g);
-return(i||g>=0)&&c(h,!i)}});a(function(){var h=document.body,g=h.appendChild(g=document.createElement("div"));a.extend(g.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=g.offsetHeight===100;a.support.selectstart="onselectstart"in g;h.removeChild(g).style.display="none"});a.extend(a.ui,{plugin:{add:function(h,g,i){h=a.ui[h].prototype;for(var b in i){h.plugins[b]=h.plugins[b]||[];h.plugins[b].push([g,i[b]])}},call:function(h,g,i){if((g=h.plugins[g])&&h.element[0].parentNode)for(var b=
-0;b<g.length;b++)h.options[g[b][0]]&&g[b][1].apply(h.element,i)}},contains:function(h,g){return document.compareDocumentPosition?h.compareDocumentPosition(g)&16:h!==g&&h.contains(g)},hasScroll:function(h,g){if(a(h).css("overflow")==="hidden")return false;g=g&&g==="left"?"scrollLeft":"scrollTop";var i=false;if(h[g]>0)return true;h[g]=1;i=h[g]>0;h[g]=0;return i},isOverAxis:function(h,g,i){return h>g&&h<g+i},isOver:function(h,g,i,b,f,j){return a.ui.isOverAxis(h,i,f)&&a.ui.isOverAxis(g,b,j)}})}})(jQuery);
-(function(a,d){if(a.cleanData){var c=a.cleanData;a.cleanData=function(h){for(var g=0,i;(i=h[g])!=null;g++)a(i).triggerHandler("remove");c(h)}}else{var e=a.fn.remove;a.fn.remove=function(h,g){return this.each(function(){if(!g)if(!h||a.filter(h,[this]).length)a("*",this).add([this]).each(function(){a(this).triggerHandler("remove")});return e.call(a(this),h,g)})}}a.widget=function(h,g,i){var b=h.split(".")[0],f;h=h.split(".")[1];f=b+"-"+h;if(!i){i=g;g=a.Widget}a.expr[":"][f]=function(j){return!!a.data(j,
-h)};a[b]=a[b]||{};a[b][h]=function(j,l){arguments.length&&this._createWidget(j,l)};g=new g;g.options=a.extend(true,{},g.options);a[b][h].prototype=a.extend(true,g,{namespace:b,widgetName:h,widgetEventPrefix:a[b][h].prototype.widgetEventPrefix||h,widgetBaseClass:f},i);a.widget.bridge(h,a[b][h])};a.widget.bridge=function(h,g){a.fn[h]=function(i){var b=typeof i==="string",f=Array.prototype.slice.call(arguments,1),j=this;i=!b&&f.length?a.extend.apply(null,[true,i].concat(f)):i;if(b&&i.charAt(0)==="_")return j;
-b?this.each(function(){var l=a.data(this,h),o=l&&a.isFunction(l[i])?l[i].apply(l,f):l;if(o!==l&&o!==d){j=o;return false}}):this.each(function(){var l=a.data(this,h);l?l.option(i||{})._init():a.data(this,h,new g(i,this))});return j}};a.Widget=function(h,g){arguments.length&&this._createWidget(h,g)};a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(h,g){a.data(g,this.widgetName,this);this.element=a(g);this.options=a.extend(true,{},this.options,
-this._getCreateOptions(),h);var i=this;this.element.bind("remove."+this.widgetName,function(){i.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_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(h,g){var i=h;if(arguments.length===0)return a.extend({},this.options);if(typeof h==="string"){if(g===d)return this.options[h];i={};i[h]=g}this._setOptions(i);return this},_setOptions:function(h){var g=this;a.each(h,function(i,b){g._setOption(i,b)});return this},_setOption:function(h,g){this.options[h]=g;if(h==="disabled")this.widget()[g?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",g);return this},
-enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(h,g,i){var b=this.options[h];g=a.Event(g);g.type=(h===this.widgetEventPrefix?h:this.widgetEventPrefix+h).toLowerCase();i=i||{};if(g.originalEvent){h=a.event.props.length;for(var f;h;){f=a.event.props[--h];g[f]=g.originalEvent[f]}}this.element.trigger(g,i);return!(a.isFunction(b)&&b.call(this.element[0],g,i)===false||g.isDefaultPrevented())}}})(jQuery);
-(function(a){var d=false;a(document).mousedown(function(){d=false});a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var c=this;this.element.bind("mousedown."+this.widgetName,function(e){return c._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===a.data(e.target,c.widgetName+".preventClickEvent")){a.removeData(e.target,c.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
-this.widgetName)},_mouseDown:function(c){if(!d){this._mouseStarted&&this._mouseUp(c);this._mouseDownEvent=c;var e=this,h=c.which==1,g=typeof this.options.cancel=="string"?a(c.target).closest(this.options.cancel).length:false;if(!h||g||!this._mouseCapture(c))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(c)&&this._mouseDelayMet(c)){this._mouseStarted=this._mouseStart(c)!==
-false;if(!this._mouseStarted){c.preventDefault();return true}}true===a.data(c.target,this.widgetName+".preventClickEvent")&&a.removeData(c.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(i){return e._mouseMove(i)};this._mouseUpDelegate=function(i){return e._mouseUp(i)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.preventDefault();return d=true}},_mouseMove:function(c){if(a.browser.msie&&
+(function(a,d){function c(h,g){var i=h.nodeName.toLowerCase();if("area"===i){g=h.parentNode;i=g.name;if(!h.href||!i||g.nodeName.toLowerCase()!=="map")return false;h=a("img[usemap=#"+i+"]")[0];return!!h&&e(h)}return(/input|select|textarea|button|object/.test(i)?!h.disabled:"a"==i?h.href||g:g)&&e(h)}function e(h){return!a(h).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(!a.ui.version){a.extend(a.ui,{version:"1.8.16",
+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}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(h,g){return typeof h==="number"?this.each(function(){var i=
+this;setTimeout(function(){a(i).focus();g&&g.call(i)},h)}):this._focus.apply(this,arguments)},scrollParent:function(){var h;h=a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,
+"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!h.length?a(document):h},zIndex:function(h){if(h!==d)return this.css("zIndex",h);if(this.length){h=a(this[0]);for(var g;h.length&&h[0]!==document;){g=h.css("position");if(g==="absolute"||g==="relative"||g==="fixed"){g=parseInt(h.css("zIndex"),10);if(!isNaN(g)&&g!==0)return g}h=h.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":
+"mousedown")+".ui-disableSelection",function(h){h.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(h,g){function i(l,o,n,k){a.each(b,function(){o-=parseFloat(a.curCSS(l,"padding"+this,true))||0;if(n)o-=parseFloat(a.curCSS(l,"border"+this+"Width",true))||0;if(k)o-=parseFloat(a.curCSS(l,"margin"+this,true))||0});return o}var b=g==="Width"?["Left","Right"]:["Top","Bottom"],f=g.toLowerCase(),j={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,
+outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+g]=function(l){if(l===d)return j["inner"+g].call(this);return this.each(function(){a(this).css(f,i(this,l)+"px")})};a.fn["outer"+g]=function(l,o){if(typeof l!=="number")return j["outer"+g].call(this,l);return this.each(function(){a(this).css(f,i(this,l,true,o)+"px")})}});a.extend(a.expr[":"],{data:function(h,g,i){return!!a.data(h,i[3])},focusable:function(h){return c(h,!isNaN(a.attr(h,"tabindex")))},tabbable:function(h){var g=a.attr(h,
+"tabindex"),i=isNaN(g);return(i||g>=0)&&c(h,!i)}});a(function(){var h=document.body,g=h.appendChild(g=document.createElement("div"));a.extend(g.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=g.offsetHeight===100;a.support.selectstart="onselectstart"in g;h.removeChild(g).style.display="none"});a.extend(a.ui,{plugin:{add:function(h,g,i){h=a.ui[h].prototype;for(var b in i){h.plugins[b]=h.plugins[b]||[];h.plugins[b].push([g,i[b]])}},call:function(h,g,i){if((g=h.plugins[g])&&
+h.element[0].parentNode)for(var b=0;b<g.length;b++)h.options[g[b][0]]&&g[b][1].apply(h.element,i)}},contains:function(h,g){return document.compareDocumentPosition?h.compareDocumentPosition(g)&16:h!==g&&h.contains(g)},hasScroll:function(h,g){if(a(h).css("overflow")==="hidden")return false;g=g&&g==="left"?"scrollLeft":"scrollTop";var i=false;if(h[g]>0)return true;h[g]=1;i=h[g]>0;h[g]=0;return i},isOverAxis:function(h,g,i){return h>g&&h<g+i},isOver:function(h,g,i,b,f,j){return a.ui.isOverAxis(h,i,f)&&
+a.ui.isOverAxis(g,b,j)}})}})(jQuery);
+(function(a,d){if(a.cleanData){var c=a.cleanData;a.cleanData=function(h){for(var g=0,i;(i=h[g])!=null;g++)try{a(i).triggerHandler("remove")}catch(b){}c(h)}}else{var e=a.fn.remove;a.fn.remove=function(h,g){return this.each(function(){if(!g)if(!h||a.filter(h,[this]).length)a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(i){}});return e.call(a(this),h,g)})}}a.widget=function(h,g,i){var b=h.split(".")[0],f;h=h.split(".")[1];f=b+"-"+h;if(!i){i=g;g=a.Widget}a.expr[":"][f]=
+function(j){return!!a.data(j,h)};a[b]=a[b]||{};a[b][h]=function(j,l){arguments.length&&this._createWidget(j,l)};g=new g;g.options=a.extend(true,{},g.options);a[b][h].prototype=a.extend(true,g,{namespace:b,widgetName:h,widgetEventPrefix:a[b][h].prototype.widgetEventPrefix||h,widgetBaseClass:f},i);a.widget.bridge(h,a[b][h])};a.widget.bridge=function(h,g){a.fn[h]=function(i){var b=typeof i==="string",f=Array.prototype.slice.call(arguments,1),j=this;i=!b&&f.length?a.extend.apply(null,[true,i].concat(f)):
+i;if(b&&i.charAt(0)==="_")return j;b?this.each(function(){var l=a.data(this,h),o=l&&a.isFunction(l[i])?l[i].apply(l,f):l;if(o!==l&&o!==d){j=o;return false}}):this.each(function(){var l=a.data(this,h);l?l.option(i||{})._init():a.data(this,h,new g(i,this))});return j}};a.Widget=function(h,g){arguments.length&&this._createWidget(h,g)};a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(h,g){a.data(g,this.widgetName,this);this.element=a(g);this.options=
+a.extend(true,{},this.options,this._getCreateOptions(),h);var i=this;this.element.bind("remove."+this.widgetName,function(){i.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_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(h,g){var i=h;if(arguments.length===0)return a.extend({},this.options);if(typeof h==="string"){if(g===d)return this.options[h];i={};i[h]=g}this._setOptions(i);return this},_setOptions:function(h){var g=this;a.each(h,function(i,b){g._setOption(i,b)});return this},_setOption:function(h,g){this.options[h]=g;if(h==="disabled")this.widget()[g?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",
+g);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(h,g,i){var b=this.options[h];g=a.Event(g);g.type=(h===this.widgetEventPrefix?h:this.widgetEventPrefix+h).toLowerCase();i=i||{};if(g.originalEvent){h=a.event.props.length;for(var f;h;){f=a.event.props[--h];g[f]=g.originalEvent[f]}}this.element.trigger(g,i);return!(a.isFunction(b)&&b.call(this.element[0],g,i)===false||g.isDefaultPrevented())}}})(jQuery);
+(function(a){var d=false;a(document).mouseup(function(){d=false});a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var c=this;this.element.bind("mousedown."+this.widgetName,function(e){return c._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===a.data(e.target,c.widgetName+".preventClickEvent")){a.removeData(e.target,c.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
+this.widgetName)},_mouseDown:function(c){if(!d){this._mouseStarted&&this._mouseUp(c);this._mouseDownEvent=c;var e=this,h=c.which==1,g=typeof this.options.cancel=="string"&&c.target.nodeName?a(c.target).closest(this.options.cancel).length:false;if(!h||g||!this._mouseCapture(c))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(c)&&this._mouseDelayMet(c)){this._mouseStarted=
+this._mouseStart(c)!==false;if(!this._mouseStarted){c.preventDefault();return true}}true===a.data(c.target,this.widgetName+".preventClickEvent")&&a.removeData(c.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(i){return e._mouseMove(i)};this._mouseUpDelegate=function(i){return e._mouseUp(i)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.preventDefault();return d=true}},_mouseMove:function(c){if(a.browser.msie&&
 !(document.documentMode>=9)&&!c.button)return this._mouseUp(c);if(this._mouseStarted){this._mouseDrag(c);return c.preventDefault()}if(this._mouseDistanceMet(c)&&this._mouseDelayMet(c))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,c)!==false)?this._mouseDrag(c):this._mouseUp(c);return!this._mouseStarted},_mouseUp:function(c){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=
 false;c.target==this._mouseDownEvent.target&&a.data(c.target,this.widgetName+".preventClickEvent",true);this._mouseStop(c)}return false},_mouseDistanceMet:function(c){return Math.max(Math.abs(this._mouseDownEvent.pageX-c.pageX),Math.abs(this._mouseDownEvent.pageY-c.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
 (function(a){a.widget("ui.draggable",a.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(d){var c=
-this.options;if(this.helper||c.disabled||a(d.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(d);if(!this.handle)return false;a(c.iframeFix===true?"iframe":c.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(a(this).offset()).appendTo("body")});return true},_mouseStart:function(d){var c=this.options;this.helper=
-this._createHelper(d);this._cacheHelperProportions();if(a.ui.ddmanager)a.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:d.pageX-this.offset.left,top:d.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});
+this.options;if(this.helper||c.disabled||a(d.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(d);if(!this.handle)return false;if(c.iframeFix)a(c.iframeFix===true?"iframe":c.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(a(this).offset()).appendTo("body")});return true},_mouseStart:function(d){var c=this.options;
+this.helper=this._createHelper(d);this._cacheHelperProportions();if(a.ui.ddmanager)a.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:d.pageX-this.offset.left,top:d.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});
 this.originalPosition=this.position=this._generatePosition(d);this.originalPageX=d.pageX;this.originalPageY=d.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);c.containment&&this._setContainment();if(this._trigger("start",d)===false){this._clear();return false}this._cacheHelperProportions();a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,d);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(d,true);a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,d);return true},
 _mouseDrag:function(d,c){this.position=this._generatePosition(d);this.positionAbs=this._convertPositionTo("absolute");if(!c){c=this._uiHash();if(this._trigger("drag",d,c)===false){this._mouseUp({});return false}this.position=c.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,d);return false},_mouseStop:function(d){var c=
 false;if(a.ui.ddmanager&&!this.options.dropBehaviour)c=a.ui.ddmanager.drop(this,d);if(this.dropped){c=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===true||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var e=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,
@@ -47,7 +48,7 @@ this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser
 if(d.pageY-this.offset.click.top<b[1])i=b[1]+this.offset.click.top;if(d.pageX-this.offset.click.left>b[2])g=b[2]+this.offset.click.left;if(d.pageY-this.offset.click.top>b[3])i=b[3]+this.offset.click.top}if(c.grid){i=c.grid[1]?this.originalPageY+Math.round((i-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;i=b?!(i-this.offset.click.top<b[1]||i-this.offset.click.top>b[3])?i:!(i-this.offset.click.top<b[1])?i-c.grid[1]:i+c.grid[1]:i;g=c.grid[0]?this.originalPageX+Math.round((g-this.originalPageX)/
 c.grid[0])*c.grid[0]:this.originalPageX;g=b?!(g-this.offset.click.left<b[0]||g-this.offset.click.left>b[2])?g:!(g-this.offset.click.left<b[0])?g-c.grid[0]:g+c.grid[0]:g}}return{top:i-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():h?0:e.scrollTop()),left:g-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<
 526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():h?0:e.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(d,c,e){e=e||this._uiHash();a.ui.plugin.call(this,d,[c,e]);if(d=="drag")this.positionAbs=this._convertPositionTo("absolute");return a.Widget.prototype._trigger.call(this,d,c,
-e)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8.14"});a.ui.plugin.add("draggable","connectToSortable",{start:function(d,c){var e=a(this).data("draggable"),h=e.options,g=a.extend({},c,{item:e.element});e.sortables=[];a(h.connectToSortable).each(function(){var i=a.data(this,"sortable");if(i&&!i.options.disabled){e.sortables.push({instance:i,shouldRevert:i.options.revert});
+e)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8.16"});a.ui.plugin.add("draggable","connectToSortable",{start:function(d,c){var e=a(this).data("draggable"),h=e.options,g=a.extend({},c,{item:e.element});e.sortables=[];a(h.connectToSortable).each(function(){var i=a.data(this,"sortable");if(i&&!i.options.disabled){e.sortables.push({instance:i,shouldRevert:i.options.revert});
 i.refreshPositions();i._trigger("activate",d,g)}})},stop:function(d,c){var e=a(this).data("draggable"),h=a.extend({},c,{item:e.element});a.each(e.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;e.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(d);this.instance.options.helper=this.instance.options._helper;e.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=
 false;this.instance._trigger("deactivate",d,h)}})},drag:function(d,c){var e=a(this).data("draggable"),h=this;a.each(e.sortables,function(){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(h).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",true);
 this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return c.helper[0]};d.target=this.instance.currentItem[0];this.instance._mouseCapture(d,true);this.instance._mouseStart(d,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;
@@ -67,12 +68,12 @@ d.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var
 this.element.addClass(this.options.activeClass);c&&this._trigger("activate",d,this.ui(c))},_deactivate:function(d){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);c&&this._trigger("deactivate",d,this.ui(c))},_over:function(d){var c=a.ui.ddmanager.current;if(!(!c||(c.currentItem||c.element)[0]==this.element[0]))if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);
 this._trigger("over",d,this.ui(c))}},_out:function(d){var c=a.ui.ddmanager.current;if(!(!c||(c.currentItem||c.element)[0]==this.element[0]))if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",d,this.ui(c))}},_drop:function(d,c){var e=c||a.ui.ddmanager.current;if(!e||(e.currentItem||e.element)[0]==this.element[0])return false;var h=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g=
 a.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==e.options.scope&&g.accept.call(g.element[0],e.currentItem||e.element)&&a.ui.intersect(e,a.extend(g,{offset:g.element.offset()}),g.options.tolerance)){h=true;return false}});if(h)return false;if(this.accept.call(this.element[0],e.currentItem||e.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",
-d,this.ui(e));return this.element}return false},ui:function(d){return{draggable:d.currentItem||d.element,helper:d.helper,position:d.position,offset:d.positionAbs}}});a.extend(a.ui.droppable,{version:"1.8.14"});a.ui.intersect=function(d,c,e){if(!c.offset)return false;var h=(d.positionAbs||d.position.absolute).left,g=h+d.helperProportions.width,i=(d.positionAbs||d.position.absolute).top,b=i+d.helperProportions.height,f=c.offset.left,j=f+c.proportions.width,l=c.offset.top,o=l+c.proportions.height;
+d,this.ui(e));return this.element}return false},ui:function(d){return{draggable:d.currentItem||d.element,helper:d.helper,position:d.position,offset:d.positionAbs}}});a.extend(a.ui.droppable,{version:"1.8.16"});a.ui.intersect=function(d,c,e){if(!c.offset)return false;var h=(d.positionAbs||d.position.absolute).left,g=h+d.helperProportions.width,i=(d.positionAbs||d.position.absolute).top,b=i+d.helperProportions.height,f=c.offset.left,j=f+c.proportions.width,l=c.offset.top,o=l+c.proportions.height;
 switch(e){case "fit":return f<=h&&g<=j&&l<=i&&b<=o;case "intersect":return f<h+d.helperProportions.width/2&&g-d.helperProportions.width/2<j&&l<i+d.helperProportions.height/2&&b-d.helperProportions.height/2<o;case "pointer":return a.ui.isOver((d.positionAbs||d.position.absolute).top+(d.clickOffset||d.offset.click).top,(d.positionAbs||d.position.absolute).left+(d.clickOffset||d.offset.click).left,l,f,c.proportions.height,c.proportions.width);case "touch":return(i>=l&&i<=o||b>=l&&b<=o||i<l&&b>o)&&(h>=
 f&&h<=j||g>=f&&g<=j||h<f&&g>j);default:return false}};a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(d,c){var e=a.ui.ddmanager.droppables[d.options.scope]||[],h=c?c.type:null,g=(d.currentItem||d.element).find(":data(droppable)").andSelf(),i=0;a:for(;i<e.length;i++)if(!(e[i].options.disabled||d&&!e[i].accept.call(e[i].element[0],d.currentItem||d.element))){for(var b=0;b<g.length;b++)if(g[b]==e[i].element[0]){e[i].proportions.height=0;continue a}e[i].visible=e[i].element.css("display")!=
 "none";if(e[i].visible){h=="mousedown"&&e[i]._activate.call(e[i],c);e[i].offset=e[i].element.offset();e[i].proportions={width:e[i].element[0].offsetWidth,height:e[i].element[0].offsetHeight}}}},drop:function(d,c){var e=false;a.each(a.ui.ddmanager.droppables[d.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&a.ui.intersect(d,this,this.options.tolerance))e=e||this._drop.call(this,c);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],d.currentItem||
-d.element)){this.isout=1;this.isover=0;this._deactivate.call(this,c)}}});return e},dragStart:function(d,c){d.element.parentsUntil("body").bind("scroll.droppable",function(){d.options.refreshPositions||a.ui.ddmanager.prepareOffsets(d,c)})},drag:function(d,c){d.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(d,c);a.each(a.ui.ddmanager.droppables[d.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var e=a.ui.intersect(d,this,this.options.tolerance);if(e=
-!e&&this.isover==1?"isout":e&&this.isover==0?"isover":null){var h;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){h=a.data(g[0],"droppable");h.greedyChild=e=="isover"?1:0}}if(h&&e=="isover"){h.isover=0;h.isout=1;h._out.call(h,c)}this[e]=1;this[e=="isout"?"isover":"isout"]=0;this[e=="isover"?"_over":"_out"].call(this,c);if(h&&e=="isout"){h.isout=0;h.isover=1;h._over.call(h,c)}}}})},dragStop:function(d,c){d.element.parentsUntil("body").unbind("scroll.droppable");
+d.element)){this.isout=1;this.isover=0;this._deactivate.call(this,c)}}});return e},dragStart:function(d,c){d.element.parents(":not(body,html)").bind("scroll.droppable",function(){d.options.refreshPositions||a.ui.ddmanager.prepareOffsets(d,c)})},drag:function(d,c){d.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(d,c);a.each(a.ui.ddmanager.droppables[d.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var e=a.ui.intersect(d,this,this.options.tolerance);
+if(e=!e&&this.isover==1?"isout":e&&this.isover==0?"isover":null){var h;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){h=a.data(g[0],"droppable");h.greedyChild=e=="isover"?1:0}}if(h&&e=="isover"){h.isover=0;h.isout=1;h._out.call(h,c)}this[e]=1;this[e=="isout"?"isover":"isout"]=0;this[e=="isover"?"_over":"_out"].call(this,c);if(h&&e=="isout"){h.isout=0;h.isover=1;h._over.call(h,c)}}}})},dragStop:function(d,c){d.element.parents(":not(body,html)").unbind("scroll.droppable");
 d.options.refreshPositions||a.ui.ddmanager.prepareOffsets(d,c)}}})(jQuery);
 (function(a){a.widget("ui.resizable",a.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 e=this,h=this.options;this.element.addClass("ui-resizable");a.extend(this,{_aspectRatio:!!h.aspectRatio,aspectRatio:h.aspectRatio,originalElement:this.element,
 _proportionallyResizeElements:[],_helper:h.helper||h.ghost||h.animate?h.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&a.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),
@@ -95,7 +96,7 @@ null;return e},_proportionallyResize:function(){if(this._proportionallyResizeEle
 0;j=parseInt(b[j],10)||0;return f+j})}a.browser.msie&&(a(e).is(":hidden")||a(e).parents(":hidden").length)||g.css({height:e.height()-this.borderDif[0]-this.borderDif[2]||0,width:e.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var e=this.options;this.elementOffset=this.element.offset();if(this._helper){this.helper=this.helper||a('<div style="overflow:hidden;"></div>');var h=a.browser.msie&&a.browser.version<7,g=h?1:0;h=h?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+
 h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++e.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(e,h){return{width:this.originalSize.width+h}},w:function(e,h){return{left:this.originalPosition.left+h,width:this.originalSize.width-h}},n:function(e,h,g){return{top:this.originalPosition.top+g,height:this.originalSize.height-g}},s:function(e,h,g){return{height:this.originalSize.height+
 g}},se:function(e,h,g){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,h,g]))},sw:function(e,h,g){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,h,g]))},ne:function(e,h,g){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,h,g]))},nw:function(e,h,g){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,h,g]))}},_propagate:function(e,h){a.ui.plugin.call(this,e,[h,this.ui()]);
-e!="resize"&&this._trigger(e,h,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}}});a.extend(a.ui.resizable,{version:"1.8.14"});a.ui.plugin.add("resizable","alsoResize",{start:function(){var e=a(this).data("resizable").options,h=function(g){a(g).each(function(){var i=a(this);i.data("resizable-alsoresize",{width:parseInt(i.width(),
+e!="resize"&&this._trigger(e,h,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}}});a.extend(a.ui.resizable,{version:"1.8.16"});a.ui.plugin.add("resizable","alsoResize",{start:function(){var e=a(this).data("resizable").options,h=function(g){a(g).each(function(){var i=a(this);i.data("resizable-alsoresize",{width:parseInt(i.width(),
 10),height:parseInt(i.height(),10),left:parseInt(i.css("left"),10),top:parseInt(i.css("top"),10),position:i.css("position")})})};if(typeof e.alsoResize=="object"&&!e.alsoResize.parentNode)if(e.alsoResize.length){e.alsoResize=e.alsoResize[0];h(e.alsoResize)}else a.each(e.alsoResize,function(g){h(g)});else h(e.alsoResize)},resize:function(e,h){var g=a(this).data("resizable");e=g.options;var i=g.originalSize,b=g.originalPosition,f={height:g.size.height-i.height||0,width:g.size.width-i.width||0,top:g.position.top-
 b.top||0,left:g.position.left-b.left||0},j=function(l,o){a(l).each(function(){var n=a(this),k=a(this).data("resizable-alsoresize"),m={},p=o&&o.length?o:n.parents(h.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(p,function(q,s){if((q=(k[s]||0)+(f[s]||0))&&q>=0)m[s]=q||null});if(a.browser.opera&&/relative/.test(n.css("position"))){g._revertToRelativePosition=true;n.css({position:"absolute",top:"auto",left:"auto"})}n.css(m)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?
 a.each(e.alsoResize,function(l,o){j(l,o)}):j(e.alsoResize)},stop:function(){var e=a(this).data("resizable"),h=e.options,g=function(i){a(i).each(function(){var b=a(this);b.css({position:b.data("resizable-alsoresize").position})})};if(e._revertToRelativePosition){e._revertToRelativePosition=false;typeof h.alsoResize=="object"&&!h.alsoResize.nodeType?a.each(h.alsoResize,function(i){g(i)}):g(h.alsoResize)}a(this).removeData("resizable-alsoresize")}});a.ui.plugin.add("resizable","animate",{stop:function(e){var h=
@@ -116,7 +117,7 @@ d,{unselecting:h.element})}});a(d.target).parents().andSelf().each(function(){va
 this.options,h=this.opos[0],g=this.opos[1],i=d.pageX,b=d.pageY;if(h>i){var f=i;i=h;h=f}if(g>b){f=b;b=g;g=f}this.helper.css({left:h,top:g,width:i-h,height:b-g});this.selectees.each(function(){var j=a.data(this,"selectable-item");if(!(!j||j.element==c.element[0])){var l=false;if(e.tolerance=="touch")l=!(j.left>i||j.right<h||j.top>b||j.bottom<g);else if(e.tolerance=="fit")l=j.left>h&&j.right<i&&j.top>g&&j.bottom<b;if(l){if(j.selected){j.$element.removeClass("ui-selected");j.selected=false}if(j.unselecting){j.$element.removeClass("ui-unselecting");
 j.unselecting=false}if(!j.selecting){j.$element.addClass("ui-selecting");j.selecting=true;c._trigger("selecting",d,{selecting:j.element})}}else{if(j.selecting)if(d.metaKey&&j.startselected){j.$element.removeClass("ui-selecting");j.selecting=false;j.$element.addClass("ui-selected");j.selected=true}else{j.$element.removeClass("ui-selecting");j.selecting=false;if(j.startselected){j.$element.addClass("ui-unselecting");j.unselecting=true}c._trigger("unselecting",d,{unselecting:j.element})}if(j.selected)if(!d.metaKey&&
 !j.startselected){j.$element.removeClass("ui-selected");j.selected=false;j.$element.addClass("ui-unselecting");j.unselecting=true;c._trigger("unselecting",d,{unselecting:j.element})}}}});return false}},_mouseStop:function(d){var c=this;this.dragged=false;a(".ui-unselecting",this.element[0]).each(function(){var e=a.data(this,"selectable-item");e.$element.removeClass("ui-unselecting");e.unselecting=false;e.startselected=false;c._trigger("unselected",d,{unselected:e.element})});a(".ui-selecting",this.element[0]).each(function(){var e=
-a.data(this,"selectable-item");e.$element.removeClass("ui-selecting").addClass("ui-selected");e.selecting=false;e.selected=true;e.startselected=true;c._trigger("selected",d,{selected:e.element})});this._trigger("stop",d);this.helper.remove();return false}});a.extend(a.ui.selectable,{version:"1.8.14"})})(jQuery);
+a.data(this,"selectable-item");e.$element.removeClass("ui-selecting").addClass("ui-selected");e.selecting=false;e.selected=true;e.startselected=true;c._trigger("selected",d,{selected:e.element})});this._trigger("stop",d);this.helper.remove();return false}});a.extend(a.ui.selectable,{version:"1.8.16"})})(jQuery);
 (function(a){a.widget("ui.sortable",a.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(){var d=this.options;this.containerCache={};this.element.addClass("ui-sortable");
 this.refresh();this.floating=this.items.length?d.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):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 d=this.items.length-1;d>=0;d--)this.items[d].item.removeData("sortable-item");return this},_setOption:function(d,c){if(d===
 "disabled"){this.options[d]=c;this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")}else a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(d,c){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(d);var e=null,h=this;a(d.target).parents().each(function(){if(a.data(this,"sortable-item")==h){e=a(this);return false}});if(a.data(d.target,"sortable-item")==h)e=a(d.target);if(!e)return false;if(this.options.handle&&
@@ -162,7 +163,7 @@ this.direction=="down"?c.item[0]:c.item[0].nextSibling);this.counter=this.counte
 g,this._uiHash())});for(h=this.containers.length-1;h>=0;h--)if(a.ui.contains(this.containers[h].element[0],this.currentItem[0])&&!c){e.push(function(g){return function(i){g._trigger("receive",i,this._uiHash(this))}}.call(this,this.containers[h]));e.push(function(g){return function(i){g._trigger("update",i,this._uiHash(this))}}.call(this,this.containers[h]))}}for(h=this.containers.length-1;h>=0;h--){c||e.push(function(g){return function(i){g._trigger("deactivate",i,this._uiHash(this))}}.call(this,
 this.containers[h]));if(this.containers[h].containerCache.over){e.push(function(g){return function(i){g._trigger("out",i,this._uiHash(this))}}.call(this,this.containers[h]));this.containers[h].containerCache.over=0}}this._storedCursor&&a("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(!c){this._trigger("beforeStop",
 d,this._uiHash());for(h=0;h<e.length;h++)e[h].call(this,d);this._trigger("stop",d,this._uiHash())}return false}c||this._trigger("beforeStop",d,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!c){for(h=0;h<e.length;h++)e[h].call(this,d);this._trigger("stop",d,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){a.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()},
-_uiHash:function(d){var c=d||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:d?d.element:null}}});a.extend(a.ui.sortable,{version:"1.8.14"})})(jQuery);
+_uiHash:function(d){var c=d||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:d?d.element:null}}});a.extend(a.ui.sortable,{version:"1.8.16"})})(jQuery);
 jQuery.effects||function(a,d){function c(n){var k;if(n&&n.constructor==Array&&n.length==3)return n;if(k=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(n))return[parseInt(k[1],10),parseInt(k[2],10),parseInt(k[3],10)];if(k=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(n))return[parseFloat(k[1])*2.55,parseFloat(k[2])*2.55,parseFloat(k[3])*2.55];if(k=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(n))return[parseInt(k[1],
 16),parseInt(k[2],16),parseInt(k[3],16)];if(k=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(n))return[parseInt(k[1]+k[1],16),parseInt(k[2]+k[2],16),parseInt(k[3]+k[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(n))return j.transparent;return j[a.trim(n).toLowerCase()]}function e(n,k){var m;do{m=a.curCSS(n,k);if(m!=""&&m!="transparent"||a.nodeName(n,"body"))break;k="backgroundColor"}while(n=n.parentNode);return c(m)}function h(){var n=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
 k={},m,p;if(n&&n.length&&n[0]&&n[n[0]])for(var q=n.length;q--;){m=n[q];if(typeof n[m]=="string"){p=m.replace(/\-(\w)/g,function(s,r){return r.toUpperCase()});k[p]=n[m]}}else for(m in n)if(typeof n[m]==="string")k[m]=n[m];return k}function g(n){var k,m;for(k in n){m=n[k];if(m==null||a.isFunction(m)||k in o||/scrollbar/.test(k)||!/color/i.test(k)&&isNaN(parseFloat(m)))delete n[k]}return n}function i(n,k){var m={_:0},p;for(p in k)if(n[p]!=k[p])m[p]=k[p];return m}function b(n,k,m,p){if(typeof n=="object"){p=
@@ -172,18 +173,19 @@ k;m=null;k=n;n=k.effect}if(a.isFunction(k)){p=k;m=null;k={}}if(typeof k=="number
 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]},l=["add","remove","toggle"],o={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(n,k,m,
 p){if(a.isFunction(m)){p=m;m=null}return this.queue(function(){var q=a(this),s=q.attr("style")||" ",r=g(h.call(this)),u,v=q.attr("class");a.each(l,function(w,x){n[x]&&q[x+"Class"](n[x])});u=g(h.call(this));q.attr("class",v);q.animate(i(r,u),{queue:false,duration:k,easing:m,complete:function(){a.each(l,function(w,x){n[x]&&q[x+"Class"](n[x])});if(typeof q.attr("style")=="object"){q.attr("style").cssText="";q.attr("style").cssText=s}else q.attr("style",s);p&&p.apply(this,arguments);a.dequeue(this)}})})};
 a.fn.extend({_addClass:a.fn.addClass,addClass:function(n,k,m,p){return k?a.effects.animateClass.apply(this,[{add:n},k,m,p]):this._addClass(n)},_removeClass:a.fn.removeClass,removeClass:function(n,k,m,p){return k?a.effects.animateClass.apply(this,[{remove:n},k,m,p]):this._removeClass(n)},_toggleClass:a.fn.toggleClass,toggleClass:function(n,k,m,p,q){return typeof k=="boolean"||k===d?m?a.effects.animateClass.apply(this,[k?{add:n}:{remove:n},m,p,q]):this._toggleClass(n,k):a.effects.animateClass.apply(this,
-[{toggle:n},k,m,p])},switchClass:function(n,k,m,p,q){return a.effects.animateClass.apply(this,[{add:k,remove:n},m,p,q])}});a.extend(a.effects,{version:"1.8.14",save:function(n,k){for(var m=0;m<k.length;m++)k[m]!==null&&n.data("ec.storage."+k[m],n[0].style[k[m]])},restore:function(n,k){for(var m=0;m<k.length;m++)k[m]!==null&&n.css(k[m],n.data("ec.storage."+k[m]))},setMode:function(n,k){if(k=="toggle")k=n.is(":hidden")?"show":"hide";return k},getBaseline:function(n,k){var m;switch(n[0]){case "top":m=
-0;break;case "middle":m=0.5;break;case "bottom":m=1;break;default:m=n[0]/k.height}switch(n[1]){case "left":n=0;break;case "center":n=0.5;break;case "right":n=1;break;default:n=n[1]/k.width}return{x:n,y:m}},createWrapper:function(n){if(n.parent().is(".ui-effects-wrapper"))return n.parent();var k={width:n.outerWidth(true),height:n.outerHeight(true),"float":n.css("float")},m=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});
-n.wrap(m);m=n.parent();if(n.css("position")=="static"){m.css({position:"relative"});n.css({position:"relative"})}else{a.extend(k,{position:n.css("position"),zIndex:n.css("z-index")});a.each(["top","left","bottom","right"],function(p,q){k[q]=n.css(q);if(isNaN(parseInt(k[q],10)))k[q]="auto"});n.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return m.css(k).show()},removeWrapper:function(n){if(n.parent().is(".ui-effects-wrapper"))return n.parent().replaceWith(n);return n},setTransition:function(n,
-k,m,p){p=p||{};a.each(k,function(q,s){unit=n.cssUnit(s);if(unit[0]>0)p[s]=unit[0]*m+unit[1]});return p}});a.fn.extend({effect:function(n){var k=b.apply(this,arguments),m={options:k[1],duration:k[2],callback:k[3]};k=m.options.mode;var p=a.effects[n];if(a.fx.off||!p)return k?this[k](m.duration,m.callback):this.each(function(){m.callback&&m.callback.call(this)});return p.call(this,m)},_show:a.fn.show,show:function(n){if(f(n))return this._show.apply(this,arguments);else{var k=b.apply(this,arguments);
-k[1].mode="show";return this.effect.apply(this,k)}},_hide:a.fn.hide,hide:function(n){if(f(n))return this._hide.apply(this,arguments);else{var k=b.apply(this,arguments);k[1].mode="hide";return this.effect.apply(this,k)}},__toggle:a.fn.toggle,toggle:function(n){if(f(n)||typeof n==="boolean"||a.isFunction(n))return this.__toggle.apply(this,arguments);else{var k=b.apply(this,arguments);k[1].mode="toggle";return this.effect.apply(this,k)}},cssUnit:function(n){var k=this.css(n),m=[];a.each(["em","px","%",
-"pt"],function(p,q){if(k.indexOf(q)>0)m=[parseFloat(k),q]});return m}});a.easing.jswing=a.easing.swing;a.extend(a.easing,{def:"easeOutQuad",swing:function(n,k,m,p,q){return a.easing[a.easing.def](n,k,m,p,q)},easeInQuad:function(n,k,m,p,q){return p*(k/=q)*k+m},easeOutQuad:function(n,k,m,p,q){return-p*(k/=q)*(k-2)+m},easeInOutQuad:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k+m;return-p/2*(--k*(k-2)-1)+m},easeInCubic:function(n,k,m,p,q){return p*(k/=q)*k*k+m},easeOutCubic:function(n,k,m,p,q){return p*
-((k=k/q-1)*k*k+1)+m},easeInOutCubic:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k*k+m;return p/2*((k-=2)*k*k+2)+m},easeInQuart:function(n,k,m,p,q){return p*(k/=q)*k*k*k+m},easeOutQuart:function(n,k,m,p,q){return-p*((k=k/q-1)*k*k*k-1)+m},easeInOutQuart:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k*k*k+m;return-p/2*((k-=2)*k*k*k-2)+m},easeInQuint:function(n,k,m,p,q){return p*(k/=q)*k*k*k*k+m},easeOutQuint:function(n,k,m,p,q){return p*((k=k/q-1)*k*k*k*k+1)+m},easeInOutQuint:function(n,k,m,p,q){if((k/=
-q/2)<1)return p/2*k*k*k*k*k+m;return p/2*((k-=2)*k*k*k*k+2)+m},easeInSine:function(n,k,m,p,q){return-p*Math.cos(k/q*(Math.PI/2))+p+m},easeOutSine:function(n,k,m,p,q){return p*Math.sin(k/q*(Math.PI/2))+m},easeInOutSine:function(n,k,m,p,q){return-p/2*(Math.cos(Math.PI*k/q)-1)+m},easeInExpo:function(n,k,m,p,q){return k==0?m:p*Math.pow(2,10*(k/q-1))+m},easeOutExpo:function(n,k,m,p,q){return k==q?m+p:p*(-Math.pow(2,-10*k/q)+1)+m},easeInOutExpo:function(n,k,m,p,q){if(k==0)return m;if(k==q)return m+p;if((k/=
-q/2)<1)return p/2*Math.pow(2,10*(k-1))+m;return p/2*(-Math.pow(2,-10*--k)+2)+m},easeInCirc:function(n,k,m,p,q){return-p*(Math.sqrt(1-(k/=q)*k)-1)+m},easeOutCirc:function(n,k,m,p,q){return p*Math.sqrt(1-(k=k/q-1)*k)+m},easeInOutCirc:function(n,k,m,p,q){if((k/=q/2)<1)return-p/2*(Math.sqrt(1-k*k)-1)+m;return p/2*(Math.sqrt(1-(k-=2)*k)+1)+m},easeInElastic:function(n,k,m,p,q){n=1.70158;var s=0,r=p;if(k==0)return m;if((k/=q)==1)return m+p;s||(s=q*0.3);if(r<Math.abs(p)){r=p;n=s/4}else n=s/(2*Math.PI)*Math.asin(p/
-r);return-(r*Math.pow(2,10*(k-=1))*Math.sin((k*q-n)*2*Math.PI/s))+m},easeOutElastic:function(n,k,m,p,q){n=1.70158;var s=0,r=p;if(k==0)return m;if((k/=q)==1)return m+p;s||(s=q*0.3);if(r<Math.abs(p)){r=p;n=s/4}else n=s/(2*Math.PI)*Math.asin(p/r);return r*Math.pow(2,-10*k)*Math.sin((k*q-n)*2*Math.PI/s)+p+m},easeInOutElastic:function(n,k,m,p,q){n=1.70158;var s=0,r=p;if(k==0)return m;if((k/=q/2)==2)return m+p;s||(s=q*0.3*1.5);if(r<Math.abs(p)){r=p;n=s/4}else n=s/(2*Math.PI)*Math.asin(p/r);if(k<1)return-0.5*
-r*Math.pow(2,10*(k-=1))*Math.sin((k*q-n)*2*Math.PI/s)+m;return r*Math.pow(2,-10*(k-=1))*Math.sin((k*q-n)*2*Math.PI/s)*0.5+p+m},easeInBack:function(n,k,m,p,q,s){if(s==d)s=1.70158;return p*(k/=q)*k*((s+1)*k-s)+m},easeOutBack:function(n,k,m,p,q,s){if(s==d)s=1.70158;return p*((k=k/q-1)*k*((s+1)*k+s)+1)+m},easeInOutBack:function(n,k,m,p,q,s){if(s==d)s=1.70158;if((k/=q/2)<1)return p/2*k*k*(((s*=1.525)+1)*k-s)+m;return p/2*((k-=2)*k*(((s*=1.525)+1)*k+s)+2)+m},easeInBounce:function(n,k,m,p,q){return p-a.easing.easeOutBounce(n,
-q-k,0,p,q)+m},easeOutBounce:function(n,k,m,p,q){return(k/=q)<1/2.75?p*7.5625*k*k+m:k<2/2.75?p*(7.5625*(k-=1.5/2.75)*k+0.75)+m:k<2.5/2.75?p*(7.5625*(k-=2.25/2.75)*k+0.9375)+m:p*(7.5625*(k-=2.625/2.75)*k+0.984375)+m},easeInOutBounce:function(n,k,m,p,q){if(k<q/2)return a.easing.easeInBounce(n,k*2,0,p,q)*0.5+m;return a.easing.easeOutBounce(n,k*2-q,0,p,q)*0.5+p*0.5+m}})}(jQuery);
+[{toggle:n},k,m,p])},switchClass:function(n,k,m,p,q){return a.effects.animateClass.apply(this,[{add:k,remove:n},m,p,q])}});a.extend(a.effects,{version:"1.8.16",save:function(n,k){for(var m=0;m<k.length;m++)k[m]!==null&&n.data("ec.storage."+k[m],n[0].style[k[m]])},restore:function(n,k){for(var m=0;m<k.length;m++)k[m]!==null&&n.css(k[m],n.data("ec.storage."+k[m]))},setMode:function(n,k){if(k=="toggle")k=n.is(":hidden")?"show":"hide";return k},getBaseline:function(n,k){var m;switch(n[0]){case "top":m=
+0;break;case "middle":m=0.5;break;case "bottom":m=1;break;default:m=n[0]/k.height}switch(n[1]){case "left":n=0;break;case "center":n=0.5;break;case "right":n=1;break;default:n=n[1]/k.width}return{x:n,y:m}},createWrapper:function(n){if(n.parent().is(".ui-effects-wrapper"))return n.parent();var k={width:n.outerWidth(true),height:n.outerHeight(true),"float":n.css("float")},m=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),
+p=document.activeElement;n.wrap(m);if(n[0]===p||a.contains(n[0],p))a(p).focus();m=n.parent();if(n.css("position")=="static"){m.css({position:"relative"});n.css({position:"relative"})}else{a.extend(k,{position:n.css("position"),zIndex:n.css("z-index")});a.each(["top","left","bottom","right"],function(q,s){k[s]=n.css(s);if(isNaN(parseInt(k[s],10)))k[s]="auto"});n.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return m.css(k).show()},removeWrapper:function(n){var k,m=document.activeElement;
+if(n.parent().is(".ui-effects-wrapper")){k=n.parent().replaceWith(n);if(n[0]===m||a.contains(n[0],m))a(m).focus();return k}return n},setTransition:function(n,k,m,p){p=p||{};a.each(k,function(q,s){unit=n.cssUnit(s);if(unit[0]>0)p[s]=unit[0]*m+unit[1]});return p}});a.fn.extend({effect:function(n){var k=b.apply(this,arguments),m={options:k[1],duration:k[2],callback:k[3]};k=m.options.mode;var p=a.effects[n];if(a.fx.off||!p)return k?this[k](m.duration,m.callback):this.each(function(){m.callback&&m.callback.call(this)});
+return p.call(this,m)},_show:a.fn.show,show:function(n){if(f(n))return this._show.apply(this,arguments);else{var k=b.apply(this,arguments);k[1].mode="show";return this.effect.apply(this,k)}},_hide:a.fn.hide,hide:function(n){if(f(n))return this._hide.apply(this,arguments);else{var k=b.apply(this,arguments);k[1].mode="hide";return this.effect.apply(this,k)}},__toggle:a.fn.toggle,toggle:function(n){if(f(n)||typeof n==="boolean"||a.isFunction(n))return this.__toggle.apply(this,arguments);else{var k=b.apply(this,
+arguments);k[1].mode="toggle";return this.effect.apply(this,k)}},cssUnit:function(n){var k=this.css(n),m=[];a.each(["em","px","%","pt"],function(p,q){if(k.indexOf(q)>0)m=[parseFloat(k),q]});return m}});a.easing.jswing=a.easing.swing;a.extend(a.easing,{def:"easeOutQuad",swing:function(n,k,m,p,q){return a.easing[a.easing.def](n,k,m,p,q)},easeInQuad:function(n,k,m,p,q){return p*(k/=q)*k+m},easeOutQuad:function(n,k,m,p,q){return-p*(k/=q)*(k-2)+m},easeInOutQuad:function(n,k,m,p,q){if((k/=q/2)<1)return p/
+2*k*k+m;return-p/2*(--k*(k-2)-1)+m},easeInCubic:function(n,k,m,p,q){return p*(k/=q)*k*k+m},easeOutCubic:function(n,k,m,p,q){return p*((k=k/q-1)*k*k+1)+m},easeInOutCubic:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k*k+m;return p/2*((k-=2)*k*k+2)+m},easeInQuart:function(n,k,m,p,q){return p*(k/=q)*k*k*k+m},easeOutQuart:function(n,k,m,p,q){return-p*((k=k/q-1)*k*k*k-1)+m},easeInOutQuart:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k*k*k+m;return-p/2*((k-=2)*k*k*k-2)+m},easeInQuint:function(n,k,m,
+p,q){return p*(k/=q)*k*k*k*k+m},easeOutQuint:function(n,k,m,p,q){return p*((k=k/q-1)*k*k*k*k+1)+m},easeInOutQuint:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k*k*k*k+m;return p/2*((k-=2)*k*k*k*k+2)+m},easeInSine:function(n,k,m,p,q){return-p*Math.cos(k/q*(Math.PI/2))+p+m},easeOutSine:function(n,k,m,p,q){return p*Math.sin(k/q*(Math.PI/2))+m},easeInOutSine:function(n,k,m,p,q){return-p/2*(Math.cos(Math.PI*k/q)-1)+m},easeInExpo:function(n,k,m,p,q){return k==0?m:p*Math.pow(2,10*(k/q-1))+m},easeOutExpo:function(n,
+k,m,p,q){return k==q?m+p:p*(-Math.pow(2,-10*k/q)+1)+m},easeInOutExpo:function(n,k,m,p,q){if(k==0)return m;if(k==q)return m+p;if((k/=q/2)<1)return p/2*Math.pow(2,10*(k-1))+m;return p/2*(-Math.pow(2,-10*--k)+2)+m},easeInCirc:function(n,k,m,p,q){return-p*(Math.sqrt(1-(k/=q)*k)-1)+m},easeOutCirc:function(n,k,m,p,q){return p*Math.sqrt(1-(k=k/q-1)*k)+m},easeInOutCirc:function(n,k,m,p,q){if((k/=q/2)<1)return-p/2*(Math.sqrt(1-k*k)-1)+m;return p/2*(Math.sqrt(1-(k-=2)*k)+1)+m},easeInElastic:function(n,k,m,
+p,q){n=1.70158;var s=0,r=p;if(k==0)return m;if((k/=q)==1)return m+p;s||(s=q*0.3);if(r<Math.abs(p)){r=p;n=s/4}else n=s/(2*Math.PI)*Math.asin(p/r);return-(r*Math.pow(2,10*(k-=1))*Math.sin((k*q-n)*2*Math.PI/s))+m},easeOutElastic:function(n,k,m,p,q){n=1.70158;var s=0,r=p;if(k==0)return m;if((k/=q)==1)return m+p;s||(s=q*0.3);if(r<Math.abs(p)){r=p;n=s/4}else n=s/(2*Math.PI)*Math.asin(p/r);return r*Math.pow(2,-10*k)*Math.sin((k*q-n)*2*Math.PI/s)+p+m},easeInOutElastic:function(n,k,m,p,q){n=1.70158;var s=
+0,r=p;if(k==0)return m;if((k/=q/2)==2)return m+p;s||(s=q*0.3*1.5);if(r<Math.abs(p)){r=p;n=s/4}else n=s/(2*Math.PI)*Math.asin(p/r);if(k<1)return-0.5*r*Math.pow(2,10*(k-=1))*Math.sin((k*q-n)*2*Math.PI/s)+m;return r*Math.pow(2,-10*(k-=1))*Math.sin((k*q-n)*2*Math.PI/s)*0.5+p+m},easeInBack:function(n,k,m,p,q,s){if(s==d)s=1.70158;return p*(k/=q)*k*((s+1)*k-s)+m},easeOutBack:function(n,k,m,p,q,s){if(s==d)s=1.70158;return p*((k=k/q-1)*k*((s+1)*k+s)+1)+m},easeInOutBack:function(n,k,m,p,q,s){if(s==d)s=1.70158;
+if((k/=q/2)<1)return p/2*k*k*(((s*=1.525)+1)*k-s)+m;return p/2*((k-=2)*k*(((s*=1.525)+1)*k+s)+2)+m},easeInBounce:function(n,k,m,p,q){return p-a.easing.easeOutBounce(n,q-k,0,p,q)+m},easeOutBounce:function(n,k,m,p,q){return(k/=q)<1/2.75?p*7.5625*k*k+m:k<2/2.75?p*(7.5625*(k-=1.5/2.75)*k+0.75)+m:k<2.5/2.75?p*(7.5625*(k-=2.25/2.75)*k+0.9375)+m:p*(7.5625*(k-=2.625/2.75)*k+0.984375)+m},easeInOutBounce:function(n,k,m,p,q){if(k<q/2)return a.easing.easeInBounce(n,k*2,0,p,q)*0.5+m;return a.easing.easeOutBounce(n,
+k*2-q,0,p,q)*0.5+p*0.5+m}})}(jQuery);
 (function(a){a.effects.blind=function(d){return this.queue(function(){var c=a(this),e=["position","top","bottom","left","right"],h=a.effects.setMode(c,d.options.mode||"hide"),g=d.options.direction||"vertical";a.effects.save(c,e);c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"}),b=g=="vertical"?"height":"width";g=g=="vertical"?i.height():i.width();h=="show"&&i.css(b,0);var f={};f[b]=h=="show"?g:0;i.animate(f,d.duration,d.options.easing,function(){h=="hide"&&c.hide();a.effects.restore(c,
 e);a.effects.removeWrapper(c);d.callback&&d.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery);
 (function(a){a.effects.bounce=function(d){return this.queue(function(){var c=a(this),e=["position","top","bottom","left","right"],h=a.effects.setMode(c,d.options.mode||"effect"),g=d.options.direction||"up",i=d.options.distance||20,b=d.options.times||5,f=d.duration||250;/show|hide/.test(h)&&e.push("opacity");a.effects.save(c,e);c.show();a.effects.createWrapper(c);var j=g=="up"||g=="down"?"top":"left";g=g=="up"||g=="left"?"pos":"neg";i=d.options.distance||(j=="top"?c.outerHeight({margin:true})/3:c.outerWidth({margin:true})/
@@ -230,11 +232,11 @@ if(!e.disabled)if(d.target){d=a(d.currentTarget||c);c=d[0]===this.active[0];e.ac
 if(!c){d.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(e.icons.header).addClass(e.icons.headerSelected);d.next().addClass("ui-accordion-content-active")}}}else if(e.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(e.icons.headerSelected).addClass(e.icons.header);this.active.next().addClass("ui-accordion-content-active");var i=this.active.next(),
 b={options:e,newHeader:a([]),oldHeader:e.active,newContent:a([]),oldContent:i},f=this.active=a([]);this._toggle(f,i,b)}},_toggle:function(d,c,e,h,g){var i=this,b=i.options;i.toShow=d;i.toHide=c;i.data=e;var f=function(){if(i)return i._completed.apply(i,arguments)};i._trigger("changestart",null,i.data);i.running=c.size()===0?d.size():c.size();if(b.animated){e={};e=b.collapsible&&h?{toShow:a([]),toHide:c,complete:f,down:g,autoHeight:b.autoHeight||b.fillSpace}:{toShow:d,toHide:c,complete:f,down:g,autoHeight:b.autoHeight||
 b.fillSpace};if(!b.proxied)b.proxied=b.animated;if(!b.proxiedDuration)b.proxiedDuration=b.duration;b.animated=a.isFunction(b.proxied)?b.proxied(e):b.proxied;b.duration=a.isFunction(b.proxiedDuration)?b.proxiedDuration(e):b.proxiedDuration;h=a.ui.accordion.animations;var j=b.duration,l=b.animated;if(l&&!h[l]&&!a.easing[l])l="slide";h[l]||(h[l]=function(o){this.slide(o,{easing:l,duration:j||700})});h[l](e)}else{if(b.collapsible&&h)d.toggle();else{c.hide();d.show()}f(true)}c.prev().attr({"aria-expanded":"false",
-"aria-selected":"false",tabIndex:-1}).blur();d.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(d){this.running=d?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});a.extend(a.ui.accordion,{version:"1.8.14",
+"aria-selected":"false",tabIndex:-1}).blur();d.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(d){this.running=d?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});a.extend(a.ui.accordion,{version:"1.8.16",
 animations:{slide:function(d,c){d=a.extend({easing:"swing",duration:300},d,c);if(d.toHide.size())if(d.toShow.size()){var e=d.toShow.css("overflow"),h=0,g={},i={},b;c=d.toShow;b=c[0].style.width;c.width(parseInt(c.parent().width(),10)-parseInt(c.css("paddingLeft"),10)-parseInt(c.css("paddingRight"),10)-(parseInt(c.css("borderLeftWidth"),10)||0)-(parseInt(c.css("borderRightWidth"),10)||0));a.each(["height","paddingTop","paddingBottom"],function(f,j){i[j]="hide";f=(""+a.css(d.toShow[0],j)).match(/^([\d+-.]+)(.*)$/);
 g[j]={value:f[1],unit:f[2]||"px"}});d.toShow.css({height:0,overflow:"hidden"}).show();d.toHide.filter(":hidden").each(d.complete).end().filter(":visible").animate(i,{step:function(f,j){if(j.prop=="height")h=j.end-j.start===0?0:(j.now-j.start)/(j.end-j.start);d.toShow[0].style[j.prop]=h*g[j.prop].value+g[j.prop].unit},duration:d.duration,easing:d.easing,complete:function(){d.autoHeight||d.toShow.css("height","");d.toShow.css({width:b,overflow:e});d.complete()}})}else d.toHide.animate({height:"hide",
 paddingTop:"hide",paddingBottom:"hide"},d);else d.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},d)},bounceslide:function(d){this.slide(d,{easing:d.down?"easeOutBounce":"swing",duration:d.down?1E3:200})}}})})(jQuery);
-(function(a){var d=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var c=this,e=this.element[0].ownerDocument,h;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(g){if(!(c.options.disabled||c.element.attr("readonly"))){h=
+(function(a){var d=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var c=this,e=this.element[0].ownerDocument,h;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(g){if(!(c.options.disabled||c.element.propAttr("readOnly"))){h=
 false;var i=a.ui.keyCode;switch(g.keyCode){case i.PAGE_UP:c._move("previousPage",g);break;case i.PAGE_DOWN:c._move("nextPage",g);break;case i.UP:c._move("previous",g);g.preventDefault();break;case i.DOWN:c._move("next",g);g.preventDefault();break;case i.ENTER:case i.NUMPAD_ENTER:if(c.menu.active){h=true;g.preventDefault()}case i.TAB:if(!c.menu.active)return;c.menu.select(g);break;case i.ESCAPE:c.element.val(c.term);c.close(g);break;default:clearTimeout(c.searching);c.searching=setTimeout(function(){if(c.term!=
 c.element.val()){c.selectedItem=null;c.search(null,g)}},c.options.delay);break}}}).bind("keypress.autocomplete",function(g){if(h){h=false;g.preventDefault()}}).bind("focus.autocomplete",function(){if(!c.options.disabled){c.selectedItem=null;c.previous=c.element.val()}}).bind("blur.autocomplete",function(g){if(!c.options.disabled){clearTimeout(c.searching);c.closing=setTimeout(function(){c.close(g);c._change(g)},150)}});this._initSource();this.response=function(){return c._response.apply(c,arguments)};
 this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",e)[0]).mousedown(function(g){var i=c.menu.element[0];a(g.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(b){b.target!==c.element[0]&&b.target!==i&&!a.ui.contains(i,b.target)&&c.close()})},1);setTimeout(function(){clearTimeout(c.closing)},13)}).menu({focus:function(g,i){i=i.item.data("item.autocomplete");false!==c._trigger("focus",g,{item:i})&&/^key/.test(g.originalEvent.type)&&
@@ -253,15 +255,15 @@ this.element.children(c))},nextPage:function(d){if(this.hasScroll())if(!this.act
 this.last()?":first":":last"))},previousPage:function(d){if(this.hasScroll())if(!this.active||this.first())this.activate(d,this.element.children(".ui-menu-item:last"));else{var c=this.active.offset().top,e=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var h=a(this).offset().top-c+e-a(this).height();return h<10&&h>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(d,result)}else this.activate(d,this.element.children(".ui-menu-item").filter(!this.active||
 this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(d){this._trigger("selected",d,{item:this.active})}})})(jQuery);
 (function(a){var d,c,e,h,g=function(){var b=a(this).find(":ui-button");setTimeout(function(){b.button("refresh")},1)},i=function(b){var f=b.name,j=b.form,l=a([]);if(f)l=j?a(j).find("[name='"+f+"']"):a("[name='"+f+"']",b.ownerDocument).filter(function(){return!this.form});return l};a.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",g);if(typeof this.options.disabled!==
-"boolean")this.options.disabled=this.element.attr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var b=this,f=this.options,j=this.type==="checkbox"||this.type==="radio",l="ui-state-hover"+(!j?" ui-state-active":"");if(f.label===null)f.label=this.buttonElement.html();if(this.element.is(":disabled"))f.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!f.disabled){a(this).addClass("ui-state-hover");
+"boolean")this.options.disabled=this.element.propAttr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var b=this,f=this.options,j=this.type==="checkbox"||this.type==="radio",l="ui-state-hover"+(!j?" ui-state-active":"");if(f.label===null)f.label=this.buttonElement.html();if(this.element.is(":disabled"))f.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!f.disabled){a(this).addClass("ui-state-hover");
 this===d&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){f.disabled||a(this).removeClass(l)}).bind("click.button",function(o){if(f.disabled){o.preventDefault();o.stopImmediatePropagation()}});this.element.bind("focus.button",function(){b.buttonElement.addClass("ui-state-focus")}).bind("blur.button",function(){b.buttonElement.removeClass("ui-state-focus")});if(j){this.element.bind("change.button",function(){h||b.refresh()});this.buttonElement.bind("mousedown.button",function(o){if(!f.disabled){h=
-false;c=o.pageX;e=o.pageY}}).bind("mouseup.button",function(o){if(!f.disabled)if(c!==o.pageX||e!==o.pageY)h=true})}if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(f.disabled||h)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(f.disabled||h)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);
-var o=b.element[0];i(o).not(o).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(f.disabled)return false;a(this).addClass("ui-state-active");d=this;a(document).one("mouseup",function(){d=null})}).bind("mouseup.button",function(){if(f.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(o){if(f.disabled)return false;if(o.keyCode==a.ui.keyCode.SPACE||
+false;c=o.pageX;e=o.pageY}}).bind("mouseup.button",function(o){if(!f.disabled)if(c!==o.pageX||e!==o.pageY)h=true})}if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(f.disabled||h)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(f.disabled||h)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed","true");
+var o=b.element[0];i(o).not(o).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")});else{this.buttonElement.bind("mousedown.button",function(){if(f.disabled)return false;a(this).addClass("ui-state-active");d=this;a(document).one("mouseup",function(){d=null})}).bind("mouseup.button",function(){if(f.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(o){if(f.disabled)return false;if(o.keyCode==a.ui.keyCode.SPACE||
 o.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(o){o.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",f.disabled);this._resetButton()},_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"){var b=this.element.parents().filter(":last"),f="label[for="+this.element.attr("id")+"]";this.buttonElement=b.find(f);if(!this.buttonElement.length){b=b.length?b.siblings():this.element.siblings();this.buttonElement=b.filter(f);if(!this.buttonElement.length)this.buttonElement=b.find(f)}this.element.addClass("ui-helper-hidden-accessible");(b=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=this.element},
+"radio"){var b=this.element.parents().filter(":last"),f="label[for='"+this.element.attr("id")+"']";this.buttonElement=b.find(f);if(!this.buttonElement.length){b=b.length?b.siblings():this.element.siblings();this.buttonElement=b.filter(f);if(!this.buttonElement.length)this.buttonElement=b.find(f)}this.element.addClass("ui-helper-hidden-accessible");(b=this.element.is(":checked"))&&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,f){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")f?this.element.attr("disabled",true):this.element.removeAttr("disabled");else this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")i(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"),
+a.Widget.prototype.destroy.call(this)},_setOption:function(b,f){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")f?this.element.propAttr("disabled",true):this.element.propAttr("disabled",false);else this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")i(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"),
 f=a("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),j=this.options.icons,l=j.primary&&j.secondary,o=[];if(j.primary||j.secondary){if(this.options.text)o.push("ui-button-text-icon"+(l?"s":j.primary?"-primary":"-secondary"));j.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+j.primary+"'></span>");j.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+j.secondary+"'></span>");if(!this.options.text){o.push(l?"ui-button-icons-only":
 "ui-button-icon-only");this.hasTitle||b.attr("title",f)}}else o.push("ui-button-text-only");b.addClass(o.join(" "))}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,f){b==="disabled"&&this.buttons.button("option",b,f);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var b=this.element.css("direction")===
 "ltr";this.buttons=this.element.find(this.options.items).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(b?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(b?"ui-corner-right":"ui-corner-left").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");
@@ -269,82 +271,82 @@ a.Widget.prototype.destroy.call(this)}})})(jQuery);
 (function(a,d){function c(){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};a.extend(this._defaults,this.regional[""]);this.dpDiv=e(a('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function e(b){return b.bind("mouseout",function(f){f=
-a(f.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");f.length&&f.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(f){f=a(f.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(a.datepicker._isDisabledDatepicker(i.inline?b.parent()[0]:i.input[0])||!f.length)){f.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");f.addClass("ui-state-hover");
-f.hasClass("ui-datepicker-prev")&&f.addClass("ui-datepicker-prev-hover");f.hasClass("ui-datepicker-next")&&f.addClass("ui-datepicker-next-hover")}})}function h(b,f){a.extend(b,f);for(var j in f)if(f[j]==null||f[j]==d)b[j]=f[j];return b}a.extend(a.ui,{datepicker:{version:"1.8.14"}});var g=(new Date).getTime(),i;a.extend(c.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(b){h(this._defaults,
-b||{});return this},_attachDatepicker:function(b,f){var j=null;for(var l in this._defaults){var o=b.getAttribute("date:"+l);if(o){j=j||{};try{j[l]=eval(o)}catch(n){j[l]=o}}}l=b.nodeName.toLowerCase();o=l=="div"||l=="span";if(!b.id){this.uuid+=1;b.id="dp"+this.uuid}var k=this._newInst(a(b),o);k.settings=a.extend({},f||{},j||{});if(l=="input")this._connectDatepicker(b,k);else o&&this._inlineDatepicker(b,k)},_newInst:function(b,f){return{id:b[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:b,selectedDay:0,
-selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:f,dpDiv:!f?this.dpDiv:e(a('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(b,f){var j=a(b);f.append=a([]);f.trigger=a([]);if(!j.hasClass(this.markerClassName)){this._attachments(j,f);j.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(l,o,n){f.settings[o]=
-n}).bind("getData.datepicker",function(l,o){return this._get(f,o)});this._autoSize(f);a.data(b,"datepicker",f)}},_attachments:function(b,f){var j=this._get(f,"appendText"),l=this._get(f,"isRTL");f.append&&f.append.remove();if(j){f.append=a('<span class="'+this._appendClass+'">'+j+"</span>");b[l?"before":"after"](f.append)}b.unbind("focus",this._showDatepicker);f.trigger&&f.trigger.remove();j=this._get(f,"showOn");if(j=="focus"||j=="both")b.focus(this._showDatepicker);if(j=="button"||j=="both"){j=
-this._get(f,"buttonText");var o=this._get(f,"buttonImage");f.trigger=a(this._get(f,"buttonImageOnly")?a("<img/>").addClass(this._triggerClass).attr({src:o,alt:j,title:j}):a('<button type="button"></button>').addClass(this._triggerClass).html(o==""?j:a("<img/>").attr({src:o,alt:j,title:j})));b[l?"before":"after"](f.trigger);f.trigger.click(function(){a.datepicker._datepickerShowing&&a.datepicker._lastInput==b[0]?a.datepicker._hideDatepicker():a.datepicker._showDatepicker(b[0]);return false})}},_autoSize:function(b){if(this._get(b,
-"autoSize")&&!b.inline){var f=new Date(2009,11,20),j=this._get(b,"dateFormat");if(j.match(/[DM]/)){var l=function(o){for(var n=0,k=0,m=0;m<o.length;m++)if(o[m].length>n){n=o[m].length;k=m}return k};f.setMonth(l(this._get(b,j.match(/MM/)?"monthNames":"monthNamesShort")));f.setDate(l(this._get(b,j.match(/DD/)?"dayNames":"dayNamesShort"))+20-f.getDay())}b.input.attr("size",this._formatDate(b,f).length)}},_inlineDatepicker:function(b,f){var j=a(b);if(!j.hasClass(this.markerClassName)){j.addClass(this.markerClassName).append(f.dpDiv).bind("setData.datepicker",
-function(l,o,n){f.settings[o]=n}).bind("getData.datepicker",function(l,o){return this._get(f,o)});a.data(b,"datepicker",f);this._setDate(f,this._getDefaultDate(f),true);this._updateDatepicker(f);this._updateAlternate(f);f.dpDiv.show()}},_dialogDatepicker:function(b,f,j,l,o){b=this._dialogInst;if(!b){this.uuid+=1;this._dialogInput=a('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);a("body").append(this._dialogInput);
-b=this._dialogInst=this._newInst(this._dialogInput,false);b.settings={};a.data(this._dialogInput[0],"datepicker",b)}h(b.settings,l||{});f=f&&f.constructor==Date?this._formatDate(b,f):f;this._dialogInput.val(f);this._pos=o?o.length?o:[o.pageX,o.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");b.settings.onSelect=j;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);a.blockUI&&a.blockUI(this.dpDiv);a.data(this._dialogInput[0],"datepicker",b);return this},_destroyDatepicker:function(b){var f=a(b),j=a.data(b,"datepicker");if(f.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();a.removeData(b,"datepicker");if(l=="input"){j.append.remove();j.trigger.remove();f.removeClass(this.markerClassName).unbind("focus",
-this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(l=="div"||l=="span")f.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(b){var f=a(b),j=a.data(b,"datepicker");if(f.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();if(l=="input"){b.disabled=false;j.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(l=="div"||l=="span"){f=
-f.children("."+this._inlineClass);f.children().removeClass("ui-state-disabled");f.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=a.map(this._disabledInputs,function(o){return o==b?null:o})}},_disableDatepicker:function(b){var f=a(b),j=a.data(b,"datepicker");if(f.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();if(l=="input"){b.disabled=true;j.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",
-cursor:"default"})}else if(l=="div"||l=="span"){f=f.children("."+this._inlineClass);f.children().addClass("ui-state-disabled");f.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=a.map(this._disabledInputs,function(o){return o==b?null:o});this._disabledInputs[this._disabledInputs.length]=b}},_isDisabledDatepicker:function(b){if(!b)return false;for(var f=0;f<this._disabledInputs.length;f++)if(this._disabledInputs[f]==b)return true;return false},
-_getInst:function(b){try{return a.data(b,"datepicker")}catch(f){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(b,f,j){var l=this._getInst(b);if(arguments.length==2&&typeof f=="string")return f=="defaults"?a.extend({},a.datepicker._defaults):l?f=="all"?a.extend({},l.settings):this._get(l,f):null;var o=f||{};if(typeof f=="string"){o={};o[f]=j}if(l){this._curInst==l&&this._hideDatepicker();var n=this._getDateDatepicker(b,true),k=this._getMinMaxDate(l,"min"),m=this._getMinMaxDate(l,
-"max");h(l.settings,o);if(k!==null&&o.dateFormat!==d&&o.minDate===d)l.settings.minDate=this._formatDate(l,k);if(m!==null&&o.dateFormat!==d&&o.maxDate===d)l.settings.maxDate=this._formatDate(l,m);this._attachments(a(b),l);this._autoSize(l);this._setDate(l,n);this._updateAlternate(l);this._updateDatepicker(l)}},_changeDatepicker:function(b,f,j){this._optionDatepicker(b,f,j)},_refreshDatepicker:function(b){(b=this._getInst(b))&&this._updateDatepicker(b)},_setDateDatepicker:function(b,f){if(b=this._getInst(b)){this._setDate(b,
-f);this._updateDatepicker(b);this._updateAlternate(b)}},_getDateDatepicker:function(b,f){(b=this._getInst(b))&&!b.inline&&this._setDateFromField(b,f);return b?this._getDate(b):null},_doKeyDown:function(b){var f=a.datepicker._getInst(b.target),j=true,l=f.dpDiv.is(".ui-datepicker-rtl");f._keyEvent=true;if(a.datepicker._datepickerShowing)switch(b.keyCode){case 9:a.datepicker._hideDatepicker();j=false;break;case 13:j=a("td."+a.datepicker._dayOverClass+":not(."+a.datepicker._currentClass+")",f.dpDiv);
-j[0]?a.datepicker._selectDay(b.target,f.selectedMonth,f.selectedYear,j[0]):a.datepicker._hideDatepicker();return false;case 27:a.datepicker._hideDatepicker();break;case 33:a.datepicker._adjustDate(b.target,b.ctrlKey?-a.datepicker._get(f,"stepBigMonths"):-a.datepicker._get(f,"stepMonths"),"M");break;case 34:a.datepicker._adjustDate(b.target,b.ctrlKey?+a.datepicker._get(f,"stepBigMonths"):+a.datepicker._get(f,"stepMonths"),"M");break;case 35:if(b.ctrlKey||b.metaKey)a.datepicker._clearDate(b.target);
-j=b.ctrlKey||b.metaKey;break;case 36:if(b.ctrlKey||b.metaKey)a.datepicker._gotoToday(b.target);j=b.ctrlKey||b.metaKey;break;case 37:if(b.ctrlKey||b.metaKey)a.datepicker._adjustDate(b.target,l?+1:-1,"D");j=b.ctrlKey||b.metaKey;if(b.originalEvent.altKey)a.datepicker._adjustDate(b.target,b.ctrlKey?-a.datepicker._get(f,"stepBigMonths"):-a.datepicker._get(f,"stepMonths"),"M");break;case 38:if(b.ctrlKey||b.metaKey)a.datepicker._adjustDate(b.target,-7,"D");j=b.ctrlKey||b.metaKey;break;case 39:if(b.ctrlKey||
-b.metaKey)a.datepicker._adjustDate(b.target,l?-1:+1,"D");j=b.ctrlKey||b.metaKey;if(b.originalEvent.altKey)a.datepicker._adjustDate(b.target,b.ctrlKey?+a.datepicker._get(f,"stepBigMonths"):+a.datepicker._get(f,"stepMonths"),"M");break;case 40:if(b.ctrlKey||b.metaKey)a.datepicker._adjustDate(b.target,+7,"D");j=b.ctrlKey||b.metaKey;break;default:j=false}else if(b.keyCode==36&&b.ctrlKey)a.datepicker._showDatepicker(this);else j=false;if(j){b.preventDefault();b.stopPropagation()}},_doKeyPress:function(b){var f=
-a.datepicker._getInst(b.target);if(a.datepicker._get(f,"constrainInput")){f=a.datepicker._possibleChars(a.datepicker._get(f,"dateFormat"));var j=String.fromCharCode(b.charCode==d?b.keyCode:b.charCode);return b.ctrlKey||b.metaKey||j<" "||!f||f.indexOf(j)>-1}},_doKeyUp:function(b){b=a.datepicker._getInst(b.target);if(b.input.val()!=b.lastVal)try{if(a.datepicker.parseDate(a.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,a.datepicker._getFormatConfig(b))){a.datepicker._setDateFromField(b);
-a.datepicker._updateAlternate(b);a.datepicker._updateDatepicker(b)}}catch(f){a.datepicker.log(f)}return true},_showDatepicker:function(b){b=b.target||b;if(b.nodeName.toLowerCase()!="input")b=a("input",b.parentNode)[0];if(!(a.datepicker._isDisabledDatepicker(b)||a.datepicker._lastInput==b)){var f=a.datepicker._getInst(b);if(a.datepicker._curInst&&a.datepicker._curInst!=f){a.datepicker._datepickerShowing&&a.datepicker._triggerOnClose(a.datepicker._curInst);a.datepicker._curInst.dpDiv.stop(true,true)}var j=
-a.datepicker._get(f,"beforeShow");h(f.settings,j?j.apply(b,[b,f]):{});f.lastVal=null;a.datepicker._lastInput=b;a.datepicker._setDateFromField(f);if(a.datepicker._inDialog)b.value="";if(!a.datepicker._pos){a.datepicker._pos=a.datepicker._findPos(b);a.datepicker._pos[1]+=b.offsetHeight}var l=false;a(b).parents().each(function(){l|=a(this).css("position")=="fixed";return!l});if(l&&a.browser.opera){a.datepicker._pos[0]-=document.documentElement.scrollLeft;a.datepicker._pos[1]-=document.documentElement.scrollTop}j=
-{left:a.datepicker._pos[0],top:a.datepicker._pos[1]};a.datepicker._pos=null;f.dpDiv.empty();f.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});a.datepicker._updateDatepicker(f);j=a.datepicker._checkOffset(f,j,l);f.dpDiv.css({position:a.datepicker._inDialog&&a.blockUI?"static":l?"fixed":"absolute",display:"none",left:j.left+"px",top:j.top+"px"});if(!f.inline){j=a.datepicker._get(f,"showAnim");var o=a.datepicker._get(f,"duration"),n=function(){var k=f.dpDiv.find("iframe.ui-datepicker-cover");
-if(k.length){var m=a.datepicker._getBorders(f.dpDiv);k.css({left:-m[0],top:-m[1],width:f.dpDiv.outerWidth(),height:f.dpDiv.outerHeight()})}};f.dpDiv.zIndex(a(b).zIndex()+1);a.datepicker._datepickerShowing=true;a.effects&&a.effects[j]?f.dpDiv.show(j,a.datepicker._get(f,"showOptions"),o,n):f.dpDiv[j||"show"](j?o:null,n);if(!j||!o)n();f.input.is(":visible")&&!f.input.is(":disabled")&&f.input.focus();a.datepicker._curInst=f}}},_updateDatepicker:function(b){this.maxRows=4;var f=a.datepicker._getBorders(b.dpDiv);
-i=b;b.dpDiv.empty().append(this._generateHTML(b));var j=b.dpDiv.find("iframe.ui-datepicker-cover");j.length&&j.css({left:-f[0],top:-f[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()});b.dpDiv.find("."+this._dayOverClass+" a").mouseover();f=this._getNumberOfMonths(b);j=f[1];b.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");j>1&&b.dpDiv.addClass("ui-datepicker-multi-"+j).css("width",17*j+"em");b.dpDiv[(f[0]!=1||f[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");
-b.dpDiv[(this._get(b,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");b==a.datepicker._curInst&&a.datepicker._datepickerShowing&&b.input&&b.input.is(":visible")&&!b.input.is(":disabled")&&b.input[0]!=document.activeElement&&b.input.focus();if(b.yearshtml){var l=b.yearshtml;setTimeout(function(){l===b.yearshtml&&b.yearshtml&&b.dpDiv.find("select.ui-datepicker-year:first").replaceWith(b.yearshtml);l=b.yearshtml=null},0)}},_getBorders:function(b){var f=function(j){return{thin:1,medium:2,thick:3}[j]||
-j};return[parseFloat(f(b.css("border-left-width"))),parseFloat(f(b.css("border-top-width")))]},_checkOffset:function(b,f,j){var l=b.dpDiv.outerWidth(),o=b.dpDiv.outerHeight(),n=b.input?b.input.outerWidth():0,k=b.input?b.input.outerHeight():0,m=document.documentElement.clientWidth+a(document).scrollLeft(),p=document.documentElement.clientHeight+a(document).scrollTop();f.left-=this._get(b,"isRTL")?l-n:0;f.left-=j&&f.left==b.input.offset().left?a(document).scrollLeft():0;f.top-=j&&f.top==b.input.offset().top+
-k?a(document).scrollTop():0;f.left-=Math.min(f.left,f.left+l>m&&m>l?Math.abs(f.left+l-m):0);f.top-=Math.min(f.top,f.top+o>p&&p>o?Math.abs(o+k):0);return f},_findPos:function(b){for(var f=this._get(this._getInst(b),"isRTL");b&&(b.type=="hidden"||b.nodeType!=1||a.expr.filters.hidden(b));)b=b[f?"previousSibling":"nextSibling"];b=a(b).offset();return[b.left,b.top]},_triggerOnClose:function(b){var f=this._get(b,"onClose");if(f)f.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b])},_hideDatepicker:function(b){var f=
-this._curInst;if(!(!f||b&&f!=a.data(b,"datepicker")))if(this._datepickerShowing){b=this._get(f,"showAnim");var j=this._get(f,"duration"),l=function(){a.datepicker._tidyDialog(f);this._curInst=null};a.effects&&a.effects[b]?f.dpDiv.hide(b,a.datepicker._get(f,"showOptions"),j,l):f.dpDiv[b=="slideDown"?"slideUp":b=="fadeIn"?"fadeOut":"hide"](b?j:null,l);b||l();a.datepicker._triggerOnClose(f);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",
-left:"0",top:"-100px"});if(a.blockUI){a.unblockUI();a("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(b){b.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(b){if(a.datepicker._curInst){b=a(b.target);b[0].id!=a.datepicker._mainDivId&&b.parents("#"+a.datepicker._mainDivId).length==0&&!b.hasClass(a.datepicker.markerClassName)&&!b.hasClass(a.datepicker._triggerClass)&&a.datepicker._datepickerShowing&&!(a.datepicker._inDialog&&
-a.blockUI)&&a.datepicker._hideDatepicker()}},_adjustDate:function(b,f,j){b=a(b);var l=this._getInst(b[0]);if(!this._isDisabledDatepicker(b[0])){this._adjustInstDate(l,f+(j=="M"?this._get(l,"showCurrentAtPos"):0),j);this._updateDatepicker(l)}},_gotoToday:function(b){b=a(b);var f=this._getInst(b[0]);if(this._get(f,"gotoCurrent")&&f.currentDay){f.selectedDay=f.currentDay;f.drawMonth=f.selectedMonth=f.currentMonth;f.drawYear=f.selectedYear=f.currentYear}else{var j=new Date;f.selectedDay=j.getDate();f.drawMonth=
-f.selectedMonth=j.getMonth();f.drawYear=f.selectedYear=j.getFullYear()}this._notifyChange(f);this._adjustDate(b)},_selectMonthYear:function(b,f,j){b=a(b);var l=this._getInst(b[0]);l._selectingMonthYear=false;l["selected"+(j=="M"?"Month":"Year")]=l["draw"+(j=="M"?"Month":"Year")]=parseInt(f.options[f.selectedIndex].value,10);this._notifyChange(l);this._adjustDate(b)},_clickMonthYear:function(b){var f=this._getInst(a(b)[0]);f.input&&f._selectingMonthYear&&setTimeout(function(){f.input.focus()},0);f._selectingMonthYear=
-!f._selectingMonthYear},_selectDay:function(b,f,j,l){var o=a(b);if(!(a(l).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0]))){o=this._getInst(o[0]);o.selectedDay=o.currentDay=a("a",l).html();o.selectedMonth=o.currentMonth=f;o.selectedYear=o.currentYear=j;this._selectDate(b,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear))}},_clearDate:function(b){b=a(b);this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(b,f){b=this._getInst(a(b)[0]);f=f!=null?f:this._formatDate(b);
-b.input&&b.input.val(f);this._updateAlternate(b);var j=this._get(b,"onSelect");if(j)j.apply(b.input?b.input[0]:null,[f,b]);else b.input&&b.input.trigger("change");if(b.inline)this._updateDatepicker(b);else{this._hideDatepicker();this._lastInput=b.input[0];typeof b.input[0]!="object"&&b.input.focus();this._lastInput=null}},_updateAlternate:function(b){var f=this._get(b,"altField");if(f){var j=this._get(b,"altFormat")||this._get(b,"dateFormat"),l=this._getDate(b),o=this.formatDate(j,l,this._getFormatConfig(b));
-a(f).each(function(){a(this).val(o)})}},noWeekends:function(b){b=b.getDay();return[b>0&&b<6,""]},iso8601Week:function(b){b=new Date(b.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var f=b.getTime();b.setMonth(0);b.setDate(1);return Math.floor(Math.round((f-b)/864E5)/7)+1},parseDate:function(b,f,j){if(b==null||f==null)throw"Invalid arguments";f=typeof f=="object"?f.toString():f+"";if(f=="")return null;var l=(j?j.shortYearCutoff:null)||this._defaults.shortYearCutoff;l=typeof l!="string"?l:(new Date).getFullYear()%
-100+parseInt(l,10);for(var o=(j?j.dayNamesShort:null)||this._defaults.dayNamesShort,n=(j?j.dayNames:null)||this._defaults.dayNames,k=(j?j.monthNamesShort:null)||this._defaults.monthNamesShort,m=(j?j.monthNames:null)||this._defaults.monthNames,p=j=-1,q=-1,s=-1,r=false,u=function(z){(z=H+1<b.length&&b.charAt(H+1)==z)&&H++;return z},v=function(z){var I=u(z);z=new RegExp("^\\d{1,"+(z=="@"?14:z=="!"?20:z=="y"&&I?4:z=="o"?3:2)+"}");z=f.substring(y).match(z);if(!z)throw"Missing number at position "+y;y+=
-z[0].length;return parseInt(z[0],10)},w=function(z,I,N){z=a.map(u(z)?N:I,function(D,E){return[[E,D]]}).sort(function(D,E){return-(D[1].length-E[1].length)});var J=-1;a.each(z,function(D,E){D=E[1];if(f.substr(y,D.length).toLowerCase()==D.toLowerCase()){J=E[0];y+=D.length;return false}});if(J!=-1)return J+1;else throw"Unknown name at position "+y;},x=function(){if(f.charAt(y)!=b.charAt(H))throw"Unexpected literal at position "+y;y++},y=0,H=0;H<b.length;H++)if(r)if(b.charAt(H)=="'"&&!u("'"))r=false;
-else x();else switch(b.charAt(H)){case "d":q=v("d");break;case "D":w("D",o,n);break;case "o":s=v("o");break;case "m":p=v("m");break;case "M":p=w("M",k,m);break;case "y":j=v("y");break;case "@":var C=new Date(v("@"));j=C.getFullYear();p=C.getMonth()+1;q=C.getDate();break;case "!":C=new Date((v("!")-this._ticksTo1970)/1E4);j=C.getFullYear();p=C.getMonth()+1;q=C.getDate();break;case "'":if(u("'"))x();else r=true;break;default:x()}if(y<f.length)throw"Extra/unparsed characters found in date: "+f.substring(y);
-if(j==-1)j=(new Date).getFullYear();else if(j<100)j+=(new Date).getFullYear()-(new Date).getFullYear()%100+(j<=l?0:-100);if(s>-1){p=1;q=s;do{l=this._getDaysInMonth(j,p-1);if(q<=l)break;p++;q-=l}while(1)}C=this._daylightSavingAdjust(new Date(j,p-1,q));if(C.getFullYear()!=j||C.getMonth()+1!=p||C.getDate()!=q)throw"Invalid date";return C},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(b,f,j){if(!f)return"";var l=(j?j.dayNamesShort:null)||this._defaults.dayNamesShort,o=(j?j.dayNames:null)||this._defaults.dayNames,n=(j?j.monthNamesShort:null)||this._defaults.monthNamesShort;j=(j?j.monthNames:null)||this._defaults.monthNames;var k=function(u){(u=r+1<b.length&&b.charAt(r+1)==u)&&r++;return u},m=function(u,v,w){v=""+v;if(k(u))for(;v.length<
-w;)v="0"+v;return v},p=function(u,v,w,x){return k(u)?x[v]:w[v]},q="",s=false;if(f)for(var r=0;r<b.length;r++)if(s)if(b.charAt(r)=="'"&&!k("'"))s=false;else q+=b.charAt(r);else switch(b.charAt(r)){case "d":q+=m("d",f.getDate(),2);break;case "D":q+=p("D",f.getDay(),l,o);break;case "o":q+=m("o",Math.round(((new Date(f.getFullYear(),f.getMonth(),f.getDate())).getTime()-(new Date(f.getFullYear(),0,0)).getTime())/864E5),3);break;case "m":q+=m("m",f.getMonth()+1,2);break;case "M":q+=p("M",f.getMonth(),n,
-j);break;case "y":q+=k("y")?f.getFullYear():(f.getYear()%100<10?"0":"")+f.getYear()%100;break;case "@":q+=f.getTime();break;case "!":q+=f.getTime()*1E4+this._ticksTo1970;break;case "'":if(k("'"))q+="'";else s=true;break;default:q+=b.charAt(r)}return q},_possibleChars:function(b){for(var f="",j=false,l=function(n){(n=o+1<b.length&&b.charAt(o+1)==n)&&o++;return n},o=0;o<b.length;o++)if(j)if(b.charAt(o)=="'"&&!l("'"))j=false;else f+=b.charAt(o);else switch(b.charAt(o)){case "d":case "m":case "y":case "@":f+=
-"0123456789";break;case "D":case "M":return null;case "'":if(l("'"))f+="'";else j=true;break;default:f+=b.charAt(o)}return f},_get:function(b,f){return b.settings[f]!==d?b.settings[f]:this._defaults[f]},_setDateFromField:function(b,f){if(b.input.val()!=b.lastVal){var j=this._get(b,"dateFormat"),l=b.lastVal=b.input?b.input.val():null,o,n;o=n=this._getDefaultDate(b);var k=this._getFormatConfig(b);try{o=this.parseDate(j,l,k)||n}catch(m){this.log(m);l=f?"":l}b.selectedDay=o.getDate();b.drawMonth=b.selectedMonth=
-o.getMonth();b.drawYear=b.selectedYear=o.getFullYear();b.currentDay=l?o.getDate():0;b.currentMonth=l?o.getMonth():0;b.currentYear=l?o.getFullYear():0;this._adjustInstDate(b)}},_getDefaultDate:function(b){return this._restrictMinMax(b,this._determineDate(b,this._get(b,"defaultDate"),new Date))},_determineDate:function(b,f,j){var l=function(n){var k=new Date;k.setDate(k.getDate()+n);return k},o=function(n){try{return a.datepicker.parseDate(a.datepicker._get(b,"dateFormat"),n,a.datepicker._getFormatConfig(b))}catch(k){}var m=
-(n.toLowerCase().match(/^c/)?a.datepicker._getDate(b):null)||new Date,p=m.getFullYear(),q=m.getMonth();m=m.getDate();for(var s=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,r=s.exec(n);r;){switch(r[2]||"d"){case "d":case "D":m+=parseInt(r[1],10);break;case "w":case "W":m+=parseInt(r[1],10)*7;break;case "m":case "M":q+=parseInt(r[1],10);m=Math.min(m,a.datepicker._getDaysInMonth(p,q));break;case "y":case "Y":p+=parseInt(r[1],10);m=Math.min(m,a.datepicker._getDaysInMonth(p,q));break}r=s.exec(n)}return new Date(p,
-q,m)};if(f=(f=f==null||f===""?j:typeof f=="string"?o(f):typeof f=="number"?isNaN(f)?j:l(f):new Date(f.getTime()))&&f.toString()=="Invalid Date"?j:f){f.setHours(0);f.setMinutes(0);f.setSeconds(0);f.setMilliseconds(0)}return this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(b){if(!b)return null;b.setHours(b.getHours()>12?b.getHours()+2:0);return b},_setDate:function(b,f,j){var l=!f,o=b.selectedMonth,n=b.selectedYear;f=this._restrictMinMax(b,this._determineDate(b,f,new Date));b.selectedDay=
-b.currentDay=f.getDate();b.drawMonth=b.selectedMonth=b.currentMonth=f.getMonth();b.drawYear=b.selectedYear=b.currentYear=f.getFullYear();if((o!=b.selectedMonth||n!=b.selectedYear)&&!j)this._notifyChange(b);this._adjustInstDate(b);if(b.input)b.input.val(l?"":this._formatDate(b))},_getDate:function(b){return!b.currentYear||b.input&&b.input.val()==""?null:this._daylightSavingAdjust(new Date(b.currentYear,b.currentMonth,b.currentDay))},_generateHTML:function(b){var f=new Date;f=this._daylightSavingAdjust(new Date(f.getFullYear(),
-f.getMonth(),f.getDate()));var j=this._get(b,"isRTL"),l=this._get(b,"showButtonPanel"),o=this._get(b,"hideIfNoPrevNext"),n=this._get(b,"navigationAsDateFormat"),k=this._getNumberOfMonths(b),m=this._get(b,"showCurrentAtPos"),p=this._get(b,"stepMonths"),q=k[0]!=1||k[1]!=1,s=this._daylightSavingAdjust(!b.currentDay?new Date(9999,9,9):new Date(b.currentYear,b.currentMonth,b.currentDay)),r=this._getMinMaxDate(b,"min"),u=this._getMinMaxDate(b,"max");m=b.drawMonth-m;var v=b.drawYear;if(m<0){m+=12;v--}if(u){var w=
-this._daylightSavingAdjust(new Date(u.getFullYear(),u.getMonth()-k[0]*k[1]+1,u.getDate()));for(w=r&&w<r?r:w;this._daylightSavingAdjust(new Date(v,m,1))>w;){m--;if(m<0){m=11;v--}}}b.drawMonth=m;b.drawYear=v;w=this._get(b,"prevText");w=!n?w:this.formatDate(w,this._daylightSavingAdjust(new Date(v,m-p,1)),this._getFormatConfig(b));w=this._canAdjustMonth(b,-1,v,m)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+g+".datepicker._adjustDate('#"+b.id+"', -"+p+", 'M');\" title=\""+w+'"><span class="ui-icon ui-icon-circle-triangle-'+
-(j?"e":"w")+'">'+w+"</span></a>":o?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+w+'"><span class="ui-icon ui-icon-circle-triangle-'+(j?"e":"w")+'">'+w+"</span></a>";var x=this._get(b,"nextText");x=!n?x:this.formatDate(x,this._daylightSavingAdjust(new Date(v,m+p,1)),this._getFormatConfig(b));o=this._canAdjustMonth(b,+1,v,m)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+g+".datepicker._adjustDate('#"+b.id+"', +"+p+", 'M');\" title=\""+x+'"><span class="ui-icon ui-icon-circle-triangle-'+
-(j?"w":"e")+'">'+x+"</span></a>":o?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+x+'"><span class="ui-icon ui-icon-circle-triangle-'+(j?"w":"e")+'">'+x+"</span></a>";p=this._get(b,"currentText");x=this._get(b,"gotoCurrent")&&b.currentDay?s:f;p=!n?p:this.formatDate(p,x,this._getFormatConfig(b));n=!b.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+g+'.datepicker._hideDatepicker();">'+this._get(b,
-"closeText")+"</button>":"";l=l?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(j?n:"")+(this._isInRange(b,x)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+g+".datepicker._gotoToday('#"+b.id+"');\">"+p+"</button>":"")+(j?"":n)+"</div>":"";n=parseInt(this._get(b,"firstDay"),10);n=isNaN(n)?0:n;p=this._get(b,"showWeek");x=this._get(b,"dayNames");this._get(b,"dayNamesShort");var y=this._get(b,"dayNamesMin"),H=
-this._get(b,"monthNames"),C=this._get(b,"monthNamesShort"),z=this._get(b,"beforeShowDay"),I=this._get(b,"showOtherMonths"),N=this._get(b,"selectOtherMonths");this._get(b,"calculateWeek");for(var J=this._getDefaultDate(b),D="",E=0;E<k[0];E++){var P="";this.maxRows=4;for(var L=0;L<k[1];L++){var Q=this._daylightSavingAdjust(new Date(v,m,b.selectedDay)),B=" ui-corner-all",F="";if(q){F+='<div class="ui-datepicker-group';if(k[1]>1)switch(L){case 0:F+=" ui-datepicker-group-first";B=" ui-corner-"+(j?"right":
-"left");break;case k[1]-1:F+=" ui-datepicker-group-last";B=" ui-corner-"+(j?"left":"right");break;default:F+=" ui-datepicker-group-middle";B="";break}F+='">'}F+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+B+'">'+(/all|left/.test(B)&&E==0?j?o:w:"")+(/all|right/.test(B)&&E==0?j?w:o:"")+this._generateMonthYearHeader(b,m,v,r,u,E>0||L>0,H,C)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var G=p?'<th class="ui-datepicker-week-col">'+this._get(b,"weekHeader")+"</th>":
-"";for(B=0;B<7;B++){var A=(B+n)%7;G+="<th"+((B+n+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+x[A]+'">'+y[A]+"</span></th>"}F+=G+"</tr></thead><tbody>";G=this._getDaysInMonth(v,m);if(v==b.selectedYear&&m==b.selectedMonth)b.selectedDay=Math.min(b.selectedDay,G);B=(this._getFirstDayOfMonth(v,m)-n+7)%7;G=Math.ceil((B+G)/7);this.maxRows=G=q?this.maxRows>G?this.maxRows:G:G;A=this._daylightSavingAdjust(new Date(v,m,1-B));for(var R=0;R<G;R++){F+="<tr>";var S=!p?"":'<td class="ui-datepicker-week-col">'+
-this._get(b,"calculateWeek")(A)+"</td>";for(B=0;B<7;B++){var M=z?z.apply(b.input?b.input[0]:null,[A]):[true,""],K=A.getMonth()!=m,O=K&&!N||!M[0]||r&&A<r||u&&A>u;S+='<td class="'+((B+n+6)%7>=5?" ui-datepicker-week-end":"")+(K?" ui-datepicker-other-month":"")+(A.getTime()==Q.getTime()&&m==b.selectedMonth&&b._keyEvent||J.getTime()==A.getTime()&&J.getTime()==Q.getTime()?" "+this._dayOverClass:"")+(O?" "+this._unselectableClass+" ui-state-disabled":"")+(K&&!I?"":" "+M[1]+(A.getTime()==s.getTime()?" "+
-this._currentClass:"")+(A.getTime()==f.getTime()?" ui-datepicker-today":""))+'"'+((!K||I)&&M[2]?' title="'+M[2]+'"':"")+(O?"":' onclick="DP_jQuery_'+g+".datepicker._selectDay('#"+b.id+"',"+A.getMonth()+","+A.getFullYear()+', this);return false;"')+">"+(K&&!I?"&#xa0;":O?'<span class="ui-state-default">'+A.getDate()+"</span>":'<a class="ui-state-default'+(A.getTime()==f.getTime()?" ui-state-highlight":"")+(A.getTime()==s.getTime()?" ui-state-active":"")+(K?" ui-priority-secondary":"")+'" href="#">'+
-A.getDate()+"</a>")+"</td>";A.setDate(A.getDate()+1);A=this._daylightSavingAdjust(A)}F+=S+"</tr>"}m++;if(m>11){m=0;v++}F+="</tbody></table>"+(q?"</div>"+(k[0]>0&&L==k[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");P+=F}D+=P}D+=l+(a.browser.msie&&parseInt(a.browser.version,10)<7&&!b.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");b._keyEvent=false;return D},_generateMonthYearHeader:function(b,f,j,l,o,n,k,m){var p=this._get(b,"changeMonth"),
-q=this._get(b,"changeYear"),s=this._get(b,"showMonthAfterYear"),r='<div class="ui-datepicker-title">',u="";if(n||!p)u+='<span class="ui-datepicker-month">'+k[f]+"</span>";else{k=l&&l.getFullYear()==j;var v=o&&o.getFullYear()==j;u+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+g+".datepicker._selectMonthYear('#"+b.id+"', this, 'M');\" onclick=\"DP_jQuery_"+g+".datepicker._clickMonthYear('#"+b.id+"');\">";for(var w=0;w<12;w++)if((!k||w>=l.getMonth())&&(!v||w<=o.getMonth()))u+='<option value="'+
-w+'"'+(w==f?' selected="selected"':"")+">"+m[w]+"</option>";u+="</select>"}s||(r+=u+(n||!(p&&q)?"&#xa0;":""));if(!b.yearshtml){b.yearshtml="";if(n||!q)r+='<span class="ui-datepicker-year">'+j+"</span>";else{m=this._get(b,"yearRange").split(":");var x=(new Date).getFullYear();k=function(y){y=y.match(/c[+-].*/)?j+parseInt(y.substring(1),10):y.match(/[+-].*/)?x+parseInt(y,10):parseInt(y,10);return isNaN(y)?x:y};f=k(m[0]);m=Math.max(f,k(m[1]||""));f=l?Math.max(f,l.getFullYear()):f;m=o?Math.min(m,o.getFullYear()):
-m;for(b.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+g+".datepicker._selectMonthYear('#"+b.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+g+".datepicker._clickMonthYear('#"+b.id+"');\">";f<=m;f++)b.yearshtml+='<option value="'+f+'"'+(f==j?' selected="selected"':"")+">"+f+"</option>";b.yearshtml+="</select>";r+=b.yearshtml;b.yearshtml=null}}r+=this._get(b,"yearSuffix");if(s)r+=(n||!(p&&q)?"&#xa0;":"")+u;r+="</div>";return r},_adjustInstDate:function(b,f,j){var l=b.drawYear+(j==
-"Y"?f:0),o=b.drawMonth+(j=="M"?f:0);f=Math.min(b.selectedDay,this._getDaysInMonth(l,o))+(j=="D"?f:0);l=this._restrictMinMax(b,this._daylightSavingAdjust(new Date(l,o,f)));b.selectedDay=l.getDate();b.drawMonth=b.selectedMonth=l.getMonth();b.drawYear=b.selectedYear=l.getFullYear();if(j=="M"||j=="Y")this._notifyChange(b)},_restrictMinMax:function(b,f){var j=this._getMinMaxDate(b,"min");b=this._getMinMaxDate(b,"max");f=j&&f<j?j:f;return f=b&&f>b?b:f},_notifyChange:function(b){var f=this._get(b,"onChangeMonthYear");
-if(f)f.apply(b.input?b.input[0]:null,[b.selectedYear,b.selectedMonth+1,b])},_getNumberOfMonths:function(b){b=this._get(b,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(b,f){return this._determineDate(b,this._get(b,f+"Date"),null)},_getDaysInMonth:function(b,f){return 32-this._daylightSavingAdjust(new Date(b,f,32)).getDate()},_getFirstDayOfMonth:function(b,f){return(new Date(b,f,1)).getDay()},_canAdjustMonth:function(b,f,j,l){var o=this._getNumberOfMonths(b);
-j=this._daylightSavingAdjust(new Date(j,l+(f<0?f:o[0]*o[1]),1));f<0&&j.setDate(this._getDaysInMonth(j.getFullYear(),j.getMonth()));return this._isInRange(b,j)},_isInRange:function(b,f){var j=this._getMinMaxDate(b,"min");b=this._getMinMaxDate(b,"max");return(!j||f.getTime()>=j.getTime())&&(!b||f.getTime()<=b.getTime())},_getFormatConfig:function(b){var f=this._get(b,"shortYearCutoff");f=typeof f!="string"?f:(new Date).getFullYear()%100+parseInt(f,10);return{shortYearCutoff:f,dayNamesShort:this._get(b,
-"dayNamesShort"),dayNames:this._get(b,"dayNames"),monthNamesShort:this._get(b,"monthNamesShort"),monthNames:this._get(b,"monthNames")}},_formatDate:function(b,f,j,l){if(!f){b.currentDay=b.selectedDay;b.currentMonth=b.selectedMonth;b.currentYear=b.selectedYear}f=f?typeof f=="object"?f:this._daylightSavingAdjust(new Date(l,j,f)):this._daylightSavingAdjust(new Date(b.currentYear,b.currentMonth,b.currentDay));return this.formatDate(this._get(b,"dateFormat"),f,this._getFormatConfig(b))}});a.fn.datepicker=
-function(b){if(!this.length)return this;if(!a.datepicker.initialized){a(document).mousedown(a.datepicker._checkExternalClick).find("body").append(a.datepicker.dpDiv);a.datepicker.initialized=true}var f=Array.prototype.slice.call(arguments,1);if(typeof b=="string"&&(b=="isDisabled"||b=="getDate"||b=="widget"))return a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this[0]].concat(f));if(b=="option"&&arguments.length==2&&typeof arguments[1]=="string")return a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,
-[this[0]].concat(f));return this.each(function(){typeof b=="string"?a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this].concat(f)):a.datepicker._attachDatepicker(this,b)})};a.datepicker=new c;a.datepicker.initialized=false;a.datepicker.uuid=(new Date).getTime();a.datepicker.version="1.8.14";window["DP_jQuery_"+g]=a})(jQuery);
+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,disabled:false};a.extend(this._defaults,this.regional[""]);this.dpDiv=e(a('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function e(b){return b.bind("mouseout",
+function(f){f=a(f.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");f.length&&f.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(f){f=a(f.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(a.datepicker._isDisabledDatepicker(i.inline?b.parent()[0]:i.input[0])||!f.length)){f.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
+f.addClass("ui-state-hover");f.hasClass("ui-datepicker-prev")&&f.addClass("ui-datepicker-prev-hover");f.hasClass("ui-datepicker-next")&&f.addClass("ui-datepicker-next-hover")}})}function h(b,f){a.extend(b,f);for(var j in f)if(f[j]==null||f[j]==d)b[j]=f[j];return b}a.extend(a.ui,{datepicker:{version:"1.8.16"}});var g=(new Date).getTime(),i;a.extend(c.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},
+setDefaults:function(b){h(this._defaults,b||{});return this},_attachDatepicker:function(b,f){var j=null;for(var l in this._defaults){var o=b.getAttribute("date:"+l);if(o){j=j||{};try{j[l]=eval(o)}catch(n){j[l]=o}}}l=b.nodeName.toLowerCase();o=l=="div"||l=="span";if(!b.id){this.uuid+=1;b.id="dp"+this.uuid}var k=this._newInst(a(b),o);k.settings=a.extend({},f||{},j||{});if(l=="input")this._connectDatepicker(b,k);else o&&this._inlineDatepicker(b,k)},_newInst:function(b,f){return{id:b[0].id.replace(/([^A-Za-z0-9_-])/g,
+"\\\\$1"),input:b,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:f,dpDiv:!f?this.dpDiv:e(a('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(b,f){var j=a(b);f.append=a([]);f.trigger=a([]);if(!j.hasClass(this.markerClassName)){this._attachments(j,f);j.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",
+function(l,o,n){f.settings[o]=n}).bind("getData.datepicker",function(l,o){return this._get(f,o)});this._autoSize(f);a.data(b,"datepicker",f);f.settings.disabled&&this._disableDatepicker(b)}},_attachments:function(b,f){var j=this._get(f,"appendText"),l=this._get(f,"isRTL");f.append&&f.append.remove();if(j){f.append=a('<span class="'+this._appendClass+'">'+j+"</span>");b[l?"before":"after"](f.append)}b.unbind("focus",this._showDatepicker);f.trigger&&f.trigger.remove();j=this._get(f,"showOn");if(j==
+"focus"||j=="both")b.focus(this._showDatepicker);if(j=="button"||j=="both"){j=this._get(f,"buttonText");var o=this._get(f,"buttonImage");f.trigger=a(this._get(f,"buttonImageOnly")?a("<img/>").addClass(this._triggerClass).attr({src:o,alt:j,title:j}):a('<button type="button"></button>').addClass(this._triggerClass).html(o==""?j:a("<img/>").attr({src:o,alt:j,title:j})));b[l?"before":"after"](f.trigger);f.trigger.click(function(){a.datepicker._datepickerShowing&&a.datepicker._lastInput==b[0]?a.datepicker._hideDatepicker():
+a.datepicker._showDatepicker(b[0]);return false})}},_autoSize:function(b){if(this._get(b,"autoSize")&&!b.inline){var f=new Date(2009,11,20),j=this._get(b,"dateFormat");if(j.match(/[DM]/)){var l=function(o){for(var n=0,k=0,m=0;m<o.length;m++)if(o[m].length>n){n=o[m].length;k=m}return k};f.setMonth(l(this._get(b,j.match(/MM/)?"monthNames":"monthNamesShort")));f.setDate(l(this._get(b,j.match(/DD/)?"dayNames":"dayNamesShort"))+20-f.getDay())}b.input.attr("size",this._formatDate(b,f).length)}},_inlineDatepicker:function(b,
+f){var j=a(b);if(!j.hasClass(this.markerClassName)){j.addClass(this.markerClassName).append(f.dpDiv).bind("setData.datepicker",function(l,o,n){f.settings[o]=n}).bind("getData.datepicker",function(l,o){return this._get(f,o)});a.data(b,"datepicker",f);this._setDate(f,this._getDefaultDate(f),true);this._updateDatepicker(f);this._updateAlternate(f);f.settings.disabled&&this._disableDatepicker(b);f.dpDiv.css("display","block")}},_dialogDatepicker:function(b,f,j,l,o){b=this._dialogInst;if(!b){this.uuid+=
+1;this._dialogInput=a('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);a("body").append(this._dialogInput);b=this._dialogInst=this._newInst(this._dialogInput,false);b.settings={};a.data(this._dialogInput[0],"datepicker",b)}h(b.settings,l||{});f=f&&f.constructor==Date?this._formatDate(b,f):f;this._dialogInput.val(f);this._pos=o?o.length?o:[o.pageX,o.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");b.settings.onSelect=j;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);a.blockUI&&a.blockUI(this.dpDiv);a.data(this._dialogInput[0],"datepicker",b);return this},_destroyDatepicker:function(b){var f=
+a(b),j=a.data(b,"datepicker");if(f.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();a.removeData(b,"datepicker");if(l=="input"){j.append.remove();j.trigger.remove();f.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(l=="div"||l=="span")f.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(b){var f=a(b),j=a.data(b,"datepicker");if(f.hasClass(this.markerClassName)){var l=
+b.nodeName.toLowerCase();if(l=="input"){b.disabled=false;j.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(l=="div"||l=="span"){f=f.children("."+this._inlineClass);f.children().removeClass("ui-state-disabled");f.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=a.map(this._disabledInputs,function(o){return o==b?null:o})}},_disableDatepicker:function(b){var f=a(b),j=a.data(b,
+"datepicker");if(f.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();if(l=="input"){b.disabled=true;j.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(l=="div"||l=="span"){f=f.children("."+this._inlineClass);f.children().addClass("ui-state-disabled");f.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=a.map(this._disabledInputs,function(o){return o==
+b?null:o});this._disabledInputs[this._disabledInputs.length]=b}},_isDisabledDatepicker:function(b){if(!b)return false;for(var f=0;f<this._disabledInputs.length;f++)if(this._disabledInputs[f]==b)return true;return false},_getInst:function(b){try{return a.data(b,"datepicker")}catch(f){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(b,f,j){var l=this._getInst(b);if(arguments.length==2&&typeof f=="string")return f=="defaults"?a.extend({},a.datepicker._defaults):l?f=="all"?
+a.extend({},l.settings):this._get(l,f):null;var o=f||{};if(typeof f=="string"){o={};o[f]=j}if(l){this._curInst==l&&this._hideDatepicker();var n=this._getDateDatepicker(b,true),k=this._getMinMaxDate(l,"min"),m=this._getMinMaxDate(l,"max");h(l.settings,o);if(k!==null&&o.dateFormat!==d&&o.minDate===d)l.settings.minDate=this._formatDate(l,k);if(m!==null&&o.dateFormat!==d&&o.maxDate===d)l.settings.maxDate=this._formatDate(l,m);this._attachments(a(b),l);this._autoSize(l);this._setDate(l,n);this._updateAlternate(l);
+this._updateDatepicker(l)}},_changeDatepicker:function(b,f,j){this._optionDatepicker(b,f,j)},_refreshDatepicker:function(b){(b=this._getInst(b))&&this._updateDatepicker(b)},_setDateDatepicker:function(b,f){if(b=this._getInst(b)){this._setDate(b,f);this._updateDatepicker(b);this._updateAlternate(b)}},_getDateDatepicker:function(b,f){(b=this._getInst(b))&&!b.inline&&this._setDateFromField(b,f);return b?this._getDate(b):null},_doKeyDown:function(b){var f=a.datepicker._getInst(b.target),j=true,l=f.dpDiv.is(".ui-datepicker-rtl");
+f._keyEvent=true;if(a.datepicker._datepickerShowing)switch(b.keyCode){case 9:a.datepicker._hideDatepicker();j=false;break;case 13:j=a("td."+a.datepicker._dayOverClass+":not(."+a.datepicker._currentClass+")",f.dpDiv);j[0]&&a.datepicker._selectDay(b.target,f.selectedMonth,f.selectedYear,j[0]);if(b=a.datepicker._get(f,"onSelect")){j=a.datepicker._formatDate(f);b.apply(f.input?f.input[0]:null,[j,f])}else a.datepicker._hideDatepicker();return false;case 27:a.datepicker._hideDatepicker();break;case 33:a.datepicker._adjustDate(b.target,
+b.ctrlKey?-a.datepicker._get(f,"stepBigMonths"):-a.datepicker._get(f,"stepMonths"),"M");break;case 34:a.datepicker._adjustDate(b.target,b.ctrlKey?+a.datepicker._get(f,"stepBigMonths"):+a.datepicker._get(f,"stepMonths"),"M");break;case 35:if(b.ctrlKey||b.metaKey)a.datepicker._clearDate(b.target);j=b.ctrlKey||b.metaKey;break;case 36:if(b.ctrlKey||b.metaKey)a.datepicker._gotoToday(b.target);j=b.ctrlKey||b.metaKey;break;case 37:if(b.ctrlKey||b.metaKey)a.datepicker._adjustDate(b.target,l?+1:-1,"D");j=
+b.ctrlKey||b.metaKey;if(b.originalEvent.altKey)a.datepicker._adjustDate(b.target,b.ctrlKey?-a.datepicker._get(f,"stepBigMonths"):-a.datepicker._get(f,"stepMonths"),"M");break;case 38:if(b.ctrlKey||b.metaKey)a.datepicker._adjustDate(b.target,-7,"D");j=b.ctrlKey||b.metaKey;break;case 39:if(b.ctrlKey||b.metaKey)a.datepicker._adjustDate(b.target,l?-1:+1,"D");j=b.ctrlKey||b.metaKey;if(b.originalEvent.altKey)a.datepicker._adjustDate(b.target,b.ctrlKey?+a.datepicker._get(f,"stepBigMonths"):+a.datepicker._get(f,
+"stepMonths"),"M");break;case 40:if(b.ctrlKey||b.metaKey)a.datepicker._adjustDate(b.target,+7,"D");j=b.ctrlKey||b.metaKey;break;default:j=false}else if(b.keyCode==36&&b.ctrlKey)a.datepicker._showDatepicker(this);else j=false;if(j){b.preventDefault();b.stopPropagation()}},_doKeyPress:function(b){var f=a.datepicker._getInst(b.target);if(a.datepicker._get(f,"constrainInput")){f=a.datepicker._possibleChars(a.datepicker._get(f,"dateFormat"));var j=String.fromCharCode(b.charCode==d?b.keyCode:b.charCode);
+return b.ctrlKey||b.metaKey||j<" "||!f||f.indexOf(j)>-1}},_doKeyUp:function(b){b=a.datepicker._getInst(b.target);if(b.input.val()!=b.lastVal)try{if(a.datepicker.parseDate(a.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,a.datepicker._getFormatConfig(b))){a.datepicker._setDateFromField(b);a.datepicker._updateAlternate(b);a.datepicker._updateDatepicker(b)}}catch(f){a.datepicker.log(f)}return true},_showDatepicker:function(b){b=b.target||b;if(b.nodeName.toLowerCase()!="input")b=a("input",
+b.parentNode)[0];if(!(a.datepicker._isDisabledDatepicker(b)||a.datepicker._lastInput==b)){var f=a.datepicker._getInst(b);if(a.datepicker._curInst&&a.datepicker._curInst!=f){a.datepicker._datepickerShowing&&a.datepicker._triggerOnClose(a.datepicker._curInst);a.datepicker._curInst.dpDiv.stop(true,true)}var j=a.datepicker._get(f,"beforeShow");j=j?j.apply(b,[b,f]):{};if(j!==false){h(f.settings,j);f.lastVal=null;a.datepicker._lastInput=b;a.datepicker._setDateFromField(f);if(a.datepicker._inDialog)b.value=
+"";if(!a.datepicker._pos){a.datepicker._pos=a.datepicker._findPos(b);a.datepicker._pos[1]+=b.offsetHeight}var l=false;a(b).parents().each(function(){l|=a(this).css("position")=="fixed";return!l});if(l&&a.browser.opera){a.datepicker._pos[0]-=document.documentElement.scrollLeft;a.datepicker._pos[1]-=document.documentElement.scrollTop}j={left:a.datepicker._pos[0],top:a.datepicker._pos[1]};a.datepicker._pos=null;f.dpDiv.empty();f.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});a.datepicker._updateDatepicker(f);
+j=a.datepicker._checkOffset(f,j,l);f.dpDiv.css({position:a.datepicker._inDialog&&a.blockUI?"static":l?"fixed":"absolute",display:"none",left:j.left+"px",top:j.top+"px"});if(!f.inline){j=a.datepicker._get(f,"showAnim");var o=a.datepicker._get(f,"duration"),n=function(){var k=f.dpDiv.find("iframe.ui-datepicker-cover");if(k.length){var m=a.datepicker._getBorders(f.dpDiv);k.css({left:-m[0],top:-m[1],width:f.dpDiv.outerWidth(),height:f.dpDiv.outerHeight()})}};f.dpDiv.zIndex(a(b).zIndex()+1);a.datepicker._datepickerShowing=
+true;a.effects&&a.effects[j]?f.dpDiv.show(j,a.datepicker._get(f,"showOptions"),o,n):f.dpDiv[j||"show"](j?o:null,n);if(!j||!o)n();f.input.is(":visible")&&!f.input.is(":disabled")&&f.input.focus();a.datepicker._curInst=f}}}},_updateDatepicker:function(b){this.maxRows=4;var f=a.datepicker._getBorders(b.dpDiv);i=b;b.dpDiv.empty().append(this._generateHTML(b));var j=b.dpDiv.find("iframe.ui-datepicker-cover");j.length&&j.css({left:-f[0],top:-f[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()});
+b.dpDiv.find("."+this._dayOverClass+" a").mouseover();f=this._getNumberOfMonths(b);j=f[1];b.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");j>1&&b.dpDiv.addClass("ui-datepicker-multi-"+j).css("width",17*j+"em");b.dpDiv[(f[0]!=1||f[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");b.dpDiv[(this._get(b,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");b==a.datepicker._curInst&&a.datepicker._datepickerShowing&&b.input&&b.input.is(":visible")&&
+!b.input.is(":disabled")&&b.input[0]!=document.activeElement&&b.input.focus();if(b.yearshtml){var l=b.yearshtml;setTimeout(function(){l===b.yearshtml&&b.yearshtml&&b.dpDiv.find("select.ui-datepicker-year:first").replaceWith(b.yearshtml);l=b.yearshtml=null},0)}},_getBorders:function(b){var f=function(j){return{thin:1,medium:2,thick:3}[j]||j};return[parseFloat(f(b.css("border-left-width"))),parseFloat(f(b.css("border-top-width")))]},_checkOffset:function(b,f,j){var l=b.dpDiv.outerWidth(),o=b.dpDiv.outerHeight(),
+n=b.input?b.input.outerWidth():0,k=b.input?b.input.outerHeight():0,m=document.documentElement.clientWidth+a(document).scrollLeft(),p=document.documentElement.clientHeight+a(document).scrollTop();f.left-=this._get(b,"isRTL")?l-n:0;f.left-=j&&f.left==b.input.offset().left?a(document).scrollLeft():0;f.top-=j&&f.top==b.input.offset().top+k?a(document).scrollTop():0;f.left-=Math.min(f.left,f.left+l>m&&m>l?Math.abs(f.left+l-m):0);f.top-=Math.min(f.top,f.top+o>p&&p>o?Math.abs(o+k):0);return f},_findPos:function(b){for(var f=
+this._get(this._getInst(b),"isRTL");b&&(b.type=="hidden"||b.nodeType!=1||a.expr.filters.hidden(b));)b=b[f?"previousSibling":"nextSibling"];b=a(b).offset();return[b.left,b.top]},_triggerOnClose:function(b){var f=this._get(b,"onClose");if(f)f.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b])},_hideDatepicker:function(b){var f=this._curInst;if(!(!f||b&&f!=a.data(b,"datepicker")))if(this._datepickerShowing){b=this._get(f,"showAnim");var j=this._get(f,"duration"),l=function(){a.datepicker._tidyDialog(f);
+this._curInst=null};a.effects&&a.effects[b]?f.dpDiv.hide(b,a.datepicker._get(f,"showOptions"),j,l):f.dpDiv[b=="slideDown"?"slideUp":b=="fadeIn"?"fadeOut":"hide"](b?j:null,l);b||l();a.datepicker._triggerOnClose(f);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(a.blockUI){a.unblockUI();a("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(b){b.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},
+_checkExternalClick:function(b){if(a.datepicker._curInst){b=a(b.target);b[0].id!=a.datepicker._mainDivId&&b.parents("#"+a.datepicker._mainDivId).length==0&&!b.hasClass(a.datepicker.markerClassName)&&!b.hasClass(a.datepicker._triggerClass)&&a.datepicker._datepickerShowing&&!(a.datepicker._inDialog&&a.blockUI)&&a.datepicker._hideDatepicker()}},_adjustDate:function(b,f,j){b=a(b);var l=this._getInst(b[0]);if(!this._isDisabledDatepicker(b[0])){this._adjustInstDate(l,f+(j=="M"?this._get(l,"showCurrentAtPos"):
+0),j);this._updateDatepicker(l)}},_gotoToday:function(b){b=a(b);var f=this._getInst(b[0]);if(this._get(f,"gotoCurrent")&&f.currentDay){f.selectedDay=f.currentDay;f.drawMonth=f.selectedMonth=f.currentMonth;f.drawYear=f.selectedYear=f.currentYear}else{var j=new Date;f.selectedDay=j.getDate();f.drawMonth=f.selectedMonth=j.getMonth();f.drawYear=f.selectedYear=j.getFullYear()}this._notifyChange(f);this._adjustDate(b)},_selectMonthYear:function(b,f,j){b=a(b);var l=this._getInst(b[0]);l["selected"+(j=="M"?
+"Month":"Year")]=l["draw"+(j=="M"?"Month":"Year")]=parseInt(f.options[f.selectedIndex].value,10);this._notifyChange(l);this._adjustDate(b)},_selectDay:function(b,f,j,l){var o=a(b);if(!(a(l).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0]))){o=this._getInst(o[0]);o.selectedDay=o.currentDay=a("a",l).html();o.selectedMonth=o.currentMonth=f;o.selectedYear=o.currentYear=j;this._selectDate(b,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear))}},_clearDate:function(b){b=a(b);
+this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(b,f){b=this._getInst(a(b)[0]);f=f!=null?f:this._formatDate(b);b.input&&b.input.val(f);this._updateAlternate(b);var j=this._get(b,"onSelect");if(j)j.apply(b.input?b.input[0]:null,[f,b]);else b.input&&b.input.trigger("change");if(b.inline)this._updateDatepicker(b);else{this._hideDatepicker();this._lastInput=b.input[0];typeof b.input[0]!="object"&&b.input.focus();this._lastInput=null}},_updateAlternate:function(b){var f=this._get(b,"altField");
+if(f){var j=this._get(b,"altFormat")||this._get(b,"dateFormat"),l=this._getDate(b),o=this.formatDate(j,l,this._getFormatConfig(b));a(f).each(function(){a(this).val(o)})}},noWeekends:function(b){b=b.getDay();return[b>0&&b<6,""]},iso8601Week:function(b){b=new Date(b.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var f=b.getTime();b.setMonth(0);b.setDate(1);return Math.floor(Math.round((f-b)/864E5)/7)+1},parseDate:function(b,f,j){if(b==null||f==null)throw"Invalid arguments";f=typeof f=="object"?
+f.toString():f+"";if(f=="")return null;var l=(j?j.shortYearCutoff:null)||this._defaults.shortYearCutoff;l=typeof l!="string"?l:(new Date).getFullYear()%100+parseInt(l,10);for(var o=(j?j.dayNamesShort:null)||this._defaults.dayNamesShort,n=(j?j.dayNames:null)||this._defaults.dayNames,k=(j?j.monthNamesShort:null)||this._defaults.monthNamesShort,m=(j?j.monthNames:null)||this._defaults.monthNames,p=j=-1,q=-1,s=-1,r=false,u=function(z){(z=H+1<b.length&&b.charAt(H+1)==z)&&H++;return z},v=function(z){var I=
+u(z);z=new RegExp("^\\d{1,"+(z=="@"?14:z=="!"?20:z=="y"&&I?4:z=="o"?3:2)+"}");z=f.substring(y).match(z);if(!z)throw"Missing number at position "+y;y+=z[0].length;return parseInt(z[0],10)},w=function(z,I,N){z=a.map(u(z)?N:I,function(D,E){return[[E,D]]}).sort(function(D,E){return-(D[1].length-E[1].length)});var J=-1;a.each(z,function(D,E){D=E[1];if(f.substr(y,D.length).toLowerCase()==D.toLowerCase()){J=E[0];y+=D.length;return false}});if(J!=-1)return J+1;else throw"Unknown name at position "+y;},x=
+function(){if(f.charAt(y)!=b.charAt(H))throw"Unexpected literal at position "+y;y++},y=0,H=0;H<b.length;H++)if(r)if(b.charAt(H)=="'"&&!u("'"))r=false;else x();else switch(b.charAt(H)){case "d":q=v("d");break;case "D":w("D",o,n);break;case "o":s=v("o");break;case "m":p=v("m");break;case "M":p=w("M",k,m);break;case "y":j=v("y");break;case "@":var C=new Date(v("@"));j=C.getFullYear();p=C.getMonth()+1;q=C.getDate();break;case "!":C=new Date((v("!")-this._ticksTo1970)/1E4);j=C.getFullYear();p=C.getMonth()+
+1;q=C.getDate();break;case "'":if(u("'"))x();else r=true;break;default:x()}if(y<f.length)throw"Extra/unparsed characters found in date: "+f.substring(y);if(j==-1)j=(new Date).getFullYear();else if(j<100)j+=(new Date).getFullYear()-(new Date).getFullYear()%100+(j<=l?0:-100);if(s>-1){p=1;q=s;do{l=this._getDaysInMonth(j,p-1);if(q<=l)break;p++;q-=l}while(1)}C=this._daylightSavingAdjust(new Date(j,p-1,q));if(C.getFullYear()!=j||C.getMonth()+1!=p||C.getDate()!=q)throw"Invalid date";return C},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(b,f,j){if(!f)return"";var l=(j?j.dayNamesShort:null)||this._defaults.dayNamesShort,o=(j?j.dayNames:null)||this._defaults.dayNames,n=(j?j.monthNamesShort:null)||this._defaults.monthNamesShort;j=(j?j.monthNames:
+null)||this._defaults.monthNames;var k=function(u){(u=r+1<b.length&&b.charAt(r+1)==u)&&r++;return u},m=function(u,v,w){v=""+v;if(k(u))for(;v.length<w;)v="0"+v;return v},p=function(u,v,w,x){return k(u)?x[v]:w[v]},q="",s=false;if(f)for(var r=0;r<b.length;r++)if(s)if(b.charAt(r)=="'"&&!k("'"))s=false;else q+=b.charAt(r);else switch(b.charAt(r)){case "d":q+=m("d",f.getDate(),2);break;case "D":q+=p("D",f.getDay(),l,o);break;case "o":q+=m("o",Math.round(((new Date(f.getFullYear(),f.getMonth(),f.getDate())).getTime()-
+(new Date(f.getFullYear(),0,0)).getTime())/864E5),3);break;case "m":q+=m("m",f.getMonth()+1,2);break;case "M":q+=p("M",f.getMonth(),n,j);break;case "y":q+=k("y")?f.getFullYear():(f.getYear()%100<10?"0":"")+f.getYear()%100;break;case "@":q+=f.getTime();break;case "!":q+=f.getTime()*1E4+this._ticksTo1970;break;case "'":if(k("'"))q+="'";else s=true;break;default:q+=b.charAt(r)}return q},_possibleChars:function(b){for(var f="",j=false,l=function(n){(n=o+1<b.length&&b.charAt(o+1)==n)&&o++;return n},o=
+0;o<b.length;o++)if(j)if(b.charAt(o)=="'"&&!l("'"))j=false;else f+=b.charAt(o);else switch(b.charAt(o)){case "d":case "m":case "y":case "@":f+="0123456789";break;case "D":case "M":return null;case "'":if(l("'"))f+="'";else j=true;break;default:f+=b.charAt(o)}return f},_get:function(b,f){return b.settings[f]!==d?b.settings[f]:this._defaults[f]},_setDateFromField:function(b,f){if(b.input.val()!=b.lastVal){var j=this._get(b,"dateFormat"),l=b.lastVal=b.input?b.input.val():null,o,n;o=n=this._getDefaultDate(b);
+var k=this._getFormatConfig(b);try{o=this.parseDate(j,l,k)||n}catch(m){this.log(m);l=f?"":l}b.selectedDay=o.getDate();b.drawMonth=b.selectedMonth=o.getMonth();b.drawYear=b.selectedYear=o.getFullYear();b.currentDay=l?o.getDate():0;b.currentMonth=l?o.getMonth():0;b.currentYear=l?o.getFullYear():0;this._adjustInstDate(b)}},_getDefaultDate:function(b){return this._restrictMinMax(b,this._determineDate(b,this._get(b,"defaultDate"),new Date))},_determineDate:function(b,f,j){var l=function(n){var k=new Date;
+k.setDate(k.getDate()+n);return k},o=function(n){try{return a.datepicker.parseDate(a.datepicker._get(b,"dateFormat"),n,a.datepicker._getFormatConfig(b))}catch(k){}var m=(n.toLowerCase().match(/^c/)?a.datepicker._getDate(b):null)||new Date,p=m.getFullYear(),q=m.getMonth();m=m.getDate();for(var s=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,r=s.exec(n);r;){switch(r[2]||"d"){case "d":case "D":m+=parseInt(r[1],10);break;case "w":case "W":m+=parseInt(r[1],10)*7;break;case "m":case "M":q+=parseInt(r[1],10);m=
+Math.min(m,a.datepicker._getDaysInMonth(p,q));break;case "y":case "Y":p+=parseInt(r[1],10);m=Math.min(m,a.datepicker._getDaysInMonth(p,q));break}r=s.exec(n)}return new Date(p,q,m)};if(f=(f=f==null||f===""?j:typeof f=="string"?o(f):typeof f=="number"?isNaN(f)?j:l(f):new Date(f.getTime()))&&f.toString()=="Invalid Date"?j:f){f.setHours(0);f.setMinutes(0);f.setSeconds(0);f.setMilliseconds(0)}return this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(b){if(!b)return null;b.setHours(b.getHours()>
+12?b.getHours()+2:0);return b},_setDate:function(b,f,j){var l=!f,o=b.selectedMonth,n=b.selectedYear;f=this._restrictMinMax(b,this._determineDate(b,f,new Date));b.selectedDay=b.currentDay=f.getDate();b.drawMonth=b.selectedMonth=b.currentMonth=f.getMonth();b.drawYear=b.selectedYear=b.currentYear=f.getFullYear();if((o!=b.selectedMonth||n!=b.selectedYear)&&!j)this._notifyChange(b);this._adjustInstDate(b);if(b.input)b.input.val(l?"":this._formatDate(b))},_getDate:function(b){return!b.currentYear||b.input&&
+b.input.val()==""?null:this._daylightSavingAdjust(new Date(b.currentYear,b.currentMonth,b.currentDay))},_generateHTML:function(b){var f=new Date;f=this._daylightSavingAdjust(new Date(f.getFullYear(),f.getMonth(),f.getDate()));var j=this._get(b,"isRTL"),l=this._get(b,"showButtonPanel"),o=this._get(b,"hideIfNoPrevNext"),n=this._get(b,"navigationAsDateFormat"),k=this._getNumberOfMonths(b),m=this._get(b,"showCurrentAtPos"),p=this._get(b,"stepMonths"),q=k[0]!=1||k[1]!=1,s=this._daylightSavingAdjust(!b.currentDay?
+new Date(9999,9,9):new Date(b.currentYear,b.currentMonth,b.currentDay)),r=this._getMinMaxDate(b,"min"),u=this._getMinMaxDate(b,"max");m=b.drawMonth-m;var v=b.drawYear;if(m<0){m+=12;v--}if(u){var w=this._daylightSavingAdjust(new Date(u.getFullYear(),u.getMonth()-k[0]*k[1]+1,u.getDate()));for(w=r&&w<r?r:w;this._daylightSavingAdjust(new Date(v,m,1))>w;){m--;if(m<0){m=11;v--}}}b.drawMonth=m;b.drawYear=v;w=this._get(b,"prevText");w=!n?w:this.formatDate(w,this._daylightSavingAdjust(new Date(v,m-p,1)),this._getFormatConfig(b));
+w=this._canAdjustMonth(b,-1,v,m)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+g+".datepicker._adjustDate('#"+b.id+"', -"+p+", 'M');\" title=\""+w+'"><span class="ui-icon ui-icon-circle-triangle-'+(j?"e":"w")+'">'+w+"</span></a>":o?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+w+'"><span class="ui-icon ui-icon-circle-triangle-'+(j?"e":"w")+'">'+w+"</span></a>";var x=this._get(b,"nextText");x=!n?x:this.formatDate(x,this._daylightSavingAdjust(new Date(v,
+m+p,1)),this._getFormatConfig(b));o=this._canAdjustMonth(b,+1,v,m)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+g+".datepicker._adjustDate('#"+b.id+"', +"+p+", 'M');\" title=\""+x+'"><span class="ui-icon ui-icon-circle-triangle-'+(j?"w":"e")+'">'+x+"</span></a>":o?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+x+'"><span class="ui-icon ui-icon-circle-triangle-'+(j?"w":"e")+'">'+x+"</span></a>";p=this._get(b,"currentText");x=this._get(b,"gotoCurrent")&&
+b.currentDay?s:f;p=!n?p:this.formatDate(p,x,this._getFormatConfig(b));n=!b.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+g+'.datepicker._hideDatepicker();">'+this._get(b,"closeText")+"</button>":"";l=l?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(j?n:"")+(this._isInRange(b,x)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
+g+".datepicker._gotoToday('#"+b.id+"');\">"+p+"</button>":"")+(j?"":n)+"</div>":"";n=parseInt(this._get(b,"firstDay"),10);n=isNaN(n)?0:n;p=this._get(b,"showWeek");x=this._get(b,"dayNames");this._get(b,"dayNamesShort");var y=this._get(b,"dayNamesMin"),H=this._get(b,"monthNames"),C=this._get(b,"monthNamesShort"),z=this._get(b,"beforeShowDay"),I=this._get(b,"showOtherMonths"),N=this._get(b,"selectOtherMonths");this._get(b,"calculateWeek");for(var J=this._getDefaultDate(b),D="",E=0;E<k[0];E++){var P=
+"";this.maxRows=4;for(var L=0;L<k[1];L++){var Q=this._daylightSavingAdjust(new Date(v,m,b.selectedDay)),B=" ui-corner-all",F="";if(q){F+='<div class="ui-datepicker-group';if(k[1]>1)switch(L){case 0:F+=" ui-datepicker-group-first";B=" ui-corner-"+(j?"right":"left");break;case k[1]-1:F+=" ui-datepicker-group-last";B=" ui-corner-"+(j?"left":"right");break;default:F+=" ui-datepicker-group-middle";B="";break}F+='">'}F+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+B+'">'+(/all|left/.test(B)&&
+E==0?j?o:w:"")+(/all|right/.test(B)&&E==0?j?w:o:"")+this._generateMonthYearHeader(b,m,v,r,u,E>0||L>0,H,C)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var G=p?'<th class="ui-datepicker-week-col">'+this._get(b,"weekHeader")+"</th>":"";for(B=0;B<7;B++){var A=(B+n)%7;G+="<th"+((B+n+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+x[A]+'">'+y[A]+"</span></th>"}F+=G+"</tr></thead><tbody>";G=this._getDaysInMonth(v,m);if(v==b.selectedYear&&m==b.selectedMonth)b.selectedDay=Math.min(b.selectedDay,
+G);B=(this._getFirstDayOfMonth(v,m)-n+7)%7;G=Math.ceil((B+G)/7);this.maxRows=G=q?this.maxRows>G?this.maxRows:G:G;A=this._daylightSavingAdjust(new Date(v,m,1-B));for(var R=0;R<G;R++){F+="<tr>";var S=!p?"":'<td class="ui-datepicker-week-col">'+this._get(b,"calculateWeek")(A)+"</td>";for(B=0;B<7;B++){var M=z?z.apply(b.input?b.input[0]:null,[A]):[true,""],K=A.getMonth()!=m,O=K&&!N||!M[0]||r&&A<r||u&&A>u;S+='<td class="'+((B+n+6)%7>=5?" ui-datepicker-week-end":"")+(K?" ui-datepicker-other-month":"")+(A.getTime()==
+Q.getTime()&&m==b.selectedMonth&&b._keyEvent||J.getTime()==A.getTime()&&J.getTime()==Q.getTime()?" "+this._dayOverClass:"")+(O?" "+this._unselectableClass+" ui-state-disabled":"")+(K&&!I?"":" "+M[1]+(A.getTime()==s.getTime()?" "+this._currentClass:"")+(A.getTime()==f.getTime()?" ui-datepicker-today":""))+'"'+((!K||I)&&M[2]?' title="'+M[2]+'"':"")+(O?"":' onclick="DP_jQuery_'+g+".datepicker._selectDay('#"+b.id+"',"+A.getMonth()+","+A.getFullYear()+', this);return false;"')+">"+(K&&!I?"&#xa0;":O?'<span class="ui-state-default">'+
+A.getDate()+"</span>":'<a class="ui-state-default'+(A.getTime()==f.getTime()?" ui-state-highlight":"")+(A.getTime()==s.getTime()?" ui-state-active":"")+(K?" ui-priority-secondary":"")+'" href="#">'+A.getDate()+"</a>")+"</td>";A.setDate(A.getDate()+1);A=this._daylightSavingAdjust(A)}F+=S+"</tr>"}m++;if(m>11){m=0;v++}F+="</tbody></table>"+(q?"</div>"+(k[0]>0&&L==k[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");P+=F}D+=P}D+=l+(a.browser.msie&&parseInt(a.browser.version,10)<7&&!b.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':
+"");b._keyEvent=false;return D},_generateMonthYearHeader:function(b,f,j,l,o,n,k,m){var p=this._get(b,"changeMonth"),q=this._get(b,"changeYear"),s=this._get(b,"showMonthAfterYear"),r='<div class="ui-datepicker-title">',u="";if(n||!p)u+='<span class="ui-datepicker-month">'+k[f]+"</span>";else{k=l&&l.getFullYear()==j;var v=o&&o.getFullYear()==j;u+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+g+".datepicker._selectMonthYear('#"+b.id+"', this, 'M');\" >";for(var w=0;w<12;w++)if((!k||w>=l.getMonth())&&
+(!v||w<=o.getMonth()))u+='<option value="'+w+'"'+(w==f?' selected="selected"':"")+">"+m[w]+"</option>";u+="</select>"}s||(r+=u+(n||!(p&&q)?"&#xa0;":""));if(!b.yearshtml){b.yearshtml="";if(n||!q)r+='<span class="ui-datepicker-year">'+j+"</span>";else{m=this._get(b,"yearRange").split(":");var x=(new Date).getFullYear();k=function(y){y=y.match(/c[+-].*/)?j+parseInt(y.substring(1),10):y.match(/[+-].*/)?x+parseInt(y,10):parseInt(y,10);return isNaN(y)?x:y};f=k(m[0]);m=Math.max(f,k(m[1]||""));f=l?Math.max(f,
+l.getFullYear()):f;m=o?Math.min(m,o.getFullYear()):m;for(b.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+g+".datepicker._selectMonthYear('#"+b.id+"', this, 'Y');\" >";f<=m;f++)b.yearshtml+='<option value="'+f+'"'+(f==j?' selected="selected"':"")+">"+f+"</option>";b.yearshtml+="</select>";r+=b.yearshtml;b.yearshtml=null}}r+=this._get(b,"yearSuffix");if(s)r+=(n||!(p&&q)?"&#xa0;":"")+u;r+="</div>";return r},_adjustInstDate:function(b,f,j){var l=b.drawYear+(j=="Y"?f:0),o=b.drawMonth+
+(j=="M"?f:0);f=Math.min(b.selectedDay,this._getDaysInMonth(l,o))+(j=="D"?f:0);l=this._restrictMinMax(b,this._daylightSavingAdjust(new Date(l,o,f)));b.selectedDay=l.getDate();b.drawMonth=b.selectedMonth=l.getMonth();b.drawYear=b.selectedYear=l.getFullYear();if(j=="M"||j=="Y")this._notifyChange(b)},_restrictMinMax:function(b,f){var j=this._getMinMaxDate(b,"min");b=this._getMinMaxDate(b,"max");f=j&&f<j?j:f;return f=b&&f>b?b:f},_notifyChange:function(b){var f=this._get(b,"onChangeMonthYear");if(f)f.apply(b.input?
+b.input[0]:null,[b.selectedYear,b.selectedMonth+1,b])},_getNumberOfMonths:function(b){b=this._get(b,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(b,f){return this._determineDate(b,this._get(b,f+"Date"),null)},_getDaysInMonth:function(b,f){return 32-this._daylightSavingAdjust(new Date(b,f,32)).getDate()},_getFirstDayOfMonth:function(b,f){return(new Date(b,f,1)).getDay()},_canAdjustMonth:function(b,f,j,l){var o=this._getNumberOfMonths(b);j=this._daylightSavingAdjust(new Date(j,
+l+(f<0?f:o[0]*o[1]),1));f<0&&j.setDate(this._getDaysInMonth(j.getFullYear(),j.getMonth()));return this._isInRange(b,j)},_isInRange:function(b,f){var j=this._getMinMaxDate(b,"min");b=this._getMinMaxDate(b,"max");return(!j||f.getTime()>=j.getTime())&&(!b||f.getTime()<=b.getTime())},_getFormatConfig:function(b){var f=this._get(b,"shortYearCutoff");f=typeof f!="string"?f:(new Date).getFullYear()%100+parseInt(f,10);return{shortYearCutoff:f,dayNamesShort:this._get(b,"dayNamesShort"),dayNames:this._get(b,
+"dayNames"),monthNamesShort:this._get(b,"monthNamesShort"),monthNames:this._get(b,"monthNames")}},_formatDate:function(b,f,j,l){if(!f){b.currentDay=b.selectedDay;b.currentMonth=b.selectedMonth;b.currentYear=b.selectedYear}f=f?typeof f=="object"?f:this._daylightSavingAdjust(new Date(l,j,f)):this._daylightSavingAdjust(new Date(b.currentYear,b.currentMonth,b.currentDay));return this.formatDate(this._get(b,"dateFormat"),f,this._getFormatConfig(b))}});a.fn.datepicker=function(b){if(!this.length)return this;
+if(!a.datepicker.initialized){a(document).mousedown(a.datepicker._checkExternalClick).find("body").append(a.datepicker.dpDiv);a.datepicker.initialized=true}var f=Array.prototype.slice.call(arguments,1);if(typeof b=="string"&&(b=="isDisabled"||b=="getDate"||b=="widget"))return a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this[0]].concat(f));if(b=="option"&&arguments.length==2&&typeof arguments[1]=="string")return a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this[0]].concat(f));return this.each(function(){typeof b==
+"string"?a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this].concat(f)):a.datepicker._attachDatepicker(this,b)})};a.datepicker=new c;a.datepicker.initialized=false;a.datepicker.uuid=(new Date).getTime();a.datepicker.version="1.8.16";window["DP_jQuery_"+g]=a})(jQuery);
 (function(a,d){var c={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},e={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},h=a.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};a.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",collision:"fit",using:function(g){var i=a(this).css(g).offset().top;i<0&&a(this).css("top",g.top-i)}},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="";this.options.title=this.options.title||this.originalTitle;var g=this,i=g.options,b=i.title||"&#160;",f=a.ui.dialog.getTitleId(g.element),j=(g.uiDialog=a("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+
-i.dialogClass).css({zIndex:i.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(n){if(i.closeOnEscape&&n.keyCode&&n.keyCode===a.ui.keyCode.ESCAPE){g.close(n);n.preventDefault()}}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(n){g.moveToTop(false,n)});g.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(j);var l=(g.uiDialogTitlebar=a("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(j),
+i.dialogClass).css({zIndex:i.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(n){if(i.closeOnEscape&&!n.isDefaultPrevented()&&n.keyCode&&n.keyCode===a.ui.keyCode.ESCAPE){g.close(n);n.preventDefault()}}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(n){g.moveToTop(false,n)});g.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(j);var l=(g.uiDialogTitlebar=a("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(j),
 o=a('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){o.addClass("ui-state-hover")},function(){o.removeClass("ui-state-hover")}).focus(function(){o.addClass("ui-state-focus")}).blur(function(){o.removeClass("ui-state-focus")}).click(function(n){g.close(n);return false}).appendTo(l);(g.uiDialogTitlebarCloseText=a("<span></span>")).addClass("ui-icon ui-icon-closethick").text(i.closeText).appendTo(o);a("<span></span>").addClass("ui-dialog-title").attr("id",
 f).html(b).prependTo(l);if(a.isFunction(i.beforeclose)&&!a.isFunction(i.beforeClose))i.beforeClose=i.beforeclose;l.find("*").add(l).disableSelection();i.draggable&&a.fn.draggable&&g._makeDraggable();i.resizable&&a.fn.resizable&&g._makeResizable();g._createButtons(i.buttons);g._isOpen=false;a.fn.bgiframe&&j.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var g=this;g.overlay&&g.overlay.destroy();g.uiDialog.hide();g.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");
 g.uiDialog.remove();g.originalTitle&&g.element.attr("title",g.originalTitle);return g},widget:function(){return this.uiDialog},close:function(g){var i=this,b,f;if(false!==i._trigger("beforeClose",g)){i.overlay&&i.overlay.destroy();i.uiDialog.unbind("keypress.ui-dialog");i._isOpen=false;if(i.options.hide)i.uiDialog.hide(i.options.hide,function(){i._trigger("close",g)});else{i.uiDialog.hide();i._trigger("close",g)}a.ui.dialog.overlay.resize();if(i.options.modal){b=0;a(".ui-dialog").each(function(){if(this!==
-i.uiDialog[0]){f=a(this).css("z-index");isNaN(f)||(b=Math.max(b,f))}});a.ui.dialog.maxZ=b}return i}},isOpen:function(){return this._isOpen},moveToTop:function(g,i){var b=this,f=b.options;if(f.modal&&!g||!f.stack&&!f.modal)return b._trigger("focus",i);if(f.zIndex>a.ui.dialog.maxZ)a.ui.dialog.maxZ=f.zIndex;if(b.overlay){a.ui.dialog.maxZ+=1;b.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)}g={scrollTop:b.element.attr("scrollTop"),scrollLeft:b.element.attr("scrollLeft")};a.ui.dialog.maxZ+=
-1;b.uiDialog.css("z-index",a.ui.dialog.maxZ);b.element.attr(g);b._trigger("focus",i);return b},open:function(){if(!this._isOpen){var g=this,i=g.options,b=g.uiDialog;g.overlay=i.modal?new a.ui.dialog.overlay(g):null;g._size();g._position(i.position);b.show(i.show);g.moveToTop(true);i.modal&&b.bind("keypress.ui-dialog",function(f){if(f.keyCode===a.ui.keyCode.TAB){var j=a(":tabbable",this),l=j.filter(":first");j=j.filter(":last");if(f.target===j[0]&&!f.shiftKey){l.focus(1);return false}else if(f.target===
+i.uiDialog[0]){f=a(this).css("z-index");isNaN(f)||(b=Math.max(b,f))}});a.ui.dialog.maxZ=b}return i}},isOpen:function(){return this._isOpen},moveToTop:function(g,i){var b=this,f=b.options;if(f.modal&&!g||!f.stack&&!f.modal)return b._trigger("focus",i);if(f.zIndex>a.ui.dialog.maxZ)a.ui.dialog.maxZ=f.zIndex;if(b.overlay){a.ui.dialog.maxZ+=1;b.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)}g={scrollTop:b.element.scrollTop(),scrollLeft:b.element.scrollLeft()};a.ui.dialog.maxZ+=1;
+b.uiDialog.css("z-index",a.ui.dialog.maxZ);b.element.attr(g);b._trigger("focus",i);return b},open:function(){if(!this._isOpen){var g=this,i=g.options,b=g.uiDialog;g.overlay=i.modal?new a.ui.dialog.overlay(g):null;g._size();g._position(i.position);b.show(i.show);g.moveToTop(true);i.modal&&b.bind("keypress.ui-dialog",function(f){if(f.keyCode===a.ui.keyCode.TAB){var j=a(":tabbable",this),l=j.filter(":first");j=j.filter(":last");if(f.target===j[0]&&!f.shiftKey){l.focus(1);return false}else if(f.target===
 l[0]&&f.shiftKey){j.focus(1);return false}}});a(g.element.find(":tabbable").get().concat(b.find(".ui-dialog-buttonpane :tabbable").get().concat(b.get()))).eq(0).focus();g._isOpen=true;g._trigger("open");return g}},_createButtons:function(g){var i=this,b=false,f=a("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),j=a("<div></div>").addClass("ui-dialog-buttonset").appendTo(f);i.uiDialog.find(".ui-dialog-buttonpane").remove();typeof g==="object"&&g!==null&&a.each(g,
 function(){return!(b=true)});if(b){a.each(g,function(l,o){o=a.isFunction(o)?{click:o,text:l}:o;var n=a('<button type="button"></button>').click(function(){o.click.apply(i.element[0],arguments)}).appendTo(j);a.each(o,function(k,m){if(k!=="click")k in h?n[k](m):n.attr(k,m)});a.fn.button&&n.button()});f.appendTo(i.uiDialog)}},_makeDraggable:function(){function g(l){return{position:l.position,offset:l.offset}}var i=this,b=i.options,f=a(document),j;i.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",
 handle:".ui-dialog-titlebar",containment:"document",start:function(l,o){j=b.height==="auto"?"auto":a(this).height();a(this).height(a(this).height()).addClass("ui-dialog-dragging");i._trigger("dragStart",l,g(o))},drag:function(l,o){i._trigger("drag",l,g(o))},stop:function(l,o){b.position=[o.position.left-f.scrollLeft(),o.position.top-f.scrollTop()];a(this).removeClass("ui-dialog-dragging").height(j);i._trigger("dragStop",l,g(o));a.ui.dialog.overlay.resize()}})},_makeResizable:function(g){function i(l){return{originalPosition:l.originalPosition,
@@ -354,11 +356,11 @@ l,i(o))},stop:function(l,o){a(this).removeClass("ui-dialog-resizing");f.height=a
 if(j in c)f=true;if(j in e)b[j]=l});f&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",b)},_setOption:function(g,i){var b=this,f=b.uiDialog;switch(g){case "beforeclose":g="beforeClose";break;case "buttons":b._createButtons(i);break;case "closeText":b.uiDialogTitlebarCloseText.text(""+i);break;case "dialogClass":f.removeClass(b.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+i);break;case "disabled":i?f.addClass("ui-dialog-disabled"):
 f.removeClass("ui-dialog-disabled");break;case "draggable":var j=f.is(":data(draggable)");j&&!i&&f.draggable("destroy");!j&&i&&b._makeDraggable();break;case "position":b._position(i);break;case "resizable":(j=f.is(":data(resizable)"))&&!i&&f.resizable("destroy");j&&typeof i==="string"&&f.resizable("option","handles",i);!j&&i!==false&&b._makeResizable(i);break;case "title":a(".ui-dialog-title",b.uiDialogTitlebar).html(""+(i||"&#160;"));break}a.Widget.prototype._setOption.apply(b,arguments)},_size:function(){var g=
 this.options,i,b,f=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(g.minWidth>g.width)g.width=g.minWidth;i=this.uiDialog.css({height:"auto",width:g.width}).height();b=Math.max(0,g.minHeight-i);if(g.height==="auto")if(a.support.minHeight)this.element.css({minHeight:b,height:"auto"});else{this.uiDialog.show();g=this.element.css("height","auto").height();f||this.uiDialog.hide();this.element.height(Math.max(g,b))}else this.element.height(Math.max(g.height-
-i,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});a.extend(a.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(g){g=g.attr("id");if(!g){this.uuid+=1;g=this.uuid}return"ui-dialog-title-"+g},overlay:function(g){this.$el=a.ui.dialog.overlay.create(g)}});a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(g){return g+".dialog-overlay"}).join(" "),
-create:function(g){if(this.instances.length===0){setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()<a.ui.dialog.overlay.maxZ)return false})},1);a(document).bind("keydown.dialog-overlay",function(b){if(g.options.closeOnEscape&&b.keyCode&&b.keyCode===a.ui.keyCode.ESCAPE){g.close(b);b.preventDefault()}});a(window).bind("resize.dialog-overlay",a.ui.dialog.overlay.resize)}var i=(this.oldInstances.pop()||a("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),
-height:this.height()});a.fn.bgiframe&&i.bgiframe();this.instances.push(i);return i},destroy:function(g){var i=a.inArray(g,this.instances);i!=-1&&this.oldInstances.push(this.instances.splice(i,1)[0]);this.instances.length===0&&a([document,window]).unbind(".dialog-overlay");g.remove();var b=0;a.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var g,i;if(a.browser.msie&&a.browser.version<7){g=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
-i=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return g<i?a(window).height()+"px":g+"px"}else return a(document).height()+"px"},width:function(){var g,i;if(a.browser.msie){g=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);i=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return g<i?a(window).width()+"px":g+"px"}else return a(document).width()+"px"},resize:function(){var g=a([]);a.each(a.ui.dialog.overlay.instances,function(){g=
-g.add(this)});g.css({width:0,height:0}).css({width:a.ui.dialog.overlay.width(),height:a.ui.dialog.overlay.height()})}});a.extend(a.ui.dialog.overlay.prototype,{destroy:function(){a.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
+i,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});a.extend(a.ui.dialog,{version:"1.8.16",uuid:0,maxZ:0,getTitleId:function(g){g=g.attr("id");if(!g){this.uuid+=1;g=this.uuid}return"ui-dialog-title-"+g},overlay:function(g){this.$el=a.ui.dialog.overlay.create(g)}});a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(g){return g+".dialog-overlay"}).join(" "),
+create:function(g){if(this.instances.length===0){setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()<a.ui.dialog.overlay.maxZ)return false})},1);a(document).bind("keydown.dialog-overlay",function(b){if(g.options.closeOnEscape&&!b.isDefaultPrevented()&&b.keyCode&&b.keyCode===a.ui.keyCode.ESCAPE){g.close(b);b.preventDefault()}});a(window).bind("resize.dialog-overlay",a.ui.dialog.overlay.resize)}var i=(this.oldInstances.pop()||
+a("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});a.fn.bgiframe&&i.bgiframe();this.instances.push(i);return i},destroy:function(g){var i=a.inArray(g,this.instances);i!=-1&&this.oldInstances.push(this.instances.splice(i,1)[0]);this.instances.length===0&&a([document,window]).unbind(".dialog-overlay");g.remove();var b=0;a.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var g,i;if(a.browser.msie&&
+a.browser.version<7){g=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);i=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return g<i?a(window).height()+"px":g+"px"}else return a(document).height()+"px"},width:function(){var g,i;if(a.browser.msie){g=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);i=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return g<i?a(window).width()+"px":g+"px"}else return a(document).width()+
+"px"},resize:function(){var g=a([]);a.each(a.ui.dialog.overlay.instances,function(){g=g.add(this)});g.css({width:0,height:0}).css({width:a.ui.dialog.overlay.width(),height:a.ui.dialog.overlay.height()})}});a.extend(a.ui.dialog.overlay.prototype,{destroy:function(){a.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
 (function(a){a.ui=a.ui||{};var d=/left|center|right/,c=/top|center|bottom/,e=a.fn.position,h=a.fn.offset;a.fn.position=function(g){if(!g||!g.of)return e.apply(this,arguments);g=a.extend({},g);var i=a(g.of),b=i[0],f=(g.collision||"flip").split(" "),j=g.offset?g.offset.split(" "):[0,0],l,o,n;if(b.nodeType===9){l=i.width();o=i.height();n={top:0,left:0}}else if(b.setTimeout){l=i.width();o=i.height();n={top:i.scrollTop(),left:i.scrollLeft()}}else if(b.preventDefault){g.at="left top";l=o=0;n={top:g.of.pageY,
 left:g.of.pageX}}else{l=i.outerWidth();o=i.outerHeight();n=i.offset()}a.each(["my","at"],function(){var k=(g[this]||"").split(" ");if(k.length===1)k=d.test(k[0])?k.concat(["center"]):c.test(k[0])?["center"].concat(k):["center","center"];k[0]=d.test(k[0])?k[0]:"center";k[1]=c.test(k[1])?k[1]:"center";g[this]=k});if(f.length===1)f[1]=f[0];j[0]=parseInt(j[0],10)||0;if(j.length===1)j[1]=j[0];j[1]=parseInt(j[1],10)||0;if(g.at[0]==="right")n.left+=l;else if(g.at[0]==="center")n.left+=l/2;if(g.at[1]==="bottom")n.top+=
 o;else if(g.at[1]==="center")n.top+=o/2;n.left+=j[0];n.top+=j[1];return this.each(function(){var k=a(this),m=k.outerWidth(),p=k.outerHeight(),q=parseInt(a.curCSS(this,"marginLeft",true))||0,s=parseInt(a.curCSS(this,"marginTop",true))||0,r=m+q+(parseInt(a.curCSS(this,"marginRight",true))||0),u=p+s+(parseInt(a.curCSS(this,"marginBottom",true))||0),v=a.extend({},n),w;if(g.my[0]==="right")v.left-=m;else if(g.my[0]==="center")v.left-=m/2;if(g.my[1]==="bottom")v.top-=p;else if(g.my[1]==="center")v.top-=
@@ -368,7 +370,7 @@ i.collisionPosition.left<0?f+j+l:b>0?f+j+l:0}},top:function(g,i){if(i.at[1]!=="c
 f=b.offset(),j=parseInt(a.curCSS(g,"top",true),10)||0,l=parseInt(a.curCSS(g,"left",true),10)||0;f={top:i.top-f.top+j,left:i.left-f.left+l};"using"in i?i.using.call(g,f):b.css(f)};a.fn.offset=function(g){var i=this[0];if(!i||!i.ownerDocument)return null;if(g)return this.each(function(){a.offset.setOffset(this,g)});return h.call(this)}}})(jQuery);
 (function(a,d){a.widget("ui.progressbar",{options:{value:0,max:100},min:0,_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.options.max,"aria-valuenow":this._value()});this.valueDiv=a("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this.oldValue=this._value();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();a.Widget.prototype.destroy.apply(this,arguments)},value:function(c){if(c===d)return this._value();this._setOption("value",c);return this},_setOption:function(c,e){if(c==="value"){this.options.value=e;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var c=this.options.value;if(typeof c!=="number")c=0;return Math.min(this.options.max,Math.max(this.min,c))},_percentage:function(){return 100*
-this._value()/this.options.max},_refreshValue:function(){var c=this.value(),e=this._percentage();if(this.oldValue!==c){this.oldValue=c;this._trigger("change")}this.valueDiv.toggle(c>this.min).toggleClass("ui-corner-right",c===this.options.max).width(e.toFixed(0)+"%");this.element.attr("aria-valuenow",c)}});a.extend(a.ui.progressbar,{version:"1.8.14"})})(jQuery);
+this._value()/this.options.max},_refreshValue:function(){var c=this.value(),e=this._percentage();if(this.oldValue!==c){this.oldValue=c;this._trigger("change")}this.valueDiv.toggle(c>this.min).toggleClass("ui-corner-right",c===this.options.max).width(e.toFixed(0)+"%");this.element.attr("aria-valuenow",c)}});a.extend(a.ui.progressbar,{version:"1.8.16"})})(jQuery);
 (function(a){a.widget("ui.slider",a.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 d=this,c=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),h=c.values&&c.values.length||1,g=[];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"+(c.disabled?" ui-slider-disabled ui-disabled":""));this.range=a([]);if(c.range){if(c.range===true){if(!c.values)c.values=[this._valueMin(),this._valueMin()];if(c.values.length&&c.values.length!==2)c.values=[c.values[0],c.values[0]]}this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(c.range==="min"||c.range==="max"?" ui-slider-range-"+c.range:""))}for(var i=e.length;i<h;i+=1)g.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
 this.handles=e.add(a(g.join("")).appendTo(d.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(b){b.preventDefault()}).hover(function(){c.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){if(c.disabled)a(this).blur();else{a(".ui-slider .ui-state-focus").removeClass("ui-state-focus");a(this).addClass("ui-state-focus")}}).blur(function(){a(this).removeClass("ui-state-focus")});this.handles.each(function(b){a(this).data("index.ui-slider-handle",
@@ -382,12 +384,12 @@ this.elementSize.width;d=d.x-this.elementOffset.left-(this._clickOffset?this._cl
 e.values=this.values()}return this._trigger("start",d,e)},_slide:function(d,c,e){var h;if(this.options.values&&this.options.values.length){h=this.values(c?0:1);if(this.options.values.length===2&&this.options.range===true&&(c===0&&e>h||c===1&&e<h))e=h;if(e!==this.values(c)){h=this.values();h[c]=e;d=this._trigger("slide",d,{handle:this.handles[c],value:e,values:h});this.values(c?0:1);d!==false&&this.values(c,e,true)}}else if(e!==this.value()){d=this._trigger("slide",d,{handle:this.handles[c],value:e});
 d!==false&&this.value(e)}},_stop:function(d,c){var e={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){e.value=this.values(c);e.values=this.values()}this._trigger("stop",d,e)},_change:function(d,c){if(!this._keySliding&&!this._mouseSliding){var e={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){e.value=this.values(c);e.values=this.values()}this._trigger("change",d,e)}},value:function(d){if(arguments.length){this.options.value=
 this._trimAlignValue(d);this._refreshValue();this._change(null,0)}else return this._value()},values:function(d,c){var e,h,g;if(arguments.length>1){this.options.values[d]=this._trimAlignValue(c);this._refreshValue();this._change(null,d)}else if(arguments.length)if(a.isArray(arguments[0])){e=this.options.values;h=arguments[0];for(g=0;g<e.length;g+=1){e[g]=this._trimAlignValue(h[g]);this._change(null,g)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(d):
-this.value();else return this._values()},_setOption:function(d,c){var e,h=0;if(a.isArray(this.options.values))h=this.options.values.length;a.Widget.prototype._setOption.apply(this,arguments);switch(d){case "disabled":if(c){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.value();else return this._values()},_setOption:function(d,c){var e,h=0;if(a.isArray(this.options.values))h=this.options.values.length;a.Widget.prototype._setOption.apply(this,arguments);switch(d){case "disabled":if(c){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.propAttr("disabled",true);this.element.addClass("ui-disabled")}else{this.handles.propAttr("disabled",false);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(e=0;e<h;e+=1)this._change(null,e);this._animateOff=false;break}},_value:function(){var d=this.options.value;return d=this._trimAlignValue(d)},_values:function(d){var c,e;if(arguments.length){c=this.options.values[d];
-return c=this._trimAlignValue(c)}else{c=this.options.values.slice();for(e=0;e<c.length;e+=1)c[e]=this._trimAlignValue(c[e]);return c}},_trimAlignValue:function(d){if(d<=this._valueMin())return this._valueMin();if(d>=this._valueMax())return this._valueMax();var c=this.options.step>0?this.options.step:1,e=(d-this._valueMin())%c;alignValue=d-e;if(Math.abs(e)*2>=c)alignValue+=e>0?c:-c;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},
-_refreshValue:function(){var d=this.options.range,c=this.options,e=this,h=!this._animateOff?c.animate:false,g,i={},b,f,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(o){g=(e.values(o)-e._valueMin())/(e._valueMax()-e._valueMin())*100;i[e.orientation==="horizontal"?"left":"bottom"]=g+"%";a(this).stop(1,1)[h?"animate":"css"](i,c.animate);if(e.options.range===true)if(e.orientation==="horizontal"){if(o===0)e.range.stop(1,1)[h?"animate":"css"]({left:g+"%"},c.animate);
-if(o===1)e.range[h?"animate":"css"]({width:g-b+"%"},{queue:false,duration:c.animate})}else{if(o===0)e.range.stop(1,1)[h?"animate":"css"]({bottom:g+"%"},c.animate);if(o===1)e.range[h?"animate":"css"]({height:g-b+"%"},{queue:false,duration:c.animate})}b=g});else{f=this.value();j=this._valueMin();l=this._valueMax();g=l!==j?(f-j)/(l-j)*100:0;i[e.orientation==="horizontal"?"left":"bottom"]=g+"%";this.handle.stop(1,1)[h?"animate":"css"](i,c.animate);if(d==="min"&&this.orientation==="horizontal")this.range.stop(1,
-1)[h?"animate":"css"]({width:g+"%"},c.animate);if(d==="max"&&this.orientation==="horizontal")this.range[h?"animate":"css"]({width:100-g+"%"},{queue:false,duration:c.animate});if(d==="min"&&this.orientation==="vertical")this.range.stop(1,1)[h?"animate":"css"]({height:g+"%"},c.animate);if(d==="max"&&this.orientation==="vertical")this.range[h?"animate":"css"]({height:100-g+"%"},{queue:false,duration:c.animate})}}});a.extend(a.ui.slider,{version:"1.8.14"})})(jQuery);
+return c=this._trimAlignValue(c)}else{c=this.options.values.slice();for(e=0;e<c.length;e+=1)c[e]=this._trimAlignValue(c[e]);return c}},_trimAlignValue:function(d){if(d<=this._valueMin())return this._valueMin();if(d>=this._valueMax())return this._valueMax();var c=this.options.step>0?this.options.step:1,e=(d-this._valueMin())%c;d=d-e;if(Math.abs(e)*2>=c)d+=e>0?c:-c;return parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var d=
+this.options.range,c=this.options,e=this,h=!this._animateOff?c.animate:false,g,i={},b,f,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(o){g=(e.values(o)-e._valueMin())/(e._valueMax()-e._valueMin())*100;i[e.orientation==="horizontal"?"left":"bottom"]=g+"%";a(this).stop(1,1)[h?"animate":"css"](i,c.animate);if(e.options.range===true)if(e.orientation==="horizontal"){if(o===0)e.range.stop(1,1)[h?"animate":"css"]({left:g+"%"},c.animate);if(o===1)e.range[h?"animate":"css"]({width:g-
+b+"%"},{queue:false,duration:c.animate})}else{if(o===0)e.range.stop(1,1)[h?"animate":"css"]({bottom:g+"%"},c.animate);if(o===1)e.range[h?"animate":"css"]({height:g-b+"%"},{queue:false,duration:c.animate})}b=g});else{f=this.value();j=this._valueMin();l=this._valueMax();g=l!==j?(f-j)/(l-j)*100:0;i[e.orientation==="horizontal"?"left":"bottom"]=g+"%";this.handle.stop(1,1)[h?"animate":"css"](i,c.animate);if(d==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[h?"animate":"css"]({width:g+"%"},
+c.animate);if(d==="max"&&this.orientation==="horizontal")this.range[h?"animate":"css"]({width:100-g+"%"},{queue:false,duration:c.animate});if(d==="min"&&this.orientation==="vertical")this.range.stop(1,1)[h?"animate":"css"]({height:g+"%"},c.animate);if(d==="max"&&this.orientation==="vertical")this.range[h?"animate":"css"]({height:100-g+"%"},{queue:false,duration:c.animate})}}});a.extend(a.ui.slider,{version:"1.8.16"})})(jQuery);
 (function(a,d){function c(){return++h}function e(){return++g}var h=0,g=0;a.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(i,b){if(i=="selected")this.options.collapsible&&
 b==this.options.selected||this.select(b);else{this.options[i]=b;this._tabify()}},_tabId:function(i){return i.title&&i.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+c()},_sanitizeSelector:function(i){return i.replace(/:/g,"\\:")},_cookie:function(){var i=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+e());return a.cookie.apply(null,[i].concat(a.makeArray(arguments)))},_ui:function(i,b){return{tab:i,panel:b,index:this.anchors.index(i)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var i=
 a(this);i.html(i.data("label.tabs")).removeData("label.tabs")})},_tabify:function(i){function b(r,u){r.css("display","");!a.support.opacity&&u.opacity&&r[0].style.removeAttribute("filter")}var f=this,j=this.options,l=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=a(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return a("a",this)[0]});this.panels=a([]);this.anchors.each(function(r,u){var v=a(u).attr("href"),w=v.split("#")[0],x;if(w&&(w===location.toString().split("#")[0]||
@@ -408,5 +410,5 @@ if(f.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(i+(i+1<this
 this._ui(this.anchors[i],this.panels[i]));return this}},disable:function(i){i=this._getIndex(i);var b=this.options;if(i!=b.selected){this.lis.eq(i).addClass("ui-state-disabled");b.disabled.push(i);b.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[i],this.panels[i]))}return this},select:function(i){i=this._getIndex(i);if(i==-1)if(this.options.collapsible&&this.options.selected!=-1)i=this.options.selected;else return this;this.anchors.eq(i).trigger(this.options.event+".tabs");return this},
 load:function(i){i=this._getIndex(i);var b=this,f=this.options,j=this.anchors.eq(i)[0],l=a.data(j,"load.tabs");this.abort();if(!l||this.element.queue("tabs").length!==0&&a.data(j,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(i).addClass("ui-state-processing");if(f.spinner){var o=a("span",j);o.data("label.tabs",o.html()).html(f.spinner)}this.xhr=a.ajax(a.extend({},f.ajaxOptions,{url:l,success:function(n,k){b.element.find(b._sanitizeSelector(j.hash)).html(n);b._cleanup();f.cache&&a.data(j,
 "cache.tabs",true);b._trigger("load",null,b._ui(b.anchors[i],b.panels[i]));try{f.ajaxOptions.success(n,k)}catch(m){}},error:function(n,k){b._cleanup();b._trigger("load",null,b._ui(b.anchors[i],b.panels[i]));try{f.ajaxOptions.error(n,k,i,j)}catch(m){}}}));b.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(i,b){this.anchors.eq(i).removeData("cache.tabs").data("load.tabs",b);return this},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.8.14"});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(i,b){var f=this,j=this.options,l=f._rotate||(f._rotate=function(o){clearTimeout(f.rotation);f.rotation=setTimeout(function(){var n=j.selected;f.select(++n<f.anchors.length?n:0)},i);o&&o.stopPropagation()});b=f._unrotate||(f._unrotate=!b?function(o){o.clientX&&
+url:function(i,b){this.anchors.eq(i).removeData("cache.tabs").data("load.tabs",b);return this},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.8.16"});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(i,b){var f=this,j=this.options,l=f._rotate||(f._rotate=function(o){clearTimeout(f.rotation);f.rotation=setTimeout(function(){var n=j.selected;f.select(++n<f.anchors.length?n:0)},i);o&&o.stopPropagation()});b=f._unrotate||(f._unrotate=!b?function(o){o.clientX&&
 f.rotate(null)}:function(){t=j.selected;l()});if(i){this.element.bind("tabsshow",l);this.anchors.bind(j.event+".tabs",b);l()}else{clearTimeout(f.rotation);this.element.unbind("tabsshow",l);this.anchors.unbind(j.event+".tabs",b);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
diff --git a/lib/scripts/jquery/jquery.js b/lib/scripts/jquery/jquery.js
index f3201aacb6fb01b361b93bb21e35fe03bc6636ea..719e1d4ec1b70c002f035d9ecf05dd4d6933d9c5 100644
--- a/lib/scripts/jquery/jquery.js
+++ b/lib/scripts/jquery/jquery.js
@@ -1,5 +1,5 @@
 /*!
- * jQuery JavaScript Library v1.6.2
+ * jQuery JavaScript Library v1.6.4
  * http://jquery.com/
  *
  * Copyright 2011, John Resig
@@ -11,7 +11,7 @@
  * Copyright 2011, The Dojo Foundation
  * Released under the MIT, BSD, and GPL Licenses.
  *
- * Date: Thu Jun 30 14:16:56 2011 -0400
+ * Date: Mon Sep 12 18:54:48 2011 -0400
  */
 (function( window, undefined ) {
 
@@ -37,8 +37,8 @@ var jQuery = function( selector, context ) {
 	rootjQuery,
 
 	// A simple way to check for HTML strings or ID strings
-	// (both of which we optimize for)
-	quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
 
 	// Check if a string has a non-whitespace character in it
 	rnotwhite = /\S/,
@@ -66,11 +66,12 @@ var jQuery = function( selector, context ) {
 	rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
 
 	// Matches dashed string for camelizing
-	rdashAlpha = /-([a-z])/ig,
+	rdashAlpha = /-([a-z]|[0-9])/ig,
+	rmsPrefix = /^-ms-/,
 
 	// Used by jQuery.camelCase as callback to replace()
 	fcamelCase = function( all, letter ) {
-		return letter.toUpperCase();
+		return ( letter + "" ).toUpperCase();
 	},
 
 	// Keep a UserAgent string for use with jQuery.browser
@@ -212,7 +213,7 @@ jQuery.fn = jQuery.prototype = {
 	selector: "",
 
 	// The current version of jQuery being used
-	jquery: "1.6.2",
+	jquery: "1.6.4",
 
 	// The default length of a jQuery object is 0
 	length: 0,
@@ -521,10 +522,15 @@ jQuery.extend({
 			return false;
 		}
 
-		// Not own constructor property must be Object
-		if ( obj.constructor &&
-			!hasOwn.call(obj, "constructor") &&
-			!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+		try {
+			// Not own constructor property must be Object
+			if ( obj.constructor &&
+				!hasOwn.call(obj, "constructor") &&
+				!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+				return false;
+			}
+		} catch ( e ) {
+			// IE8,9 Will throw exceptions on certain host objects #9897
 			return false;
 		}
 
@@ -574,24 +580,23 @@ jQuery.extend({
 	},
 
 	// Cross-browser xml parsing
-	// (xml & tmp used internally)
-	parseXML: function( data , xml , tmp ) {
-
-		if ( window.DOMParser ) { // Standard
-			tmp = new DOMParser();
-			xml = tmp.parseFromString( data , "text/xml" );
-		} else { // IE
-			xml = new ActiveXObject( "Microsoft.XMLDOM" );
-			xml.async = "false";
-			xml.loadXML( data );
-		}
-
-		tmp = xml.documentElement;
-
-		if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {
+	parseXML: function( data ) {
+		var xml, tmp;
+		try {
+			if ( window.DOMParser ) { // Standard
+				tmp = new DOMParser();
+				xml = tmp.parseFromString( data , "text/xml" );
+			} else { // IE
+				xml = new ActiveXObject( "Microsoft.XMLDOM" );
+				xml.async = "false";
+				xml.loadXML( data );
+			}
+		} catch( e ) {
+			xml = undefined;
+		}
+		if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
 			jQuery.error( "Invalid XML: " + data );
 		}
-
 		return xml;
 	},
 
@@ -611,10 +616,10 @@ jQuery.extend({
 		}
 	},
 
-	// Converts a dashed string to camelCased string;
-	// Used by both the css and data modules
+	// Convert dashed to camelCase; used by the css and data modules
+	// Microsoft forgot to hump their vendor prefix (#9572)
 	camelCase: function( string ) {
-		return string.replace( rdashAlpha, fcamelCase );
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
 	},
 
 	nodeName: function( elem, name ) {
@@ -699,6 +704,9 @@ jQuery.extend({
 	},
 
 	inArray: function( elem, array ) {
+		if ( !array ) {
+			return -1;
+		}
 
 		if ( indexOf ) {
 			return indexOf.call( array, elem );
@@ -1071,7 +1079,7 @@ jQuery.extend({
 								if ( returned && jQuery.isFunction( returned.promise ) ) {
 									returned.promise().then( newDefer.resolve, newDefer.reject );
 								} else {
-									newDefer[ action ]( returned );
+									newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
 								}
 							});
 						} else {
@@ -1173,6 +1181,7 @@ jQuery.support = (function() {
 	div.setAttribute("className", "t");
 	div.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
 
+
 	all = div.getElementsByTagName( "*" );
 	a = div.getElementsByTagName( "a" )[ 0 ];
 
@@ -1293,13 +1302,14 @@ jQuery.support = (function() {
 		width: 0,
 		height: 0,
 		border: 0,
-		margin: 0
+		margin: 0,
+		background: "none"
 	};
 	if ( body ) {
 		jQuery.extend( testElementStyle, {
 			position: "absolute",
-			left: -1000,
-			top: -1000
+			left: "-1000px",
+			top: "-1000px"
 		});
 	}
 	for ( i in testElementStyle ) {
@@ -1404,7 +1414,7 @@ jQuery.boxModel = jQuery.support.boxModel;
 
 
 var rbrace = /^(?:\{.*\}|\[.*\])$/,
-	rmultiDash = /([a-z])([A-Z])/g;
+	rmultiDash = /([A-Z])/g;
 
 jQuery.extend({
 	cache: {},
@@ -1436,7 +1446,9 @@ jQuery.extend({
 			return;
 		}
 
-		var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,
+		var thisCache, ret,
+			internalKey = jQuery.expando,
+			getByName = typeof name === "string",
 
 			// We have to handle DOM nodes and JS objects differently because IE6-7
 			// can't GC object references properly across the DOM-JS boundary
@@ -1452,7 +1464,7 @@ jQuery.extend({
 
 		// Avoid doing any more work than we need to when trying to get data on an
 		// object that has no data at all
-		if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {
+		if ( (!id || (pvt && id && (cache[ id ] && !cache[ id ][ internalKey ]))) && getByName && data === undefined ) {
 			return;
 		}
 
@@ -1511,10 +1523,24 @@ jQuery.extend({
 			return thisCache[ internalKey ] && thisCache[ internalKey ].events;
 		}
 
-		return getByName ? 
-			// Check for both converted-to-camel and non-converted data property names
-			thisCache[ jQuery.camelCase( name ) ] || thisCache[ name ] :
-			thisCache;
+		// Check for both converted-to-camel and non-converted data property names
+		// If a data property was specified
+		if ( getByName ) {
+
+			// First Try to find as-is property data
+			ret = thisCache[ name ];
+
+			// Test for null|undefined property data
+			if ( ret == null ) {
+
+				// Try to find the camelCased property
+				ret = thisCache[ jQuery.camelCase( name ) ];
+			}
+		} else {
+			ret = thisCache;
+		}
+
+		return ret;
 	},
 
 	removeData: function( elem, name, pvt /* Internal Use Only */ ) {
@@ -1522,7 +1548,12 @@ jQuery.extend({
 			return;
 		}
 
-		var internalKey = jQuery.expando, isNode = elem.nodeType,
+		var thisCache,
+
+			// Reference to internal data cache key
+			internalKey = jQuery.expando,
+
+			isNode = elem.nodeType,
 
 			// See jQuery.data for more information
 			cache = isNode ? jQuery.cache : elem,
@@ -1537,9 +1568,16 @@ jQuery.extend({
 		}
 
 		if ( name ) {
-			var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
+
+			thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
 
 			if ( thisCache ) {
+
+				// Support interoperable removal of hyphenated or camelcased keys
+				if ( !thisCache[ name ] ) {
+					name = jQuery.camelCase( name );
+				}
+
 				delete thisCache[ name ];
 
 				// If there is no data left in the cache, we want to continue
@@ -1566,7 +1604,8 @@ jQuery.extend({
 		// Browsers that fail expando deletion also refuse to delete expandos on
 		// the window, but it will allow it on all other JS objects; other browsers
 		// don't care
-		if ( jQuery.support.deleteExpando || cache != window ) {
+		// Ensure that `cache` is not a window object #10080
+		if ( jQuery.support.deleteExpando || !cache.setInterval ) {
 			delete cache[ id ];
 		} else {
 			cache[ id ] = null;
@@ -1690,7 +1729,8 @@ function dataAttr( elem, key, data ) {
 	// If nothing was found internally, try to fetch any
 	// data from the HTML5 data-* attribute
 	if ( data === undefined && elem.nodeType === 1 ) {
-		var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase();
+
+		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
 
 		data = elem.getAttribute( name );
 
@@ -1910,8 +1950,7 @@ var rclass = /[\n\t\r]/g,
 	rfocusable = /^(?:button|input|object|select|textarea)$/i,
 	rclickable = /^a(?:rea)?$/i,
 	rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
-	rinvalidChar = /\:|^on/,
-	formHook, boolHook;
+	nodeHook, boolHook;
 
 jQuery.fn.extend({
 	attr: function( name, value ) {
@@ -2049,7 +2088,7 @@ jQuery.fn.extend({
 	hasClass: function( selector ) {
 		var className = " " + selector + " ";
 		for ( var i = 0, l = this.length; i < l; i++ ) {
-			if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
 				return true;
 			}
 		}
@@ -2229,14 +2268,11 @@ jQuery.extend({
 			if ( !hooks ) {
 				// Use boolHook for boolean attributes
 				if ( rboolean.test( name ) ) {
-
 					hooks = boolHook;
 
-				// Use formHook for forms and if the name contains certain characters
-				} else if ( formHook && name !== "className" &&
-					(jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) {
-
-					hooks = formHook;
+				// Use nodeHook if available( IE6/7 )
+				} else if ( nodeHook ) {
+					hooks = nodeHook;
 				}
 			}
 		}
@@ -2273,14 +2309,9 @@ jQuery.extend({
 		var propName;
 		if ( elem.nodeType === 1 ) {
 			name = jQuery.attrFix[ name ] || name;
-		
-			if ( jQuery.support.getSetAttribute ) {
-				// Use removeAttribute in browsers that support it
-				elem.removeAttribute( name );
-			} else {
-				jQuery.attr( elem, name, "" );
-				elem.removeAttributeNode( elem.getAttributeNode( name ) );
-			}
+
+			jQuery.attr( elem, name, "" );
+			elem.removeAttribute( name );
 
 			// Set corresponding property to false for boolean attributes
 			if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
@@ -2308,33 +2339,20 @@ jQuery.extend({
 				}
 			}
 		},
-		tabIndex: {
-			get: function( elem ) {
-				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
-				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
-				var attributeNode = elem.getAttributeNode("tabIndex");
-
-				return attributeNode && attributeNode.specified ?
-					parseInt( attributeNode.value, 10 ) :
-					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
-						0 :
-						undefined;
-			}
-		},
 		// Use the value property for back compat
-		// Use the formHook for button elements in IE6/7 (#1954)
+		// Use the nodeHook for button elements in IE6/7 (#1954)
 		value: {
 			get: function( elem, name ) {
-				if ( formHook && jQuery.nodeName( elem, "button" ) ) {
-					return formHook.get( elem, name );
+				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+					return nodeHook.get( elem, name );
 				}
 				return name in elem ?
 					elem.value :
 					null;
 			},
 			set: function( elem, value, name ) {
-				if ( formHook && jQuery.nodeName( elem, "button" ) ) {
-					return formHook.set( elem, value, name );
+				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+					return nodeHook.set( elem, value, name );
 				}
 				// Does not return so that setAttribute is also used
 				elem.value = value;
@@ -2383,7 +2401,7 @@ jQuery.extend({
 			}
 
 		} else {
-			if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) {
+			if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
 				return ret;
 
 			} else {
@@ -2392,14 +2410,33 @@ jQuery.extend({
 		}
 	},
 	
-	propHooks: {}
+	propHooks: {
+		tabIndex: {
+			get: function( elem ) {
+				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+				var attributeNode = elem.getAttributeNode("tabindex");
+
+				return attributeNode && attributeNode.specified ?
+					parseInt( attributeNode.value, 10 ) :
+					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+						0 :
+						undefined;
+			}
+		}
+	}
 });
 
+// Add the tabindex propHook to attrHooks for back-compat
+jQuery.attrHooks.tabIndex = jQuery.propHooks.tabIndex;
+
 // Hook for boolean attributes
 boolHook = {
 	get: function( elem, name ) {
 		// Align boolean attributes with corresponding properties
-		return jQuery.prop( elem, name ) ?
+		// Fall back to attribute presence where some booleans are not supported
+		var attrNode;
+		return jQuery.prop( elem, name ) === true || ( attrNode = elem.getAttributeNode( name ) ) && attrNode.nodeValue !== false ?
 			name.toLowerCase() :
 			undefined;
 	},
@@ -2425,12 +2462,10 @@ boolHook = {
 
 // IE6/7 do not support getting/setting some attributes with get/setAttribute
 if ( !jQuery.support.getSetAttribute ) {
-
-	// propFix is more comprehensive and contains all fixes
-	jQuery.attrFix = jQuery.propFix;
 	
-	// Use this for any attribute on a form in IE6/7
-	formHook = jQuery.attrHooks.name = jQuery.attrHooks.title = jQuery.valHooks.button = {
+	// Use this for any attribute in IE6/7
+	// This fixes almost every IE6/7 issue
+	nodeHook = jQuery.valHooks.button = {
 		get: function( elem, name ) {
 			var ret;
 			ret = elem.getAttributeNode( name );
@@ -2440,13 +2475,13 @@ if ( !jQuery.support.getSetAttribute ) {
 				undefined;
 		},
 		set: function( elem, value, name ) {
-			// Check form objects in IE (multiple bugs related)
-			// Only use nodeValue if the attribute node exists on the form
+			// Set the existing or create a new attribute node
 			var ret = elem.getAttributeNode( name );
-			if ( ret ) {
-				ret.nodeValue = value;
-				return value;
+			if ( !ret ) {
+				ret = document.createAttribute( name );
+				elem.setAttributeNode( ret );
 			}
+			return (ret.nodeValue = value + "");
 		}
 	};
 
@@ -2505,6 +2540,7 @@ if ( !jQuery.support.optSelected ) {
 					parent.parentNode.selectedIndex;
 				}
 			}
+			return null;
 		}
 	});
 }
@@ -3235,8 +3271,9 @@ if ( !jQuery.support.submitBubbles ) {
 		setup: function( data, namespaces ) {
 			if ( !jQuery.nodeName( this, "form" ) ) {
 				jQuery.event.add(this, "click.specialSubmit", function( e ) {
+					// Avoid triggering error on non-existent type attribute in IE VML (#7071)
 					var elem = e.target,
-						type = elem.type;
+						type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : "";
 
 					if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
 						trigger( "submit", this, arguments );
@@ -3245,7 +3282,7 @@ if ( !jQuery.support.submitBubbles ) {
 
 				jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
 					var elem = e.target,
-						type = elem.type;
+						type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : "";
 
 					if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
 						trigger( "submit", this, arguments );
@@ -3270,7 +3307,8 @@ if ( !jQuery.support.changeBubbles ) {
 	var changeFilters,
 
 	getVal = function( elem ) {
-		var type = elem.type, val = elem.value;
+		var type = jQuery.nodeName( elem, "input" ) ? elem.type : "",
+			val = elem.value;
 
 		if ( type === "radio" || type === "checkbox" ) {
 			val = elem.checked;
@@ -5295,12 +5333,17 @@ jQuery.fn.extend({
 	// Determine the position of an element within
 	// the matched set of elements
 	index: function( elem ) {
-		if ( !elem || typeof elem === "string" ) {
-			return jQuery.inArray( this[0],
-				// If it receives a string, the selector is used
-				// If it receives nothing, the siblings are used
-				elem ? jQuery( elem ) : this.parent().children() );
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
 		}
+
+		// index in selector
+		if ( typeof elem === "string" ) {
+			return jQuery.inArray( this[0], jQuery( elem ) );
+		}
+
 		// Locate the position of the desired element
 		return jQuery.inArray(
 			// If it receives a jQuery object, the first element is used
@@ -6048,7 +6091,10 @@ jQuery.extend({
 			// with an element if you are cloning the body and one of the
 			// elements on the page has a name or id of "length"
 			for ( i = 0; srcElements[i]; ++i ) {
-				cloneFixAttributes( srcElements[i], destElements[i] );
+				// Ensure that the destination node is not null; Fixes #9587
+				if ( destElements[i] ) {
+					cloneFixAttributes( srcElements[i], destElements[i] );
+				}
 			}
 		}
 
@@ -6248,14 +6294,14 @@ function evalScript( i, elem ) {
 
 
 
+
 var ralpha = /alpha\([^)]*\)/i,
 	ropacity = /opacity=([^)]*)/,
 	// fixed for IE9, see #8346
 	rupper = /([A-Z]|^ms)/g,
 	rnumpx = /^-?\d+(?:px)?$/i,
 	rnum = /^-?\d/,
-	rrelNum = /^[+\-]=/,
-	rrelNumFilter = /[^+\-\.\de]+/g,
+	rrelNum = /^([\-+])=([\-+.\de]+)/,
 
 	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
 	cssWidth = [ "Left", "Right" ],
@@ -6332,18 +6378,18 @@ jQuery.extend({
 		if ( value !== undefined ) {
 			type = typeof value;
 
-			// Make sure that NaN and null values aren't set. See: #7116
-			if ( type === "number" && isNaN( value ) || value == null ) {
-				return;
-			}
-
 			// convert relative number strings (+= or -=) to relative numbers. #7345
-			if ( type === "string" && rrelNum.test( value ) ) {
-				value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) );
+			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+				value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
 				// Fixes bug #9237
 				type = "number";
 			}
 
+			// Make sure that NaN and null values aren't set. See: #7116
+			if ( value == null || type === "number" && isNaN( value ) ) {
+				return;
+			}
+
 			// If a number was passed in, add 'px' to the (except for certain CSS properties)
 			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
 				value += "px";
@@ -6459,18 +6505,29 @@ if ( !jQuery.support.opacity ) {
 
 		set: function( elem, value ) {
 			var style = elem.style,
-				currentStyle = elem.currentStyle;
+				currentStyle = elem.currentStyle,
+				opacity = jQuery.isNaN( value ) ? "" : "alpha(opacity=" + value * 100 + ")",
+				filter = currentStyle && currentStyle.filter || style.filter || "";
 
 			// IE has trouble with opacity if it does not have layout
 			// Force it by setting the zoom level
 			style.zoom = 1;
 
-			// Set the alpha filter to set the opacity
-			var opacity = jQuery.isNaN( value ) ?
-				"" :
-				"alpha(opacity=" + value * 100 + ")",
-				filter = currentStyle && currentStyle.filter || style.filter || "";
+			// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+			if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
+
+				// Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+				// if "filter:" is present at all, clearType is disabled, we want to avoid this
+				// style.removeAttribute is IE Only, but so apparently is this code path...
+				style.removeAttribute( "filter" );
 
+				// if there there is no filter style applied in a css rule, we are done
+				if ( currentStyle && !currentStyle.filter ) {
+					return;
+				}
+			}
+
+			// otherwise, set new filter values
 			style.filter = ralpha.test( filter ) ?
 				filter.replace( ralpha, opacity ) :
 				filter + " " + opacity;
@@ -6625,9 +6682,9 @@ var r20 = /%20/g,
 	rCRLF = /\r?\n/g,
 	rhash = /#.*$/,
 	rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
-	rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+	rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
 	// #7653, #8125, #8152: local protocol detection
-	rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/,
+	rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
 	rnoContent = /^(?:GET|HEAD)$/,
 	rprotocol = /^\/\//,
 	rquery = /\?/,
@@ -6662,7 +6719,10 @@ var r20 = /%20/g,
 	ajaxLocation,
 
 	// Document location segments
-	ajaxLocParts;
+	ajaxLocParts,
+	
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+	allTypes = ["*/"] + ["*"];
 
 // #8138, IE may throw an exception when accessing
 // a field from window.location if document.domain has been set
@@ -6755,6 +6815,22 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX
 	return selection;
 }
 
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+	var key, deep,
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
+	for( key in src ) {
+		if ( src[ key ] !== undefined ) {
+			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+		}
+	}
+	if ( deep ) {
+		jQuery.extend( true, target, deep );
+	}
+}
+
 jQuery.fn.extend({
 	load: function( url, params, callback ) {
 		if ( typeof url !== "string" && _load ) {
@@ -6898,23 +6974,16 @@ jQuery.extend({
 	// Creates a full fledged settings object into target
 	// with both ajaxSettings and settings fields.
 	// If target is omitted, writes into ajaxSettings.
-	ajaxSetup: function ( target, settings ) {
-		if ( !settings ) {
-			// Only one parameter, we extend ajaxSettings
-			settings = target;
-			target = jQuery.extend( true, jQuery.ajaxSettings, settings );
+	ajaxSetup: function( target, settings ) {
+		if ( settings ) {
+			// Building a settings object
+			ajaxExtend( target, jQuery.ajaxSettings );
 		} else {
-			// target was provided, we extend into it
-			jQuery.extend( true, target, jQuery.ajaxSettings, settings );
-		}
-		// Flatten fields we don't want deep extended
-		for( var field in { context: 1, url: 1 } ) {
-			if ( field in settings ) {
-				target[ field ] = settings[ field ];
-			} else if( field in jQuery.ajaxSettings ) {
-				target[ field ] = jQuery.ajaxSettings[ field ];
-			}
+			// Extending ajaxSettings
+			settings = target;
+			target = jQuery.ajaxSettings;
 		}
+		ajaxExtend( target, settings );
 		return target;
 	},
 
@@ -6942,7 +7011,7 @@ jQuery.extend({
 			html: "text/html",
 			text: "text/plain",
 			json: "application/json, text/javascript",
-			"*": "*/*"
+			"*": allTypes
 		},
 
 		contents: {
@@ -6972,6 +7041,15 @@ jQuery.extend({
 
 			// Parse text as xml
 			"text xml": jQuery.parseXML
+		},
+
+		// For options that shouldn't be deep extended:
+		// you can add your own custom options here if
+		// and when you create one that shouldn't be
+		// deep extended (see ajaxExtend)
+		flatOptions: {
+			context: true,
+			url: true
 		}
 	},
 
@@ -7082,7 +7160,7 @@ jQuery.extend({
 		// Callback for when everything is done
 		// It is defined here because jslint complains if it is declared
 		// at the end of the function (which would be more logical and readable)
-		function done( status, statusText, responses, headers ) {
+		function done( status, nativeStatusText, responses, headers ) {
 
 			// Called once
 			if ( state === 2 ) {
@@ -7105,11 +7183,12 @@ jQuery.extend({
 			responseHeadersString = headers || "";
 
 			// Set readyState
-			jqXHR.readyState = status ? 4 : 0;
+			jqXHR.readyState = status > 0 ? 4 : 0;
 
 			var isSuccess,
 				success,
 				error,
+				statusText = nativeStatusText,
 				response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
 				lastModified,
 				etag;
@@ -7161,7 +7240,7 @@ jQuery.extend({
 
 			// Set data for the fake xhr object
 			jqXHR.status = status;
-			jqXHR.statusText = statusText;
+			jqXHR.statusText = "" + ( nativeStatusText || statusText );
 
 			// Success/Error
 			if ( isSuccess ) {
@@ -7183,7 +7262,7 @@ jQuery.extend({
 			completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );
 
 			if ( fireGlobals ) {
-				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] );
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
 				// Handle the global AJAX counter
 				if ( !( --jQuery.active ) ) {
 					jQuery.event.trigger( "ajaxStop" );
@@ -7264,6 +7343,8 @@ jQuery.extend({
 			// If data is available, append data to url
 			if ( s.data ) {
 				s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
+				// #9682: remove data so that it's not used in an eventual retry
+				delete s.data;
 			}
 
 			// Get ifModifiedKey before adding the anti-cache parameter
@@ -7301,7 +7382,7 @@ jQuery.extend({
 		jqXHR.setRequestHeader(
 			"Accept",
 			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
-				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) :
+				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
 				s.accepts[ "*" ]
 		);
 
@@ -7347,7 +7428,7 @@ jQuery.extend({
 				transport.send( requestHeaders, done );
 			} catch (e) {
 				// Propagate exception as error if not done
-				if ( status < 2 ) {
+				if ( state < 2 ) {
 					done( -1, e );
 				// Simply rethrow otherwise
 				} else {
@@ -7995,10 +8076,7 @@ var elemdisplay = {},
 		// opacity animations
 		[ "opacity" ]
 	],
-	fxNow,
-	requestAnimationFrame = window.webkitRequestAnimationFrame ||
-		window.mozRequestAnimationFrame ||
-		window.oRequestAnimationFrame;
+	fxNow;
 
 jQuery.fn.extend({
 	show: function( speed, easing, callback ) {
@@ -8374,8 +8452,7 @@ jQuery.fx.prototype = {
 	// Start an animation from one number to another
 	custom: function( from, to, unit ) {
 		var self = this,
-			fx = jQuery.fx,
-			raf;
+			fx = jQuery.fx;
 
 		this.startTime = fxNow || createFxNow();
 		this.start = from;
@@ -8391,20 +8468,7 @@ jQuery.fx.prototype = {
 		t.elem = this.elem;
 
 		if ( t() && jQuery.timers.push(t) && !timerId ) {
-			// Use requestAnimationFrame instead of setInterval if available
-			if ( requestAnimationFrame ) {
-				timerId = true;
-				raf = function() {
-					// When timerId gets set to null at any point, this stops
-					if ( timerId ) {
-						requestAnimationFrame( raf );
-						fx.tick();
-					}
-				};
-				requestAnimationFrame( raf );
-			} else {
-				timerId = setInterval( fx.tick, fx.interval );
-			}
+			timerId = setInterval( fx.tick, fx.interval );
 		}
 	},
 
@@ -8947,9 +9011,10 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
 		if ( jQuery.isWindow( elem ) ) {
 			// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
 			// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
-			var docElemProp = elem.document.documentElement[ "client" + name ];
+			var docElemProp = elem.document.documentElement[ "client" + name ],
+				body = elem.document.body;
 			return elem.document.compatMode === "CSS1Compat" && docElemProp ||
-				elem.document.body[ "client" + name ] || docElemProp;
+				body && body[ "client" + name ] || docElemProp;
 
 		// Get document width or height
 		} else if ( elem.nodeType === 9 ) {
@@ -8978,4 +9043,4 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
 
 // Expose jQuery to the global object
 window.jQuery = window.$ = jQuery;
-})(window);
+})(window);
\ No newline at end of file
diff --git a/lib/scripts/jquery/jquery.min.js b/lib/scripts/jquery/jquery.min.js
index 48590ecb96a74f5987d125e7fbc5a26c1392543a..3684c36b54b20b6733f19ef67d4767fcbede5705 100644
--- a/lib/scripts/jquery/jquery.min.js
+++ b/lib/scripts/jquery/jquery.min.js
@@ -1,18 +1,4 @@
-/*!
- * jQuery JavaScript Library v1.6.2
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Thu Jun 30 14:16:56 2011 -0400
- */
-(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bC.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bR,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bX(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bX(a,c,d,e,"*",g));return l}function bW(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bN),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bA(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bv:bw;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bg(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(x,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(H)return H.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:|^on/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.
-shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.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 pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,N(a.origType,a.selector),f.extend({},a,{handler:M,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,N(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?E:D):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=E;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=E;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=E,this.stopPropagation()},isDefaultPrevented:D,isPropagationStopped:D,isImmediatePropagationStopped:D};var F=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},G=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?G:F,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?G:F)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&K("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&K("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var H,I=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var L={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||D,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=x.exec(h),k="",j&&(k=j[0],h=h.replace(x,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,L[h]?(a.push(L[h]+k),h=h+k):h=(L[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+N(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+N(h,m),e)}return this}}),f.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){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=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|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=T.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/<tbody/i,ba=/<|&#?\w+;/,bb=/<(?:script|object|embed|option|style)/i,bc=/checked\s*(?:[^=]|=\s*.checked.)/i,bd=/\/(java|ecma)script/i,be=/^\s*<!(?:\[CDATA\[|\-\-)/,bf={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,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(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,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bc.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bg(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bm)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bb.test(a[0])&&(f.support.checkClone||!bc.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j
-)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1></$2>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bl(k[i]);else bl(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bd.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bn=/alpha\([^)]*\)/i,bo=/opacity=([^)]*)/,bp=/([A-Z]|^ms)/g,bq=/^-?\d+(?:px)?$/i,br=/^-?\d/,bs=/^[+\-]=/,bt=/[^+\-\.\de]+/g,bu={position:"absolute",visibility:"hidden",display:"block"},bv=["Left","Right"],bw=["Top","Bottom"],bx,by,bz;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bx(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bs.test(d)&&(d=+d.replace(bt,"")+parseFloat(f.css(a,c)),h="number"),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bx)return bx(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bA(a,b,d);f.swap(a,bu,function(){e=bA(a,b,d)});return e}},set:function(a,b){if(!bq.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cs(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cr("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cr("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cs(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cr("show",1),slideUp:cr("hide",1),slideToggle:cr("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cn||cp(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!cl&&(co?(cl=!0,g=function(){cl&&(co(g),e.tick())},co(g)):cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||cp(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){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:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var ct=/^t(?:able|d|h)$/i,cu=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cv(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!ct.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<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>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
\ No newline at end of file
+/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */
+(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bW(a,c,d,e,"*",g));return l}function bV(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function by(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bt:bu;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(w,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(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(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+"With"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete 
+t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.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 pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?D:C):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="submit"||c==="image")&&f(b).closest("form").length&&J("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&J("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,"input")?a.type:"",c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=w.exec(h),k="",j&&(k=j[0],h=h.replace(w,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+M(h,m),e)}return this}}),f.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){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=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|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\[\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),"not",a)},filter:function(a){return this.pushStack(V(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|object|embed|option|style)/i,bb=/checked\s*(?:[^=]|=\s*.checked.)/i,bc=/\/(java|ecma)script/i,bd=/^\s*<!(?:\[CDATA\[|\-\-)/,be={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,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(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,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!ba.test(a[0])&&(f.support.checkClone||!bb.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean
+(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bk(k[i]);else bk(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bc.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bm=/alpha\([^)]*\)/i,bn=/opacity=([^)]*)/,bo=/([A-Z]|^ms)/g,bp=/^-?\d+(?:px)?$/i,bq=/^-?\d/,br=/^([\-+])=([\-+.\de]+)/,bs={position:"absolute",visibility:"hidden",display:"block"},bt=["Left","Right"],bu=["Top","Bottom"],bv,bw,bx;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bv(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=br.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bv)return bv(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return by(a,b,d);f.swap(a,bs,function(){e=by(a,b,d)});return e}},set:function(a,b){if(!bp.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cr(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cq("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cq("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cr(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cq("show",1),slideUp:cq("hide",1),slideToggle:cq("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return d.step(a)}var d=this,e=f.fx;this.startTime=cn||co(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&f.timers.push(g)&&!cl&&(cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||co(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){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:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cs=/^t(?:able|d|h)$/i,ct=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cu(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cs.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<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>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
\ No newline at end of file
diff --git a/lib/scripts/jquery/update.sh b/lib/scripts/jquery/update.sh
index 38f38bece1ecae98af9ebb1acc917bb22d935304..fde46f4d73366495ab97ad8ac1ca8c11904d1e06 100755
--- a/lib/scripts/jquery/update.sh
+++ b/lib/scripts/jquery/update.sh
@@ -23,3 +23,6 @@ for img in $images
 do
     wget -nv https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/smoothness/$img -O jquery-ui-theme/$img
 done
+
+# remove font family declarations from smoothness CSS
+sed -i "s/font-family:[^;]*; \?//" jquery-ui-theme/smoothness.css
diff --git a/lib/scripts/linkwiz.js b/lib/scripts/linkwiz.js
index 83653c9bb09db5f4b8ff956cebb76b4855e03e31..cc4c19e0d0c876dfa44b92b5280883cd489fac90 100644
--- a/lib/scripts/linkwiz.js
+++ b/lib/scripts/linkwiz.js
@@ -1,7 +1,3 @@
-/*jslint sloppy: true, indent: 4, white: true, browser: true, eqeq: true */
-/*global jQuery, DOKU_BASE, LANG, DOKU_UHC, getSelection, pasteText */
-
-
 /**
  * The Link Wizard
  *
@@ -10,7 +6,7 @@
  */
 var dw_linkwiz = {
     $wiz: null,
-    entry: null,
+    $entry: null,
     result: null,
     timer: null,
     textArea: null,
@@ -27,34 +23,39 @@ var dw_linkwiz = {
 
         // create HTML Structure
         dw_linkwiz.$wiz = jQuery(document.createElement('div'))
+               .dialog({
+                   autoOpen: false,
+                   draggable: true,
+                   title: LANG.linkwiz,
+                   resizable: false
+               })
+               .html(
+                    '<div>'+LANG.linkto+' <input type="text" class="edit" id="link__wiz_entry" autocomplete="off" /></div>'+
+                    '<div id="link__wiz_result"></div>'
+                    )
+               .parent()
                .attr('id','link__wiz')
+               .addClass('a11y')
                .css({
                     'position':    'absolute',
                     'top':         (pos.top+20)+'px',
-                    'left':        (pos.left+80)+'px',
-                    'margin-left': '-10000px',
-                    'margin-top':  '-10000px'
+                    'left':        (pos.left+80)+'px'
                    })
-               .html(
-                    '<div id="link__wiz_header">'+
-                    '<img src="'+DOKU_BASE+'lib/images/close.png" width="16" height="16" align="right" alt="" id="link__wiz_close" />'+
-                    LANG.linkwiz+'</div>'+
-                    '<div>'+LANG.linkto+' <input type="text" class="edit" id="link__wiz_entry" autocomplete="off" /></div>'+
-                    '<div id="link__wiz_result"></div>'
-                    )
-               .addClass('picker');
+               .show()
+               .appendTo('div.dokuwiki');
 
-        $editor[0].form.parentNode.appendChild(dw_linkwiz.$wiz[0]);
         dw_linkwiz.textArea = $editor[0];
         dw_linkwiz.result = jQuery('#link__wiz_result')[0];
-        dw_linkwiz.entry = jQuery('#link__wiz_entry')[0];
+
+        // scrollview correction on arrow up/down gets easier
+        jQuery(dw_linkwiz.result).css('position', 'relative');
+
+        dw_linkwiz.$entry = jQuery('#link__wiz_entry');
 
         // attach event handlers
         jQuery('#link__wiz_close').click(dw_linkwiz.hide);
-        jQuery(dw_linkwiz.entry).keyup(dw_linkwiz.onEntry);
-        jQuery(dw_linkwiz.result).click(dw_linkwiz.onResultClick);
-
-        dw_linkwiz.$wiz.draggable({handle: '#link__wiz_header'});
+        dw_linkwiz.$entry.keyup(dw_linkwiz.onEntry);
+        jQuery(dw_linkwiz.result).delegate('a', 'click', dw_linkwiz.onResultClick);
     },
 
     /**
@@ -84,13 +85,12 @@ var dw_linkwiz = {
         }
         if(e.keyCode == 13){ //Enter
             if(dw_linkwiz.selected > -1){
-                var obj = dw_linkwiz.getResult(dw_linkwiz.selected);
-                if(obj){
-                    var a = jQuery(obj).find('a')[0];
-                    dw_linkwiz.resultClick(a);
+                var $obj = dw_linkwiz.$getResult(dw_linkwiz.selected);
+                if($obj.length > 0){
+                    dw_linkwiz.resultClick($obj.find('a')[0]);
                 }
-            }else if(dw_linkwiz.entry.value){
-                dw_linkwiz.insertLink(dw_linkwiz.entry.value);
+            }else if(dw_linkwiz.$entry.val()){
+                dw_linkwiz.insertLink(dw_linkwiz.$entry.val());
             }
 
             e.preventDefault();
@@ -107,13 +107,18 @@ var dw_linkwiz = {
      * @returns DOMObject or null
      */
     getResult: function(num){
-        var childs = jQuery(dw_linkwiz.result).find('div');
-        var obj = childs[num];
-        if(obj){
-            return obj;
-        }else{
-            return null;
-        }
+        DEPRECATED('use dw_linkwiz.$getResult()[0] instead');
+        return dw_linkwiz.$getResult()[0] || null;
+    },
+
+    /**
+     * Get one of the results by index
+     *
+     * @param int result div to return
+     * @returns jQuery object
+     */
+    $getResult: function(num) {
+        return jQuery(dw_linkwiz.result).find('div').eq(num);
     },
 
     /**
@@ -125,26 +130,31 @@ var dw_linkwiz = {
             return;
         }
 
-        var obj = dw_linkwiz.getResult(num);
-        if(obj){
-            dw_linkwiz.deselect();
-            obj.className += ' selected';
-
-            // make sure the item is viewable in the scroll view
-            // FIXME check IE compatibility
-            if(obj.offsetTop > dw_linkwiz.result.scrollTop + dw_linkwiz.result.clientHeight){
-                dw_linkwiz.result.scrollTop += obj.clientHeight;
-            }else if(obj.offsetTop - dw_linkwiz.result.clientHeight < dw_linkwiz.result.scrollTop){ // this works but isn't quite right, fixes welcome
-                dw_linkwiz.result.scrollTop -= obj.clientHeight;
-            }
-            // now recheck - if still not in view, the user used the mouse to scroll
-            if( (obj.offsetTop > dw_linkwiz.result.scrollTop + dw_linkwiz.result.clientHeight) ||
-                (obj.offsetTop < dw_linkwiz.result.scrollTop) ){
-                obj.scrollIntoView();
-            }
+        var $obj = dw_linkwiz.$getResult(num);
+        if ($obj.length === 0) {
+            return;
+        }
 
-            dw_linkwiz.selected = num;
+        dw_linkwiz.deselect();
+        $obj.addClass('selected');
+
+        // make sure the item is viewable in the scroll view
+
+        //getting child position within the parent
+        var childPos = $obj.position().top;
+        //getting difference between the childs top and parents viewable area
+        var yDiff = childPos + $obj.outerHeight() - jQuery(dw_linkwiz.result).innerHeight();
+
+        if (childPos < 0) {
+            //if childPos is above viewable area (that's why it goes negative)
+            jQuery(dw_linkwiz.result)[0].scrollTop += childPos;
+        } else if(yDiff > 0) {
+            // if difference between childs top and parents viewable area is
+            // greater than the height of a childDiv
+            jQuery(dw_linkwiz.result)[0].scrollTop += yDiff;
         }
+
+        dw_linkwiz.selected = num;
     },
 
     /**
@@ -152,10 +162,7 @@ var dw_linkwiz = {
      */
     deselect: function(){
         if(dw_linkwiz.selected > -1){
-            var obj = dw_linkwiz.getResult(dw_linkwiz.selected);
-            if(obj){
-                obj.className = obj.className.replace(/ ?selected/,'');
-            }
+            dw_linkwiz.$getResult(dw_linkwiz.selected).removeClass('selected');
         }
         dw_linkwiz.selected = -1;
     },
@@ -165,10 +172,12 @@ var dw_linkwiz = {
      * resultClick()
      */
     onResultClick: function(e){
-        if(e.target.tagName != 'A') return;
+        if(!jQuery(this).is('a')) {
+            return;
+        }
         e.stopPropagation();
         e.preventDefault();
-        dw_linkwiz.resultClick(e.target);
+        dw_linkwiz.resultClick(this);
         return false;
     },
 
@@ -176,17 +185,14 @@ var dw_linkwiz = {
      * Handles the "click" on a given result anchor
      */
     resultClick: function(a){
-        var L = dw_linkwiz;
-        var id = a.title;
-        if(id == '' || id.substr(id.length-1) == ':'){
-            L.entry.value = id;
-            L.autocomplete_exec();
+        dw_linkwiz.$entry.val(a.title);
+        if(a.title == '' || a.title.substr(-1) == ':'){
+            dw_linkwiz.autocomplete_exec();
         }else{
-            L.entry.value = id;
-            if(a.nextSibling && a.nextSibling.tagName == 'SPAN'){
-                L.insertLink(a.nextSibling.innerHTML);
+            if (jQuery(a.nextSibling).is('span')) {
+                dw_linkwiz.insertLink(a.nextSibling.innerHTML);
             }else{
-                L.insertLink('');
+                dw_linkwiz.insertLink('');
             }
         }
     },
@@ -198,14 +204,18 @@ var dw_linkwiz = {
      * as link title instead
      */
     insertLink: function(title){
-        var L = dw_linkwiz;
-        var E = L.entry;
-        if(!E.value) return;
+        var link = dw_linkwiz.$entry.val(),
+            sel, stxt;
+        if(!link) {
+            return;
+        }
 
-        var sel = getSelection(L.textArea);
-        if(sel.start == 0 && sel.end == 0) sel = L.selection;
+        sel = getSelection(dw_linkwiz.textArea);
+        if(sel.start == 0 && sel.end == 0) {
+            sel = dw_linkwiz.selection;
+        }
 
-        var stxt = sel.getText();
+        stxt = sel.getText();
 
         // don't include trailing space in selection
         if(stxt.charAt(stxt.length - 1) == ' '){
@@ -213,25 +223,29 @@ var dw_linkwiz = {
             stxt = sel.getText();
         }
 
-        if(!stxt && !DOKU_UHC) stxt=title;
+        if(!stxt && !DOKU_UHC) {
+            stxt=title;
+        }
 
         // prepend colon inside namespaces for non namespace pages
-        if(L.textArea.form['id'].value.indexOf(':') != -1 &&
-           E.value.indexOf(':') == -1){
-            E.value = ':'+E.value;
+        if(dw_linkwiz.textArea.form.id.value.indexOf(':') != -1 &&
+           link.indexOf(':') == -1){
+           link = ':' + link;
         }
 
-        var link = '[['+E.value+'|';
-        if(stxt) link += stxt;
+        var so = link.length+3;
+
+        link = '[['+link+'|';
+        if(stxt) {
+            link += stxt;
+        }
         link += ']]';
 
-        var so = E.value.length+3;
-        var eo = 2;
+        pasteText(sel,link,{startofs: so, endofs: 2});
+        dw_linkwiz.hide();
 
-        pasteText(sel,link,{startofs: so, endofs: eo});
-        L.hide();
-        // reset the entry to the parent namespace and remove : at the beginning
-        E.value = E.value.replace(/(^:)?[^:]*$/, '');
+        // reset the entry to the parent namespace
+        dw_linkwiz.$entry.val(dw_linkwiz.$entry.val().replace(/[^:]*$/, ''));
     },
 
     /**
@@ -252,21 +266,15 @@ var dw_linkwiz = {
      * Executes the AJAX call for the page/namespace lookup
      */
     autocomplete_exec: function(){
+        var $res = jQuery(dw_linkwiz.result);
         dw_linkwiz.deselect();
-        dw_linkwiz.result.innerHTML = '<img src="'+DOKU_BASE+'lib/images/throbber.gif" alt="" width="16" height="16" />';
-
-        // because we need to use POST, we
-        // can not use the .load() function.
-        jQuery.post(
+        $res.html('<img src="'+DOKU_BASE+'lib/images/throbber.gif" alt="" width="16" height="16" />')
+            .load(
             DOKU_BASE + 'lib/exe/ajax.php',
             {
                 call: 'linkwiz',
-                q: dw_linkwiz.entry.value
-            },
-            function (data) {
-                dw_linkwiz.result.innerHTML = data;
-            },
-            'html'
+                q: dw_linkwiz.$entry.val()
+            }
         );
     },
 
@@ -274,33 +282,28 @@ var dw_linkwiz = {
      * Show the link wizard
      */
     show: function(){
-        var L = dw_linkwiz;
-        L.selection  = getSelection(dw_linkwiz.textArea);
-        L.$wiz.css('marginLeft', '0');
-        L.$wiz.css('marginTop', '0');
-        L.entry.focus();
-        L.autocomplete();
+        dw_linkwiz.selection  = getSelection(dw_linkwiz.textArea);
+        dw_linkwiz.$wiz.removeClass('a11y');
+        dw_linkwiz.$entry.focus();
+        dw_linkwiz.autocomplete();
     },
 
     /**
      * Hide the link wizard
      */
     hide: function(){
-        var L = dw_linkwiz;
-        L.$wiz.css('marginLeft', '-10000px');
-        L.$wiz.css('marginTop', '-10000px');
-        L.textArea.focus();
+        dw_linkwiz.$wiz.addClass('a11y');
+        dw_linkwiz.textArea.focus();
     },
 
     /**
      * Toggle the link wizard
      */
     toggle: function(){
-        if(dw_linkwiz.$wiz.css('marginLeft') == '-10000px'){
+        if(dw_linkwiz.$wiz.hasClass('a11y')){
             dw_linkwiz.show();
         }else{
             dw_linkwiz.hide();
         }
     }
-
 };
diff --git a/lib/scripts/locktimer.js b/lib/scripts/locktimer.js
index 857002abf6fc80b1bd79cd4f54983e4e6686df3f..96f963c083f82d72ffe38398559bf53da995f1f7 100644
--- a/lib/scripts/locktimer.js
+++ b/lib/scripts/locktimer.js
@@ -6,17 +6,33 @@ var dw_locktimer = {
     draft: false,
     timerID: null,
     lasttime: null,
-    msg: '',
+    msg: LANG.willexpire,
     pageid: '',
 
     /**
      * Initialize the lock timer
      *
-     * @param int timeout Lenght of timeout in seconds
-     * @param bool draft  save drafts
+     * @param int    timeout Length of timeout in seconds
+     * @param string msg     Deprecated; The expiry message
+     * @param bool   draft   Whether to save drafts
+     * @param string edid    Optional; ID of an edit object which has to be present
      */
-    init: function(timeout,draft){ //FIXME which elements to pass here?
-        var $edit = jQuery('#wiki__text');
+    init: function(timeout,msg,draft,edid){
+        var $edit;
+
+        switch (arguments.length) {
+        case 4:
+            DEPRECATED('Setting the locktimer expiry message is deprecated');
+            dw_locktimer.msg = msg;
+            break;
+        case 3:
+            edid = draft;
+        case 2:
+            draft = msg;
+        }
+        edid = edid || 'wiki__text';
+
+        $edit = jQuery('#' + edid);
         if($edit.length === 0 || $edit.attr('readonly')) {
             return;
         }
@@ -50,7 +66,7 @@ var dw_locktimer = {
      */
     warning: function(){
         dw_locktimer.clear();
-        alert(LANG.willexpire.replace(/\\n/,"\n"));
+        alert(fixtxt(dw_locktimer.msg));
     },
 
     /**
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index f4064efd5a77edcc3789d04013924c4d3cc96930..7f5514f56075f6ddab35c8539c1d9f063f068ee0 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -1,6 +1,3 @@
-/*jslint white: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: false, strict: true, newcap: true, immed: true, sloppy: true, browser: true */
-/*global jQuery, DOKU_BASE, LANG, bind, DokuCookie, opener, confirm*/
-
 /**
  * JavaScript functionality for the media management popup
  *
@@ -22,11 +19,13 @@ var dw_mediamanager = {
     size: false,
     forbidden_opts: {},
 
-    // File list view type
-    view: false,
+    // File list options
+    view_opts: {list: false, sort: false},
 
     layout_width: 0,
-    layout_height: 0,
+
+    // The minimum height of the full-screen mediamanager in px
+    minHeights: {thumbs: 200, rows: 100},
 
     init: function () {
         var $content, $tree;
@@ -67,28 +66,27 @@ var dw_mediamanager = {
                        }});
         $tree.delegate('a', 'click', dw_mediamanager.list);
 
-        dw_mediamanager.set_filelist_view(dw_mediamanager.view, false);
-        jQuery('#mediamanager__form_sort').find('input[type=submit]').hide();
+        // Init view property
+        dw_mediamanager.set_fileview_list();
+
+        dw_mediamanager.init_options();
+
         dw_mediamanager.image_diff();
         dw_mediamanager.init_ajax_uploader();
 
         // changing opened tab in the file list panel
-        jQuery('#mediamanager__layout_list').delegate('#mediamanager__tabs_files a', 'click', dw_mediamanager.list)
-            // changing type of the file list view
-            .delegate('#mediamanager__tabs_list a', 'click', dw_mediamanager.list_view)
+        jQuery('#mediamanager__page div.filelist').delegate('ul.tabs a', 'click', dw_mediamanager.list)
             // loading file details
-            .delegate('#mediamanager__file_list a', 'click', dw_mediamanager.details)
+            .delegate('div.panelContent a', 'click', dw_mediamanager.details)
             // search form
             .delegate('#dw__mediasearch', 'submit', dw_mediamanager.list)
             // "upload as" field autofill
             .delegate('#upload__file', 'change', dw_mediamanager.suggest)
-            // sort type selection
-            .delegate('#mediamanager__form_sort select', 'change', dw_mediamanager.list)
             // uploaded images
             .delegate('.qq-upload-file a', 'click', dw_mediamanager.details);
 
         // changing opened tab in the file details panel
-        jQuery('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', dw_mediamanager.details)
+        jQuery('#mediamanager__page div.file').delegate('ul.tabs a', 'click', dw_mediamanager.details)
             // "update new version" button
             .delegate('#mediamanager__btn_update', 'submit', dw_mediamanager.list)
             // revisions form
@@ -103,6 +101,42 @@ var dw_mediamanager = {
             // less/more recent buttons in media revisions form
             .delegate('.btn_newer, .btn_older', 'submit', dw_mediamanager.details);
 
+        dw_mediamanager.update_resizable();
+        dw_mediamanager.layout_width = jQuery("#mediamanager__page").width();
+        jQuery(window).resize(dw_mediamanager.window_resize);
+    },
+
+    init_options: function () {
+        var $options = jQuery('div.filelist div.panelHeader form.options'),
+            $listType, $sortBy, $both;
+        if ($options.length === 0) {
+            return;
+        }
+
+        $listType = $options.find('li.listType');
+        $sortBy = $options.find('li.sortBy');
+        $both = $listType.add($sortBy);
+
+        // Remove the submit button
+        $options.find('input[type=submit]').parent().hide();
+
+        // Prepare HTML for jQuery UI buttonset
+        $both.find('label').each(function () {
+            var $this = jQuery(this);
+            $this.children('input').appendTo($this.parent());
+        });
+
+        // Init buttonset
+        $both.buttonset();
+
+        // Change handlers
+        $listType.children('input').change(function (event) {
+            dw_mediamanager.set_fileview_list();
+        });
+        $sortBy.children('input').change(function (event) {
+            dw_mediamanager.set_fileview_sort();
+            dw_mediamanager.list.call(this, event);
+        });
     },
 
     /**
@@ -160,8 +194,7 @@ var dw_mediamanager = {
         });
 
         // insert button
-        $insp = jQuery(document.createElement('p'))
-                .addClass('btnlbl');
+        $insp = jQuery(document.createElement('p'));
         dw_mediamanager.$popup.append($insp);
 
         $insbtn = jQuery(document.createElement('input'))
@@ -266,56 +299,42 @@ var dw_mediamanager = {
      */
     list: function (event) {
         var $link, $content, params;
-        $link = jQuery(this);
 
-        event.preventDefault();
+        if (event) {
+            event.preventDefault();
+        }
 
         jQuery('div.success, div.info, div.error, div.notify').remove();
 
-        if (document.getElementById('media__content')) {
-            //popup
-            $content = jQuery('#media__content');
-        } else {
+        $link = jQuery(this);
+
+        //popup
+        $content = jQuery('#media__content');
+
+        if ($content.length === 0) {
             //fullscreen media manager
-            $content = jQuery('#mediamanager__layout_list');
+            $content = jQuery('div.filelist');
 
             if ($link.hasClass('idx_dir')) {
                 //changing namespace
-                jQuery('#mediamanager__layout_detail').empty();
-                jQuery('#media__tree .selected').each(function(){
-                    jQuery(this).removeClass('selected');
-                });
+                jQuery('div.file').empty();
+                jQuery('div.namespaces .selected').removeClass('selected');
                 $link.addClass('selected');
             }
         }
 
-        params = '';
+        params = 'call=medialist&';
 
         if ($link[0].search) {
-            params = $link[0].search.substr(1)+'&call=medialist';
-        } else if ($link[0].action) {
-            params = dw_mediamanager.form_params($link)+'&call=medialist';
-        } else if ($link.parents('form')) {
-            params = dw_mediamanager.form_params($link.parents('form'))+'&call=medialist';
-
-            if ($link.parents('form')[0].id == 'mediamanager__form_sort') {
-                DokuCookie.setValue('sort', $link[0].value);
-                params += '&q=' + jQuery('#mediamanager__sort_textfield').val();
-                params += '&mediado=searchlist';
-            }
+            params += $link[0].search.substr(1);
+        } else if ($link.is('form')) {
+            params += dw_mediamanager.form_params($link);
+        } else if ($link.closest('form').length > 0) {
+            params += dw_mediamanager.form_params($link.closest('form'));
         }
 
         // fetch the subtree
         dw_mediamanager.update_content($content, params);
-
-        if (document.getElementById('media__content')) {
-            //popup
-            $content = jQuery('#media__content');
-            $content.html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />');
-        } else {
-            //fullscreen media manager
-            jQuery('.scroll-container', $content).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />');
-        }
     },
 
      /**
@@ -325,49 +344,41 @@ var dw_mediamanager = {
      */
     form_params: function ($form) {
         if (!$form.length) return;
-        var elements = $form.serialize();
         var action = '';
         var i = $form[0].action.indexOf('?');
         if (i >= 0) action = $form[0].action.substr(i+1);
-        return elements+'&'+action;
+        return action+'&'+$form.serialize();
     },
 
-     /**
-     * Changes view of media files list
-     *
-     * @author Kate Arzamastseva <pshns@ukr.net>
-     */
-    list_view: function (event) {
-        var $link, $content;
-        $link = jQuery(this);
-
-        event.preventDefault();
+    set_fileview_list: function (new_type) {
+        dw_mediamanager.set_fileview_opt(['list', 'listType', function (new_type) {
+            jQuery('div.filelist div.panelContent ul')
+               .toggleClass('rows', new_type === 'rows')
+               .toggleClass('thumbs', new_type === 'thumbs');
+        }], new_type);
 
-        $content = jQuery('#mediamanager__file_list');
+        // FIXME: Move to onchange handler (opt[2])?
+        dw_mediamanager.resize();
+    },
 
-        if ($link[0].id == 'mediamanager__link_thumbs') {
-            dw_mediamanager.set_filelist_view('thumbs', true);
+    set_fileview_sort: function (new_sort) {
+        dw_mediamanager.set_fileview_opt(['sort', 'sortBy', function (new_sort) {
+            // FIXME
+        }], new_sort);
+    },
 
-        } else if ($link[0].id == 'mediamanager__link_list') {
-            dw_mediamanager.set_filelist_view('list', true);
+    set_fileview_opt: function (opt, new_val) {
+        if (typeof new_val === 'undefined') {
+            new_val = jQuery('form.options li.' + opt[1] + ' input')
+                        .filter(':checked').val();
         }
-    },
 
-    set_filelist_view: function (type, cookies) {
-        var $content = jQuery('#mediamanager__file_list');
-        if (!type) type = DokuCookie.getValue('view');
+        if (new_val !== dw_mediamanager.view_opts[opt[0]]) {
+            opt[2](new_val);
 
-        if (type == 'thumbs') {
-            $content.removeClass('mediamanager-list');
-            $content.addClass('mediamanager-thumbs');
-            if (cookies) DokuCookie.setValue('view', 'thumbs');
-            dw_mediamanager.view = 'thumbs';
+            DokuCookie.setValue(opt[0], new_val);
 
-        } else if (type == 'list') {
-            $content.removeClass('mediamanager-thumbs');
-            $content.addClass('mediamanager-list');
-            if (cookies) DokuCookie.setValue('view', 'list');
-            dw_mediamanager.view = 'list';
+            dw_mediamanager.view_opts[opt[0]] = new_val;
         }
     },
 
@@ -379,43 +390,46 @@ var dw_mediamanager = {
     details: function (event) {
         var $link, $content, params, update_list;
         $link = jQuery(this);
-
         event.preventDefault();
 
         jQuery('div.success, div.info, div.error, div.notify').remove();
 
-        if ($link[0].id == 'mediamanager__btn_delete' && !confirm(LANG['del_confirm'])) return false;
-        if ($link[0].id == 'mediamanager__btn_restore' && !confirm(LANG['restore_confirm'])) return false;
+        if ($link[0].id == 'mediamanager__btn_delete' && !confirm(LANG.del_confirm)) {
+            return false;
+        }
+        if ($link[0].id == 'mediamanager__btn_restore' && !confirm(LANG.restore_confirm)) {
+            return false;
+        }
 
-        $content = jQuery('#mediamanager__layout_detail');
-        params = '';
+        $content = jQuery('div.file');
+        params = 'call=mediadetails&';
 
         if ($link[0].search) {
-            params = $link[0].search.substr(1)+'&call=mediadetails';
-        } else if ($link[0].action) {
-            params = dw_mediamanager.form_params($link)+'&call=mediadetails';
-        } else if ($link.parents('form')) {
-            params = dw_mediamanager.form_params($link.parents('form'))+'&call=mediadetails';
+            params += $link[0].search.substr(1);
+        } else if ($link.is('form')) {
+            params += dw_mediamanager.form_params($link);
+        } else if ($link.closest('form').length > 0) {
+            params += dw_mediamanager.form_params($link.closest('form'));
         }
 
-        update_list = ($link[0].id == 'mediamanager__btn_delete' || $link[0].id == 'mediamanager__btn_restore');
-        dw_mediamanager.update_content($content, params, update_list);
+        update_list = ($link[0].id == 'mediamanager__btn_delete' ||
+                       $link[0].id == 'mediamanager__btn_restore');
 
-        if (jQuery('.scroll-container', $content).length) {
-            jQuery('.scroll-container', $content).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />');
-        } else {
-            jQuery($content).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />');
-        }
+        dw_mediamanager.update_content($content, params, update_list);
     },
 
     update_content: function ($content, params, update_list) {
+        var $container;
+
         jQuery.post(
             DOKU_BASE + 'lib/exe/ajax.php',
             params,
             function (data) {
-                jQuery('.ui-resizable').each(function(){
-                    jQuery(this).resizable('destroy');
-                });
+                dw_mediamanager.$resizables().resizable('destroy');
+
+                if (update_list) {
+                    dw_mediamanager.list.call(jQuery('input[value="Apply"]')[0]);
+                }
 
                 $content.html(data);
 
@@ -424,128 +438,101 @@ var dw_mediamanager = {
 
                 dw_mediamanager.update_resizable();
                 dw_behaviour.revisionBoxHandler();
-                jQuery('#mediamanager__form_sort').find('input[type=submit]').hide();
-                dw_mediamanager.set_filelist_view(dw_mediamanager.view, false);
+
+                // Make sure that the list view style stays the same
+                dw_mediamanager.set_fileview_list(dw_mediamanager.view_opts.list);
+
                 dw_mediamanager.image_diff();
                 dw_mediamanager.init_ajax_uploader();
+                dw_mediamanager.init_options();
 
-                if (update_list) {
-                    var $link1, $content1, params1;
-                    $link1 = jQuery('a.files');
-                    params1 = $link1[0].search.substr(1)+'&call=medialist';
-                    $content1 = jQuery('#mediamanager__layout_list');
-                    dw_mediamanager.update_content($content1, params1);
-                    jQuery('.scroll-container', $content1).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />');
-                }
             },
             'html'
         );
+        $container = $content.find('div.panelContent');
+        if ($container.length === 0) {
+            $container = $content;
+        }
+        $container.html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />');
     },
 
     window_resize: function () {
-        if (jQuery('#mediamanager__layout').width() == dw_mediamanager.layout_width) {
-            return;
-        }
-
-        dw_mediamanager.layout_width = jQuery('#mediamanager__layout').width();
-        $r = jQuery("#mediamanager__layout .layout-resizable, #mediamanager__layout .layout");
-
-        var w = 0, wSum = 0, mCount = 0, mArray = [];
-        $r.each(function() {
-            w = jQuery(this).width();
-            if (w == parseFloat(jQuery(this).css("min-width"))) {
-                wSum += w;
-            } else {
-                mArray[mCount] = jQuery(this);
-                mCount++;
-            }
-        });
-
-        if (mCount > 0) {
-            var width = (0.95 * jQuery('#mediamanager__layout').width() - wSum - 30);
-            wSum = 0;
-            for(var i = 0; i < mArray.length; i++) {
-                wSum += mArray[i].width();
-            }
-            for(var i = 0; i < mArray.length; i++) {
-                w = mArray[i].width();
-                w = 100*w / wSum;
-                mArray[i].width(width*w/100);
-            }
-        }
-
-        $r.each(function() {
-            w = jQuery(this).width();
-            w = (100 * w / jQuery('#mediamanager__layout').width());
-            w += "%";
-            jQuery(this).width(w);
-        });
-
-        var windowHeight = jQuery(window).height();
-        var height = windowHeight - 300;
-        if (layout_height < height) {
-            layout_height = height;
-            jQuery('#mediamanager__layout .scroll-container').each(function (i) {
-                jQuery(this).height(height);
-            });
-            $resizable.each(function() {
-                jQuery(this).height(height+100);
-            });
-        }
+        dw_mediamanager.resize();
 
         dw_mediamanager.opacity_slider();
         dw_mediamanager.portions_slider();
     },
 
+    $resizables: function () {
+        return jQuery('#mediamanager__page').find('div.namespaces, div.filelist');
+    },
+
     /**
      * Updates mediamanager layout
      *
      * @author Kate Arzamastseva <pshns@ukr.net>
      */
     update_resizable: function () {
-        $resizable = jQuery("#mediamanager__layout .layout-resizable");
+        $resizables = dw_mediamanager.$resizables();
 
-        $resizable.resizable({ handles: 'e' ,
+        $resizables.resizable({
+            handles: 'e',
             resize: function(event, ui){
-                var w = 0;
-                $resizable.each(function() {
-                    w += jQuery(this).width();
-                });
-                wSum = w + parseFloat(jQuery('#mediamanager__layout_detail').css("min-width"));
-
-                // max width of resizable column
-                var maxWidth = 0.95 * jQuery('#mediamanager__layout').width() - wSum + jQuery(this).width() - 30;
-                $resizable.resizable( "option", "maxWidth", maxWidth );
-
-                // percentage width of the first two columns
-                var wLeft = ( 100*(w+30) / jQuery('#mediamanager__layout').width() );
-
-                // width of the third column
-                var wRight = 95-wLeft;
-                wRight += "%";
-                jQuery('#mediamanager__layout_detail').width(wRight);
-
-                $resizable.each(function() {
-                    w = jQuery(this).width();
-                    w = (100 * w / jQuery('#mediamanager__layout').width());
-                    w += "%";
-                    jQuery(this).width(w);
+                var widthFull = jQuery('#mediamanager__page').width();
+                var widthResizables = 0;
+                $resizables.each(function() {
+                    widthResizables += jQuery(this).width();
                 });
+                var $filePanel = jQuery('#mediamanager__page div.panel.file');
+
+                // set max width of resizable column
+                var widthOtherResizable = widthResizables - jQuery(this).width();
+                var minWidthNonResizable = parseFloat($filePanel.css("min-width"));
+                var maxWidth = widthFull - (widthOtherResizable + minWidthNonResizable);
+                $resizables.resizable( "option", "maxWidth", maxWidth );
+
+                // width of file panel in % = 100% - width of resizables in % 
+                // this calculates with 99.99 and not 100 to overcome rounding errors
+                var relWidthNonResizable = 99.99 - (100 * widthResizables / widthFull);
+                // set width of file panel
+                $filePanel.width(relWidthNonResizable+'%');
+
+                // FIXME: please fix without browser sniffing
+                if (!jQuery.browser.webkit) {
+                    $resizables.each(function() {
+                        w = jQuery(this).width();
+                        w = (99.99 * w / widthFull);
+                        w += "%";
+                        jQuery(this).width(w);
+                    });
+                }
 
                 dw_mediamanager.opacity_slider();
                 dw_mediamanager.portions_slider();
             }
         });
 
-        var windowHeight = jQuery(window).height();
-        var height = windowHeight - 300;
-        layout_height = height;
-        jQuery('#mediamanager__layout .scroll-container').each(function (i) {
-            jQuery(this).height(height);
-        });
-        $resizable.each(function() {
-            jQuery(this).height(height+100);
-        });
+        dw_mediamanager.resize();
+    },
+
+    resize: function () {
+        var $contents = jQuery('#mediamanager__page div.panelContent'),
+            height = jQuery(window).height() - jQuery(document.body).height() +
+                      Math.max.apply(null, jQuery.map($contents, function (v) {
+            return jQuery(v).height();
+        }));
+
+        // If the screen is too small, don’t try to resize
+        if (height < dw_mediamanager.minHeights[dw_mediamanager.view_opts.list]) {
+            $contents.add(dw_mediamanager.$resizables()).height('auto');
+        } else {
+            $contents.height(height);
+            dw_mediamanager.$resizables().each(function () {
+                var $this = jQuery(this);
+                $this.height(height + $this.find('div.panelContent').offset().top -
+                             $this.offset().top);
+            });
+        }
     },
 
      /**
@@ -560,7 +547,7 @@ var dw_mediamanager = {
         if (!$form.length) return;
 
         $label = jQuery(document.createElement('label'));
-        $label.append('<span>'+LANG.media_diff+'</span>');
+        $label.append('<span>'+LANG.media_diff+'</span> ');
         $select = jQuery(document.createElement('select'))
          .attr('id', 'mediamanager__difftype')
          .attr('name', 'difftype')
@@ -571,11 +558,11 @@ var dw_mediamanager = {
         $label.append($select);
         $form.append($label);
 
-    	// for IE
-    	var select = document.getElementById('mediamanager__difftype');
-    	select.options[0].text = LANG.media_diff_both;
-    	select.options[1].text = LANG.media_diff_opacity;
-    	select.options[2].text = LANG.media_diff_portions;
+        // for IE
+        var select = document.getElementById('mediamanager__difftype');
+        select.options[0].text = LANG.media_diff_both;
+        select.options[1].text = LANG.media_diff_opacity;
+        select.options[2].text = LANG.media_diff_portions;
     },
 
     /**
@@ -587,7 +574,7 @@ var dw_mediamanager = {
         $select = jQuery('#mediamanager__difftype');
         $content = jQuery('#mediamanager__diff');
 
-        params = dw_mediamanager.form_params($select.parents('form'))+'&call=mediadiff';
+        params = dw_mediamanager.form_params($select.closest('form'))+'&call=mediadiff';
         jQuery.post(
             DOKU_BASE + 'lib/exe/ajax.php',
             params,
@@ -606,10 +593,10 @@ var dw_mediamanager = {
      * @author Kate Arzamastseva <pshns@ukr.net>
      */
     opacity_slider: function () {
-        var $slider = jQuery( "#mediamanager__opacity_slider" );
+        var $slider = jQuery( "#mediamanager__diff div.slider" );
         if (!$slider.length) return;
 
-        var $image = jQuery('#mediamanager__diff_opacity_image1 img');
+        var $image = jQuery('#mediamanager__diff div.imageDiff.opacity div.image1 img');
         if (!$image.length) return;
         $slider.width($image.width()-20);
 
@@ -619,7 +606,7 @@ var dw_mediamanager = {
         $slider.slider("option", "step", 0.001);
         $slider.slider("option", "value", 0.5);
         $slider.bind("slide", function(event, ui) {
-            jQuery('#mediamanager__diff_opacity_image2').css({ opacity: $slider.slider("option", "value")});
+            jQuery('#mediamanager__diff div.imageDiff.opacity div.image2 img').css({ opacity: $slider.slider("option", "value")});
         });
     },
 
@@ -629,11 +616,11 @@ var dw_mediamanager = {
      * @author Kate Arzamastseva <pshns@ukr.net>
      */
     portions_slider: function () {
-        var $image1 = jQuery('#mediamanager__diff_portions_image1 img');
-        var $image2 = jQuery('#mediamanager__diff_portions_image2 img');
+        var $image1 = jQuery('#mediamanager__diff div.imageDiff.portions div.image1 img');
+        var $image2 = jQuery('#mediamanager__diff div.imageDiff.portions div.image2 img');
         if (!$image1.length || !$image2.length) return;
 
-        var $div = jQuery("#mediamanager__diff_layout");
+        var $div = jQuery("#mediamanager__diff");
         if (!$div.length) return;
 
         $div.width('100%');
@@ -649,7 +636,7 @@ var dw_mediamanager = {
         $image2.width($image1.width());
         $image1.width($image1.width());
 
-        var $slider = jQuery("#mediamanager__portions_slider");
+        var $slider = jQuery("#mediamanager__diff div.slider");
         if (!$slider.length) return;
         $slider.width($image1.width()-20);
 
@@ -659,16 +646,21 @@ var dw_mediamanager = {
         $slider.slider("option", "step", 1);
         $slider.slider("option", "value", 50);
         $slider.bind("slide", function(event, ui) {
-            jQuery('#mediamanager__diff_portions_image2').css({ width: $slider.slider("option", "value")+'%'});
+            jQuery('#mediamanager__diff div.imageDiff.portions div.image2').css({ width: $slider.slider("option", "value")+'%'});
         });
     },
 
+    /**
+     * Parse a URI query string to an associative array
+     *
+     * @author Kate Arzamastseva <pshns@ukr.net>
+     */
     params_toarray: function (str) {
         var vars = [], hash;
         var hashes = str.split('&');
         for(var i = 0; i < hashes.length; i++) {
             hash = hashes[i].split('=');
-            vars[hash[0]] = hash[1];
+            vars[decodeURIComponent(hash[0])] = decodeURIComponent(hash[1]);
         }
         return vars;
     },
@@ -828,33 +820,6 @@ var dw_mediamanager = {
         }
     },
 
-    initFlashUpload: function () {
-        var $oform, $oflash;
-        if(!hasFlash(8)) {
-            return;
-        }
-
-        $oform  = jQuery('#dw__upload');
-        $oflash = jQuery('#dw__flashupload');
-
-        if(!$oform.length || !$oflash.length) {
-            return;
-        }
-
-        jQuery(document.createElement('img'))
-            .attr('src', DOKU_BASE+'lib/images/multiupload.png')
-            .attr('title', LANG.mu_btn)
-            .attr('alt', LANG.mu_btn)
-            .css('cursor', 'pointer')
-            .click(
-                function () {
-                    $oform.hide();
-                    $oflash.show();
-                }
-            )
-            .appendTo($oform);
-    },
-
     /**
      * Sets the visibility of the image details accordingly to the
      * chosen hide state
@@ -966,10 +931,4 @@ function hasFlash(version){
     return ver >= version;
 }
 
-jQuery(document).ready(function() {
-    dw_mediamanager.update_resizable();
-    dw_mediamanager.layout_width = jQuery("#mediamanager__layout").width();
-    jQuery(window).resize(dw_mediamanager.window_resize);
-});
-
 jQuery(dw_mediamanager.init);
diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js
index f83b7a5a118267583deace6fa5dfb1786ea19e1d..c7128b9e34f07dfb1fe6b5241bd835c4a5082483 100644
--- a/lib/scripts/qsearch.js
+++ b/lib/scripts/qsearch.js
@@ -1,6 +1,3 @@
-/*jslint sloppy: true, plusplus: true, continue: true */
-/*global jQuery, DOKU_BASE, window, document, substr_replace */
-
 /**
  * AJAX functions for the pagename quicksearch
  *
diff --git a/lib/scripts/script.js b/lib/scripts/script.js
index 8db223d612019bc7e9d710ab54b7cd006457cbd3..5fddb0431de209770ab0ef3900065f51cf18629c 100644
--- a/lib/scripts/script.js
+++ b/lib/scripts/script.js
@@ -48,8 +48,7 @@ function showLoadBar(){
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function hideLoadBar(id){
-  obj = $(id);
-  if(obj) obj.style.display="none";
+  jQuery('#' + id).hide();
 }
 
 /**
@@ -59,4 +58,6 @@ function closePopups(){
     jQuery('div.JSpopup').hide();
 }
 
-
+jQuery(function () {
+    jQuery(document).click(closePopups);
+});
diff --git a/lib/scripts/textselection.js b/lib/scripts/textselection.js
index 742338785e7d2e236a5acf1c85d797dad02ff1bd..bd80e9341703253b8131a51c2a6e1ad9ac561ac0 100644
--- a/lib/scripts/textselection.js
+++ b/lib/scripts/textselection.js
@@ -22,8 +22,7 @@ function selection_class(){
     };
 
     this.getText = function(){
-        if(!this.obj) return '';
-        return this.obj.value.substring(this.start,this.end);
+        return (!this.obj) ? '' : this.obj.value.substring(this.start,this.end);
     };
 }
 
@@ -188,7 +187,7 @@ function pasteText(selection,text,opts){
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function insertTags(textAreaID, tagOpen, tagClose, sampleText){
-    var txtarea = $(textAreaID);
+    var txtarea = jQuery('#' + textAreaID)[0];
 
     var selection = getSelection(txtarea);
     var text = selection.getText();
@@ -227,7 +226,7 @@ function insertTags(textAreaID, tagOpen, tagClose, sampleText){
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function insertAtCarret(textAreaID, text){
-    var txtarea = $(textAreaID);
+    var txtarea = jQuery('#' + textAreaID)[0];
     var selection = getSelection(txtarea);
     pasteText(selection,text,{nosel: true});
 }
diff --git a/lib/scripts/toolbar.js b/lib/scripts/toolbar.js
index 2306ef5db6a7b8f0e9694d605eafdccb308c5d65..04d30c1a65a31368e1ae456bc02e890b138c2d20 100644
--- a/lib/scripts/toolbar.js
+++ b/lib/scripts/toolbar.js
@@ -1,4 +1,3 @@
-
 // used to identify pickers
 var pickercounter=0;
 
@@ -12,62 +11,55 @@ var pickercounter=0;
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function initToolbar(tbid,edid,tb, allowblock){
-    var $ = jQuery;
+    var $toolbar, $edit;
     if (typeof tbid == 'string') {
-        var toolbar = $('#' + tbid);
+        $toolbar = jQuery('#' + tbid);
     } else {
-        var toolbar = $(tbid);
+        $toolbar = jQuery(tbid);
     }
 
-    if(toolbar.length == 0) return;
-
-    var edit = $('#' + edid);
-    if(edit.length == 0) return;
+    $edit = jQuery('#' + edid);
 
-    if(edit.attr('readOnly')) return;
+    if ($toolbar.length == 0 || $edit.length == 0 || $edit.attr('readOnly')) {
+        return;
+    }
 
     if (typeof allowblock === 'undefined') {
         allowblock = true;
     }
 
     //empty the toolbar area:
-    toolbar.html('');
-
-    var cnt = tb.length;
+    $toolbar.html('');
 
-    for(var i=0; i<cnt; i++){
-        if (!allowblock && tb[i].block === true) {
-            continue;
+    jQuery.each(tb, function (k, val) {
+        if (!tb.hasOwnProperty(k) || (!allowblock && val.block === true)) {
+            return;
         }
-        var actionFunc;
+        var actionFunc, $btn;
 
         // create new button (jQuery object)
-        var btn = $(createToolButton(tb[i]['icon'],
-                                   tb[i]['title'],
-                                   tb[i]['key'],
-                                   tb[i]['id'],
-                                   tb[i]['class']));
+        $btn = jQuery(createToolButton(val.icon, val.title, val.key, val.id,
+                                       val['class']));
 
         // type is a tb function -> assign it as onclick
-        actionFunc = 'tb_'+tb[i]['type'];
-        if( $.isFunction(window[actionFunc]) ){
-            btn.bind('click', bind(window[actionFunc],btn,tb[i],edid) );
-            toolbar.append(btn);
-            continue;
+        actionFunc = 'tb_'+val.type;
+        if( jQuery.isFunction(window[actionFunc]) ){
+            $btn.bind('click', bind(window[actionFunc],$btn,val,edid) );
+            $toolbar.append($btn);
+            return;
         }
 
         // type is a init function -> execute it
-        actionFunc = 'addBtnAction'+tb[i]['type'].charAt(0).toUpperCase()+tb[i]['type'].substring(1);
-        if( $.isFunction(window[actionFunc]) ){
-            if(window[actionFunc](btn, tb[i], edid)){
-                toolbar.append(btn);
+        actionFunc = 'addBtnAction'+val.type.charAt(0).toUpperCase()+val.type.substring(1);
+        if( jQuery.isFunction(window[actionFunc]) ){
+            if(window[actionFunc]($btn, val, edid)){
+                $toolbar.append($btn);
             }
-            continue;
+            return;
         }
 
-        alert('unknown toolbar type: '+tb[i]['type']+'  '+actionFunc);
-    } // end for
-
+        alert('unknown toolbar type: '+val.type+'  '+actionFunc);
+    });
 }
 
 /**
@@ -80,13 +72,10 @@ function initToolbar(tbid,edid,tb, allowblock){
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function tb_format(btn, props, edid) {
-    var sample = props['title'];
-    if(props['sample']){
-        sample = props['sample'];
-    }
+    var sample = props.title || props.sample;
     insertTags(edid,
-               fixtxt(props['open']),
-               fixtxt(props['close']),
+               fixtxt(props.open),
+               fixtxt(props.close),
                fixtxt(sample));
     pickerClose();
     return false;
@@ -105,30 +94,27 @@ function tb_format(btn, props, edid) {
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function tb_formatln(btn, props, edid) {
-    var sample = props['title'];
-    if(props['sample']){
-        sample = props['sample'];
-    }
-    sample = fixtxt(sample);
+    var sample = props.title || props.sample,
+        opts,
+        selection = getSelection(jQuery('#'+edid)[0]);
 
-    props['open']  = fixtxt(props['open']);
-    props['close'] = fixtxt(props['close']);
+    sample = fixtxt(sample);
+    props.open  = fixtxt(props.open);
+    props.close = fixtxt(props.close);
 
     // is something selected?
-    var opts;
-    var selection = getSelection($(edid));
     if(selection.getLength()){
         sample = selection.getText();
         opts = {nosel: true};
     }else{
         opts = {
-            startofs: props['open'].length,
-            endofs: props['close'].length
+            startofs: props.open.length,
+            endofs: props.close.length
         };
     }
 
-    sample = sample.split("\n").join(props['close']+"\n"+props['open']);
-    sample = props['open']+sample+props['close'];
+    sample = sample.split("\n").join(props.close+"\n"+props.open);
+    sample = props.open+sample+props.close;
 
     pasteText(selection,sample,opts);
 
@@ -146,7 +132,7 @@ function tb_formatln(btn, props, edid) {
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function tb_insert(btn, props, edid) {
-    insertAtCarret(edid,fixtxt(props['insert']));
+    insertAtCarret(edid,fixtxt(props.insert));
     pickerClose();
     return false;
 }
@@ -161,9 +147,9 @@ function tb_insert(btn, props, edid) {
  */
 function tb_mediapopup(btn, props, edid) {
     window.open(
-        DOKU_BASE+props['url']+encodeURIComponent(NS)+'&edid='+encodeURIComponent(edid),
-        props['name'],
-        props['options']);
+        DOKU_BASE+props.url+encodeURIComponent(NS)+'&edid='+encodeURIComponent(edid),
+        props.name,
+        props.options);
     return false;
 }
 
@@ -178,16 +164,16 @@ function tb_mediapopup(btn, props, edid) {
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function tb_autohead(btn, props, edid){
-    var lvl = currentHeadlineLevel(edid);
+    var lvl = currentHeadlineLevel(edid),
+        tags;
 
     // determine new level
-    lvl += props['mod'];
+    lvl += props.mod;
     if(lvl < 1) lvl = 1;
     if(lvl > 5) lvl = 5;
 
-    var tags = '=';
-    for(var i=0; i<=5-lvl; i++) tags += '=';
-    insertTags(edid, tags+' ', ' '+tags+"\n", props['text']);
+    tags = (new Array(8 - lvl)).join('=');
+    insertTags(edid, tags+' ', ' '+tags+"\n", props.text);
     pickerClose();
     return false;
 }
@@ -196,19 +182,19 @@ function tb_autohead(btn, props, edid){
 /**
  * Add button action for picker buttons and create picker element
  *
- * @param  DOMElement btn   Button element to add the action to
+ * @param  jQuery      btn   Button element to add the action to
  * @param  array      props Associative array of button properties
  * @param  string     edid  ID of the editor textarea
  * @return boolean    If button should be appended
  * @author Gabriel Birke <birke@d-scribe.de>
  */
-function addBtnActionPicker(btn, props, edid) {
+function addBtnActionPicker($btn, props, edid) {
     var pickerid = 'picker'+(pickercounter++);
     createPicker(pickerid, props, edid);
 
-    btn.click(
+    $btn.click(
         function() {
-            pickerToggle(pickerid,btn);
+            pickerToggle(pickerid,$btn);
             return false;
         }
     );
@@ -240,20 +226,11 @@ function addBtnActionLinkwiz(btn, props, edid) {
  *
  * @author Andreas Gohr <andi@splitbrain.org>
  */
-function pickerToggle(pickerid,btn){
-    var picker = jQuery('#' + pickerid);
-    if (picker.css('marginLeft') == '-10000px'){
-        var x = findPosX(btn[0]);
-        var y = findPosY(btn[0]);
-
-        picker.css('left',(x+3)+'px')
-            .css('top', (y+btn[0].offsetHeight+3)+'px')
-            .css('marginLeft', '0px')
-            .css('marginTop', '0px');
-    } else {
-        picker.css('marginLeft', '-10000px')
-            .css('marginTop', '-10000px');
-    }
+function pickerToggle(pickerid,$btn){
+    var $picker = jQuery('#' + pickerid),
+        pos = $btn.offset();
+    $picker.toggleClass('a11y')
+           .offset({left: pos.left+3, top: pos.top+$btn[0].offsetHeight+3});
 }
 
 /**
@@ -262,11 +239,7 @@ function pickerToggle(pickerid,btn){
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function pickerClose(){
-    var pobjs = jQuery('#picker');
-    for(var i=0; i<pobjs.length; i++){
-        pobjs[i].css('marginLeft', '-10000px')
-            .css('marginTop', '-10000px');
-    }
+    jQuery('.picker').addClass('a11y');
 }
 
 
@@ -277,3 +250,6 @@ function fixtxt(str){
     return str.replace(/\\n/g,"\n");
 }
 
+jQuery(function () {
+    initToolbar('tool__bar','wiki__text',toolbar);
+});
diff --git a/lib/scripts/tree.js b/lib/scripts/tree.js
index 98d3f55d4c22baca99693847c65a8b843a4d1f23..96763053d87d04d52a87be74c3c748a8a915963a 100644
--- a/lib/scripts/tree.js
+++ b/lib/scripts/tree.js
@@ -1,6 +1,3 @@
-/*jslint white: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: false, newcap: true, immed: true, sloppy: true */
-/*global jQuery, window, DOKU_BASE, DEPRECATED, bind*/
-
 jQuery.fn.dw_tree = function(overrides) {
     var dw_tree = {
 
diff --git a/lib/styles/all.css b/lib/styles/all.css
index 915ced5d635369cfaa94e5ed6bec4a8256bd98b0..5d7eb7d141467f6ed3b7ff0811f51314ae4b92ed 100644
--- a/lib/styles/all.css
+++ b/lib/styles/all.css
@@ -11,6 +11,22 @@ div.clearer {
     overflow: hidden;
 }
 
+/* one of the many clearfix versions */
+.group {
+    display: inline-block;
+}
+.group {
+    display: block;
+}
+.group:before,
+.group:after {
+    content: "";
+    display: table;
+}
+.group:after {
+    clear: both;
+}
+
 div.no {
     display: inline;
     margin: 0;
diff --git a/lib/styles/screen.css b/lib/styles/screen.css
index 80a161f1911bbc4a0d3a699912d92637e226fc80..101ed35295684ea1f6d6845781ac8b60d1c57202 100644
--- a/lib/styles/screen.css
+++ b/lib/styles/screen.css
@@ -52,16 +52,31 @@ div.notify {
     overflow: hidden;
 }
 
+#link__wiz .ui-dialog-content {
+    padding-left: 0;
+    padding-right: 0;
+}
+
 /* media manager popup toggle buttons */
 
 #media__popup_content button.button {
-    border-style: outset;
+    border: 1px outset;
 }
 
 #media__popup_content button.selected {
     border-style: inset;
 }
 
+/* hide something accessibly
+   (e.g. for screen readers or to keep access keys working) */
+.a11y {
+    position: absolute !important;
+    left: -10000px !important;
+    top: auto !important;
+    width: 1px !important;
+    height: 1px !important;
+    overflow: hidden !important;
+}
 
 /* syntax highlighting code */
 .code .br0  { color: #66cc66; }
@@ -86,4 +101,3 @@ div.notify {
 .code .re4  { color: #009999; }
 .code .st0  { color: #ff0000; }
 .code .sy0  { color: #66cc66; }
-
diff --git a/lib/tpl/default/_fileuploader.css b/lib/tpl/default/_fileuploader.css
index 9e60393a0573e0b4ece85c00633cfe45726a86b4..d06bfd5198963d0c3f311117f3e40fa611e1de67 100644
--- a/lib/tpl/default/_fileuploader.css
+++ b/lib/tpl/default/_fileuploader.css
@@ -1,20 +1,26 @@
+
 .qq-uploader {
     position: relative;
     width: 100%;
 }
 
+.qq-uploader .error {
+    color: #f00;
+    background-color: #fff;
+}
+
+/* select file button */
+
 .qq-upload-button {
     display: inline-block;
     border: 1px solid __border__;
     color: __text__;
-    background-color: __background__;
+    background:  __background__ url(images/buttonshadow.png) repeat-x bottom;
     text-decoration: none;
     font-size: 100%;
     cursor: pointer;
-    margin: 1px;
-    margin-bottom: 5px;
+    margin: 1px 1px 5px;
     padding: 0.125em 0.4em;
-    background:  __background__ url(images/buttonshadow.png) repeat-x bottom;
 }
 
 * html .qq-upload-button,
@@ -23,9 +29,11 @@
 }
 
 .qq-upload-button-focus {
-    outline: 1px dotted black;
+    outline: 1px dotted;
 }
 
+/* drop area */
+
 .qq-upload-drop-area {
     position: absolute;
     top: 0;
@@ -35,15 +43,16 @@
     min-height: 70px;
     z-index: 2;
     background: __background_neu__;
+    color: __text__;
     text-align: center;
 }
 
 .qq-upload-drop-area span {
-    display:block;
-    position:absolute;
+    display: block;
+    position: absolute;
     top: 50%;
-    width:100%;
-    margin-top:-8px;
+    width: 100%;
+    margin-top: -8px;
     font-size: 120%;
 }
 
@@ -51,28 +60,22 @@
     background: __background_alt__;
 }
 
-.qq-upload-file, .qq-upload-spinner, .qq-upload-size, .qq-upload-cancel, .qq-upload-failed-text {
-    margin-right: 7px;
-}
-
-.qq-upload-spinner {
-    display: inline-block;
-    background: url("../../images/throbber.gif");
-    width: 15px;
-    height: 15px;
-    vertical-align: text-bottom;
-}
+/* list of files to upload */
 
-.qq-upload-size,.qq-upload-cancel {
-    font-size: 85%;
+div.qq-uploader ul {
+    margin: 0;
+    list-style: none;
 }
 
-.qq-upload-failed-text {
-    display:none;
+.qq-uploader li {
+    margin-bottom: 5px;
+    color: __text__;
 }
 
-.qq-upload-fail .qq-upload-failed-text {
-    display:inline;
+.qq-uploader li span,
+.qq-uploader li input,
+.qq-uploader li a {
+    margin-right: 5px;
 }
 
 .qq-upload-file {
@@ -80,27 +83,29 @@
     font-weight: bold;
 }
 
-.qq-upload-file-hidden {
-    display:none;
+.qq-upload-spinner {
+    display: inline-block;
+    background: url("../../images/throbber.gif");
+    width: 15px;
+    height: 15px;
+    vertical-align: text-bottom;
 }
 
+.qq-upload-size,
 .qq-upload-cancel {
-    padding-left: 10px;
+    font-size: 85%;
 }
 
-.qq-uploader .dw__ow {
-    margin-left: 10px;
-    margin-right: 3px;
+.qq-upload-failed-text {
+    display: none;
 }
-
-.qq-uploader .check {
-    line-height: 18px;
+.qq-upload-fail .qq-upload-failed-text {
+    display: inline;
 }
 
-.qq-uploader #mediamanager__upload_button {
-    margin-bottom: 10px;
+.qq-action-container * {
+    vertical-align: middle;
+}
+.qq-overwrite-check input {
+    margin-left: 10px;
 }
-
-.qq-uploader div.li {
-    margin-bottom: 5px;
-}
\ No newline at end of file
diff --git a/lib/tpl/default/_mediamanager.css b/lib/tpl/default/_mediamanager.css
new file mode 100644
index 0000000000000000000000000000000000000000..383a1597c693cd7cc328e6c229386ccf7d272352
--- /dev/null
+++ b/lib/tpl/default/_mediamanager.css
@@ -0,0 +1,429 @@
+
+/*____________ Layout ____________*/
+
+#mediamanager__page h1 {
+    margin: 0 0 .5em;
+}
+
+#mediamanager__page {
+    min-width: 800px;
+    width: 100%;
+    text-align: left;
+}
+
+#mediamanager__page .panel {
+    float: left;
+}
+
+#mediamanager__page .namespaces {
+    width: 15%;
+    min-width: 120px;
+}
+#mediamanager__page .filelist {
+    width: 50%;
+    min-width: 400px;
+}
+#mediamanager__page .file {
+    width: 35%;
+    min-width: 280px;
+}
+
+#mediamanager__page .panelHeader {
+    background-color: __background_alt__;
+    margin: 0 10px 10px 0;
+    padding: 10px 10px 8px;
+    text-align: left;
+    min-height: 20px;
+    overflow: hidden;
+}
+
+#mediamanager__page .panelContent {
+    overflow-y: auto;
+    overflow-x: hidden;
+    padding: 0;
+    margin: 0 10px 10px 0;
+    position: relative;
+}
+
+#mediamanager__page .file .panelHeader,
+#mediamanager__page .file .panelContent {
+    margin-right: 0;
+}
+
+#mediamanager__page .ui-resizable-e {
+    width: 6px;
+    right: 2px;
+    background: transparent url(images/resizecol.png) center center no-repeat;
+}
+#mediamanager__page .ui-resizable-e:hover {
+    background-color: __background_alt__;
+}
+
+/*____________ Namespaces tree ____________*/
+
+#mediamanager__page .namespaces h2 {
+    font-size: 1em;
+    display: inline-block;
+    border-width: 0;
+    padding: .3em .8em;
+    margin: 0 .3em 0 0;
+    border-radius: .5em .5em 0 0;
+    font-weight: normal;
+    background-color: __background_alt__;
+    color: __text__;
+    line-height: 1.5em;
+}
+* html #mediamanager__page .namespaces h2,
+*+html #mediamanager__page .namespaces h2 {
+    display: inline;
+}
+
+#mediamanager__page .namespaces ul {
+    margin-left: .2em;
+    list-style: none;
+}
+#mediamanager__page .namespaces ul ul {
+    margin-left: 1em;
+}
+
+#mediamanager__page .namespaces ul .selected {
+    background-color: __highlight__;
+    font-weight: bold;
+}
+
+/*____________ Panel header ____________*/
+
+#mediamanager__page .panelHeader h3 {
+    float: left;
+    font-weight: normal;
+    font-size: 1em;
+    padding: 0;
+    margin: 0 0 3px;
+}
+
+#mediamanager__page .panelHeader form.options {
+    float: right;
+    margin-top: -3px;
+}
+
+#mediamanager__page .panelHeader ul {
+    list-style: none;
+    margin: 0;
+    padding: 0;
+}
+#mediamanager__page .panelHeader ul li {
+    color: __text__;
+    float: left;
+    line-height: 1;
+    padding-left: 3px;
+}
+
+#mediamanager__page .panelHeader ul li.listType {
+    padding-left: 30px;
+    background: url('../../images/icon-list.png') 3px 1px no-repeat;
+}
+#mediamanager__page .panelHeader ul li.sortBy {
+    padding-left: 30px;
+    background: url('../../images/icon-sort.png') 3px 1px no-repeat;
+}
+
+#mediamanager__page .panelHeader form.options .ui-buttonset label{
+    font-size: 90%;
+    margin-right: -0.4em;
+}
+#mediamanager__page .panelHeader form.options .ui-buttonset .ui-button-text {
+    padding: .4em .7em;
+    line-height: 1;
+}
+
+/*____________ File list ____________*/
+
+#mediamanager__page .filelist ul {
+    padding: 0;
+    margin: 0;
+}
+
+#mediamanager__page .filelist .panelContent ul li:hover {
+    background-color: __background_alt__;
+}
+
+#mediamanager__page .filelist li dt a {
+    vertical-align: middle;
+    display: table-cell;
+    overflow: hidden;
+}
+* html #mediamanager__page .filelist .thumbs li dt a,
+*+html #mediamanager__page .filelist .thumbs li dt a {
+    display: block;
+}
+* html #mediamanager__page .filelist .rows li dt a,
+*+html #mediamanager__page .filelist .rows li dt a {
+    display: inline;
+}
+
+/* thumbs */
+
+#mediamanager__page .filelist .thumbs li {
+    width: 100px;
+    min-height: 130px;
+    display: inline-block;
+    display: -moz-inline-stack;
+    /* the right margin should visually be 10px, but because of its inline-block nature the whitespace inbetween is about 4px more */
+    margin: 0 6px 10px 0;
+    background-color: __background_neu__;
+    color: __text__;
+    padding: 5px;
+    vertical-align: top;
+    text-align: center;
+    position: relative;
+    line-height: 1.2;
+}
+* html #mediamanager__page .filelist .thumbs li,
+*+html #mediamanager__page .filelist .thumbs li {
+    display: inline;
+    zoom: 1;
+}
+
+#mediamanager__page .filelist .thumbs li dt a {
+    width: 100px;
+    height: 90px;
+}
+
+#mediamanager__page .filelist .thumbs li dt a img {
+    max-width: 90px;
+    max-height: 90px;
+}
+
+#mediamanager__page .filelist .thumbs li .name,
+#mediamanager__page .filelist .thumbs li .size,
+#mediamanager__page .filelist .thumbs li .filesize,
+#mediamanager__page .filelist .thumbs li .date {
+    display: block;
+    overflow: hidden;
+    width: 90px;
+    white-space: nowrap;
+}
+#mediamanager__page .filelist .thumbs li .name {
+    padding: 5px 0;
+    font-weight: bold;
+}
+#mediamanager__page .filelist .thumbs li .date {
+    font-style: italic;
+    white-space: normal;
+}
+
+/* rows */
+
+#mediamanager__page .filelist .rows li {
+    list-style: none;
+    display: block;
+    position: relative;
+    max-height: 50px;
+    margin: 0;
+    margin-bottom: 3px;
+    background-color: __background__;
+    color: __text__;
+    overflow: hidden;
+}
+
+#mediamanager__page .filelist .rows li:nth-child(2n+1) {
+    background-color: __background_neu__;
+}
+
+#mediamanager__page .filelist .rows li dt {
+    float: left;
+    width: 10%;
+    height: 40px;
+    text-align: center;
+}
+
+#mediamanager__page .filelist .rows li dt a {
+    width: 100px;
+    height: 40px;
+}
+
+#mediamanager__page .filelist .rows li dt a img {
+    max-width: 40px;
+    max-height: 40px;
+}
+
+#mediamanager__page .filelist .rows li .name,
+#mediamanager__page .filelist .rows li .size,
+#mediamanager__page .filelist .rows li .filesize,
+#mediamanager__page .filelist .rows li .date {
+    overflow: hidden;
+    float: left;
+    margin-left: 1%;
+    white-space: nowrap;
+}
+
+#mediamanager__page .filelist .rows li .name {
+    width: 30%;
+    font-weight: bold;
+}
+#mediamanager__page .filelist .rows li .size,
+#mediamanager__page .filelist .rows li .filesize {
+    width: 15%;
+}
+#mediamanager__page .filelist .rows li .date {
+    width: 20%;
+    font-style: italic;
+    white-space: normal;
+}
+
+/*____________ Upload panel ____________*/
+
+#mediamanager__page div.upload {
+    padding-bottom: 0.5em;
+}
+
+#media__content #mediamanager__uploader {
+    border-bottom: 1px solid __border__;
+    padding-bottom: 0.5em;
+}
+
+/*____________ File preview ____________*/
+
+#mediamanager__page .file ul.actions {
+    text-align: center;
+    margin: 0 0 5px;
+    list-style: none;
+}
+#mediamanager__page .file ul.actions li {
+    display: inline;
+}
+
+#mediamanager__page .file div.image {
+    margin-bottom: 5px;
+    text-align: center;
+}
+
+#mediamanager__page .file div.image img {
+    width: 100%;
+}
+
+#mediamanager__page .file dl {
+}
+#mediamanager__page .file dl dt {
+    font-weight: bold;
+    display: block;
+    background-color: __background_alt__;
+}
+#mediamanager__page .file dl dd {
+    display: block;
+    background-color: __background_neu__;
+}
+
+
+/*____________ Meta data edit form ____________*/
+
+#mediamanager__page form.meta div.row {
+    margin-bottom: 5px;
+}
+
+#mediamanager__page form.meta label span {
+    display: block;
+}
+
+#mediamanager__page form.meta input {
+    width: 50%;
+}
+
+#mediamanager__page form.meta input.button {
+    width: auto;
+}
+
+#mediamanager__page form.meta textarea.edit {
+    height: 6em;
+    width: 95%;
+    min-width: 95%;
+    max-width: 95%;
+}
+
+/*____________ Revisions form ____________*/
+
+#mediamanager__page #page__revisions ul {
+    margin-left: 10px;
+    list-style-type: none;
+}
+
+#mediamanager__page #page__revisions ul li div.li div {
+    font-size: 90%;
+    color: __text_neu__;
+    padding-left: 18px;
+}
+
+#mediamanager__page #page__revisions ul li div.li input {
+    position: relative;
+    top: 1px;
+}
+
+/* File diff */
+
+#mediamanager__diff table {
+    table-layout: fixed;
+}
+
+#mediamanager__diff td,
+#mediamanager__diff th {
+    width: 48%;
+    margin: 0 5px 10px 0;
+    padding: 0;
+    vertical-align: top;
+    text-align: left;
+}
+
+#mediamanager__diff th {
+    font-weight: normal;
+}
+#mediamanager__diff th a {
+    font-weight: bold;
+}
+#mediamanager__diff th span {
+    font-size: 90%;
+}
+
+#mediamanager__diff dl dd strong{
+    background-color: __highlight__;
+    color: __text__;
+    font-weight: normal;
+}
+
+/* Image diff */
+
+#mediamanager__page .file form.diffView {
+    margin-bottom: 10px;
+    display: block;
+}
+
+#mediamanager__diff div.slider {
+    margin: 10px;
+    width: 95%;
+}
+
+#mediamanager__diff .imageDiff {
+    position: relative;
+}
+#mediamanager__diff .imageDiff .image1,
+#mediamanager__diff .imageDiff .image2 {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 97%;
+}
+
+#mediamanager__diff .imageDiff.opacity .image2 {
+    -moz-opacity: 0.5;
+    -khtml-opacity: 0.5;
+    opacity: 0.5;
+}
+
+#mediamanager__diff .imageDiff.portions .image2 {
+    border-right: 1px solid red;
+    overflow: hidden;
+}
+
+#mediamanager__diff .imageDiff img {
+    width: 100%;
+}
+
diff --git a/lib/tpl/default/_mediaoptions.css b/lib/tpl/default/_mediaoptions.css
index 68a5b9fa792eafe7cdec07f874b2e3f5bb170148..81e87aa8e2c9bca89ba93bd905cfe473eb938d0d 100644
--- a/lib/tpl/default/_mediaoptions.css
+++ b/lib/tpl/default/_mediaoptions.css
@@ -1,70 +1,18 @@
-/* --- popup --- */
 
 #media__popup_content p {
-    display:block;
-    line-height:14pt;
-    margin:0.5em;
-}
-
-#media_nolink {
-    padding:4px 0;
+    margin: 0 0 .5em;
 }
 
 #media__popup_content label {
-    float:left;
-    width:9em;
+    float: left;
+    width: 9em;
 }
 
 #media__popup_content .button {
-    margin-left:auto;
-    margin-right:auto;
-}
-
-#media__popup_content .btnlbl {
-    text-align:center;
-}
-
-#media__popup_content .btnlbl input {
-    margin:0 1em;
-}
-
-/* --- display options --- */
-
-#media__linkopts label,
-#media__nolnk {
-	width: 80px;
-	float: left;
-	margin-left: 10px;
-}
-
-#media__linkopts label{
-	line-height: 20px;
-}
-
-#media__nolnk,
-#media__linkopts label.long{
-	margin-bottom: 8px;
-	line-height: 12px;
-}
-
-#media__linkopts label.long{
-	width: 150px;
-	float: none;
+    margin-right: 1px;
+    cursor: pointer;
 }
 
-#media__linkopts br {
-	clear: both;
-}
-
-#media__linkopts select {
-	width: 60px;
-	margin-left: 10px;
-}
-
-#media__linkopts input.edit {
-    width:50px;
-    margin-left:10px;
-}
-#media__linkopts #media__title {
-    width:150px;
+#media__popup_content input.button {
+    margin-left: 9em;
 }
diff --git a/lib/tpl/default/_tabs.css b/lib/tpl/default/_tabs.css
new file mode 100644
index 0000000000000000000000000000000000000000..8bfb676a0ee5ec4a6290e61ce9929b765e08c842
--- /dev/null
+++ b/lib/tpl/default/_tabs.css
@@ -0,0 +1,37 @@
+
+.dokuwiki ul.tabs {
+    padding: 0;
+    margin: 0;
+    overflow: hidden;
+}
+.dokuwiki ul.tabs li {
+    float: left;
+    padding: 0;
+    margin: 0;
+    list-style: none;
+}
+
+.dokuwiki ul.tabs li strong,
+.dokuwiki ul.tabs li a {
+    float: left;
+    padding: .3em .8em;
+    margin: 0 .3em 0 0;
+    background-color: __background_neu__;
+    color: __text__;
+    border-radius: .5em .5em 0 0;
+}
+.dokuwiki ul.tabs li strong {
+    font-weight: normal;
+}
+
+.dokuwiki ul.tabs li a:link,
+.dokuwiki ul.tabs li a:visited {
+}
+.dokuwiki ul.tabs li a:hover,
+.dokuwiki ul.tabs li a:active,
+.dokuwiki ul.tabs li a:focus,
+.dokuwiki ul.tabs li strong {
+    background-color: __background_alt__;
+    color: __text__;
+    text-decoration: none;
+}
diff --git a/lib/tpl/default/images/resizecol.png b/lib/tpl/default/images/resizecol.png
index 79fea0770a6e18e366cea4c4f60654e272e73c8b..f0111507c56e87e1b2369d083b2c99c726224137 100644
Binary files a/lib/tpl/default/images/resizecol.png and b/lib/tpl/default/images/resizecol.png differ
diff --git a/lib/tpl/default/media.css b/lib/tpl/default/media.css
index b325a1ef6e20e212dd781d350f90ac172d168799..37369fe2fb36e9a00344ce7916f3ab5dea690cc9 100644
--- a/lib/tpl/default/media.css
+++ b/lib/tpl/default/media.css
@@ -145,8 +145,7 @@ it's dirty, so any "real" fixes are welcome */
     padding: 0 0.5em 0.5em 0.5em;
 }
 
-#media__content form#dw__upload,
-#media__content div#dw__flashupload {
+#media__content #mediamanager__uploader {
     display: block;
     border-bottom: solid 1px __border__;
     padding: 0 0.5em 1em 0.5em;
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
deleted file mode 100644
index ea69dbeb9f9e5f1997ee9b732a7367b312e42bc3..0000000000000000000000000000000000000000
--- a/lib/tpl/default/mediamanager.css
+++ /dev/null
@@ -1,487 +0,0 @@
-/* Layout */
-
-#mediamanager__page {
-    width: 100%;
-    overflow-x: auto;
-}
-
-#mediamanager__page h1 {
-    margin: 0 0 .5em;
-}
-
-#mediamanager__layout {
-    min-width: 840px;
-}
-
-#mediamanager__layout .layout,
-#mediamanager__layout .layout-resizable {
-    float: left;
-}
-
-#mediamanager__layout .layout-resizable {
-    margin-right: 10px;
-    float: left;
-}
-
-#mediamanager__layout .scroll-container {
-    overflow-y: auto;
-    overflow-x: hidden;
-    padding: 0;
-    margin: 0;
-    text-align: left;
-    position: relative;
-}
-
-#mediamanager__layout .background-container {
-    background-color: __background_alt__;
-    margin-bottom: 10px;
-    padding: 10px 10px 8px;
-    text-align: left;
-    min-height: 20px;
-}
-
-#mediamanager__layout .background-container .icon {
-    margin-right: 5px;
-}
-
-#mediamanager__layout_namespaces {
-    width: 15%;
-    min-width: 125px;
-}
-
-#mediamanager__layout_list {
-    width: 45%;
-    min-width: 375px;
-}
-
-#mediamanager__layout_detail {
-    width: 35%;
-    min-width: 290px;
-}
-
-#mediamanager__page .ui-resizable-e {
-    width: 16px;
-    right: -13px;
-    /* icon from Crystal Clear icon set (LGPL) */
-    background: transparent url(images/resizecol.png) 0 25px no-repeat;
-}
-
-#mediamanager__page .ui-resizable-e:hover {
-    width: 6px;
-    right: -8px;
-    background-image: none;
-    background-color: __background_alt__;
-}
-
-/* Namespaces tree */
-
-#mediamanager__page ul.idx {
-    margin-left: .2em;
-}
-
-#mediamanager__page ul.idx ul {
-    margin-left: 1em;
-}
-
-.idx .selected {
-    background-color: __highlight__;
-    font-weight: bold;
-}
-
-/* Tabs */
-
-.mediamanager-tabs a {
-    font-weight: bold;
-    display: block;
-    float: left;
-    padding: 10px;
-    padding-bottom: 5px;
-    padding-top: 5px;
-    margin-right: 2px;
-    -moz-border-radius-topright: 10px;
-    -webkit-border-top-right-radius: 10px;
-    -moz-border-radius-topleft: 10px;
-    -webkit-border-top-left-radius: 10px;
-    border-top-right-radius: 10px;
-    border-top-left-radius: 10px;
-}
-
-.mediamanager-tabs .selected {
-    background-color: __background_alt__;
-}
-
-.mediamanager-tabs a:hover {
-    background-color: __background_alt__;
-    opacity: 0.5;
-}
-
-/* Title links */
-
-#mediamanager__files .namespace {
-    float: left;
-    font-weight: normal;
-}
-
-#mediamanager__tabs_list {
-    float: left;
-}
-
-#mediamanager__link_thumbs,
-#mediamanager__link_list {
-    padding-left: 30px;
-    display: inline-block;
-    width: 0;
-    overflow: hidden;
-}
-
-#mediamanager__link_thumbs {
-    background: url('../../images/icon-thumb.png') 0 -4px no-repeat;
-    margin-left: 10px;
-}
-
-#mediamanager__link_list {
-    background: url('../../images/icon-list.png') 0 -4px no-repeat;
-}
-
-#mediamanager__link_thumbs:hover,
-#mediamanager__link_list:hover {
-    width: auto;
-    margin-right: 10px;
-}
-
-#mediamanager__sort {
-    background: url('../../images/icon-sort.png') 0 -4px no-repeat;
-    padding-left: 30px;
-    display: block;
-    float: right;
-}
-
-* html #mediamanager__sort,
-*+html #mediamanager__sort {
-    position: relative;
-    margin-top: -18px;
-}
-
-/* File list */
-
-#mediamanager__file_list {
-    padding: 0;
-    margin: 0 !important;
-}
-
-#mediamanager__file_list li:hover {
-    background-color: __background_alt__;
-}
-
-/* Files thumbs view */
-
-.mediamanager-thumbs li {
-    width: 100px;
-    min-height: 130px;
-    display: inline-block;
-    display: -moz-inline-stack;
-    /* the right margin should visually be 10px, but because of its inline-block nature the whitespace inbetween is about 4px more */
-    margin: 0 6px 10px 0;
-    background-color: __background_neu__;
-    color: __text__;
-    padding: 5px;
-    vertical-align: top;
-    text-align: center;
-    zoom: 1;
-    position: relative;
-    line-height: 1.2;
-}
-
-* html .mediamanager-thumbs li {
-    display: inline;
-}
-
-*+html .mediamanager-thumbs li {
-    display: inline;
-}
-
-.mediamanager-thumbs li .image,
-.mediamanager-thumbs li .image0 {
-    width: 100%;
-    height: 90px;
-    display: block;
-    overflow: hidden;
-}
-
-.mediamanager-thumbs li .image1 {
-    display: none;
-}
-
-.mediamanager-thumbs li .image span,
-.mediamanager-thumbs li .image0 span {
-    vertical-align: middle;
-    display: table-cell;
-    width: 100px;
-    height: 90px;
-}
-
-.mediamanager-thumbs li .name,
-.mediamanager-thumbs li .size,
-.mediamanager-thumbs li .filesize,
-.mediamanager-thumbs li .date {
-    display: block;
-    overflow: hidden;
-    width: 90px;
-    white-space: nowrap;
-}
-
-.mediamanager-thumbs li .name {
-    padding: 5px 0;
-    font-weight: bold;
-}
-
-.mediamanager-thumbs li .date {
-    font-style: italic;
-    white-space: normal;
-}
-
-.mediamanager-thumbs li input[type=checkbox] {
-    display: none;
-    float: left;
-    margin: 3px;
-}
-
-.mediamanager-thumbs li:hover input[type=checkbox],
-.mediamanager-thumbs li input[type=checkbox]:checked {
-    display: block;
-}
-
-/* Files list view */
-
-.mediamanager-list li {
-    list-style: none;
-    display: block;
-    position: relative;
-    max-height: 50px;
-    margin: 0;
-    margin-bottom: 3px;
-    background-color: __background__;
-    color: __text__;
-}
-
-.mediamanager-list li:nth-child(2n+1) {
-    background-color: __background_neu__;
-}
-
-.mediamanager-list li .image,
-.mediamanager-list li .image1 {
-    width: 10%;
-    display: block;
-    overflow: hidden;
-    float: left;
-    height: 40px;
-    text-align: center;
-}
-
-.mediamanager-list li .image0 {
-    display: none;
-}
-
-.mediamanager-list li .name,
-.mediamanager-list li .size,
-.mediamanager-list li .filesize,
-.mediamanager-list li .date {
-    overflow: hidden;
-    float: left;
-    margin-left: 1%;
-    white-space: nowrap;
-}
-
-.mediamanager-list li .name {
-    width: 30%;
-    font-weight: bold;
-}
-
-.mediamanager-list li .size,
-.mediamanager-list li .filesize {
-    width: 15%;
-}
-
-.mediamanager-list li .date {
-    width: 20%;
-}
-
-.mediamanager-list li .date {
-    font-style: italic;
-    white-space: normal;
-}
-
-.mediamanager-list .icon {
-    max-width: 16px;
-    max-height: 16px;
-}
-
-.mediamanager-list li .image span,
-.mediamanager-list li .image1 span {
-    vertical-align: middle;
-    text-align: center;
-    display: table-cell;
-    width: 100px;
-    height: 40px;
-}
-
-.mediamanager-list li input[type=checkbox] {
-    display: none;
-    float: left;
-    margin: 3px;
-}
-
-.mediamanager-list li:hover input[type=checkbox],
-.mediamanager-list li input[type=checkbox]:checked {
-    display: block;
-}
-
-/* Upload panel */
-
-#mediamanager__layout div.upload {
-    padding-bottom: 0.5em;
-}
-
-#media__content #mediamanager__uploader {
-    border-bottom: 1px solid __border__;
-    padding-bottom: 0.5em;
-}
-
-/* File preview */
-
-.mediamanager__preview,
-.mediamanager__preview_buttons {
-    text-align: center;
-    margin-bottom: 5px;
-}
-
-.mediamanager__preview img {
-    width: 99%;
-}
-
-/* Meta data edit form */
-
-#mediamanager__details div.metafield {
-    margin-bottom: 5px;
-}
-
-#mediamanager__details label {
-    display: block;
-}
-
-#mediamanager__details form.meta input {
-    width: 50%;
-}
-
-#mediamanager__details form.meta input.button {
-    width: auto;
-}
-
-#mediamanager__details form.meta textarea.edit {
-    height: 6em;
-    width: 95%;
-    min-width: 95%;
-    max-width: 95%;
-}
-
-/* Revisions form */
-
-#mediamanager__details #page__revisions ul {
-    margin-left: 10px;
-    list-style-type: none;
-}
-
-#mediamanager__details #page__revisions ul li div.li div {
-    font-size: 90%;
-    color: __text_neu__;
-    padding-left: 18px;
-}
-
-#mediamanager__details #page__revisions ul li div.li input {
-    position: relative;
-    top: 1px;
-}
-
-/* File diff */
-
-#mediamanager__diff {
-    margin-top: 10px;
-}
-
-#mediamanager__diff_table {
-    padding: 0;
-    margin: 0;
-    margin-top: 10px;
-}
-
-#mediamanager__diff_table li {
-    width: 48%;
-    display: inline-block;
-    margin: 0;
-    margin-bottom: 10px;
-    padding: 2px;
-    vertical-align: top;
-    zoom: 1;
-    color: __text__;
-}
-
-* html #mediamanager__diff_table li {
-    display: inline;
-}
-
-*+html #mediamanager__diff_table li {
-    display: inline;
-}
-
-/* For IE7 */
-*:first-child+html #mediamanager__diff_table li {
-    width: 45%;
-}
-
-/* Image diff */
-
-#mediamanager__layout dl.img_tags dd.highlighted{
-    background-color: __highlight__;
-}
-
-#mediamanager__form_diffview {
-    margin-bottom: 10px;
-}
-
-#mediamanager__diff_layout {
-    position: relative;
-}
-
-#mediamanager__diff_layout div {
-    position: absolute;
-    top: 0;
-    left: 0;
-}
-
-#mediamanager__diff_opacity_image1,
-#mediamanager__diff_portions_image1 {
-    width: 97%;
-}
-
-#mediamanager__diff_layout div img {
-    width: 100%;
-}
-
-#mediamanager__diff_opacity_image2 {
-    width: 97%;
-    -moz-opacity: 0.5;
-    -khtml-opacity: 0.5;
-    opacity: 0.5;
-}
-
-#mediamanager__diff_portions_image2 {
-    width: 97%;
-    border-right: 1px solid red;
-    overflow: hidden;
-}
-
-#mediamanager__opacity_slider,
-#mediamanager__portions_slider {
-    margin: 10px;
-    width: 95%;
-}
diff --git a/lib/tpl/default/style.ini b/lib/tpl/default/style.ini
index 05914012e23a151037e95791747b29c1af5d34dc..7d27381c9cf94ef218cec2cf61c4299d446e3c79 100644
--- a/lib/tpl/default/style.ini
+++ b/lib/tpl/default/style.ini
@@ -15,7 +15,8 @@ _mediaoptions.css = screen
 _admin.css        = screen
 _linkwiz.css      = screen
 _subscription.css = screen
-mediamanager.css  = screen
+_mediamanager.css  = screen
+_tabs.css         = screen
 _fileuploader.css = screen
 
 rtl.css        = rtl