aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--boot.php6
-rw-r--r--include/Contact.php2
-rw-r--r--include/conversation.php7
-rw-r--r--include/items.php2
-rw-r--r--include/pgettext.php6
-rw-r--r--include/plugin.php11
-rwxr-xr-xinclude/security.php2
-rw-r--r--index.php2
-rw-r--r--library/jquery_ac/friendica.complete.js395
-rw-r--r--library/langdet/Text/LanguageDetect.php1708
-rw-r--r--library/langdet/Text/LanguageDetect/Exception.php57
-rw-r--r--library/langdet/Text/LanguageDetect/ISO639.php341
-rw-r--r--library/langdet/Text/LanguageDetect/Parser.php349
-rw-r--r--library/langdet/data/lang.dat1
-rw-r--r--library/langdet/data/unicode_blocks.dat1
-rw-r--r--library/langdet/docs/example_clui.php35
-rw-r--r--library/langdet/docs/example_web.php72
-rw-r--r--library/langdet/docs/iso.php21
-rw-r--r--library/langdet/tests/Text_LanguageDetectTest.php2056
-rw-r--r--library/langdet/tests/Text_LanguageDetect_ISO639Test.php72
-rw-r--r--library/tinymce/changelog.txt3090
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js2
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js354
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js2
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js2
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js1902
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js2
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js146
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js2
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js2
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js2
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js2
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js4
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css8
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js2
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js2
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm8
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js2
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js24
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js6
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css7
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css6
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css5
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css6
-rw-r--r--library/tinymce/jscripts/tiny_mce/tiny_mce.js2
-rw-r--r--library/tinymce/jscripts/tiny_mce/tiny_mce_src.js4911
-rw-r--r--mod/acl.php7
-rw-r--r--mod/message.php50
-rw-r--r--util/db_update.php2
-rw-r--r--util/messages.po601
-rw-r--r--view/de/messages.po880
-rw-r--r--view/de/strings.php26
-rw-r--r--view/eo/lostpass_eml.tpl32
-rw-r--r--view/eo/messages.po888
-rw-r--r--view/eo/strings.php35
-rw-r--r--view/eo/update_fail_eml.tpl11
-rw-r--r--view/head.tpl2
-rw-r--r--view/moderated_comment.tpl34
-rw-r--r--view/theme/darkzero/style.css14
-rw-r--r--view/theme/diabook/admin_site.tpl3
-rw-r--r--view/theme/diabook/bottom.tpl19
-rwxr-xr-xview/theme/diabook/communityhome.tpl23
-rw-r--r--view/theme/diabook/config.php36
-rw-r--r--view/theme/diabook/diabook-aerith/style-wide.css5
-rw-r--r--view/theme/diabook/diabook-aerith/style.css5
-rw-r--r--view/theme/diabook/diabook-blue/style-wide.css5
-rw-r--r--view/theme/diabook/diabook-blue/style.css5
-rw-r--r--view/theme/diabook/diabook-dark/style-network.css2
-rw-r--r--view/theme/diabook/diabook-dark/style-wide.css5
-rw-r--r--view/theme/diabook/diabook-dark/style.css22
-rw-r--r--view/theme/diabook/diabook-green/style-wide.css5
-rw-r--r--view/theme/diabook/diabook-green/style.css5
-rw-r--r--view/theme/diabook/diabook-pink/style-wide.css5
-rw-r--r--view/theme/diabook/diabook-pink/style.css5
-rw-r--r--view/theme/diabook/diabook-red/style-wide.css6
-rw-r--r--view/theme/diabook/diabook-red/style.css6
-rw-r--r--view/theme/diabook/jquery-ui-1.8.20.custom.css512
-rw-r--r--view/theme/diabook/js/jquery-ui-1.8.20.custom.min.js62
-rw-r--r--view/theme/diabook/js/jquery.mapquery.core.js655
-rw-r--r--view/theme/diabook/js/jquery.mapquery.legend.js87
-rw-r--r--view/theme/diabook/js/jquery.mapquery.mqLayerManager.js310
-rw-r--r--view/theme/diabook/js/jquery.mapquery.mqMousePosition.js59
-rw-r--r--view/theme/diabook/js/jquery.twitter.search.js2
-rw-r--r--view/theme/diabook/nav.tpl2
-rw-r--r--view/theme/diabook/prv_message.tpl40
-rw-r--r--view/theme/diabook/style-wide.css4
-rw-r--r--view/theme/diabook/style.css4
-rwxr-xr-xview/theme/diabook/theme.php218
-rw-r--r--view/theme/diabook/theme_settings.tpl22
-rw-r--r--view/theme/dispy/dark/_base.less19
-rw-r--r--view/theme/dispy/dark/screenshot.jpgbin39101 -> 46268 bytes
-rw-r--r--view/theme/dispy/dark/screenshot_small.jpgbin0 -> 23567 bytes
-rw-r--r--view/theme/dispy/dark/style.css145
-rw-r--r--view/theme/dispy/dark/style.less496
-rw-r--r--view/theme/dispy/light/_base.less119
-rw-r--r--view/theme/dispy/light/screenshot.jpgbin60400 -> 53187 bytes
-rw-r--r--view/theme/dispy/light/screenshot_small.jpgbin0 -> 26448 bytes
-rw-r--r--view/theme/dispy/light/style.css449
-rw-r--r--view/theme/dispy/light/style.less4924
-rw-r--r--view/theme/dispy/nav.tpl15
-rw-r--r--view/theme/dispy/screenshot.jpgbin0 -> 39453 bytes
-rw-r--r--view/theme/dispy/style.css518
-rw-r--r--view/theme/dispy/style.less2879
-rw-r--r--view/theme/dispy/wall_item.tpl14
-rw-r--r--view/theme/dispy/wallwall_item.tpl14
-rwxr-xr-xview/theme/duepuntozero/moderated_comment.tpl61
-rw-r--r--view/theme/duepuntozero/prv_message.tpl39
-rw-r--r--view/theme/duepuntozero/style.css10
-rw-r--r--view/theme/slackr/style.css17
109 files changed, 17543 insertions, 12544 deletions
diff --git a/boot.php b/boot.php
index e98bfea9d..f9bfa7551 100644
--- a/boot.php
+++ b/boot.php
@@ -9,7 +9,7 @@ require_once('include/nav.php');
require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica');
-define ( 'FRIENDICA_VERSION', '2.3.1336' );
+define ( 'FRIENDICA_VERSION', '3.0.1343' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1143 );
@@ -123,6 +123,8 @@ define ( 'NETWORK_XMPP', 'xmpp'); // XMPP
define ( 'NETWORK_MYSPACE', 'mysp'); // MySpace
define ( 'NETWORK_GPLUS', 'goog'); // Google+
+define ( 'NETWORK_PHANTOM', 'unkn'); // Place holder
+
/**
* These numbers are used in stored permissions
* and existing allocations MUST NEVER BE CHANGED
@@ -142,6 +144,8 @@ $netgroup_ids = array(
NETWORK_XMPP => (-10),
NETWORK_MYSPACE => (-11),
NETWORK_GPLUS => (-12),
+
+ NETWORK_PHANTOM => (-127),
);
diff --git a/include/Contact.php b/include/Contact.php
index 2523fc023..675d1c81e 100644
--- a/include/Contact.php
+++ b/include/Contact.php
@@ -209,7 +209,7 @@ function contact_photo_menu($contact) {
);
- $args = array('contact' => $contact, 'menu' => $menu);
+ $args = array('contact' => $contact, 'menu' => &$menu);
call_hooks('contact_photo_menu', $args);
diff --git a/include/conversation.php b/include/conversation.php
index e48a8e6d6..6bf673b97 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -278,6 +278,9 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
else
$nickname = $a->user['nickname'];
+ // prevent private email from leaking.
+ if($item['network'] === NETWORK_MAIL && local_user() != $item['uid'])
+ continue;
$profile_name = ((strlen($item['author-name'])) ? $item['author-name'] : $item['name']);
if($item['author-link'] && (! $item['author-name']))
@@ -447,8 +450,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
else {
// prevent private email reply to public conversation from leaking.
- if($item['private'] && ! $threads[$threadsid]['private'])
- continue;
+ if($item['network'] === NETWORK_MAIL && local_user() != $item['uid'])
+ continue;
$comments_seen ++;
$comment_lastcollapsed = false;
diff --git a/include/items.php b/include/items.php
index b1dc1708f..129499967 100644
--- a/include/items.php
+++ b/include/items.php
@@ -119,7 +119,7 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0)
$check_date = datetime_convert('UTC','UTC',$last_update,'Y-m-d H:i:s');
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
- `contact`.`name`, `contact`.`photo`, `contact`.`url`,
+ `contact`.`name`, `contact`.`network`, `contact`.`photo`, `contact`.`url`,
`contact`.`name-date`, `contact`.`uri-date`, `contact`.`avatar-date`,
`contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
`contact`.`id` AS `contact-id`, `contact`.`uid` AS `contact-uid`,
diff --git a/include/pgettext.php b/include/pgettext.php
index a079a4687..5a0eab0b0 100644
--- a/include/pgettext.php
+++ b/include/pgettext.php
@@ -15,10 +15,10 @@
*/
-if(! function_exists('get_language')) {
-function get_language() {
+if(! function_exists('get_browser_language')) {
+function get_browser_language() {
- if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
+ if (x($_SERVER,'HTTP_ACCEPT_LANGUAGE')) {
// break up string into pieces (languages and q factors)
preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i',
$_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
diff --git a/include/plugin.php b/include/plugin.php
index 4ff78a8b4..ae8eee78a 100644
--- a/include/plugin.php
+++ b/include/plugin.php
@@ -70,8 +70,10 @@ function reload_plugins() {
$installed = array();
$parr = explode(',',$plugins);
+
if(count($parr)) {
foreach($parr as $pl) {
+
$pl = trim($pl);
$fname = 'addon/' . $pl . '/' . $pl . '.php';
@@ -101,6 +103,7 @@ function reload_plugins() {
}
}
}
+
}}
@@ -163,6 +166,14 @@ function call_hooks($name, &$data = null) {
$func = $hook[HOOK_FUNCTION];
$func($a,$data);
}
+ else {
+ // remove orphan hooks
+ q("delete from hook where hook = '%s' and file = '$s' and function = '%s' limit 1",
+ dbesc($hook[HOOK_HOOK]),
+ dbesc($hook[HOOK_FILE]),
+ dbesc($hook[HOOK_FUNCTION])
+ );
+ }
}
}
}
diff --git a/include/security.php b/include/security.php
index a92400b5c..af201d2af 100755
--- a/include/security.php
+++ b/include/security.php
@@ -76,7 +76,7 @@ function authenticate_success($user_record, $login_initial = false, $interactive
header('X-Account-Management-Status: active; name="' . $a->user['username'] . '"; id="' . $a->user['nickname'] .'"');
if($login_initial) {
- $l = get_language();
+ $l = get_browser_language();
q("UPDATE `user` SET `login_date` = '%s', `language` = '%s' WHERE `uid` = %d LIMIT 1",
dbesc(datetime_convert()),
diff --git a/index.php b/index.php
index a409f47b4..94329eedc 100644
--- a/index.php
+++ b/index.php
@@ -27,7 +27,7 @@ $install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false
@include(".htconfig.php");
-$lang = get_language();
+$lang = get_browser_language();
load_translation_table($lang);
diff --git a/library/jquery_ac/friendica.complete.js b/library/jquery_ac/friendica.complete.js
new file mode 100644
index 000000000..81eba564e
--- /dev/null
+++ b/library/jquery_ac/friendica.complete.js
@@ -0,0 +1,395 @@
+/**
+* Ajax Autocomplete for jQuery, version 1.1.3
+* (c) 2010 Tomas Kirda
+*
+* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
+* For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/
+*
+* Last Review: 04/19/2010
+* Heavily modified for contact completion in Friendica (add photos, hover tips. etc.) 11-May-2012 mike@macgirvin.com
+*/
+
+/*jslint onevar: true, evil: true, nomen: true, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */
+/*global window: true, document: true, clearInterval: true, setInterval: true, jQuery: true */
+
+(function($) {
+
+ var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
+
+ function fnFormatResult(value, data, currentValue) {
+ var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
+ return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
+ }
+
+ function Autocomplete(el, options) {
+ this.el = $(el);
+ this.el.attr('autocomplete', 'off');
+ this.suggestions = [];
+ this.data = [];
+ this.badQueries = [];
+ this.selectedIndex = -1;
+ this.currentValue = this.el.val();
+ this.intervalId = 0;
+ this.cachedResponse = [];
+ this.onChangeInterval = null;
+ this.ignoreValueChange = false;
+ this.serviceUrl = options.serviceUrl;
+ this.isLocal = false;
+ this.options = {
+ autoSubmit: false,
+ minChars: 1,
+ maxHeight: 300,
+ deferRequestBy: 0,
+ width: 0,
+ highlight: true,
+ params: {},
+ fnFormatResult: fnFormatResult,
+ delimiter: null,
+ zIndex: 9999
+ };
+ this.initialize();
+ this.setOptions(options);
+ }
+
+ $.fn.autocomplete = function(options) {
+ return new Autocomplete(this.get(0)||$('<input />'), options);
+ };
+
+
+ Autocomplete.prototype = {
+
+ killerFn: null,
+
+ initialize: function() {
+
+ var me, uid, autocompleteElId;
+ me = this;
+ uid = Math.floor(Math.random()*0x100000).toString(16);
+ autocompleteElId = 'Autocomplete_' + uid;
+
+ this.killerFn = function(e) {
+ if ($(e.target).parents('.autocomplete').size() === 0) {
+ me.killSuggestions();
+ me.disableKillerFn();
+ }
+ };
+
+ if (!this.options.width) { this.options.width = this.el.width(); }
+ this.mainContainerId = 'AutocompleteContainter_' + uid;
+
+ $('<div id="' + this.mainContainerId + '" style="position:absolute;z-index:9999;"><div class="autocomplete-w1"><div class="autocomplete" id="' + autocompleteElId + '" style="display:none; width:300px;"></div></div></div>').appendTo('body');
+
+ this.container = $('#' + autocompleteElId);
+ this.fixPosition();
+ if (window.opera) {
+ this.el.keypress(function(e) { me.onKeyPress(e); });
+ } else {
+ this.el.keydown(function(e) { me.onKeyPress(e); });
+ }
+ this.el.keyup(function(e) { me.onKeyUp(e); });
+ this.el.blur(function() { me.enableKillerFn(); });
+ this.el.focus(function() { me.fixPosition(); });
+ },
+
+ setOptions: function(options){
+ var o = this.options;
+ $.extend(o, options);
+ if(o.lookup){
+ this.isLocal = true;
+ if($.isArray(o.lookup)){ o.lookup = { suggestions:o.lookup, data:[] }; }
+ }
+ $('#'+this.mainContainerId).css({ zIndex:o.zIndex });
+ this.container.css({ maxHeight: o.maxHeight + 'px', width:o.width });
+ },
+
+ clearCache: function(){
+ this.cachedResponse = [];
+ this.badQueries = [];
+ },
+
+ disable: function(){
+ this.disabled = true;
+ },
+
+ enable: function(){
+ this.disabled = false;
+ },
+
+ fixPosition: function() {
+ var offset = this.el.offset();
+ $('#' + this.mainContainerId).css({ top: (offset.top + this.el.innerHeight()) + 'px', left: offset.left + 'px' });
+ },
+
+ enableKillerFn: function() {
+ var me = this;
+ $(document).bind('click', me.killerFn);
+ },
+
+ disableKillerFn: function() {
+ var me = this;
+ $(document).unbind('click', me.killerFn);
+ },
+
+ killSuggestions: function() {
+ var me = this;
+ this.stopKillSuggestions();
+ this.intervalId = window.setInterval(function() { me.hide(); me.stopKillSuggestions(); }, 300);
+ },
+
+ stopKillSuggestions: function() {
+ window.clearInterval(this.intervalId);
+ },
+
+ onKeyPress: function(e) {
+ if (this.disabled || !this.enabled) { return; }
+ // return will exit the function
+ // and event will not be prevented
+ switch (e.keyCode) {
+ case 27: //KEY_ESC:
+ this.el.val(this.currentValue);
+ this.hide();
+ break;
+ case 9: //KEY_TAB:
+ case 13: //KEY_RETURN:
+ if (this.selectedIndex === -1) {
+ this.hide();
+ return;
+ }
+ this.select(this.selectedIndex);
+ if(e.keyCode === 9){ return; }
+ break;
+ case 38: //KEY_UP:
+ this.moveUp();
+ break;
+ case 40: //KEY_DOWN:
+ this.moveDown();
+ break;
+ default:
+ return;
+ }
+ e.stopImmediatePropagation();
+ e.preventDefault();
+ },
+
+ onKeyUp: function(e) {
+ if(this.disabled){ return; }
+ switch (e.keyCode) {
+ case 38: //KEY_UP:
+ case 40: //KEY_DOWN:
+ return;
+ }
+ clearInterval(this.onChangeInterval);
+ if (this.currentValue !== this.el.val()) {
+ if (this.options.deferRequestBy > 0) {
+ // Defer lookup in case when value changes very quickly:
+ var me = this;
+ this.onChangeInterval = setInterval(function() { me.onValueChange(); }, this.options.deferRequestBy);
+ } else {
+ this.onValueChange();
+ }
+ }
+ },
+
+ onValueChange: function() {
+ clearInterval(this.onChangeInterval);
+ this.currentValue = this.el.val();
+ var q = this.getQuery(this.currentValue);
+ this.selectedIndex = -1;
+ if (this.ignoreValueChange) {
+ this.ignoreValueChange = false;
+ return;
+ }
+ if (q === '' || q.length < this.options.minChars) {
+ this.hide();
+ } else {
+ this.getSuggestions(q);
+ }
+ },
+
+ getQuery: function(val) {
+ var d, arr;
+ d = this.options.delimiter;
+ if (!d) { return $.trim(val); }
+ arr = val.split(d);
+ return $.trim(arr[arr.length - 1]);
+ },
+
+ getSuggestionsLocal: function(q) {
+ var ret, arr, len, val, i;
+ arr = this.options.lookup;
+ len = arr.suggestions.length;
+ ret = { suggestions:[], data:[] };
+ q = q.toLowerCase();
+ for(i=0; i< len; i++){
+ val = arr.suggestions[i];
+ if(val.toLowerCase().indexOf(q) === 0){
+ ret.suggestions.push(val);
+ ret.data.push(arr.data[i]);
+ }
+ }
+ return ret;
+ },
+
+ getSuggestions: function(q) {
+ var cr, me;
+ cr = this.isLocal ? this.getSuggestionsLocal(q) : this.cachedResponse[q];
+ if (cr && $.isArray(cr.suggestions)) {
+ this.suggestions = cr.suggestions;
+ this.data = cr.data;
+ this.suggest();
+ } else if (!this.isBadQuery(q)) {
+ me = this;
+ me.options.params.query = q;
+ $.get(this.serviceUrl, me.options.params, function(txt) { me.processResponse(txt); }, 'text');
+ }
+ },
+
+ isBadQuery: function(q) {
+ var i = this.badQueries.length;
+ while (i--) {
+ if (q.indexOf(this.badQueries[i]) === 0) { return true; }
+ }
+ return false;
+ },
+
+ hide: function() {
+ this.enabled = false;
+ this.selectedIndex = -1;
+ this.container.hide();
+ },
+
+ suggest: function() {
+ if (this.suggestions.length === 0) {
+ this.hide();
+ return;
+ }
+
+ var me, len, div, f, v, i, s, mOver, mClick, l, img;
+ me = this;
+ len = this.suggestions.length;
+ f = this.options.fnFormatResult;
+ v = this.getQuery(this.currentValue);
+ mOver = function(xi) { return function() { me.activate(xi); }; };
+ mClick = function(xi) { return function() { me.select(xi); }; };
+ this.container.hide().empty();
+ for (i = 0; i < len; i++) {
+ s = this.suggestions[i];
+ l = this.links[i];
+ img = '<img height="24" width="24" src="' + this.photos[i] + '" alt="' + s + '" />&nbsp;';
+ div = $((me.selectedIndex === i ? '<div class="selected"' : '<div') + ' title="' + l + '">' + img + f(s, this.data[i], v) + '</div>');
+ div.mouseover(mOver(i));
+ div.click(mClick(i));
+ this.container.append(div);
+ }
+ this.enabled = true;
+ this.container.show();
+ },
+
+ processResponse: function(text) {
+ var response;
+ try {
+ response = eval('(' + text + ')');
+ } catch (err) { return; }
+ if (!$.isArray(response.data)) { response.data = []; }
+ if(!this.options.noCache){
+ this.cachedResponse[response.query] = response;
+ if (response.suggestions.length === 0) { this.badQueries.push(response.query); }
+ }
+ if (response.query === this.getQuery(this.currentValue)) {
+ this.photos = response.photos;
+ this.links = response.links;
+ this.suggestions = response.suggestions;
+ this.data = response.data;
+ this.suggest();
+ }
+ },
+
+ activate: function(index) {
+ var divs, activeItem;
+ divs = this.container.children();
+ // Clear previous selection:
+ if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) {
+ $(divs.get(this.selectedIndex)).removeClass();
+ }
+ this.selectedIndex = index;
+ if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) {
+ activeItem = divs.get(this.selectedIndex);
+ $(activeItem).addClass('selected');
+ }
+ return activeItem;
+ },
+
+ deactivate: function(div, index) {
+ div.className = '';
+ if (this.selectedIndex === index) { this.selectedIndex = -1; }
+ },
+
+ select: function(i) {
+ var selectedValue, f;
+ selectedValue = this.suggestions[i];
+ if (selectedValue) {
+ this.el.val(selectedValue);
+ if (this.options.autoSubmit) {
+ f = this.el.parents('form');
+ if (f.length > 0) { f.get(0).submit(); }
+ }
+ this.ignoreValueChange = true;
+ this.hide();
+ this.onSelect(i);
+ }
+ },
+
+ moveUp: function() {
+ if (this.selectedIndex === -1) { return; }
+ if (this.selectedIndex === 0) {
+ this.container.children().get(0).className = '';
+ this.selectedIndex = -1;
+ this.el.val(this.currentValue);
+ return;
+ }
+ this.adjustScroll(this.selectedIndex - 1);
+ },
+
+ moveDown: function() {
+ if (this.selectedIndex === (this.suggestions.length - 1)) { return; }
+ this.adjustScroll(this.selectedIndex + 1);
+ },
+
+ adjustScroll: function(i) {
+ var activeItem, offsetTop, upperBound, lowerBound;
+ activeItem = this.activate(i);
+ offsetTop = activeItem.offsetTop;
+ upperBound = this.container.scrollTop();
+ lowerBound = upperBound + this.options.maxHeight - 25;
+ if (offsetTop < upperBound) {
+ this.container.scrollTop(offsetTop);
+ } else if (offsetTop > lowerBound) {
+ this.container.scrollTop(offsetTop - this.options.maxHeight + 25);
+ }
+ this.el.val(this.getValue(this.suggestions[i]));
+ },
+
+ onSelect: function(i) {
+ var me, fn, s, d;
+ me = this;
+ fn = me.options.onSelect;
+ s = me.suggestions[i];
+ d = me.data[i];
+ me.el.val(me.getValue(s));
+ if ($.isFunction(fn)) { fn(s, d, me.el); }
+ },
+
+ getValue: function(value){
+ var del, currVal, arr, me;
+ me = this;
+ del = me.options.delimiter;
+ if (!del) { return value; }
+ currVal = me.currentValue;
+ arr = currVal.split(del);
+ if (arr.length === 1) { return value; }
+ return currVal.substr(0, currVal.length - arr[arr.length - 1].length) + value;
+ }
+
+ };
+
+}(jQuery));
diff --git a/library/langdet/Text/LanguageDetect.php b/library/langdet/Text/LanguageDetect.php
new file mode 100644
index 000000000..7cebbe607
--- /dev/null
+++ b/library/langdet/Text/LanguageDetect.php
@@ -0,0 +1,1708 @@
+<?php
+
+/**
+ * Detects the language of a given piece of text.
+ *
+ * Attempts to detect the language of a sample of text by correlating ranked
+ * 3-gram frequencies to a table of 3-gram frequencies of known languages.
+ *
+ * Implements a version of a technique originally proposed by Cavnar & Trenkle
+ * (1994): "N-Gram-Based Text Categorization"
+ *
+ * PHP version 5
+ *
+ * @category Text
+ * @package Text_LanguageDetect
+ * @author Nicholas Pisarro <infinityminusnine+pear@gmail.com>
+ * @copyright 2005-2006 Nicholas Pisarro
+ * @license http://www.debian.org/misc/bsd.license BSD
+ * @version SVN: $Id: LanguageDetect.php 322353 2012-01-16 08:41:43Z cweiske $
+ * @link http://pear.php.net/package/Text_LanguageDetect/
+ * @link http://langdetect.blogspot.com/
+ */
+
+require_once 'Text/LanguageDetect/Exception.php';
+require_once 'Text/LanguageDetect/Parser.php';
+require_once 'Text/LanguageDetect/ISO639.php';
+
+/**
+ * Language detection class
+ *
+ * Requires the langauge model database (lang.dat) that should have
+ * accompanied this class definition in order to be instantiated.
+ *
+ * Example usage:
+ *
+ * <code>
+ * require_once 'Text/LanguageDetect.php';
+ *
+ * $l = new Text_LanguageDetect;
+ *
+ * $stdin = fopen('php://stdin', 'r');
+ *
+ * echo "Supported languages:\n";
+ *
+ * try {
+ * $langs = $l->getLanguages();
+ * } catch (Text_LanguageDetect_Exception $e) {
+ * die($e->getMessage());
+ * }
+ *
+ * sort($langs);
+ * echo join(', ', $langs);
+ *
+ * while ($line = fgets($stdin)) {
+ * print_r($l->detect($line, 4));
+ * }
+ * </code>
+ *
+ * @category Text
+ * @package Text_LanguageDetect
+ * @author Nicholas Pisarro <infinityminusnine+pear@gmail.com>
+ * @copyright 2005 Nicholas Pisarro
+ * @license http://www.debian.org/misc/bsd.license BSD
+ * @version Release: @package_version@
+ * @link http://pear.php.net/package/Text_LanguageDetect/
+ * @todo allow users to generate their own language models
+ */
+class Text_LanguageDetect
+{
+ /**
+ * The filename that stores the trigram data for the detector
+ *
+ * If this value starts with a slash (/) or a dot (.) the value of
+ * $this->_data_dir will be ignored
+ *
+ * @var string
+ * @access private
+ */
+ var $_db_filename = 'lang.dat';
+
+ /**
+ * The filename that stores the unicode block definitions
+ *
+ * If this value starts with a slash (/) or a dot (.) the value of
+ * $this->_data_dir will be ignored
+ *
+ * @var string
+ * @access private
+ */
+ var $_unicode_db_filename = 'unicode_blocks.dat';
+
+ /**
+ * The data directory
+ *
+ * Should be set by PEAR installer
+ *
+ * @var string
+ * @access private
+ */
+ var $_data_dir = '@data_dir@';
+
+ /**
+ * The trigram data for comparison
+ *
+ * Will be loaded on start from $this->_db_filename
+ *
+ * @var array
+ * @access private
+ */
+ var $_lang_db = array();
+
+ /**
+ * stores the map of the trigram data to unicode characters
+ *
+ * @access private
+ * @var array
+ */
+ var $_unicode_map;
+
+ /**
+ * The size of the trigram data arrays
+ *
+ * @var int
+ * @access private
+ */
+ var $_threshold = 300;
+
+ /**
+ * the maximum possible score.
+ *
+ * needed for score normalization. Different depending on the
+ * perl compatibility setting
+ *
+ * @access private
+ * @var int
+ * @see setPerlCompatible()
+ */
+ var $_max_score = 0;
+
+ /**
+ * Whether or not to simulate perl's Language::Guess exactly
+ *
+ * @access private
+ * @var bool
+ * @see setPerlCompatible()
+ */
+ var $_perl_compatible = false;
+
+ /**
+ * Whether to use the unicode block detection to speed up processing
+ *
+ * @access private
+ * @var bool
+ */
+ var $_use_unicode_narrowing = true;
+
+ /**
+ * stores the result of the clustering operation
+ *
+ * @access private
+ * @var array
+ * @see clusterLanguages()
+ */
+ var $_clusters;
+
+ /**
+ * Which type of "language names" are accepted and returned:
+ *
+ * 0 - language name ("english")
+ * 2 - 2-letter ISO 639-1 code ("en")
+ * 3 - 3-letter ISO 639-2 code ("eng")
+ */
+ var $_name_mode = 0;
+
+ /**
+ * Constructor
+ *
+ * Will attempt to load the language database. If it fails, you will get
+ * an exception.
+ */
+ function __construct()
+ {
+ $data = $this->_readdb($this->_db_filename);
+ $this->_checkTrigram($data['trigram']);
+ $this->_lang_db = $data['trigram'];
+
+ if (isset($data['trigram-unicodemap'])) {
+ $this->_unicode_map = $data['trigram-unicodemap'];
+ }
+
+ // Not yet implemented:
+ if (isset($data['trigram-clusters'])) {
+ $this->_clusters = $data['trigram-clusters'];
+ }
+ }
+
+ /**
+ * Returns the path to the location of the database
+ *
+ * @param string $fname File name to load
+ *
+ * @return string expected path to the language model database
+ * @access private
+ */
+ function _get_data_loc($fname)
+ {
+ if ($fname{0} == '/' || $fname{0} == '.') {
+ // if filename starts with a slash, assume it's an absolute pathname
+ // and skip whatever is in $this->_data_dir
+ return $fname;
+
+ } elseif ($this->_data_dir != '@' . 'data_dir' . '@') {
+ // if the data dir was set by the PEAR installer, use that
+ return $this->_data_dir . '/Text_LanguageDetect/' . $fname;
+
+ } else {
+ // assume this was just unpacked somewhere
+ // try the local working directory if otherwise
+ return __DIR__ . '/../data/' . $fname;
+ }
+ }
+
+ /**
+ * Loads the language trigram database from filename
+ *
+ * Trigram datbase should be a serialize()'d array
+ *
+ * @param string $fname the filename where the data is stored
+ *
+ * @return array the language model data
+ * @throws Text_LanguageDetect_Exception
+ * @access private
+ */
+ function _readdb($fname)
+ {
+ // finds the correct data dir
+ $fname = $this->_get_data_loc($fname);
+
+ // input check
+ if (!file_exists($fname)) {
+ throw new Text_LanguageDetect_Exception(
+ 'Language database does not exist: ' . $fname,
+ Text_LanguageDetect_Exception::DB_NOT_FOUND
+ );
+ } elseif (!is_readable($fname)) {
+ throw new Text_LanguageDetect_Exception(
+ 'Language database is not readable: ' . $fname,
+ Text_LanguageDetect_Exception::DB_NOT_READABLE
+ );
+ }
+
+ return unserialize(file_get_contents($fname));
+ }
+
+
+ /**
+ * Checks if this object is ready to detect languages
+ *
+ * @param array $trigram Trigram data from database
+ *
+ * @return void
+ * @access private
+ */
+ function _checkTrigram($trigram)
+ {
+ if (!is_array($trigram)) {
+ if (ini_get('magic_quotes_runtime')) {
+ throw new Text_LanguageDetect_Exception(
+ 'Error loading database. Try turning magic_quotes_runtime off.',
+ Text_LanguageDetect_Exception::MAGIC_QUOTES
+ );
+ }
+ throw new Text_LanguageDetect_Exception(
+ 'Language database is not an array.',
+ Text_LanguageDetect_Exception::DB_NOT_ARRAY
+ );
+ } elseif (empty($trigram)) {
+ throw new Text_LanguageDetect_Exception(
+ 'Language database has no elements.',
+ Text_LanguageDetect_Exception::DB_EMPTY
+ );
+ }
+ }
+
+ /**
+ * Omits languages
+ *
+ * Pass this function the name of or an array of names of
+ * languages that you don't want considered
+ *
+ * If you're only expecting a limited set of languages, this can greatly
+ * speed up processing
+ *
+ * @param mixed $omit_list language name or array of names to omit
+ * @param bool $include_only if true will include (rather than
+ * exclude) only those in the list
+ *
+ * @return int number of languages successfully deleted
+ * @throws Text_LanguageDetect_Exception
+ */
+ public function omitLanguages($omit_list, $include_only = false)
+ {
+ $deleted = 0;
+
+ $omit_list = $this->_convertFromNameMode($omit_list);
+
+ if (!$include_only) {
+ // deleting the given languages
+ if (!is_array($omit_list)) {
+ $omit_list = strtolower($omit_list); // case desensitize
+ if (isset($this->_lang_db[$omit_list])) {
+ unset($this->_lang_db[$omit_list]);
+ $deleted++;
+ }
+ } else {
+ foreach ($omit_list as $omit_lang) {
+ if (isset($this->_lang_db[$omit_lang])) {
+ unset($this->_lang_db[$omit_lang]);
+ $deleted++;
+ }
+ }
+ }
+
+ } else {
+ // deleting all except the given languages
+ if (!is_array($omit_list)) {
+ $omit_list = array($omit_list);
+ }
+
+ // case desensitize
+ foreach ($omit_list as $key => $omit_lang) {
+ $omit_list[$key] = strtolower($omit_lang);
+ }
+
+ foreach (array_keys($this->_lang_db) as $lang) {
+ if (!in_array($lang, $omit_list)) {
+ unset($this->_lang_db[$lang]);
+ $deleted++;
+ }
+ }
+ }
+
+ // reset the cluster cache if the number of languages changes
+ // this will then have to be recalculated
+ if (isset($this->_clusters) && $deleted > 0) {
+ $this->_clusters = null;
+ }
+
+ return $deleted;
+ }
+
+
+ /**
+ * Returns the number of languages that this object can detect
+ *
+ * @access public
+ * @return int the number of languages
+ * @throws Text_LanguageDetect_Exception
+ */
+ function getLanguageCount()
+ {
+ return count($this->_lang_db);
+ }
+
+ /**
+ * Checks if the language with the given name exists in the database
+ *
+ * @param mixed $lang Language name or array of language names
+ *
+ * @return bool true if language model exists
+ */
+ public function languageExists($lang)
+ {
+ $lang = $this->_convertFromNameMode($lang);
+
+ if (is_string($lang)) {
+ return isset($this->_lang_db[strtolower($lang)]);
+
+ } elseif (is_array($lang)) {
+ foreach ($lang as $test_lang) {
+ if (!isset($this->_lang_db[strtolower($test_lang)])) {
+ return false;
+ }
+ }
+ return true;
+
+ } else {
+ throw new Text_LanguageDetect_Exception(
+ 'Unsupported parameter type passed to languageExists()',
+ Text_LanguageDetect_Exception::PARAM_TYPE
+ );
+ }
+ }
+
+ /**
+ * Returns the list of detectable languages
+ *
+ * @access public
+ * @return array the names of the languages known to this object<<<<<<<
+ * @throws Text_LanguageDetect_Exception
+ */
+ function getLanguages()
+ {
+ return $this->_convertToNameMode(
+ array_keys($this->_lang_db)
+ );
+ }
+
+ /**
+ * Make this object behave like Language::Guess
+ *
+ * @param bool $setting false to turn off perl compatibility
+ *
+ * @return void
+ */
+ public function setPerlCompatible($setting = true)
+ {
+ if (is_bool($setting)) { // input check
+ $this->_perl_compatible = $setting;
+
+ if ($setting == true) {
+ $this->_max_score = $this->_threshold;
+ } else {
+ $this->_max_score = 0;
+ }
+ }
+
+ }
+
+ /**
+ * Sets the way how language names are accepted and returned.
+ *
+ * @param integer $name_mode One of the following modes:
+ * 0 - language name ("english")
+ * 2 - 2-letter ISO 639-1 code ("en")
+ * 3 - 3-letter ISO 639-2 code ("eng")
+ *
+ * @return void
+ */
+ function setNameMode($name_mode)
+ {
+ $this->_name_mode = $name_mode;
+ }
+
+ /**
+ * Whether to use unicode block ranges in detection
+ *
+ * Should speed up most detections if turned on (detault is on). In some
+ * circumstances it may be slower, such as for large text samples (> 10K)
+ * in languages that use latin scripts. In other cases it should speed up
+ * detection noticeably.
+ *
+ * @param bool $setting false to turn off
+ *
+ * @return void
+ */
+ public function useUnicodeBlocks($setting = true)
+ {
+ if (is_bool($setting)) {
+ $this->_use_unicode_narrowing = $setting;
+ }
+ }
+
+ /**
+ * Converts a piece of text into trigrams
+ *
+ * @param string $text text to convert
+ *
+ * @return array array of trigram frequencies
+ * @access private
+ * @deprecated Superceded by the Text_LanguageDetect_Parser class
+ */
+ function _trigram($text)
+ {
+ $s = new Text_LanguageDetect_Parser($text);
+ $s->prepareTrigram();
+ $s->prepareUnicode(false);
+ $s->setPadStart(!$this->_perl_compatible);
+ $s->analyze();
+ return $s->getTrigramFreqs();
+ }
+
+ /**
+ * Converts a set of trigrams from frequencies to ranks
+ *
+ * Thresholds (cuts off) the list at $this->_threshold
+ *
+ * @param array $arr array of trigram
+ *
+ * @return array ranks of trigrams
+ * @access protected
+ */
+ function _arr_rank($arr)
+ {
+
+ // sorts alphabetically first as a standard way of breaking rank ties
+ $this->_bub_sort($arr);
+
+ // below might also work, but seemed to introduce errors in testing
+ //ksort($arr);
+ //asort($arr);
+
+ $rank = array();
+
+ $i = 0;
+ foreach ($arr as $key => $value) {
+ $rank[$key] = $i++;
+
+ // cut off at a standard threshold
+ if ($i >= $this->_threshold) {
+ break;
+ }
+ }
+
+ return $rank;
+ }
+
+ /**
+ * Sorts an array by value breaking ties alphabetically
+ *
+ * @param array &$arr the array to sort
+ *
+ * @return void
+ * @access private
+ */
+ function _bub_sort(&$arr)
+ {
+ // should do the same as this perl statement:
+ // sort { $trigrams{$b} == $trigrams{$a}
+ // ? $a cmp $b : $trigrams{$b} <=> $trigrams{$a} }
+
+ // needs to sort by both key and value at once
+ // using the key to break ties for the value
+
+ // converts array into an array of arrays of each key and value
+ // may be a better way of doing this
+ $combined = array();
+
+ foreach ($arr as $key => $value) {
+ $combined[] = array($key, $value);
+ }
+
+ usort($combined, array($this, '_sort_func'));
+
+ $replacement = array();
+ foreach ($combined as $key => $value) {
+ list($new_key, $new_value) = $value;
+ $replacement[$new_key] = $new_value;
+ }
+
+ $arr = $replacement;
+ }
+
+ /**
+ * Sort function used by bubble sort
+ *
+ * Callback function for usort().
+ *
+ * @param array $a first param passed by usort()
+ * @param array $b second param passed by usort()
+ *
+ * @return int 1 if $a is greater, -1 if not
+ * @see _bub_sort()
+ * @access private
+ */
+ function _sort_func($a, $b)
+ {
+ // each is actually a key/value pair, so that it can compare using both
+ list($a_key, $a_value) = $a;
+ list($b_key, $b_value) = $b;
+
+ if ($a_value == $b_value) {
+ // if the values are the same, break ties using the key
+ return strcmp($a_key, $b_key);
+
+ } else {
+ // if not, just sort normally
+ if ($a_value > $b_value) {
+ return -1;
+ } else {
+ return 1;
+ }
+ }
+
+ // 0 should not be possible because keys must be unique
+ }
+
+ /**
+ * Calculates a linear rank-order distance statistic between two sets of
+ * ranked trigrams
+ *
+ * Sums the differences in rank for each trigram. If the trigram does not
+ * appear in both, consider it a difference of $this->_threshold.
+ *
+ * This distance measure was proposed by Cavnar & Trenkle (1994). Despite
+ * its simplicity it has been shown to be highly accurate for language
+ * identification tasks.
+ *
+ * @param array $arr1 the reference set of trigram ranks
+ * @param array $arr2 the target set of trigram ranks
+ *
+ * @return int the sum of the differences between the ranks of
+ * the two trigram sets
+ * @access private
+ */
+ function _distance($arr1, $arr2)
+ {
+ $sumdist = 0;
+
+ foreach ($arr2 as $key => $value) {
+ if (isset($arr1[$key])) {
+ $distance = abs($value - $arr1[$key]);
+ } else {
+ // $this->_threshold sets the maximum possible distance value
+ // for any one pair of trigrams
+ $distance = $this->_threshold;
+ }
+ $sumdist += $distance;
+ }
+
+ return $sumdist;
+
+ // todo: there are other distance statistics to try, e.g. relative
+ // entropy, but they're probably more costly to compute
+ }
+
+ /**
+ * Normalizes the score returned by _distance()
+ *
+ * Different if perl compatible or not
+ *
+ * @param int $score the score from _distance()
+ * @param int $base_count the number of trigrams being considered
+ *
+ * @return float the normalized score
+ * @see _distance()
+ * @access private
+ */
+ function _normalize_score($score, $base_count = null)
+ {
+ if ($base_count === null) {
+ $base_count = $this->_threshold;
+ }
+
+ if (!$this->_perl_compatible) {
+ return 1 - ($score / $base_count / $this->_threshold);
+ } else {
+ return floor($score / $base_count);
+ }
+ }
+
+
+ /**
+ * Detects the closeness of a sample of text to the known languages
+ *
+ * Calculates the statistical difference between the text and
+ * the trigrams for each language, normalizes the score then
+ * returns results for all languages in sorted order
+ *
+ * If perl compatible, the score is 300-0, 0 being most similar.
+ * Otherwise, it's 0-1 with 1 being most similar.
+ *
+ * The $sample text should be at least a few sentences in length;
+ * should be ascii-7 or utf8 encoded, if another and the mbstring extension
+ * is present it will try to detect and convert. However, experience has
+ * shown that mb_detect_encoding() *does not work very well* with at least
+ * some types of encoding.
+ *
+ * @param string $sample a sample of text to compare.
+ * @param int $limit if specified, return an array of the most likely
+ * $limit languages and their scores.
+ *
+ * @return mixed sorted array of language scores, blank array if no
+ * useable text was found
+ * @see _distance()
+ * @throws Text_LanguageDetect_Exception
+ */
+ public function detect($sample, $limit = 0)
+ {
+ // input check
+ if (!Text_LanguageDetect_Parser::validateString($sample)) {
+ return array();
+ }
+
+ // check char encoding
+ // (only if mbstring extension is compiled and PHP > 4.0.6)
+ if (function_exists('mb_detect_encoding')
+ && function_exists('mb_convert_encoding')
+ ) {
+ // mb_detect_encoding isn't very reliable, to say the least
+ // detection should still work with a sufficient sample
+ // of ascii characters
+ $encoding = mb_detect_encoding($sample);
+
+ // mb_detect_encoding() will return FALSE if detection fails
+ // don't attempt conversion if that's the case
+ if ($encoding != 'ASCII' && $encoding != 'UTF-8'
+ && $encoding !== false
+ ) {
+ // verify the encoding exists in mb_list_encodings
+ if (in_array($encoding, mb_list_encodings())) {
+ $sample = mb_convert_encoding($sample, 'UTF-8', $encoding);
+ }
+ }
+ }
+
+ $sample_obj = new Text_LanguageDetect_Parser($sample);
+ $sample_obj->prepareTrigram();
+ if ($this->_use_unicode_narrowing) {
+ $sample_obj->prepareUnicode();
+ }
+ $sample_obj->setPadStart(!$this->_perl_compatible);
+ $sample_obj->analyze();
+
+ $trigram_freqs =& $sample_obj->getTrigramRanks();
+ $trigram_count = count($trigram_freqs);
+
+ if ($trigram_count == 0) {
+ return array();
+ }
+
+ $scores = array();
+
+ // use unicode block detection to narrow down the possibilities
+ if ($this->_use_unicode_narrowing) {
+ $blocks =& $sample_obj->getUnicodeBlocks();
+
+ if (is_array($blocks)) {
+ $present_blocks = array_keys($blocks);
+ } else {
+ throw new Text_LanguageDetect_Exception(
+ 'Error during block detection',
+ Text_LanguageDetect_Exception::BLOCK_DETECTION
+ );
+ }
+
+ $possible_langs = array();
+
+ foreach ($present_blocks as $blockname) {
+ if (isset($this->_unicode_map[$blockname])) {
+
+ $possible_langs = array_merge(
+ $possible_langs,
+ array_keys($this->_unicode_map[$blockname])
+ );
+
+ // todo: faster way to do this?
+ }
+ }
+
+ // could also try an intersect operation rather than a union
+ // in other words, choose languages whose trigrams contain
+ // ALL of the unicode blocks found in this sample
+ // would improve speed but would be completely thrown off by an
+ // unexpected character, like an umlaut appearing in english text
+
+ $possible_langs = array_intersect(
+ array_keys($this->_lang_db),
+ array_unique($possible_langs)
+ );
+
+ // needs to intersect it with the keys of _lang_db in case
+ // languages have been omitted
+
+ } else {
+ // or just try 'em all
+ $possible_langs = array_keys($this->_lang_db);
+ }
+
+
+ foreach ($possible_langs as $lang) {
+ $scores[$lang] = $this->_normalize_score(
+ $this->_distance($this->_lang_db[$lang], $trigram_freqs),
+ $trigram_count
+ );
+ }
+
+ unset($sample_obj);
+
+ if ($this->_perl_compatible) {
+ asort($scores);
+ } else {
+ arsort($scores);
+ }
+
+ // todo: drop languages with a score of $this->_max_score?
+
+ // limit the number of returned scores
+ if ($limit && is_numeric($limit)) {
+ $limited_scores = array();
+
+ $i = 0;
+ foreach ($scores as $key => $value) {
+ if ($i++ >= $limit) {
+ break;
+ }
+
+ $limited_scores[$key] = $value;
+ }
+
+ return $this->_convertToNameMode($limited_scores, true);
+ } else {
+ return $this->_convertToNameMode($scores, true);
+ }
+ }
+
+ /**
+ * Returns only the most similar language to the text sample
+ *
+ * Calls $this->detect() and returns only the top result
+ *
+ * @param string $sample text to detect the language of
+ *
+ * @return string the name of the most likely language
+ * or null if no language is similar
+ * @see detect()
+ * @throws Text_LanguageDetect_Exception
+ */
+ public function detectSimple($sample)
+ {
+ $scores = $this->detect($sample, 1);
+
+ // if top language has the maximum possible score,
+ // then the top score will have been picked at random
+ if (!is_array($scores) || empty($scores)
+ || current($scores) == $this->_max_score
+ ) {
+ return null;
+ } else {
+ return key($scores);
+ }
+ }
+
+ /**
+ * Returns an array containing the most similar language and a confidence
+ * rating
+ *
+ * Confidence is a simple measure calculated from the similarity score
+ * minus the similarity score from the next most similar language
+ * divided by the highest possible score. Languages that have closely
+ * related cousins (e.g. Norwegian and Danish) should generally have lower
+ * confidence scores.
+ *
+ * The similarity score answers the question "How likely is the text the
+ * returned language regardless of the other languages considered?" The
+ * confidence score is one way of answering the question "how likely is the
+ * text the detected language relative to the rest of the language model
+ * set?"
+ *
+ * To see how similar languages are a priori, see languageSimilarity()
+ *
+ * @param string $sample text for which language will be detected
+ *
+ * @return array most similar language, score and confidence rating
+ * or null if no language is similar
+ * @see detect()
+ * @throws Text_LanguageDetect_Exception
+ */
+ public function detectConfidence($sample)
+ {
+ $scores = $this->detect($sample, 2);
+
+ // if most similar language has the max score, it
+ // will have been picked at random
+ if (!is_array($scores) || empty($scores)
+ || current($scores) == $this->_max_score
+ ) {
+ return null;
+ }
+
+ $arr['language'] = key($scores);
+ $arr['similarity'] = current($scores);
+ if (next($scores) !== false) { // if false then no next element
+ // the goal is to return a higher value if the distance between
+ // the similarity of the first score and the second score is high
+
+ if ($this->_perl_compatible) {
+ $arr['confidence'] = (current($scores) - $arr['similarity'])
+ / $this->_max_score;
+
+ } else {
+ $arr['confidence'] = $arr['similarity'] - current($scores);
+
+ }
+
+ } else {
+ $arr['confidence'] = null;
+ }
+
+ return $arr;
+ }
+
+ /**
+ * Returns the distribution of unicode blocks in a given utf8 string
+ *
+ * For the block name of a single char, use unicodeBlockName()
+ *
+ * @param string $str input string. Must be ascii or utf8
+ * @param bool $skip_symbols if true, skip ascii digits, symbols and
+ * non-printing characters. Includes spaces,
+ * newlines and common punctutation characters.
+ *
+ * @return array
+ * @throws Text_LanguageDetect_Exception
+ */
+ public function detectUnicodeBlocks($str, $skip_symbols)
+ {
+ $skip_symbols = (bool)$skip_symbols;
+ $str = (string)$str;
+
+ $sample_obj = new Text_LanguageDetect_Parser($str);
+ $sample_obj->prepareUnicode();
+ $sample_obj->prepareTrigram(false);
+ $sample_obj->setUnicodeSkipSymbols($skip_symbols);
+ $sample_obj->analyze();
+ $blocks = $sample_obj->getUnicodeBlocks();
+ unset($sample_obj);
+ return $blocks;
+ }
+
+ /**
+ * Returns the block name for a given unicode value
+ *
+ * If passed a string, will assume it is being passed a UTF8-formatted
+ * character and will automatically convert. Otherwise it will assume it
+ * is being passed a numeric unicode value.
+ *
+ * Make sure input is of the correct type!
+ *
+ * @param mixed $unicode unicode value or utf8 char
+ *
+ * @return mixed the block name string or false if not found
+ * @throws Text_LanguageDetect_Exception
+ */
+ public function unicodeBlockName($unicode)
+ {
+ if (is_string($unicode)) {
+ // assume it is being passed a utf8 char, so convert it
+ if (self::utf8strlen($unicode) > 1) {
+ throw new Text_LanguageDetect_Exception(
+ 'Pass a single char only to this method',
+ Text_LanguageDetect_Exception::PARAM_TYPE
+ );
+ }
+ $unicode = $this->_utf8char2unicode($unicode);
+
+ } elseif (!is_int($unicode)) {
+ throw new Text_LanguageDetect_Exception(
+ 'Input must be of type string or int.',
+ Text_LanguageDetect_Exception::PARAM_TYPE
+ );
+ }
+
+ $blocks = $this->_read_unicode_block_db();
+
+ $result = $this->_unicode_block_name($unicode, $blocks);
+
+ if ($result == -1) {
+ return false;
+ } else {
+ return $result[2];
+ }
+ }
+
+ /**
+ * Searches the unicode block database
+ *
+ * Returns the block name for a given unicode value. unicodeBlockName() is
+ * the public interface for this function, which does input checks which
+ * this function omits for speed.
+ *
+ * @param int $unicode the unicode value
+ * @param array $blocks the block database
+ * @param int $block_count the number of defined blocks in the database
+ *
+ * @return mixed Block name, -1 if it failed
+ * @see unicodeBlockName()
+ * @access protected
+ */
+ function _unicode_block_name($unicode, $blocks, $block_count = -1)
+ {
+ // for a reference, see
+ // http://www.unicode.org/Public/UNIDATA/Blocks.txt
+
+ // assume that ascii characters are the most common
+ // so try it first for efficiency
+ if ($unicode <= $blocks[0][1]) {
+ return $blocks[0];
+ }
+
+ // the optional $block_count param is for efficiency
+ // so we this function doesn't have to run count() every time
+ if ($block_count != -1) {
+ $high = $block_count - 1;
+ } else {
+ $high = count($blocks) - 1;
+ }
+
+ $low = 1; // start with 1 because ascii was 0
+
+ // your average binary search algorithm
+ while ($low <= $high) {
+ $mid = floor(($low + $high) / 2);
+
+ if ($unicode < $blocks[$mid][0]) {
+ // if it's lower than the lower bound
+ $high = $mid - 1;
+
+ } elseif ($unicode > $blocks[$mid][1]) {
+ // if it's higher than the upper bound
+ $low = $mid + 1;
+
+ } else {
+ // found it
+ return $blocks[$mid];
+ }
+ }
+
+ // failed to find the block
+ return -1;
+
+ // todo: differentiate when it's out of range or when it falls
+ // into an unassigned range?
+ }
+
+ /**
+ * Brings up the unicode block database
+ *
+ * @return array the database of unicode block definitions
+ * @throws Text_LanguageDetect_Exception
+ * @access protected
+ */
+ function _read_unicode_block_db()
+ {
+ // since the unicode definitions are always going to be the same,
+ // might as well share the memory for the db with all other instances
+ // of this class
+ static $data;
+
+ if (!isset($data)) {
+ $data = $this->_readdb($this->_unicode_db_filename);
+ }
+
+ return $data;
+ }
+
+ /**
+ * Calculate the similarities between the language models
+ *
+ * Use this function to see how similar languages are to each other.
+ *
+ * If passed 2 language names, will return just those languages compared.
+ * If passed 1 language name, will return that language compared to
+ * all others.
+ * If passed none, will return an array of every language model compared
+ * to every other one.
+ *
+ * @param string $lang1 the name of the first language to be compared
+ * @param string $lang2 the name of the second language to be compared
+ *
+ * @return array scores of every language compared
+ * or the score of just the provided languages
+ * or null if one of the supplied languages does not exist
+ * @throws Text_LanguageDetect_Exception
+ */
+ public function languageSimilarity($lang1 = null, $lang2 = null)
+ {
+ $lang1 = $this->_convertFromNameMode($lang1);
+ $lang2 = $this->_convertFromNameMode($lang2);
+ if ($lang1 != null) {
+ $lang1 = strtolower($lang1);
+
+ // check if language model exists
+ if (!isset($this->_lang_db[$lang1])) {
+ return null;
+ }
+
+ if ($lang2 != null) {
+ if (!isset($this->_lang_db[$lang2])) {
+ // check if language model exists
+ return null;
+ }
+
+ $lang2 = strtolower($lang2);
+
+ // compare just these two languages
+ return $this->_normalize_score(
+ $this->_distance(
+ $this->_lang_db[$lang1],
+ $this->_lang_db[$lang2]
+ )
+ );
+
+ } else {
+ // compare just $lang1 to all languages
+ $return_arr = array();
+ foreach ($this->_lang_db as $key => $value) {
+ if ($key != $lang1) {
+ // don't compare a language to itself
+ $return_arr[$key] = $this->_normalize_score(
+ $this->_distance($this->_lang_db[$lang1], $value)
+ );
+ }
+ }
+ asort($return_arr);
+
+ return $return_arr;
+ }
+
+
+ } else {
+ // compare all languages to each other
+ $return_arr = array();
+ foreach (array_keys($this->_lang_db) as $lang1) {
+ foreach (array_keys($this->_lang_db) as $lang2) {
+ // skip comparing languages to themselves
+ if ($lang1 != $lang2) {
+
+ if (isset($return_arr[$lang2][$lang1])) {
+ // don't re-calculate what's already been done
+ $return_arr[$lang1][$lang2]
+ = $return_arr[$lang2][$lang1];
+
+ } else {
+ // calculate
+ $return_arr[$lang1][$lang2]
+ = $this->_normalize_score(
+ $this->_distance(
+ $this->_lang_db[$lang1],
+ $this->_lang_db[$lang2]
+ )
+ );
+
+ }
+ }
+ }
+ }
+ return $return_arr;
+ }
+ }
+
+ /**
+ * Cluster known languages according to languageSimilarity()
+ *
+ * WARNING: this method is EXPERIMENTAL. It is not recommended for common
+ * use, and it may disappear or its functionality may change in future
+ * releases without notice.
+ *
+ * Uses a nearest neighbor technique to generate the maximum possible
+ * number of dendograms from the similarity data.
+ *
+ * @access public
+ * @return array language cluster data
+ * @throws Text_LanguageDetect_Exception
+ * @see languageSimilarity()
+ * @deprecated this function will eventually be removed and placed into
+ * the model generation class
+ */
+ function clusterLanguages()
+ {
+ // todo: set the maximum number of clusters
+ // return cached result, if any
+ if (isset($this->_clusters)) {
+ return $this->_clusters;
+ }
+
+ $langs = array_keys($this->_lang_db);
+
+ $arr = $this->languageSimilarity();
+
+ sort($langs);
+
+ foreach ($langs as $lang) {
+ if (!isset($this->_lang_db[$lang])) {
+ throw new Text_LanguageDetect_Exception(
+ "missing $lang!",
+ Text_LanguageDetect_Exception::UNKNOWN_LANGUAGE
+ );
+ }
+ }
+
+ // http://www.psychstat.missouristate.edu/multibook/mlt04m.html
+ foreach ($langs as $old_key => $lang1) {
+ $langs[$lang1] = $lang1;
+ unset($langs[$old_key]);
+ }
+
+ $result_data = $really_map = array();
+
+ $i = 0;
+ while (count($langs) > 2 && $i++ < 200) {
+ $highest_score = -1;
+ $highest_key1 = '';
+ $highest_key2 = '';
+ foreach ($langs as $lang1) {
+ foreach ($langs as $lang2) {
+ if ($lang1 != $lang2
+ && $arr[$lang1][$lang2] > $highest_score
+ ) {
+ $highest_score = $arr[$lang1][$lang2];
+ $highest_key1 = $lang1;
+ $highest_key2 = $lang2;
+ }
+ }
+ }
+
+ if (!$highest_key1) {
+ // should not ever happen
+ throw new Text_LanguageDetect_Exception(
+ "no highest key? (step: $i)",
+ Text_LanguageDetect_Exception::NO_HIGHEST_KEY
+ );
+ }
+
+ if ($highest_score == 0) {
+ // languages are perfectly dissimilar
+ break;
+ }
+
+ // $highest_key1 and $highest_key2 are most similar
+ $sum1 = array_sum($arr[$highest_key1]);
+ $sum2 = array_sum($arr[$highest_key2]);
+
+ // use the score for the one that is most similar to the rest of
+ // the field as the score for the group
+ // todo: could try averaging or "centroid" method instead
+ // seems like that might make more sense
+ // actually nearest neighbor may be better for binary searching
+
+
+ // for "Complete Linkage"/"furthest neighbor"
+ // sign should be <
+ // for "Single Linkage"/"nearest neighbor" method
+ // should should be >
+ // results seem to be pretty much the same with either method
+
+ // figure out which to delete and which to replace
+ if ($sum1 > $sum2) {
+ $replaceme = $highest_key1;
+ $deleteme = $highest_key2;
+ } else {
+ $replaceme = $highest_key2;
+ $deleteme = $highest_key1;
+ }
+
+ $newkey = $replaceme . ':' . $deleteme;
+
+ // $replaceme is most similar to remaining languages
+ // replace $replaceme with '$newkey', deleting $deleteme
+
+ // keep a record of which fork is really which language
+ $really_lang = $replaceme;
+ while (isset($really_map[$really_lang])) {
+ $really_lang = $really_map[$really_lang];
+ }
+ $really_map[$newkey] = $really_lang;
+
+
+ // replace the best fitting key, delete the other
+ foreach ($arr as $key1 => $arr2) {
+ foreach ($arr2 as $key2 => $value2) {
+ if ($key2 == $replaceme) {
+ $arr[$key1][$newkey] = $arr[$key1][$key2];
+ unset($arr[$key1][$key2]);
+ // replacing $arr[$key1][$key2] with $arr[$key1][$newkey]
+ }
+
+ if ($key1 == $replaceme) {
+ $arr[$newkey][$key2] = $arr[$key1][$key2];
+ unset($arr[$key1][$key2]);
+ // replacing $arr[$key1][$key2] with $arr[$newkey][$key2]
+ }
+
+ if ($key1 == $deleteme || $key2 == $deleteme) {
+ // deleting $arr[$key1][$key2]
+ unset($arr[$key1][$key2]);
+ }
+ }
+ }
+
+
+ unset($langs[$highest_key1]);
+ unset($langs[$highest_key2]);
+ $langs[$newkey] = $newkey;
+
+
+ // some of these may be overkill
+ $result_data[$newkey] = array(
+ 'newkey' => $newkey,
+ 'count' => $i,
+ 'diff' => abs($sum1 - $sum2),
+ 'score' => $highest_score,
+ 'bestfit' => $replaceme,
+ 'otherfit' => $deleteme,
+ 'really' => $really_lang,
+ );
+ }
+
+ $return_val = array(
+ 'open_forks' => $langs,
+ // the top level of clusters
+ // clusters that are mutually exclusive
+ // or specified by a specific maximum
+
+ 'fork_data' => $result_data,
+ // data for each split
+
+ 'name_map' => $really_map,
+ // which cluster is really which language
+ // using the nearest neighbor technique, the cluster
+ // inherits all of the properties of its most-similar member
+ // this keeps track
+ );
+
+
+ // saves the result in the object
+ $this->_clusters = $return_val;
+
+ return $return_val;
+ }
+
+
+ /**
+ * Perform an intelligent detection based on clusterLanguages()
+ *
+ * WARNING: this method is EXPERIMENTAL. It is not recommended for common
+ * use, and it may disappear or its functionality may change in future
+ * releases without notice.
+ *
+ * This compares the sample text to top the top level of clusters. If the
+ * sample is similar to the cluster it will drop down and compare it to the
+ * languages in the cluster, and so on until it hits a leaf node.
+ *
+ * this should find the language in considerably fewer compares
+ * (the equivalent of a binary search), however clusterLanguages() is costly
+ * and the loss of accuracy from this technique is significant.
+ *
+ * This method may need to be 'fuzzier' in order to become more accurate.
+ *
+ * This function could be more useful if the universe of possible languages
+ * was very large, however in such cases some method of Bayesian inference
+ * might be more helpful.
+ *
+ * @param string $str input string
+ *
+ * @return array language scores (only those compared)
+ * @throws Text_LanguageDetect_Exception
+ * @see clusterLanguages()
+ */
+ public function clusteredSearch($str)
+ {
+ // input check
+ if (!Text_LanguageDetect_Parser::validateString($str)) {
+ return array();
+ }
+
+ // clusterLanguages() will return a cached result if possible
+ // so it's safe to call it every time
+ $result = $this->clusterLanguages();
+
+ $dendogram_start = $result['open_forks'];
+ $dendogram_data = $result['fork_data'];
+ $dendogram_alias = $result['name_map'];
+
+ $sample_obj = new Text_LanguageDetect_Parser($str);
+ $sample_obj->prepareTrigram();
+ $sample_obj->setPadStart(!$this->_perl_compatible);
+ $sample_obj->analyze();
+ $sample_result = $sample_obj->getTrigramRanks();
+ $sample_count = count($sample_result);
+
+ // input check
+ if ($sample_count == 0) {
+ return array();
+ }
+
+ $i = 0; // counts the number of steps
+
+ foreach ($dendogram_start as $lang) {
+ if (isset($dendogram_alias[$lang])) {
+ $lang_key = $dendogram_alias[$lang];
+ } else {
+ $lang_key = $lang;
+ }
+
+ $scores[$lang] = $this->_normalize_score(
+ $this->_distance($this->_lang_db[$lang_key], $sample_result),
+ $sample_count
+ );
+
+ $i++;
+ }
+
+ if ($this->_perl_compatible) {
+ asort($scores);
+ } else {
+ arsort($scores);
+ }
+
+ $top_score = current($scores);
+ $top_key = key($scores);
+
+ // of starting forks, $top_key is the most similar to the sample
+
+ $cur_key = $top_key;
+ while (isset($dendogram_data[$cur_key])) {
+ $lang1 = $dendogram_data[$cur_key]['bestfit'];
+ $lang2 = $dendogram_data[$cur_key]['otherfit'];
+ foreach (array($lang1, $lang2) as $lang) {
+ if (isset($dendogram_alias[$lang])) {
+ $lang_key = $dendogram_alias[$lang];
+ } else {
+ $lang_key = $lang;
+ }
+
+ $scores[$lang] = $this->_normalize_score(
+ $this->_distance($this->_lang_db[$lang_key], $sample_result),
+ $sample_count
+ );
+
+ //todo: does not need to do same comparison again
+ }
+
+ $i++;
+
+ if ($scores[$lang1] > $scores[$lang2]) {
+ $cur_key = $lang1;
+ $loser_key = $lang2;
+ } else {
+ $cur_key = $lang2;
+ $loser_key = $lang1;
+ }
+
+ $diff = $scores[$cur_key] - $scores[$loser_key];
+
+ // $cur_key ({$dendogram_alias[$cur_key]}) wins
+ // over $loser_key ({$dendogram_alias[$loser_key]})
+ // with a difference of $diff
+ }
+
+ // found result in $i compares
+
+ // rather than sorting the result, preserve it so that you can see
+ // which paths the algorithm decided to take along the tree
+
+ // but sometimes the last item is only the second highest
+ if (($this->_perl_compatible && (end($scores) > prev($scores)))
+ || (!$this->_perl_compatible && (end($scores) < prev($scores)))
+ ) {
+ $real_last_score = current($scores);
+ $real_last_key = key($scores);
+
+ // swaps the 2nd-to-last item for the last item
+ unset($scores[$real_last_key]);
+ $scores[$real_last_key] = $real_last_score;
+ }
+
+
+ if (!$this->_perl_compatible) {
+ $scores = array_reverse($scores, true);
+ // second param requires php > 4.0.3
+ }
+
+ return $scores;
+ }
+
+ /**
+ * ut8-safe strlen()
+ *
+ * Returns the numbers of characters (not bytes) in a utf8 string
+ *
+ * @param string $str string to get the length of
+ *
+ * @return int number of chars
+ */
+ public static function utf8strlen($str)
+ {
+ // utf8_decode() will convert unknown chars to '?', which is actually
+ // ideal for counting.
+
+ return strlen(utf8_decode($str));
+
+ // idea stolen from dokuwiki
+ }
+
+ /**
+ * Returns the unicode value of a utf8 char
+ *
+ * @param string $char a utf8 (possibly multi-byte) char
+ *
+ * @return int unicode value
+ * @access protected
+ * @link http://en.wikipedia.org/wiki/UTF-8
+ */
+ function _utf8char2unicode($char)
+ {
+ // strlen() here will actually get the binary length of a single char
+ switch (strlen($char)) {
+ case 1:
+ // normal ASCII-7 byte
+ // 0xxxxxxx --> 0xxxxxxx
+ return ord($char{0});
+
+ case 2:
+ // 2 byte unicode
+ // 110zzzzx 10xxxxxx --> 00000zzz zxxxxxxx
+ $z = (ord($char{0}) & 0x000001F) << 6;
+ $x = (ord($char{1}) & 0x0000003F);
+ return ($z | $x);
+
+ case 3:
+ // 3 byte unicode
+ // 1110zzzz 10zxxxxx 10xxxxxx --> zzzzzxxx xxxxxxxx
+ $z = (ord($char{0}) & 0x0000000F) << 12;
+ $x1 = (ord($char{1}) & 0x0000003F) << 6;
+ $x2 = (ord($char{2}) & 0x0000003F);
+ return ($z | $x1 | $x2);
+
+ case 4:
+ // 4 byte unicode
+ // 11110zzz 10zzxxxx 10xxxxxx 10xxxxxx -->
+ // 000zzzzz xxxxxxxx xxxxxxxx
+ $z1 = (ord($char{0}) & 0x00000007) << 18;
+ $z2 = (ord($char{1}) & 0x0000003F) << 12;
+ $x1 = (ord($char{2}) & 0x0000003F) << 6;
+ $x2 = (ord($char{3}) & 0x0000003F);
+ return ($z1 | $z2 | $x1 | $x2);
+ }
+ }
+
+ /**
+ * utf8-safe fast character iterator
+ *
+ * Will get the next character starting from $counter, which will then be
+ * incremented. If a multi-byte char the bytes will be concatenated and
+ * $counter will be incremeted by the number of bytes in the char.
+ *
+ * @param string $str the string being iterated over
+ * @param int &$counter the iterator, will increment by reference
+ * @param bool $special_convert whether to do special conversions
+ *
+ * @return char the next (possibly multi-byte) char from $counter
+ * @access private
+ */
+ static function _next_char($str, &$counter, $special_convert = false)
+ {
+ $char = $str{$counter++};
+ $ord = ord($char);
+
+ // for a description of the utf8 system see
+ // http://www.phpclasses.org/browse/file/5131.html
+
+ // normal ascii one byte char
+ if ($ord <= 127) {
+ // special conversions needed for this package
+ // (that only apply to regular ascii characters)
+ // lower case, and convert all non-alphanumeric characters
+ // other than "'" to space
+ if ($special_convert && $char != ' ' && $char != "'") {
+ if ($ord >= 65 && $ord <= 90) { // A-Z
+ $char = chr($ord + 32); // lower case
+ } elseif ($ord < 97 || $ord > 122) { // NOT a-z
+ $char = ' '; // convert to space
+ }
+ }
+
+ return $char;
+
+ } elseif ($ord >> 5 == 6) { // two-byte char
+ // multi-byte chars
+ $nextchar = $str{$counter++}; // get next byte
+
+ // lower-casing of non-ascii characters is still incomplete
+
+ if ($special_convert) {
+ // lower case latin accented characters
+ if ($ord == 195) {
+ $nextord = ord($nextchar);
+ $nextord_adj = $nextord + 64;
+ // for a reference, see
+ // http://www.ramsch.org/martin/uni/fmi-hp/iso8859-1.html
+
+ // &Agrave; - &THORN; but not &times;
+ if ($nextord_adj >= 192
+ && $nextord_adj <= 222
+ && $nextord_adj != 215
+ ) {
+ $nextchar = chr($nextord + 32);
+ }
+
+ } elseif ($ord == 208) {
+ // lower case cyrillic alphabet
+ $nextord = ord($nextchar);
+ // if A - Pe
+ if ($nextord >= 144 && $nextord <= 159) {
+ // lower case
+ $nextchar = chr($nextord + 32);
+
+ } elseif ($nextord >= 160 && $nextord <= 175) {
+ // if Er - Ya
+ // lower case
+ $char = chr(209); // == $ord++
+ $nextchar = chr($nextord - 32);
+ }
+ }
+ }
+
+ // tag on next byte
+ return $char . $nextchar;
+ } elseif ($ord >> 4 == 14) { // three-byte char
+
+ // tag on next 2 bytes
+ return $char . $str{$counter++} . $str{$counter++};
+
+ } elseif ($ord >> 3 == 30) { // four-byte char
+
+ // tag on next 3 bytes
+ return $char . $str{$counter++} . $str{$counter++} . $str{$counter++};
+
+ } else {
+ // error?
+ }
+ }
+
+ /**
+ * Converts an $language input parameter from the configured mode
+ * to the language name that is used internally.
+ *
+ * Works for strings and arrays.
+ *
+ * @param string|array $lang A language description ("english"/"en"/"eng")
+ * @param boolean $convertKey If $lang is an array, setting $key
+ * converts the keys to the language name.
+ *
+ * @return string|array Language name
+ */
+ function _convertFromNameMode($lang, $convertKey = false)
+ {
+ if ($this->_name_mode == 0) {
+ return $lang;
+ }
+
+ if ($this->_name_mode == 2) {
+ $method = 'code2ToName';
+ } else {
+ $method = 'code3ToName';
+ }
+
+ if (is_string($lang)) {
+ return (string)Text_LanguageDetect_ISO639::$method($lang);
+ }
+
+ $newlang = array();
+ foreach ($lang as $key => $val) {
+ if ($convertKey) {
+ $newkey = (string)Text_LanguageDetect_ISO639::$method($key);
+ $newlang[$newkey] = $val;
+ } else {
+ $newlang[$key] = (string)Text_LanguageDetect_ISO639::$method($val);
+ }
+ }
+ return $newlang;
+ }
+
+ /**
+ * Converts an $language output parameter from the language name that is
+ * used internally to the configured mode.
+ *
+ * Works for strings and arrays.
+ *
+ * @param string|array $lang A language description ("english"/"en"/"eng")
+ * @param boolean $convertKey If $lang is an array, setting $key
+ * converts the keys to the language name.
+ *
+ * @return string|array Language name
+ */
+ function _convertToNameMode($lang, $convertKey = false)
+ {
+ if ($this->_name_mode == 0) {
+ return $lang;
+ }
+
+ if ($this->_name_mode == 2) {
+ $method = 'nameToCode2';
+ } else {
+ $method = 'nameToCode3';
+ }
+
+ if (is_string($lang)) {
+ return Text_LanguageDetect_ISO639::$method($lang);
+ }
+
+ $newlang = array();
+ foreach ($lang as $key => $val) {
+ if ($convertKey) {
+ $newkey = Text_LanguageDetect_ISO639::$method($key);
+ $newlang[$newkey] = $val;
+ } else {
+ $newlang[$key] = Text_LanguageDetect_ISO639::$method($val);
+ }
+ }
+ return $newlang;
+ }
+}
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+?>
diff --git a/library/langdet/Text/LanguageDetect/Exception.php b/library/langdet/Text/LanguageDetect/Exception.php
new file mode 100644
index 000000000..196d994f5
--- /dev/null
+++ b/library/langdet/Text/LanguageDetect/Exception.php
@@ -0,0 +1,57 @@
+<?php
+class Text_LanguageDetect_Exception extends Exception
+{
+ /**
+ * Database file could not be found
+ */
+ const DB_NOT_FOUND = 10;
+
+ /**
+ * Database file found, but not readable
+ */
+ const DB_NOT_READABLE = 11;
+
+ /**
+ * Database file is empty
+ */
+ const DB_EMPTY = 12;
+
+ /**
+ * Database contents is not a PHP array
+ */
+ const DB_NOT_ARRAY = 13;
+
+ /**
+ * Magic quotes are activated
+ */
+ const MAGIC_QUOTES = 14;
+
+
+ /**
+ * Parameter of invalid type passed to method
+ */
+ const PARAM_TYPE = 20;
+
+ /**
+ * Character in parameter is invalid
+ */
+ const INVALID_CHAR = 21;
+
+
+ /**
+ * Language is not in the database
+ */
+ const UNKNOWN_LANGUAGE = 30;
+
+
+ /**
+ * Error during block detection
+ */
+ const BLOCK_DETECTION = 40;
+
+
+ /**
+ * Error while clustering languages
+ */
+ const NO_HIGHEST_KEY = 50;
+}
diff --git a/library/langdet/Text/LanguageDetect/ISO639.php b/library/langdet/Text/LanguageDetect/ISO639.php
new file mode 100644
index 000000000..c577a2e1a
--- /dev/null
+++ b/library/langdet/Text/LanguageDetect/ISO639.php
@@ -0,0 +1,341 @@
+<?php
+/**
+ * Part of Text_LanguageDetect
+ *
+ * PHP version 5
+ *
+ * @category Text
+ * @package Text_LanguageDetect
+ * @author Christian Weiske <cweiske@php.net>
+ * @copyright 2011 Christian Weiske <cweiske@php.net>
+ * @license http://www.debian.org/misc/bsd.license BSD
+ * @version SVN: $Id$
+ * @link http://pear.php.net/package/Text_LanguageDetect/
+ */
+
+/**
+ * Provides a mapping between the languages from lang.dat and the
+ * ISO 639-1 and ISO-639-2 codes.
+ *
+ * Note that this class contains only languages that exist in lang.dat.
+ *
+ * @category Text
+ * @package Text_LanguageDetect
+ * @author Christian Weiske <cweiske@php.net>
+ * @copyright 2011 Christian Weiske <cweiske@php.net>
+ * @license http://www.debian.org/misc/bsd.license BSD
+ * @link http://www.loc.gov/standards/iso639-2/php/code_list.php
+ */
+class Text_LanguageDetect_ISO639
+{
+ /**
+ * Maps all language names from the language database to the
+ * ISO 639-1 2-letter language code.
+ *
+ * NULL indicates that there is no 2-letter code.
+ *
+ * @var array
+ */
+ public static $nameToCode2 = array(
+ 'albanian' => 'sq',
+ 'arabic' => 'ar',
+ 'azeri' => 'az',
+ 'bengali' => 'bn',
+ 'bulgarian' => 'bg',
+ 'cebuano' => null,
+ 'croatian' => 'hr',
+ 'czech' => 'cs',
+ 'danish' => 'da',
+ 'dutch' => 'nl',
+ 'english' => 'en',
+ 'estonian' => 'et',
+ 'farsi' => 'fa',
+ 'finnish' => 'fi',
+ 'french' => 'fr',
+ 'german' => 'de',
+ 'hausa' => 'ha',
+ 'hawaiian' => null,
+ 'hindi' => 'hi',
+ 'hungarian' => 'hu',
+ 'icelandic' => 'is',
+ 'indonesian' => 'id',
+ 'italian' => 'it',
+ 'kazakh' => 'kk',
+ 'kyrgyz' => 'ky',
+ 'latin' => 'la',
+ 'latvian' => 'lv',
+ 'lithuanian' => 'lt',
+ 'macedonian' => 'mk',
+ 'mongolian' => 'mn',
+ 'nepali' => 'ne',
+ 'norwegian' => 'no',
+ 'pashto' => 'ps',
+ 'pidgin' => null,
+ 'polish' => 'pl',
+ 'portuguese' => 'pt',
+ 'romanian' => 'ro',
+ 'russian' => 'ru',
+ 'serbian' => 'sr',
+ 'slovak' => 'sk',
+ 'slovene' => 'sl',
+ 'somali' => 'so',
+ 'spanish' => 'es',
+ 'swahili' => 'sw',
+ 'swedish' => 'sv',
+ 'tagalog' => 'tl',
+ 'turkish' => 'tr',
+ 'ukrainian' => 'uk',
+ 'urdu' => 'ur',
+ 'uzbek' => 'uz',
+ 'vietnamese' => 'vi',
+ 'welsh' => 'cy',
+ );
+
+ /**
+ * Maps all language names from the language database to the
+ * ISO 639-2 3-letter language code.
+ *
+ * @var array
+ */
+ public static $nameToCode3 = array(
+ 'albanian' => 'sqi',
+ 'arabic' => 'ara',
+ 'azeri' => 'aze',
+ 'bengali' => 'ben',
+ 'bulgarian' => 'bul',
+ 'cebuano' => 'ceb',
+ 'croatian' => 'hrv',
+ 'czech' => 'ces',
+ 'danish' => 'dan',
+ 'dutch' => 'nld',
+ 'english' => 'eng',
+ 'estonian' => 'est',
+ 'farsi' => 'fas',
+ 'finnish' => 'fin',
+ 'french' => 'fra',
+ 'german' => 'deu',
+ 'hausa' => 'hau',
+ 'hawaiian' => 'haw',
+ 'hindi' => 'hin',
+ 'hungarian' => 'hun',
+ 'icelandic' => 'isl',
+ 'indonesian' => 'ind',
+ 'italian' => 'ita',
+ 'kazakh' => 'kaz',
+ 'kyrgyz' => 'kir',
+ 'latin' => 'lat',
+ 'latvian' => 'lav',
+ 'lithuanian' => 'lit',
+ 'macedonian' => 'mkd',
+ 'mongolian' => 'mon',
+ 'nepali' => 'nep',
+ 'norwegian' => 'nor',
+ 'pashto' => 'pus',
+ 'pidgin' => 'crp',
+ 'polish' => 'pol',
+ 'portuguese' => 'por',
+ 'romanian' => 'ron',
+ 'russian' => 'rus',
+ 'serbian' => 'srp',
+ 'slovak' => 'slk',
+ 'slovene' => 'slv',
+ 'somali' => 'som',
+ 'spanish' => 'spa',
+ 'swahili' => 'swa',
+ 'swedish' => 'swe',
+ 'tagalog' => 'tgl',
+ 'turkish' => 'tur',
+ 'ukrainian' => 'ukr',
+ 'urdu' => 'urd',
+ 'uzbek' => 'uzb',
+ 'vietnamese' => 'vie',
+ 'welsh' => 'cym',
+ );
+
+ /**
+ * Maps ISO 639-1 2-letter language codes to the language names
+ * in the language database
+ *
+ * Not all languages have a 2 letter code, so some are missing
+ *
+ * @var array
+ */
+ public static $code2ToName = array(
+ 'ar' => 'arabic',
+ 'az' => 'azeri',
+ 'bg' => 'bulgarian',
+ 'bn' => 'bengali',
+ 'cs' => 'czech',
+ 'cy' => 'welsh',
+ 'da' => 'danish',
+ 'de' => 'german',
+ 'en' => 'english',
+ 'es' => 'spanish',
+ 'et' => 'estonian',
+ 'fa' => 'farsi',
+ 'fi' => 'finnish',
+ 'fr' => 'french',
+ 'ha' => 'hausa',
+ 'hi' => 'hindi',
+ 'hr' => 'croatian',
+ 'hu' => 'hungarian',
+ 'id' => 'indonesian',
+ 'is' => 'icelandic',
+ 'it' => 'italian',
+ 'kk' => 'kazakh',
+ 'ky' => 'kyrgyz',
+ 'la' => 'latin',
+ 'lt' => 'lithuanian',
+ 'lv' => 'latvian',
+ 'mk' => 'macedonian',
+ 'mn' => 'mongolian',
+ 'ne' => 'nepali',
+ 'nl' => 'dutch',
+ 'no' => 'norwegian',
+ 'pl' => 'polish',
+ 'ps' => 'pashto',
+ 'pt' => 'portuguese',
+ 'ro' => 'romanian',
+ 'ru' => 'russian',
+ 'sk' => 'slovak',
+ 'sl' => 'slovene',
+ 'so' => 'somali',
+ 'sq' => 'albanian',
+ 'sr' => 'serbian',
+ 'sv' => 'swedish',
+ 'sw' => 'swahili',
+ 'tl' => 'tagalog',
+ 'tr' => 'turkish',
+ 'uk' => 'ukrainian',
+ 'ur' => 'urdu',
+ 'uz' => 'uzbek',
+ 'vi' => 'vietnamese',
+ );
+
+ /**
+ * Maps ISO 639-2 3-letter language codes to the language names
+ * in the language database.
+ *
+ * @var array
+ */
+ public static $code3ToName = array(
+ 'ara' => 'arabic',
+ 'aze' => 'azeri',
+ 'ben' => 'bengali',
+ 'bul' => 'bulgarian',
+ 'ceb' => 'cebuano',
+ 'ces' => 'czech',
+ 'crp' => 'pidgin',
+ 'cym' => 'welsh',
+ 'dan' => 'danish',
+ 'deu' => 'german',
+ 'eng' => 'english',
+ 'est' => 'estonian',
+ 'fas' => 'farsi',
+ 'fin' => 'finnish',
+ 'fra' => 'french',
+ 'hau' => 'hausa',
+ 'haw' => 'hawaiian',
+ 'hin' => 'hindi',
+ 'hrv' => 'croatian',
+ 'hun' => 'hungarian',
+ 'ind' => 'indonesian',
+ 'isl' => 'icelandic',
+ 'ita' => 'italian',
+ 'kaz' => 'kazakh',
+ 'kir' => 'kyrgyz',
+ 'lat' => 'latin',
+ 'lav' => 'latvian',
+ 'lit' => 'lithuanian',
+ 'mkd' => 'macedonian',
+ 'mon' => 'mongolian',
+ 'nep' => 'nepali',
+ 'nld' => 'dutch',
+ 'nor' => 'norwegian',
+ 'pol' => 'polish',
+ 'por' => 'portuguese',
+ 'pus' => 'pashto',
+ 'rom' => 'romanian',
+ 'rus' => 'russian',
+ 'slk' => 'slovak',
+ 'slv' => 'slovene',
+ 'som' => 'somali',
+ 'spa' => 'spanish',
+ 'sqi' => 'albanian',
+ 'srp' => 'serbian',
+ 'swa' => 'swahili',
+ 'swe' => 'swedish',
+ 'tgl' => 'tagalog',
+ 'tur' => 'turkish',
+ 'ukr' => 'ukrainian',
+ 'urd' => 'urdu',
+ 'uzb' => 'uzbek',
+ 'vie' => 'vietnamese',
+ );
+
+ /**
+ * Returns the 2-letter ISO 639-1 code for the given language name.
+ *
+ * @param string $lang English language name like "swedish"
+ *
+ * @return string Two-letter language code (e.g. "sv") or NULL if not found
+ */
+ public static function nameToCode2($lang)
+ {
+ $lang = strtolower($lang);
+ if (!isset(self::$nameToCode2[$lang])) {
+ return null;
+ }
+ return self::$nameToCode2[$lang];
+ }
+
+ /**
+ * Returns the 3-letter ISO 639-2 code for the given language name.
+ *
+ * @param string $lang English language name like "swedish"
+ *
+ * @return string Three-letter language code (e.g. "swe") or NULL if not found
+ */
+ public static function nameToCode3($lang)
+ {
+ $lang = strtolower($lang);
+ if (!isset(self::$nameToCode3[$lang])) {
+ return null;
+ }
+ return self::$nameToCode3[$lang];
+ }
+
+ /**
+ * Returns the language name for the given 2-letter ISO 639-1 code.
+ *
+ * @param string $code Two-letter language code (e.g. "sv")
+ *
+ * @return string English language name like "swedish"
+ */
+ public static function code2ToName($code)
+ {
+ $lang = strtolower($code);
+ if (!isset(self::$code2ToName[$code])) {
+ return null;
+ }
+ return self::$code2ToName[$code];
+ }
+
+ /**
+ * Returns the language name for the given 3-letter ISO 639-2 code.
+ *
+ * @param string $code Three-letter language code (e.g. "swe")
+ *
+ * @return string English language name like "swedish"
+ */
+ public static function code3ToName($code)
+ {
+ $lang = strtolower($code);
+ if (!isset(self::$code3ToName[$code])) {
+ return null;
+ }
+ return self::$code3ToName[$code];
+ }
+}
+
+?> \ No newline at end of file
diff --git a/library/langdet/Text/LanguageDetect/Parser.php b/library/langdet/Text/LanguageDetect/Parser.php
new file mode 100644
index 000000000..1c20c2657
--- /dev/null
+++ b/library/langdet/Text/LanguageDetect/Parser.php
@@ -0,0 +1,349 @@
+<?php
+
+/**
+ * This class represents a text sample to be parsed.
+ *
+ * @category Text
+ * @package Text_LanguageDetect
+ * @author Nicholas Pisarro
+ * @copyright 2006
+ * @license BSD
+ * @version CVS: $Id: Parser.php 322327 2012-01-15 17:55:59Z cweiske $
+ * @link http://pear.php.net/package/Text_LanguageDetect/
+ * @link http://langdetect.blogspot.com/
+ */
+
+/**
+ * This class represents a text sample to be parsed.
+ *
+ * This separates the analysis of a text sample from the primary LanguageDetect
+ * class. After a new profile has been built, the data can be retrieved using
+ * the accessor functions.
+ *
+ * This class is intended to be used by the Text_LanguageDetect class, not
+ * end-users.
+ *
+ * @category Text
+ * @package Text_LanguageDetect
+ * @author Nicholas Pisarro
+ * @copyright 2006
+ * @license BSD
+ * @version release: 0.3.0
+ */
+class Text_LanguageDetect_Parser extends Text_LanguageDetect
+{
+ /**
+ * the piece of text being parsed
+ *
+ * @access private
+ * @var string
+ */
+ var $_string;
+
+ /**
+ * stores the trigram frequencies of the sample
+ *
+ * @access private
+ * @var string
+ */
+ var $_trigrams = array();
+
+ /**
+ * stores the trigram ranks of the sample
+ *
+ * @access private
+ * @var array
+ */
+ var $_trigram_ranks = array();
+
+ /**
+ * stores the unicode blocks of the sample
+ *
+ * @access private
+ * @var array
+ */
+ var $_unicode_blocks = array();
+
+ /**
+ * Whether the parser should compile the unicode ranges
+ *
+ * @access private
+ * @var bool
+ */
+ var $_compile_unicode = false;
+
+ /**
+ * Whether the parser should compile trigrams
+ *
+ * @access private
+ * @var bool
+ */
+ var $_compile_trigram = false;
+
+ /**
+ * Whether the trigram parser should pad the beginning of the string
+ *
+ * @access private
+ * @var bool
+ */
+ var $_trigram_pad_start = false;
+
+ /**
+ * Whether the unicode parser should skip non-alphabetical ascii chars
+ *
+ * @access private
+ * @var bool
+ */
+ var $_unicode_skip_symbols = true;
+
+ /**
+ * Constructor
+ *
+ * @access private
+ * @param string $string string to be parsed
+ */
+ function Text_LanguageDetect_Parser($string) {
+ $this->_string = $string;
+ }
+
+ /**
+ * Returns true if a string is suitable for parsing
+ *
+ * @param string $str input string to test
+ * @return bool true if acceptable, false if not
+ */
+ public static function validateString($str) {
+ if (!empty($str) && strlen($str) > 3 && preg_match('/\S/', $str)) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * turn on/off trigram counting
+ *
+ * @access public
+ * @param bool $bool true for on, false for off
+ */
+ function prepareTrigram($bool = true)
+ {
+ $this->_compile_trigram = $bool;
+ }
+
+ /**
+ * turn on/off unicode block counting
+ *
+ * @access public
+ * @param bool $bool true for on, false for off
+ */
+ function prepareUnicode($bool = true)
+ {
+ $this->_compile_unicode = $bool;
+ }
+
+ /**
+ * turn on/off padding the beginning of the sample string
+ *
+ * @access public
+ * @param bool $bool true for on, false for off
+ */
+ function setPadStart($bool = true)
+ {
+ $this->_trigram_pad_start = $bool;
+ }
+
+ /**
+ * Should the unicode block counter skip non-alphabetical ascii chars?
+ *
+ * @access public
+ * @param bool $bool true for on, false for off
+ */
+ function setUnicodeSkipSymbols($bool = true)
+ {
+ $this->_unicode_skip_symbols = $bool;
+ }
+
+ /**
+ * Returns the trigram ranks for the text sample
+ *
+ * @access public
+ * @return array trigram ranks in the text sample
+ */
+ function &getTrigramRanks()
+ {
+ return $this->_trigram_ranks;
+ }
+
+ /**
+ * Return the trigram freqency table
+ *
+ * only used in testing to make sure the parser is working
+ *
+ * @access public
+ * @return array trigram freqencies in the text sample
+ */
+ function &getTrigramFreqs()
+ {
+ return $this->_trigram;
+ }
+
+ /**
+ * returns the array of unicode blocks
+ *
+ * @access public
+ * @return array unicode blocks in the text sample
+ */
+ function &getUnicodeBlocks()
+ {
+ return $this->_unicode_blocks;
+ }
+
+ /**
+ * Executes the parsing operation
+ *
+ * Be sure to call the set*() functions to set options and the
+ * prepare*() functions first to tell it what kind of data to compute
+ *
+ * Afterwards the get*() functions can be used to access the compiled
+ * information.
+ *
+ * @access public
+ */
+ function analyze()
+ {
+ $len = strlen($this->_string);
+ $byte_counter = 0;
+
+
+ // unicode startup
+ if ($this->_compile_unicode) {
+ $blocks = $this->_read_unicode_block_db();
+ $block_count = count($blocks);
+
+ $skipped_count = 0;
+ $unicode_chars = array();
+ }
+
+ // trigram startup
+ if ($this->_compile_trigram) {
+ // initialize them as blank so the parser will skip the first two
+ // (since it skips trigrams with more than 2 contiguous spaces)
+ $a = ' ';
+ $b = ' ';
+
+ // kludge
+ // if it finds a valid trigram to start and the start pad option is
+ // off, then set a variable that will be used to reduce this
+ // trigram after parsing has finished
+ if (!$this->_trigram_pad_start) {
+ $a = $this->_next_char($this->_string, $byte_counter, true);
+
+ if ($a != ' ') {
+ $b = $this->_next_char($this->_string, $byte_counter, true);
+ $dropone = " $a$b";
+ }
+
+ $byte_counter = 0;
+ $a = ' ';
+ $b = ' ';
+ }
+ }
+
+ while ($byte_counter < $len) {
+ $char = $this->_next_char($this->_string, $byte_counter, true);
+
+
+ // language trigram detection
+ if ($this->_compile_trigram) {
+ if (!($b == ' ' && ($a == ' ' || $char == ' '))) {
+ if (!isset($this->_trigram[$a . $b . $char])) {
+ $this->_trigram[$a . $b . $char] = 1;
+ } else {
+ $this->_trigram[$a . $b . $char]++;
+ }
+ }
+
+ $a = $b;
+ $b = $char;
+ }
+
+ // unicode block detection
+ if ($this->_compile_unicode) {
+ if ($this->_unicode_skip_symbols
+ && strlen($char) == 1
+ && ($char < 'A' || $char > 'z'
+ || ($char > 'Z' && $char < 'a'))
+ && $char != "'") { // does not skip the apostrophe
+ // since it's included in the language
+ // models
+
+ $skipped_count++;
+ continue;
+ }
+
+ // build an array of all the characters
+ if (isset($unicode_chars[$char])) {
+ $unicode_chars[$char]++;
+ } else {
+ $unicode_chars[$char] = 1;
+ }
+ }
+
+ // todo: add byte detection here
+ }
+
+ // unicode cleanup
+ if ($this->_compile_unicode) {
+ foreach ($unicode_chars as $utf8_char => $count) {
+ $search_result = $this->_unicode_block_name(
+ $this->_utf8char2unicode($utf8_char), $blocks, $block_count);
+
+ if ($search_result != -1) {
+ $block_name = $search_result[2];
+ } else {
+ $block_name = '[Malformatted]';
+ }
+
+ if (isset($this->_unicode_blocks[$block_name])) {
+ $this->_unicode_blocks[$block_name] += $count;
+ } else {
+ $this->_unicode_blocks[$block_name] = $count;
+ }
+ }
+ }
+
+
+ // trigram cleanup
+ if ($this->_compile_trigram) {
+ // pad the end
+ if ($b != ' ') {
+ if (!isset($this->_trigram["$a$b "])) {
+ $this->_trigram["$a$b "] = 1;
+ } else {
+ $this->_trigram["$a$b "]++;
+ }
+ }
+
+ // perl compatibility; Language::Guess does not pad the beginning
+ // kludge
+ if (isset($dropone)) {
+ if ($this->_trigram[$dropone] == 1) {
+ unset($this->_trigram[$dropone]);
+ } else {
+ $this->_trigram[$dropone]--;
+ }
+ }
+
+ if (!empty($this->_trigram)) {
+ $this->_trigram_ranks = $this->_arr_rank($this->_trigram);
+ } else {
+ $this->_trigram_ranks = array();
+ }
+ }
+ }
+}
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+?>
diff --git a/library/langdet/data/lang.dat b/library/langdet/data/lang.dat
new file mode 100644
index 000000000..c2a44f56e
--- /dev/null
+++ b/library/langdet/data/lang.dat
@@ -0,0 +1 @@
+a:2:{s:7:"trigram";a:52:{s:8:"albanian";a:300:{s:4:"të ";s:1:"0";s:4:" të";s:1:"1";s:4:"në ";s:1:"2";s:4:"për";s:1:"3";s:4:" pë";s:1:"4";s:3:" e ";s:1:"5";s:3:"sht";s:1:"6";s:4:" në";s:1:"7";s:3:" sh";s:1:"8";s:3:"se ";s:1:"9";s:3:"et ";s:2:"10";s:4:"ë s";s:2:"11";s:4:"ë t";s:2:"12";s:3:" se";s:2:"13";s:3:"he ";s:2:"14";s:4:"jë ";s:2:"15";s:4:"ër ";s:2:"16";s:3:"dhe";s:2:"17";s:3:" pa";s:2:"18";s:4:"ë n";s:2:"19";s:4:"ë p";s:2:"20";s:4:" që";s:2:"21";s:3:" dh";s:2:"22";s:4:"një";s:2:"23";s:4:"ë m";s:2:"24";s:3:" nj";s:2:"25";s:4:"ësh";s:2:"26";s:3:"in ";s:2:"27";s:3:" me";s:2:"28";s:4:"që ";s:2:"29";s:3:" po";s:2:"30";s:3:"e n";s:2:"31";s:3:"e t";s:2:"32";s:3:"ish";s:2:"33";s:4:"më ";s:2:"34";s:4:"së ";s:2:"35";s:3:"me ";s:2:"36";s:4:"htë";s:2:"37";s:3:" ka";s:2:"38";s:3:" si";s:2:"39";s:3:"e k";s:2:"40";s:3:"e p";s:2:"41";s:3:" i ";s:2:"42";s:4:"anë";s:2:"43";s:3:"ar ";s:2:"44";s:3:" nu";s:2:"45";s:3:"und";s:2:"46";s:3:"ve ";s:2:"47";s:4:" ës";s:2:"48";s:3:"e s";s:2:"49";s:4:" më";s:2:"50";s:3:"nuk";s:2:"51";s:3:"par";s:2:"52";s:3:"uar";s:2:"53";s:3:"uk ";s:2:"54";s:3:"jo ";s:2:"55";s:4:"rë ";s:2:"56";s:3:"ta ";s:2:"57";s:4:"ë f";s:2:"58";s:3:"en ";s:2:"59";s:3:"it ";s:2:"60";s:3:"min";s:2:"61";s:3:"het";s:2:"62";s:3:"n e";s:2:"63";s:3:"ri ";s:2:"64";s:3:"shq";s:2:"65";s:4:"ë d";s:2:"66";s:3:" do";s:2:"67";s:3:" nd";s:2:"68";s:3:"sh ";s:2:"69";s:4:"ën ";s:2:"70";s:4:"atë";s:2:"71";s:3:"hqi";s:2:"72";s:3:"ist";s:2:"73";s:4:"ë q";s:2:"74";s:3:" gj";s:2:"75";s:3:" ng";s:2:"76";s:3:" th";s:2:"77";s:3:"a n";s:2:"78";s:3:"do ";s:2:"79";s:3:"end";s:2:"80";s:3:"imi";s:2:"81";s:3:"ndi";s:2:"82";s:3:"r t";s:2:"83";s:3:"rat";s:2:"84";s:4:"ë b";s:2:"85";s:4:"ëri";s:2:"86";s:3:" mu";s:2:"87";s:3:"art";s:2:"88";s:3:"ash";s:2:"89";s:3:"qip";s:2:"90";s:3:" ko";s:2:"91";s:3:"e m";s:2:"92";s:3:"edh";s:2:"93";s:3:"eri";s:2:"94";s:3:"je ";s:2:"95";s:3:"ka ";s:2:"96";s:3:"nga";s:2:"97";s:3:"si ";s:2:"98";s:3:"te ";s:2:"99";s:4:"ë k";s:3:"100";s:4:"ësi";s:3:"101";s:3:" ma";s:3:"102";s:3:" ti";s:3:"103";s:3:"eve";s:3:"104";s:3:"hje";s:3:"105";s:3:"ira";s:3:"106";s:3:"mun";s:3:"107";s:3:"on ";s:3:"108";s:3:"po ";s:3:"109";s:3:"re ";s:3:"110";s:3:" pr";s:3:"111";s:3:"im ";s:3:"112";s:3:"lit";s:3:"113";s:3:"o t";s:3:"114";s:3:"ur ";s:3:"115";s:4:"ë e";s:3:"116";s:4:"ë v";s:3:"117";s:4:"ët ";s:3:"118";s:3:" ku";s:3:"119";s:4:" së";s:3:"120";s:3:"e d";s:3:"121";s:3:"es ";s:3:"122";s:3:"ga ";s:3:"123";s:3:"iti";s:3:"124";s:3:"jet";s:3:"125";s:4:"ndë";s:3:"126";s:3:"oli";s:3:"127";s:3:"shi";s:3:"128";s:3:"tje";s:3:"129";s:4:" bë";s:3:"130";s:3:" z ";s:3:"131";s:3:"gje";s:3:"132";s:3:"kan";s:3:"133";s:3:"shk";s:3:"134";s:4:"ënd";s:3:"135";s:4:"ës ";s:3:"136";s:3:" de";s:3:"137";s:3:" kj";s:3:"138";s:3:" ru";s:3:"139";s:3:" vi";s:3:"140";s:3:"ara";s:3:"141";s:3:"gov";s:3:"142";s:3:"kjo";s:3:"143";s:3:"or ";s:3:"144";s:3:"r p";s:3:"145";s:3:"rto";s:3:"146";s:3:"rug";s:3:"147";s:3:"tet";s:3:"148";s:3:"ugo";s:3:"149";s:3:"ali";s:3:"150";s:3:"arr";s:3:"151";s:3:"at ";s:3:"152";s:3:"d t";s:3:"153";s:3:"ht ";s:3:"154";s:3:"i p";s:3:"155";s:4:"ipë";s:3:"156";s:3:"izi";s:3:"157";s:4:"jnë";s:3:"158";s:3:"n n";s:3:"159";s:3:"ohe";s:3:"160";s:3:"shu";s:3:"161";s:4:"shë";s:3:"162";s:3:"t e";s:3:"163";s:3:"tik";s:3:"164";s:3:"a e";s:3:"165";s:4:"arë";s:3:"166";s:4:"etë";s:3:"167";s:3:"hum";s:3:"168";s:3:"nd ";s:3:"169";s:3:"ndr";s:3:"170";s:3:"osh";s:3:"171";s:3:"ova";s:3:"172";s:3:"rim";s:3:"173";s:3:"tos";s:3:"174";s:3:"va ";s:3:"175";s:3:" fa";s:3:"176";s:3:" fi";s:3:"177";s:3:"a s";s:3:"178";s:3:"hen";s:3:"179";s:3:"i n";s:3:"180";s:3:"mar";s:3:"181";s:3:"ndo";s:3:"182";s:3:"por";s:3:"183";s:3:"ris";s:3:"184";s:3:"sa ";s:3:"185";s:3:"sis";s:3:"186";s:4:"tës";s:3:"187";s:4:"umë";s:3:"188";s:3:"viz";s:3:"189";s:3:"zit";s:3:"190";s:3:" di";s:3:"191";s:3:" mb";s:3:"192";s:3:"aj ";s:3:"193";s:3:"ana";s:3:"194";s:3:"ata";s:3:"195";s:4:"dër";s:3:"196";s:3:"e a";s:3:"197";s:3:"esh";s:3:"198";s:3:"ime";s:3:"199";s:3:"jes";s:3:"200";s:3:"lar";s:3:"201";s:3:"n s";s:3:"202";s:3:"nte";s:3:"203";s:3:"pol";s:3:"204";s:3:"r n";s:3:"205";s:3:"ran";s:3:"206";s:3:"res";s:3:"207";s:4:"rrë";s:3:"208";s:3:"tar";s:3:"209";s:4:"ë a";s:3:"210";s:4:"ë i";s:3:"211";s:3:" at";s:3:"212";s:3:" jo";s:3:"213";s:4:" kë";s:3:"214";s:3:" re";s:3:"215";s:3:"a k";s:3:"216";s:3:"ai ";s:3:"217";s:3:"akt";s:3:"218";s:4:"hë ";s:3:"219";s:4:"hën";s:3:"220";s:3:"i i";s:3:"221";s:3:"i m";s:3:"222";s:3:"ia ";s:3:"223";s:3:"men";s:3:"224";s:3:"nis";s:3:"225";s:3:"shm";s:3:"226";s:3:"str";s:3:"227";s:3:"t k";s:3:"228";s:3:"t n";s:3:"229";s:3:"t s";s:3:"230";s:4:"ë g";s:3:"231";s:4:"ërk";s:3:"232";s:4:"ëve";s:3:"233";s:3:" ai";s:3:"234";s:3:" ci";s:3:"235";s:3:" ed";s:3:"236";s:3:" ja";s:3:"237";s:3:" kr";s:3:"238";s:3:" qe";s:3:"239";s:3:" ta";s:3:"240";s:3:" ve";s:3:"241";s:3:"a p";s:3:"242";s:3:"cil";s:3:"243";s:3:"el ";s:3:"244";s:4:"erë";s:3:"245";s:3:"gji";s:3:"246";s:3:"hte";s:3:"247";s:3:"i t";s:3:"248";s:3:"jen";s:3:"249";s:3:"jit";s:3:"250";s:3:"k d";s:3:"251";s:4:"mën";s:3:"252";s:3:"n t";s:3:"253";s:3:"nyr";s:3:"254";s:3:"ori";s:3:"255";s:3:"pas";s:3:"256";s:3:"ra ";s:3:"257";s:3:"rie";s:3:"258";s:4:"rës";s:3:"259";s:3:"tor";s:3:"260";s:3:"uaj";s:3:"261";s:3:"yre";s:3:"262";s:4:"ëm ";s:3:"263";s:4:"ëny";s:3:"264";s:3:" ar";s:3:"265";s:3:" du";s:3:"266";s:3:" ga";s:3:"267";s:3:" je";s:3:"268";s:4:"dës";s:3:"269";s:3:"e e";s:3:"270";s:3:"e z";s:3:"271";s:3:"ha ";s:3:"272";s:3:"hme";s:3:"273";s:3:"ika";s:3:"274";s:3:"ini";s:3:"275";s:3:"ite";s:3:"276";s:3:"ith";s:3:"277";s:3:"koh";s:3:"278";s:3:"kra";s:3:"279";s:3:"ku ";s:3:"280";s:3:"lim";s:3:"281";s:3:"lis";s:3:"282";s:4:"qën";s:3:"283";s:4:"rën";s:3:"284";s:3:"s s";s:3:"285";s:3:"t d";s:3:"286";s:3:"t t";s:3:"287";s:3:"tir";s:3:"288";s:4:"tën";s:3:"289";s:3:"ver";s:3:"290";s:4:"ë j";s:3:"291";s:3:" ba";s:3:"292";s:3:" in";s:3:"293";s:3:" tr";s:3:"294";s:3:" zg";s:3:"295";s:3:"a a";s:3:"296";s:3:"a m";s:3:"297";s:3:"a t";s:3:"298";s:3:"abr";s:3:"299";}s:6:"arabic";a:300:{s:5:" ال";s:1:"0";s:6:"الع";s:1:"1";s:6:"لعر";s:1:"2";s:6:"عرا";s:1:"3";s:6:"راق";s:1:"4";s:5:" ÙÙŠ";s:1:"5";s:5:"ÙÙŠ ";s:1:"6";s:5:"ين ";s:1:"7";s:5:"ية ";s:1:"8";s:5:"Ù† ا";s:1:"9";s:6:"الم";s:2:"10";s:5:"ات ";s:2:"11";s:5:"من ";s:2:"12";s:5:"ÙŠ ا";s:2:"13";s:5:" من";s:2:"14";s:6:"الأ";s:2:"15";s:5:"Ø© ا";s:2:"16";s:5:"اق ";s:2:"17";s:5:" وا";s:2:"18";s:5:"اء ";s:2:"19";s:6:"الإ";s:2:"20";s:5:" أن";s:2:"21";s:6:"وال";s:2:"22";s:5:"ما ";s:2:"23";s:5:" عل";s:2:"24";s:5:"لى ";s:2:"25";s:5:"ت ا";s:2:"26";s:5:"ون ";s:2:"27";s:5:"هم ";s:2:"28";s:6:"اقي";s:2:"29";s:5:"ام ";s:2:"30";s:5:"Ù„ ا";s:2:"31";s:5:"أن ";s:2:"32";s:5:"Ù… ا";s:2:"33";s:6:"الت";s:2:"34";s:5:"لا ";s:2:"35";s:6:"الا";s:2:"36";s:5:"ان ";s:2:"37";s:5:"ها ";s:2:"38";s:5:"ال ";s:2:"39";s:5:"Ø© Ùˆ";s:2:"40";s:5:"ا ا";s:2:"41";s:6:"رها";s:2:"42";s:6:"لام";s:2:"43";s:6:"يين";s:2:"44";s:5:" ول";s:2:"45";s:6:"لأم";s:2:"46";s:5:"نا ";s:2:"47";s:6:"على";s:2:"48";s:5:"Ù† ÙŠ";s:2:"49";s:6:"الب";s:2:"50";s:5:"اد ";s:2:"51";s:6:"الق";s:2:"52";s:5:"د ا";s:2:"53";s:5:"ذا ";s:2:"54";s:5:"Ù‡ ا";s:2:"55";s:5:" با";s:2:"56";s:6:"الد";s:2:"57";s:5:"ب ا";s:2:"58";s:6:"مري";s:2:"59";s:5:"لم ";s:2:"60";s:5:" إن";s:2:"61";s:5:" لل";s:2:"62";s:6:"سلا";s:2:"63";s:6:"أمر";s:2:"64";s:6:"ريك";s:2:"65";s:5:"مة ";s:2:"66";s:5:"Ù‰ ا";s:2:"67";s:5:"ا ÙŠ";s:2:"68";s:5:" عن";s:2:"69";s:5:" هذ";s:2:"70";s:5:"Ø¡ ا";s:2:"71";s:5:"ر ا";s:2:"72";s:6:"كان";s:2:"73";s:6:"قتل";s:2:"74";s:6:"إسل";s:2:"75";s:6:"الح";s:2:"76";s:5:"وا ";s:2:"77";s:5:" إل";s:2:"78";s:5:"ا Ø£";s:2:"79";s:6:"بال";s:2:"80";s:5:"Ù† Ù…";s:2:"81";s:6:"الس";s:2:"82";s:5:"رة ";s:2:"83";s:6:"لإس";s:2:"84";s:5:"Ù† Ùˆ";s:2:"85";s:6:"هاب";s:2:"86";s:5:"ÙŠ Ùˆ";s:2:"87";s:5:"ير ";s:2:"88";s:5:" كا";s:2:"89";s:5:"لة ";s:2:"90";s:6:"يات";s:2:"91";s:5:" لا";s:2:"92";s:6:"انت";s:2:"93";s:5:"Ù† Ø£";s:2:"94";s:6:"يكي";s:2:"95";s:6:"الر";s:2:"96";s:6:"الو";s:2:"97";s:5:"Ø© Ù";s:2:"98";s:5:"دة ";s:2:"99";s:6:"الج";s:3:"100";s:5:"قي ";s:3:"101";s:5:"وي ";s:3:"102";s:6:"الذ";s:3:"103";s:6:"الش";s:3:"104";s:6:"امي";s:3:"105";s:6:"اني";s:3:"106";s:5:"ذه ";s:3:"107";s:5:"عن ";s:3:"108";s:6:"لما";s:3:"109";s:6:"هذه";s:3:"110";s:5:"ول ";s:3:"111";s:5:"ا٠";s:3:"112";s:6:"اوي";s:3:"113";s:6:"بري";s:3:"114";s:5:"Ø© Ù„";s:3:"115";s:5:" أم";s:3:"116";s:5:" لم";s:3:"117";s:5:" ما";s:3:"118";s:5:"يد ";s:3:"119";s:5:" أي";s:3:"120";s:6:"إره";s:3:"121";s:5:"ع ا";s:3:"122";s:6:"عمل";s:3:"123";s:6:"ولا";s:3:"124";s:6:"إلى";s:3:"125";s:6:"ابي";s:3:"126";s:5:"Ù† Ù";s:3:"127";s:6:"ختط";s:3:"128";s:5:"لك ";s:3:"129";s:5:"نه ";s:3:"130";s:5:"ني ";s:3:"131";s:5:"إن ";s:3:"132";s:6:"دين";s:3:"133";s:5:"٠ا";s:3:"134";s:6:"لذي";s:3:"135";s:5:"ÙŠ Ø£";s:3:"136";s:5:"ÙŠ ب";s:3:"137";s:5:" وأ";s:3:"138";s:5:"ا ع";s:3:"139";s:6:"الخ";s:3:"140";s:5:"تل ";s:3:"141";s:5:"تي ";s:3:"142";s:5:"قد ";s:3:"143";s:6:"لدي";s:3:"144";s:5:" كل";s:3:"145";s:5:" مع";s:3:"146";s:5:"اب ";s:3:"147";s:6:"اخت";s:3:"148";s:5:"ار ";s:3:"149";s:6:"الن";s:3:"150";s:6:"علا";s:3:"151";s:5:"Ù… Ùˆ";s:3:"152";s:5:"مع ";s:3:"153";s:5:"س ا";s:3:"154";s:5:"كل ";s:3:"155";s:6:"لاء";s:3:"156";s:5:"Ù† ب";s:3:"157";s:5:"Ù† ت";s:3:"158";s:5:"ÙŠ Ù…";s:3:"159";s:6:"عرب";s:3:"160";s:5:"Ù… ب";s:3:"161";s:5:" وق";s:3:"162";s:5:" يق";s:3:"163";s:5:"ا Ù„";s:3:"164";s:5:"ا Ù…";s:3:"165";s:6:"الÙ";s:3:"166";s:6:"تطا";s:3:"167";s:6:"داد";s:3:"168";s:6:"لمس";s:3:"169";s:5:"له ";s:3:"170";s:6:"هذا";s:3:"171";s:5:" مح";s:3:"172";s:6:"ؤلا";s:3:"173";s:5:"بي ";s:3:"174";s:5:"Ø© Ù…";s:3:"175";s:5:"Ù† Ù„";s:3:"176";s:6:"هؤل";s:3:"177";s:5:"كن ";s:3:"178";s:6:"لإر";s:3:"179";s:6:"لتي";s:3:"180";s:5:" أو";s:3:"181";s:5:" ان";s:3:"182";s:5:" عم";s:3:"183";s:5:"ا Ù";s:3:"184";s:5:"Ø© Ø£";s:3:"185";s:6:"طاÙ";s:3:"186";s:5:"عب ";s:3:"187";s:5:"Ù„ Ù…";s:3:"188";s:5:"Ù† ع";s:3:"189";s:5:"ور ";s:3:"190";s:5:"يا ";s:3:"191";s:5:" يس";s:3:"192";s:5:"ا ت";s:3:"193";s:5:"Ø© ب";s:3:"194";s:6:"راء";s:3:"195";s:6:"عال";s:3:"196";s:6:"قوا";s:3:"197";s:6:"قية";s:3:"198";s:6:"لعا";s:3:"199";s:5:"Ù… ÙŠ";s:3:"200";s:5:"مي ";s:3:"201";s:6:"مية";s:3:"202";s:6:"نية";s:3:"203";s:5:"أي ";s:3:"204";s:6:"ابا";s:3:"205";s:6:"بغد";s:3:"206";s:5:"بل ";s:3:"207";s:5:"رب ";s:3:"208";s:6:"عما";s:3:"209";s:6:"غدا";s:3:"210";s:6:"مال";s:3:"211";s:6:"ملي";s:3:"212";s:5:"يس ";s:3:"213";s:5:" بأ";s:3:"214";s:5:" بع";s:3:"215";s:5:" بغ";s:3:"216";s:5:" وم";s:3:"217";s:6:"بات";s:3:"218";s:6:"بية";s:3:"219";s:6:"ذلك";s:3:"220";s:5:"عة ";s:3:"221";s:6:"قاو";s:3:"222";s:6:"قيي";s:3:"223";s:5:"كي ";s:3:"224";s:5:"Ù… Ù…";s:3:"225";s:5:"ÙŠ ع";s:3:"226";s:5:" عر";s:3:"227";s:5:" قا";s:3:"228";s:5:"ا Ùˆ";s:3:"229";s:5:"رى ";s:3:"230";s:5:"Ù‚ ا";s:3:"231";s:6:"وات";s:3:"232";s:5:"وم ";s:3:"233";s:5:" هؤ";s:3:"234";s:5:"ا ب";s:3:"235";s:6:"دام";s:3:"236";s:5:"دي ";s:3:"237";s:6:"رات";s:3:"238";s:6:"شعب";s:3:"239";s:6:"لان";s:3:"240";s:6:"لشع";s:3:"241";s:6:"لقو";s:3:"242";s:6:"ليا";s:3:"243";s:5:"Ù† Ù‡";s:3:"244";s:5:"ÙŠ ت";s:3:"245";s:5:"ÙŠ ÙŠ";s:3:"246";s:5:" وه";s:3:"247";s:5:" يح";s:3:"248";s:6:"جرا";s:3:"249";s:6:"جما";s:3:"250";s:6:"حمد";s:3:"251";s:5:"دم ";s:3:"252";s:5:"كم ";s:3:"253";s:6:"لاو";s:3:"254";s:6:"لره";s:3:"255";s:6:"ماع";s:3:"256";s:5:"Ù† Ù‚";s:3:"257";s:5:"نة ";s:3:"258";s:5:"هي ";s:3:"259";s:5:" بل";s:3:"260";s:5:" به";s:3:"261";s:5:" له";s:3:"262";s:5:" وي";s:3:"263";s:5:"ا Ùƒ";s:3:"264";s:6:"اذا";s:3:"265";s:5:"اع ";s:3:"266";s:5:"ت Ù…";s:3:"267";s:6:"تخا";s:3:"268";s:6:"خاب";s:3:"269";s:5:"ر Ù…";s:3:"270";s:6:"لمت";s:3:"271";s:6:"مسل";s:3:"272";s:5:"Ù‰ Ø£";s:3:"273";s:6:"يست";s:3:"274";s:6:"يطا";s:3:"275";s:5:" لأ";s:3:"276";s:5:" لي";s:3:"277";s:6:"أمن";s:3:"278";s:6:"است";s:3:"279";s:6:"بعض";s:3:"280";s:5:"Ø© ت";s:3:"281";s:5:"ري ";s:3:"282";s:6:"صدا";s:3:"283";s:5:"Ù‚ Ùˆ";s:3:"284";s:6:"قول";s:3:"285";s:5:"مد ";s:3:"286";s:6:"نتخ";s:3:"287";s:6:"Ù†Ùس";s:3:"288";s:6:"نها";s:3:"289";s:6:"هنا";s:3:"290";s:6:"أعم";s:3:"291";s:6:"أنه";s:3:"292";s:6:"ائن";s:3:"293";s:6:"الآ";s:3:"294";s:6:"الك";s:3:"295";s:5:"حة ";s:3:"296";s:5:"د Ù…";s:3:"297";s:5:"ر ع";s:3:"298";s:6:"ربي";s:3:"299";}s:5:"azeri";a:300:{s:4:"lÉ™r";s:1:"0";s:3:"in ";s:1:"1";s:4:"ın ";s:1:"2";s:3:"lar";s:1:"3";s:3:"da ";s:1:"4";s:3:"an ";s:1:"5";s:3:"ir ";s:1:"6";s:4:"dÉ™ ";s:1:"7";s:3:"ki ";s:1:"8";s:3:" bi";s:1:"9";s:4:"É™n ";s:2:"10";s:4:"É™ri";s:2:"11";s:4:"arı";s:2:"12";s:4:"É™r ";s:2:"13";s:3:"dir";s:2:"14";s:3:"nda";s:2:"15";s:3:" ki";s:2:"16";s:3:"rin";s:2:"17";s:4:"nın";s:2:"18";s:4:"É™si";s:2:"19";s:3:"ini";s:2:"20";s:3:" ed";s:2:"21";s:3:" qa";s:2:"22";s:4:" tÉ™";s:2:"23";s:3:" ba";s:2:"24";s:3:" ol";s:2:"25";s:4:"ası";s:2:"26";s:4:"ilÉ™";s:2:"27";s:4:"rın";s:2:"28";s:3:" ya";s:2:"29";s:4:"anı";s:2:"30";s:4:" vÉ™";s:2:"31";s:4:"ndÉ™";s:2:"32";s:3:"ni ";s:2:"33";s:3:"ara";s:2:"34";s:5:"ını";s:2:"35";s:4:"ınd";s:2:"36";s:3:" bu";s:2:"37";s:3:"si ";s:2:"38";s:3:"ib ";s:2:"39";s:3:"aq ";s:2:"40";s:4:"dÉ™n";s:2:"41";s:3:"iya";s:2:"42";s:4:"nÉ™ ";s:2:"43";s:4:"rÉ™ ";s:2:"44";s:3:"n b";s:2:"45";s:4:"sın";s:2:"46";s:4:"vÉ™ ";s:2:"47";s:3:"iri";s:2:"48";s:4:"lÉ™ ";s:2:"49";s:3:"nin";s:2:"50";s:4:"É™li";s:2:"51";s:3:" de";s:2:"52";s:4:" mü";s:2:"53";s:3:"bir";s:2:"54";s:3:"n s";s:2:"55";s:3:"ri ";s:2:"56";s:4:"É™k ";s:2:"57";s:3:" az";s:2:"58";s:4:" sÉ™";s:2:"59";s:3:"ar ";s:2:"60";s:3:"bil";s:2:"61";s:4:"zÉ™r";s:2:"62";s:3:"bu ";s:2:"63";s:3:"dan";s:2:"64";s:3:"edi";s:2:"65";s:3:"ind";s:2:"66";s:3:"man";s:2:"67";s:3:"un ";s:2:"68";s:5:"É™rÉ™";s:2:"69";s:3:" ha";s:2:"70";s:3:"lan";s:2:"71";s:4:"yyÉ™";s:2:"72";s:3:"iyy";s:2:"73";s:3:" il";s:2:"74";s:3:" ne";s:2:"75";s:3:"r k";s:2:"76";s:4:"É™ b";s:2:"77";s:3:" is";s:2:"78";s:3:"na ";s:2:"79";s:3:"nun";s:2:"80";s:4:"ır ";s:2:"81";s:3:" da";s:2:"82";s:4:" hÉ™";s:2:"83";s:3:"a b";s:2:"84";s:4:"inÉ™";s:2:"85";s:3:"sin";s:2:"86";s:3:"yan";s:2:"87";s:4:"É™rb";s:2:"88";s:4:" dÉ™";s:2:"89";s:4:" mÉ™";s:2:"90";s:4:" qÉ™";s:2:"91";s:4:"dır";s:2:"92";s:3:"li ";s:2:"93";s:3:"ola";s:2:"94";s:3:"rba";s:2:"95";s:4:"azÉ™";s:2:"96";s:3:"can";s:2:"97";s:4:"lı ";s:2:"98";s:3:"nla";s:2:"99";s:3:" et";s:3:"100";s:4:" gö";s:3:"101";s:4:"alı";s:3:"102";s:3:"ayc";s:3:"103";s:3:"bay";s:3:"104";s:3:"eft";s:3:"105";s:3:"ist";s:3:"106";s:3:"n i";s:3:"107";s:3:"nef";s:3:"108";s:4:"tlÉ™";s:3:"109";s:3:"yca";s:3:"110";s:4:"yÉ™t";s:3:"111";s:5:"É™cÉ™";s:3:"112";s:3:" la";s:3:"113";s:3:"ild";s:3:"114";s:4:"nı ";s:3:"115";s:3:"tin";s:3:"116";s:3:"ldi";s:3:"117";s:3:"lik";s:3:"118";s:3:"n h";s:3:"119";s:3:"n m";s:3:"120";s:3:"oyu";s:3:"121";s:3:"raq";s:3:"122";s:3:"ya ";s:3:"123";s:4:"É™ti";s:3:"124";s:3:" ar";s:3:"125";s:3:"ada";s:3:"126";s:4:"edÉ™";s:3:"127";s:3:"mas";s:3:"128";s:4:"sı ";s:3:"129";s:4:"ına";s:3:"130";s:4:"É™ d";s:3:"131";s:5:"É™lÉ™";s:3:"132";s:4:"ayı";s:3:"133";s:3:"iyi";s:3:"134";s:3:"lma";s:3:"135";s:4:"mÉ™k";s:3:"136";s:3:"n d";s:3:"137";s:3:"ti ";s:3:"138";s:3:"yin";s:3:"139";s:3:"yun";s:3:"140";s:4:"É™t ";s:3:"141";s:4:"azı";s:3:"142";s:3:"ft ";s:3:"143";s:3:"i t";s:3:"144";s:3:"lli";s:3:"145";s:3:"n a";s:3:"146";s:3:"ra ";s:3:"147";s:4:" cÉ™";s:3:"148";s:4:" gÉ™";s:3:"149";s:3:" ko";s:3:"150";s:4:" nÉ™";s:3:"151";s:3:" oy";s:3:"152";s:3:"a d";s:3:"153";s:3:"ana";s:3:"154";s:4:"cÉ™k";s:3:"155";s:3:"eyi";s:3:"156";s:3:"ilm";s:3:"157";s:3:"irl";s:3:"158";s:3:"lay";s:3:"159";s:3:"liy";s:3:"160";s:3:"lub";s:3:"161";s:4:"n É™";s:3:"162";s:3:"ril";s:3:"163";s:4:"rlÉ™";s:3:"164";s:3:"unu";s:3:"165";s:3:"ver";s:3:"166";s:4:"ün ";s:3:"167";s:4:"É™ o";s:3:"168";s:4:"É™ni";s:3:"169";s:3:" he";s:3:"170";s:3:" ma";s:3:"171";s:3:" on";s:3:"172";s:3:" pa";s:3:"173";s:3:"ala";s:3:"174";s:3:"dey";s:3:"175";s:3:"i m";s:3:"176";s:3:"ima";s:3:"177";s:4:"lmÉ™";s:3:"178";s:4:"mÉ™t";s:3:"179";s:3:"par";s:3:"180";s:4:"yÉ™ ";s:3:"181";s:4:"É™tl";s:3:"182";s:3:" al";s:3:"183";s:3:" mi";s:3:"184";s:3:" sa";s:3:"185";s:4:" É™l";s:3:"186";s:4:"adı";s:3:"187";s:4:"akı";s:3:"188";s:3:"and";s:3:"189";s:3:"ard";s:3:"190";s:3:"art";s:3:"191";s:3:"ayi";s:3:"192";s:3:"i a";s:3:"193";s:3:"i q";s:3:"194";s:3:"i y";s:3:"195";s:3:"ili";s:3:"196";s:3:"ill";s:3:"197";s:4:"isÉ™";s:3:"198";s:3:"n o";s:3:"199";s:3:"n q";s:3:"200";s:3:"olu";s:3:"201";s:3:"rla";s:3:"202";s:4:"stÉ™";s:3:"203";s:4:"sÉ™ ";s:3:"204";s:3:"tan";s:3:"205";s:3:"tel";s:3:"206";s:3:"yar";s:3:"207";s:5:"É™dÉ™";s:3:"208";s:3:" me";s:3:"209";s:4:" rÉ™";s:3:"210";s:3:" ve";s:3:"211";s:3:" ye";s:3:"212";s:3:"a k";s:3:"213";s:3:"at ";s:3:"214";s:4:"baÅŸ";s:3:"215";s:3:"diy";s:3:"216";s:3:"ent";s:3:"217";s:3:"eti";s:3:"218";s:4:"hÉ™s";s:3:"219";s:3:"i i";s:3:"220";s:3:"ik ";s:3:"221";s:3:"la ";s:3:"222";s:4:"miÅŸ";s:3:"223";s:3:"n n";s:3:"224";s:3:"nu ";s:3:"225";s:3:"qar";s:3:"226";s:3:"ran";s:3:"227";s:4:"tÉ™r";s:3:"228";s:3:"xan";s:3:"229";s:4:"É™ a";s:3:"230";s:4:"É™ g";s:3:"231";s:4:"É™ t";s:3:"232";s:4:" dü";s:3:"233";s:3:"ama";s:3:"234";s:3:"b k";s:3:"235";s:3:"dil";s:3:"236";s:3:"era";s:3:"237";s:3:"etm";s:3:"238";s:3:"i b";s:3:"239";s:3:"kil";s:3:"240";s:3:"mil";s:3:"241";s:3:"n r";s:3:"242";s:3:"qla";s:3:"243";s:3:"r s";s:3:"244";s:3:"ras";s:3:"245";s:3:"siy";s:3:"246";s:3:"son";s:3:"247";s:3:"tim";s:3:"248";s:3:"yer";s:3:"249";s:4:"É™ k";s:3:"250";s:4:" gü";s:3:"251";s:3:" so";s:3:"252";s:4:" sö";s:3:"253";s:3:" te";s:3:"254";s:3:" xa";s:3:"255";s:3:"ai ";s:3:"256";s:3:"bar";s:3:"257";s:3:"cti";s:3:"258";s:3:"di ";s:3:"259";s:3:"eri";s:3:"260";s:4:"gör";s:3:"261";s:4:"gün";s:3:"262";s:4:"gÉ™l";s:3:"263";s:4:"hbÉ™";s:3:"264";s:4:"ihÉ™";s:3:"265";s:3:"iki";s:3:"266";s:3:"isi";s:3:"267";s:3:"lin";s:3:"268";s:3:"mai";s:3:"269";s:3:"maq";s:3:"270";s:3:"n k";s:3:"271";s:3:"n t";s:3:"272";s:3:"n v";s:3:"273";s:3:"onu";s:3:"274";s:3:"qan";s:3:"275";s:4:"qÉ™z";s:3:"276";s:4:"tÉ™ ";s:3:"277";s:3:"xal";s:3:"278";s:3:"yib";s:3:"279";s:3:"yih";s:3:"280";s:3:"zet";s:3:"281";s:4:"zır";s:3:"282";s:4:"ıb ";s:3:"283";s:4:"É™ m";s:3:"284";s:4:"É™ze";s:3:"285";s:3:" br";s:3:"286";s:3:" in";s:3:"287";s:4:" i̇";s:3:"288";s:3:" pr";s:3:"289";s:3:" ta";s:3:"290";s:3:" to";s:3:"291";s:5:" üç";s:3:"292";s:3:"a o";s:3:"293";s:3:"ali";s:3:"294";s:3:"ani";s:3:"295";s:3:"anl";s:3:"296";s:3:"aql";s:3:"297";s:3:"azi";s:3:"298";s:3:"bri";s:3:"299";}s:7:"bengali";a:300:{s:7:"ার ";s:1:"0";s:7:"য় ";s:1:"1";s:9:"েয়";s:1:"2";s:9:"য়া";s:1:"3";s:7:" কর";s:1:"4";s:7:"েত ";s:1:"5";s:7:" কা";s:1:"6";s:7:" পা";s:1:"7";s:7:" তা";s:1:"8";s:7:"না ";s:1:"9";s:9:"ায়";s:2:"10";s:7:"ের ";s:2:"11";s:9:"য়ে";s:2:"12";s:7:" বা";s:2:"13";s:7:"েব ";s:2:"14";s:7:" যা";s:2:"15";s:7:" হে";s:2:"16";s:7:" সা";s:2:"17";s:7:"ান ";s:2:"18";s:7:"েছ ";s:2:"19";s:7:" িন";s:2:"20";s:7:"েল ";s:2:"21";s:7:" িদ";s:2:"22";s:7:" না";s:2:"23";s:7:" িব";s:2:"24";s:7:"েক ";s:2:"25";s:7:"লা ";s:2:"26";s:7:"তা ";s:2:"27";s:7:" বઘ";s:2:"28";s:7:" িক";s:2:"29";s:9:"করে";s:2:"30";s:7:" পચ";s:2:"31";s:9:"াের";s:2:"32";s:9:"িনে";s:2:"33";s:7:"রা ";s:2:"34";s:7:" োব";s:2:"35";s:7:"কা ";s:2:"36";s:7:" কে";s:2:"37";s:7:" টা";s:2:"38";s:7:"র ক";s:2:"39";s:9:"েলা";s:2:"40";s:7:" োক";s:2:"41";s:7:" মা";s:2:"42";s:7:" োদ";s:2:"43";s:7:" োম";s:2:"44";s:7:"দর ";s:2:"45";s:7:"়া ";s:2:"46";s:9:"িদে";s:2:"47";s:9:"াকা";s:2:"48";s:9:"়েছ";s:2:"49";s:9:"েদর";s:2:"50";s:7:" আে";s:2:"51";s:5:" ও ";s:2:"52";s:7:"াল ";s:2:"53";s:7:"িট ";s:2:"54";s:7:" মà§";s:2:"55";s:9:"কের";s:2:"56";s:9:"হয়";s:2:"57";s:9:"করা";s:2:"58";s:7:"পর ";s:2:"59";s:9:"পাে";s:2:"60";s:7:" à¦à¦•";s:2:"61";s:7:" পদ";s:2:"62";s:9:"টাক";s:2:"63";s:7:"ড় ";s:2:"64";s:9:"কান";s:2:"65";s:7:"টা ";s:2:"66";s:9:"দગা";s:2:"67";s:9:"পদગ";s:2:"68";s:9:"াড়";s:2:"69";s:9:"োকা";s:2:"70";s:9:"ওয়";s:2:"71";s:9:"কাপ";s:2:"72";s:9:"হেয";s:2:"73";s:9:"েনর";s:2:"74";s:7:" হয";s:2:"75";s:9:"দেয";s:2:"76";s:7:"নর ";s:2:"77";s:9:"ানা";s:2:"78";s:9:"ােল";s:2:"79";s:7:" আর";s:2:"80";s:5:" ় ";s:2:"81";s:9:"বઘব";s:2:"82";s:9:"িয়";s:2:"83";s:7:" দা";s:2:"84";s:7:" সম";s:2:"85";s:9:"কার";s:2:"86";s:9:"হার";s:2:"87";s:7:"াই ";s:2:"88";s:9:"ড়া";s:2:"89";s:9:"িবি";s:2:"90";s:7:" রা";s:2:"91";s:7:" লা";s:2:"92";s:9:"নার";s:2:"93";s:9:"বহা";s:2:"94";s:7:"বা ";s:2:"95";s:9:"যায";s:2:"96";s:7:"েন ";s:2:"97";s:9:"ઘবহ";s:2:"98";s:7:" ভা";s:2:"99";s:7:" সে";s:3:"100";s:7:" োয";s:3:"101";s:7:"রর ";s:3:"102";s:9:"়ার";s:3:"103";s:9:"়াল";s:3:"104";s:7:"ગা ";s:3:"105";s:9:"থেক";s:3:"106";s:9:"ভাে";s:3:"107";s:7:"়ে ";s:3:"108";s:9:"েরর";s:3:"109";s:7:" ধর";s:3:"110";s:7:" হা";s:3:"111";s:7:"নઘ ";s:3:"112";s:9:"রেন";s:3:"113";s:9:"ােব";s:3:"114";s:9:"িড়";s:3:"115";s:7:"ির ";s:3:"116";s:7:" োথ";s:3:"117";s:9:"তার";s:3:"118";s:9:"বিভ";s:3:"119";s:9:"রেত";s:3:"120";s:9:"সাে";s:3:"121";s:9:"াকে";s:3:"122";s:9:"ােত";s:3:"123";s:9:"িভਭ";s:3:"124";s:7:"ে ব";s:3:"125";s:9:"োথে";s:3:"126";s:7:" োপ";s:3:"127";s:7:" োস";s:3:"128";s:9:"বার";s:3:"129";s:7:"ভਭ ";s:3:"130";s:7:"রন ";s:3:"131";s:7:"াম ";s:3:"132";s:7:" à¦à¦–";s:3:"133";s:7:"আর ";s:3:"134";s:9:"কাে";s:3:"135";s:7:"দন ";s:3:"136";s:9:"সাজ";s:3:"137";s:9:"ােক";s:3:"138";s:9:"ােন";s:3:"139";s:9:"েনা";s:3:"140";s:7:" ঘে";s:3:"141";s:7:" তে";s:3:"142";s:7:" রে";s:3:"143";s:9:"তেব";s:3:"144";s:7:"বন ";s:3:"145";s:9:"বઘা";s:3:"146";s:9:"েড়";s:3:"147";s:9:"েবন";s:3:"148";s:7:" খà§";s:3:"149";s:7:" চা";s:3:"150";s:7:" সà§";s:3:"151";s:7:"কে ";s:3:"152";s:9:"ধরে";s:3:"153";s:7:"র ো";s:3:"154";s:7:"় ি";s:3:"155";s:7:"া ি";s:3:"156";s:9:"ােথ";s:3:"157";s:9:"াਠা";s:3:"158";s:7:"িদ ";s:3:"159";s:7:"িন ";s:3:"160";s:7:" অন";s:3:"161";s:7:" আপ";s:3:"162";s:7:" আম";s:3:"163";s:7:" থা";s:3:"164";s:7:" বચ";s:3:"165";s:7:" োফ";s:3:"166";s:7:" ৌত";s:3:"167";s:9:"ঘের";s:3:"168";s:7:"তে ";s:3:"169";s:9:"ময়";s:3:"170";s:9:"যাਠ";s:3:"171";s:7:"র স";s:3:"172";s:9:"রাখ";s:3:"173";s:7:"া ব";s:3:"174";s:7:"া ো";s:3:"175";s:9:"ালা";s:3:"176";s:7:"িক ";s:3:"177";s:7:"িশ ";s:3:"178";s:7:"েখ ";s:3:"179";s:7:" à¦à¦°";s:3:"180";s:7:" চઓ";s:3:"181";s:7:" িড";s:3:"182";s:7:"খন ";s:3:"183";s:9:"ড়ে";s:3:"184";s:7:"র ব";s:3:"185";s:7:"়র ";s:3:"186";s:9:"াইে";s:3:"187";s:9:"ােদ";s:3:"188";s:9:"িদন";s:3:"189";s:9:"েরন";s:3:"190";s:7:" তੴ";s:3:"191";s:9:"ছাড";s:3:"192";s:9:"জনઘ";s:3:"193";s:9:"তাই";s:3:"194";s:7:"মা ";s:3:"195";s:9:"মাে";s:3:"196";s:9:"লার";s:3:"197";s:7:"াজ ";s:3:"198";s:9:"াতা";s:3:"199";s:9:"ামা";s:3:"200";s:9:"ਊেল";s:3:"201";s:9:"ગার";s:3:"202";s:7:" সব";s:3:"203";s:9:"আপন";s:3:"204";s:9:"à¦à¦•à¦Ÿ";s:3:"205";s:9:"কাি";s:3:"206";s:9:"জাই";s:3:"207";s:7:"টর ";s:3:"208";s:9:"ডজা";s:3:"209";s:9:"দেখ";s:3:"210";s:9:"পনা";s:3:"211";s:7:"রও ";s:3:"212";s:7:"লে ";s:3:"213";s:9:"হেব";s:3:"214";s:9:"াজা";s:3:"215";s:9:"ািট";s:3:"216";s:9:"িডজ";s:3:"217";s:7:"েথ ";s:3:"218";s:7:" à¦à¦¬";s:3:"219";s:7:" জন";s:3:"220";s:7:" জা";s:3:"221";s:9:"আমা";s:3:"222";s:9:"গেল";s:3:"223";s:9:"জান";s:3:"224";s:9:"নেত";s:3:"225";s:9:"বিশ";s:3:"226";s:9:"মà§à§‡";s:3:"227";s:9:"মেয";s:3:"228";s:7:"র প";s:3:"229";s:7:"সে ";s:3:"230";s:9:"হেল";s:3:"231";s:7:"় ো";s:3:"232";s:7:"া হ";s:3:"233";s:9:"াওয";s:3:"234";s:9:"োমক";s:3:"235";s:9:"ઘাি";s:3:"236";s:7:" অে";s:3:"237";s:5:" ট ";s:3:"238";s:7:" োগ";s:3:"239";s:7:" োন";s:3:"240";s:7:"জর ";s:3:"241";s:9:"তির";s:3:"242";s:9:"দাম";s:3:"243";s:9:"পড়";s:3:"244";s:9:"পার";s:3:"245";s:9:"বাঘ";s:3:"246";s:9:"মকা";s:3:"247";s:9:"মাম";s:3:"248";s:9:"য়র";s:3:"249";s:9:"যাে";s:3:"250";s:7:"র ম";s:3:"251";s:7:"রে ";s:3:"252";s:7:"লর ";s:3:"253";s:7:"া ক";s:3:"254";s:7:"াগ ";s:3:"255";s:9:"াবা";s:3:"256";s:9:"ারা";s:3:"257";s:9:"ািন";s:3:"258";s:7:"ে গ";s:3:"259";s:7:"েগ ";s:3:"260";s:9:"েলর";s:3:"261";s:9:"োদখ";s:3:"262";s:9:"োবি";s:3:"263";s:7:"ઓল ";s:3:"264";s:7:" দে";s:3:"265";s:7:" পà§";s:3:"266";s:7:" বে";s:3:"267";s:9:"অেন";s:3:"268";s:9:"à¦à¦–ন";s:3:"269";s:9:"কছà§";s:3:"270";s:9:"কাল";s:3:"271";s:9:"গেয";s:3:"272";s:7:"ছন ";s:3:"273";s:7:"ত প";s:3:"274";s:9:"নেয";s:3:"275";s:9:"পাি";s:3:"276";s:7:"মন ";s:3:"277";s:7:"র আ";s:3:"278";s:9:"রার";s:3:"279";s:7:"াও ";s:3:"280";s:7:"াপ ";s:3:"281";s:9:"িকছ";s:3:"282";s:9:"িগে";s:3:"283";s:9:"েছন";s:3:"284";s:9:"েজর";s:3:"285";s:9:"োমা";s:3:"286";s:9:"োমে";s:3:"287";s:9:"ৌতি";s:3:"288";s:9:"ઘাে";s:3:"289";s:3:" ' ";s:3:"290";s:7:" à¦à¦›";s:3:"291";s:7:" ছা";s:3:"292";s:7:" বল";s:3:"293";s:7:" যি";s:3:"294";s:7:" শি";s:3:"295";s:7:" িম";s:3:"296";s:7:" োল";s:3:"297";s:9:"à¦à¦›à¦¾";s:3:"298";s:7:"খা ";s:3:"299";}s:9:"bulgarian";a:300:{s:5:"на ";s:1:"0";s:5:" на";s:1:"1";s:5:"то ";s:1:"2";s:5:" пр";s:1:"3";s:5:" за";s:1:"4";s:5:"та ";s:1:"5";s:5:" по";s:1:"6";s:6:"ите";s:1:"7";s:5:"те ";s:1:"8";s:5:"а п";s:1:"9";s:5:"а Ñ";s:2:"10";s:5:" от";s:2:"11";s:5:"за ";s:2:"12";s:6:"ата";s:2:"13";s:5:"Ð¸Ñ ";s:2:"14";s:4:" в ";s:2:"15";s:5:"е н";s:2:"16";s:5:" да";s:2:"17";s:5:"а н";s:2:"18";s:5:" Ñе";s:2:"19";s:5:" ко";s:2:"20";s:5:"да ";s:2:"21";s:5:"от ";s:2:"22";s:6:"ани";s:2:"23";s:6:"пре";s:2:"24";s:5:"не ";s:2:"25";s:6:"ени";s:2:"26";s:5:"о н";s:2:"27";s:5:"ни ";s:2:"28";s:5:"Ñе ";s:2:"29";s:4:" и ";s:2:"30";s:5:"но ";s:2:"31";s:6:"ане";s:2:"32";s:6:"ето";s:2:"33";s:5:"а в";s:2:"34";s:5:"ва ";s:2:"35";s:6:"ван";s:2:"36";s:5:"е п";s:2:"37";s:5:"а о";s:2:"38";s:6:"ото";s:2:"39";s:6:"ран";s:2:"40";s:5:"ат ";s:2:"41";s:6:"ред";s:2:"42";s:5:" не";s:2:"43";s:5:"а д";s:2:"44";s:5:"и п";s:2:"45";s:5:" до";s:2:"46";s:6:"про";s:2:"47";s:5:" ÑÑŠ";s:2:"48";s:5:"ли ";s:2:"49";s:6:"при";s:2:"50";s:6:"ниÑ";s:2:"51";s:6:"Ñки";s:2:"52";s:6:"тел";s:2:"53";s:5:"а и";s:2:"54";s:5:"по ";s:2:"55";s:5:"ри ";s:2:"56";s:4:" е ";s:2:"57";s:5:" ка";s:2:"58";s:6:"ира";s:2:"59";s:6:"кат";s:2:"60";s:6:"ние";s:2:"61";s:6:"нит";s:2:"62";s:5:"е з";s:2:"63";s:5:"и Ñ";s:2:"64";s:5:"о Ñ";s:2:"65";s:6:"оÑÑ‚";s:2:"66";s:5:"че ";s:2:"67";s:5:" ра";s:2:"68";s:6:"иÑÑ‚";s:2:"69";s:5:"о п";s:2:"70";s:5:" из";s:2:"71";s:5:" Ñа";s:2:"72";s:5:"е д";s:2:"73";s:6:"ини";s:2:"74";s:5:"ки ";s:2:"75";s:6:"мин";s:2:"76";s:5:" ми";s:2:"77";s:5:"а б";s:2:"78";s:6:"ава";s:2:"79";s:5:"е в";s:2:"80";s:5:"ие ";s:2:"81";s:6:"пол";s:2:"82";s:6:"Ñтв";s:2:"83";s:5:"Ñ‚ н";s:2:"84";s:5:" въ";s:2:"85";s:5:" ÑÑ‚";s:2:"86";s:5:" то";s:2:"87";s:6:"аза";s:2:"88";s:5:"е о";s:2:"89";s:5:"ов ";s:2:"90";s:5:"ÑÑ‚ ";s:2:"91";s:5:"ÑŠÑ‚ ";s:2:"92";s:5:"и н";s:2:"93";s:6:"иÑÑ‚";s:2:"94";s:6:"нат";s:2:"95";s:5:"ра ";s:2:"96";s:5:" бъ";s:2:"97";s:5:" че";s:2:"98";s:6:"алн";s:2:"99";s:5:"е Ñ";s:3:"100";s:5:"ен ";s:3:"101";s:6:"еÑÑ‚";s:3:"102";s:5:"и д";s:3:"103";s:6:"лен";s:3:"104";s:6:"ниÑ";s:3:"105";s:5:"о о";s:3:"106";s:6:"ови";s:3:"107";s:5:" об";s:3:"108";s:5:" Ñл";s:3:"109";s:5:"а Ñ€";s:3:"110";s:6:"ато";s:3:"111";s:6:"кон";s:3:"112";s:6:"ноÑ";s:3:"113";s:6:"ров";s:3:"114";s:5:"ще ";s:3:"115";s:5:" ре";s:3:"116";s:4:" Ñ ";s:3:"117";s:5:" Ñп";s:3:"118";s:6:"ват";s:3:"119";s:6:"еше";s:3:"120";s:5:"и в";s:3:"121";s:6:"иет";s:3:"122";s:5:"о в";s:3:"123";s:6:"ове";s:3:"124";s:6:"Ñта";s:3:"125";s:5:"а к";s:3:"126";s:5:"а Ñ‚";s:3:"127";s:6:"дат";s:3:"128";s:6:"ент";s:3:"129";s:5:"ка ";s:3:"130";s:6:"лед";s:3:"131";s:6:"нет";s:3:"132";s:6:"ори";s:3:"133";s:6:"ÑÑ‚Ñ€";s:3:"134";s:6:"ÑÑ‚ÑŠ";s:3:"135";s:5:"ти ";s:3:"136";s:6:"Ñ‚ÑŠÑ€";s:3:"137";s:5:" те";s:3:"138";s:5:"а з";s:3:"139";s:5:"а м";s:3:"140";s:5:"ад ";s:3:"141";s:6:"ана";s:3:"142";s:6:"ено";s:3:"143";s:5:"и о";s:3:"144";s:6:"ина";s:3:"145";s:6:"ити";s:3:"146";s:5:"ма ";s:3:"147";s:6:"Ñка";s:3:"148";s:6:"Ñле";s:3:"149";s:6:"тво";s:3:"150";s:6:"тер";s:3:"151";s:6:"циÑ";s:3:"152";s:5:"ÑÑ‚ ";s:3:"153";s:5:" бе";s:3:"154";s:5:" де";s:3:"155";s:5:" па";s:3:"156";s:6:"ате";s:3:"157";s:6:"вен";s:3:"158";s:5:"ви ";s:3:"159";s:6:"вит";s:3:"160";s:5:"и з";s:3:"161";s:5:"и и";s:3:"162";s:6:"нар";s:3:"163";s:6:"нов";s:3:"164";s:6:"ова";s:3:"165";s:6:"пов";s:3:"166";s:6:"рез";s:3:"167";s:6:"рит";s:3:"168";s:5:"Ñа ";s:3:"169";s:6:"Ñта";s:3:"170";s:5:" го";s:3:"171";s:5:" ще";s:3:"172";s:6:"али";s:3:"173";s:5:"в п";s:3:"174";s:6:"гра";s:3:"175";s:5:"е и";s:3:"176";s:6:"еди";s:3:"177";s:6:"ели";s:3:"178";s:6:"или";s:3:"179";s:6:"каз";s:3:"180";s:6:"кит";s:3:"181";s:6:"лно";s:3:"182";s:6:"мен";s:3:"183";s:6:"оли";s:3:"184";s:6:"раз";s:3:"185";s:5:" ве";s:3:"186";s:5:" гр";s:3:"187";s:5:" им";s:3:"188";s:5:" ме";s:3:"189";s:5:" пъ";s:3:"190";s:6:"ави";s:3:"191";s:6:"ако";s:3:"192";s:6:"ача";s:3:"193";s:6:"вин";s:3:"194";s:5:"во ";s:3:"195";s:6:"гов";s:3:"196";s:6:"дан";s:3:"197";s:5:"ди ";s:3:"198";s:5:"до ";s:3:"199";s:5:"ед ";s:3:"200";s:6:"ери";s:3:"201";s:6:"еро";s:3:"202";s:6:"жда";s:3:"203";s:6:"ито";s:3:"204";s:6:"ков";s:3:"205";s:6:"кол";s:3:"206";s:6:"лни";s:3:"207";s:6:"мер";s:3:"208";s:6:"нач";s:3:"209";s:5:"о з";s:3:"210";s:6:"ола";s:3:"211";s:5:"он ";s:3:"212";s:6:"она";s:3:"213";s:6:"пра";s:3:"214";s:6:"рав";s:3:"215";s:6:"рем";s:3:"216";s:6:"ÑиÑ";s:3:"217";s:6:"Ñти";s:3:"218";s:5:"Ñ‚ п";s:3:"219";s:6:"тан";s:3:"220";s:5:"ха ";s:3:"221";s:5:"ше ";s:3:"222";s:6:"шен";s:3:"223";s:6:"ълг";s:3:"224";s:5:" ба";s:3:"225";s:5:" Ñи";s:3:"226";s:6:"аро";s:3:"227";s:6:"бъл";s:3:"228";s:5:"в Ñ€";s:3:"229";s:6:"гар";s:3:"230";s:5:"е е";s:3:"231";s:6:"елн";s:3:"232";s:6:"еме";s:3:"233";s:6:"ико";s:3:"234";s:6:"има";s:3:"235";s:5:"ко ";s:3:"236";s:6:"кои";s:3:"237";s:5:"ла ";s:3:"238";s:6:"лга";s:3:"239";s:5:"о д";s:3:"240";s:6:"ози";s:3:"241";s:6:"оит";s:3:"242";s:6:"под";s:3:"243";s:6:"реÑ";s:3:"244";s:6:"рие";s:3:"245";s:6:"Ñто";s:3:"246";s:5:"Ñ‚ к";s:3:"247";s:5:"Ñ‚ м";s:3:"248";s:5:"Ñ‚ Ñ";s:3:"249";s:6:"уÑÑ‚";s:3:"250";s:5:" би";s:3:"251";s:5:" дв";s:3:"252";s:5:" дъ";s:3:"253";s:5:" ма";s:3:"254";s:5:" мо";s:3:"255";s:5:" ни";s:3:"256";s:5:" оÑ";s:3:"257";s:6:"ала";s:3:"258";s:6:"анÑ";s:3:"259";s:6:"ара";s:3:"260";s:6:"ати";s:3:"261";s:6:"аци";s:3:"262";s:6:"беш";s:3:"263";s:6:"вър";s:3:"264";s:5:"е Ñ€";s:3:"265";s:6:"едв";s:3:"266";s:6:"ема";s:3:"267";s:6:"жав";s:3:"268";s:5:"и к";s:3:"269";s:6:"иал";s:3:"270";s:6:"ица";s:3:"271";s:6:"иче";s:3:"272";s:6:"киÑ";s:3:"273";s:6:"лит";s:3:"274";s:5:"о б";s:3:"275";s:6:"ово";s:3:"276";s:6:"оди";s:3:"277";s:6:"ока";s:3:"278";s:6:"поÑ";s:3:"279";s:6:"род";s:3:"280";s:6:"Ñед";s:3:"281";s:6:"Ñлу";s:3:"282";s:5:"Ñ‚ и";s:3:"283";s:6:"тов";s:3:"284";s:6:"ува";s:3:"285";s:6:"циа";s:3:"286";s:6:"чеÑ";s:3:"287";s:5:"Ñ Ð·";s:3:"288";s:5:" во";s:3:"289";s:5:" ил";s:3:"290";s:5:" Ñк";s:3:"291";s:5:" Ñ‚Ñ€";s:3:"292";s:5:" це";s:3:"293";s:6:"ами";s:3:"294";s:6:"ари";s:3:"295";s:6:"бат";s:3:"296";s:5:"би ";s:3:"297";s:6:"бра";s:3:"298";s:6:"бъд";s:3:"299";}s:7:"cebuano";a:300:{s:3:"ng ";s:1:"0";s:3:"sa ";s:1:"1";s:3:" sa";s:1:"2";s:3:"ang";s:1:"3";s:3:"ga ";s:1:"4";s:3:"nga";s:1:"5";s:3:" ka";s:1:"6";s:3:" ng";s:1:"7";s:3:"an ";s:1:"8";s:3:" an";s:1:"9";s:3:" na";s:2:"10";s:3:" ma";s:2:"11";s:3:" ni";s:2:"12";s:3:"a s";s:2:"13";s:3:"a n";s:2:"14";s:3:"on ";s:2:"15";s:3:" pa";s:2:"16";s:3:" si";s:2:"17";s:3:"a k";s:2:"18";s:3:"a m";s:2:"19";s:3:" ba";s:2:"20";s:3:"ong";s:2:"21";s:3:"a i";s:2:"22";s:3:"ila";s:2:"23";s:3:" mg";s:2:"24";s:3:"mga";s:2:"25";s:3:"a p";s:2:"26";s:3:"iya";s:2:"27";s:3:"a a";s:2:"28";s:3:"ay ";s:2:"29";s:3:"ka ";s:2:"30";s:3:"ala";s:2:"31";s:3:"ing";s:2:"32";s:3:"g m";s:2:"33";s:3:"n s";s:2:"34";s:3:"g n";s:2:"35";s:3:"lan";s:2:"36";s:3:" gi";s:2:"37";s:3:"na ";s:2:"38";s:3:"ni ";s:2:"39";s:3:"o s";s:2:"40";s:3:"g p";s:2:"41";s:3:"n n";s:2:"42";s:3:" da";s:2:"43";s:3:"ag ";s:2:"44";s:3:"pag";s:2:"45";s:3:"g s";s:2:"46";s:3:"yan";s:2:"47";s:3:"ayo";s:2:"48";s:3:"o n";s:2:"49";s:3:"si ";s:2:"50";s:3:" mo";s:2:"51";s:3:"a b";s:2:"52";s:3:"g a";s:2:"53";s:3:"ail";s:2:"54";s:3:"g b";s:2:"55";s:3:"han";s:2:"56";s:3:"a d";s:2:"57";s:3:"asu";s:2:"58";s:3:"nag";s:2:"59";s:3:"ya ";s:2:"60";s:3:"man";s:2:"61";s:3:"ne ";s:2:"62";s:3:"pan";s:2:"63";s:3:"kon";s:2:"64";s:3:" il";s:2:"65";s:3:" la";s:2:"66";s:3:"aka";s:2:"67";s:3:"ako";s:2:"68";s:3:"ana";s:2:"69";s:3:"bas";s:2:"70";s:3:"ko ";s:2:"71";s:3:"od ";s:2:"72";s:3:"yo ";s:2:"73";s:3:" di";s:2:"74";s:3:" ko";s:2:"75";s:3:" ug";s:2:"76";s:3:"a u";s:2:"77";s:3:"g k";s:2:"78";s:3:"kan";s:2:"79";s:3:"la ";s:2:"80";s:3:"len";s:2:"81";s:3:"sur";s:2:"82";s:3:"ug ";s:2:"83";s:3:" ai";s:2:"84";s:3:"apa";s:2:"85";s:3:"aw ";s:2:"86";s:3:"d s";s:2:"87";s:3:"g d";s:2:"88";s:3:"g g";s:2:"89";s:3:"ile";s:2:"90";s:3:"nin";s:2:"91";s:3:" iy";s:2:"92";s:3:" su";s:2:"93";s:3:"ene";s:2:"94";s:3:"og ";s:2:"95";s:3:"ot ";s:2:"96";s:3:"aba";s:2:"97";s:3:"aha";s:2:"98";s:3:"as ";s:2:"99";s:3:"imo";s:3:"100";s:3:" ki";s:3:"101";s:3:"a t";s:3:"102";s:3:"aga";s:3:"103";s:3:"ban";s:3:"104";s:3:"ero";s:3:"105";s:3:"nan";s:3:"106";s:3:"o k";s:3:"107";s:3:"ran";s:3:"108";s:3:"ron";s:3:"109";s:3:"sil";s:3:"110";s:3:"una";s:3:"111";s:3:"usa";s:3:"112";s:3:" us";s:3:"113";s:3:"a g";s:3:"114";s:3:"ahi";s:3:"115";s:3:"ani";s:3:"116";s:3:"er ";s:3:"117";s:3:"ha ";s:3:"118";s:3:"i a";s:3:"119";s:3:"rer";s:3:"120";s:3:"yon";s:3:"121";s:3:" pu";s:3:"122";s:3:"ini";s:3:"123";s:3:"nak";s:3:"124";s:3:"ro ";s:3:"125";s:3:"to ";s:3:"126";s:3:"ure";s:3:"127";s:3:" ed";s:3:"128";s:3:" og";s:3:"129";s:3:" wa";s:3:"130";s:3:"ili";s:3:"131";s:3:"mo ";s:3:"132";s:3:"n a";s:3:"133";s:3:"nd ";s:3:"134";s:3:"o a";s:3:"135";s:3:" ad";s:3:"136";s:3:" du";s:3:"137";s:3:" pr";s:3:"138";s:3:"aro";s:3:"139";s:3:"i s";s:3:"140";s:3:"ma ";s:3:"141";s:3:"n m";s:3:"142";s:3:"ulo";s:3:"143";s:3:"und";s:3:"144";s:3:" ta";s:3:"145";s:3:"ara";s:3:"146";s:3:"asa";s:3:"147";s:3:"ato";s:3:"148";s:3:"awa";s:3:"149";s:3:"dmu";s:3:"150";s:3:"e n";s:3:"151";s:3:"edm";s:3:"152";s:3:"ina";s:3:"153";s:3:"mak";s:3:"154";s:3:"mun";s:3:"155";s:3:"niy";s:3:"156";s:3:"san";s:3:"157";s:3:"wa ";s:3:"158";s:3:" tu";s:3:"159";s:3:" un";s:3:"160";s:3:"a l";s:3:"161";s:3:"bay";s:3:"162";s:3:"iga";s:3:"163";s:3:"ika";s:3:"164";s:3:"ita";s:3:"165";s:3:"kin";s:3:"166";s:3:"lis";s:3:"167";s:3:"may";s:3:"168";s:3:"os ";s:3:"169";s:3:" ar";s:3:"170";s:3:"ad ";s:3:"171";s:3:"ali";s:3:"172";s:3:"ama";s:3:"173";s:3:"ers";s:3:"174";s:3:"ipa";s:3:"175";s:3:"isa";s:3:"176";s:3:"mao";s:3:"177";s:3:"nim";s:3:"178";s:3:"t s";s:3:"179";s:3:"tin";s:3:"180";s:3:" ak";s:3:"181";s:3:" ap";s:3:"182";s:3:" hi";s:3:"183";s:3:"abo";s:3:"184";s:3:"agp";s:3:"185";s:3:"ano";s:3:"186";s:3:"ata";s:3:"187";s:3:"g i";s:3:"188";s:3:"gan";s:3:"189";s:3:"gka";s:3:"190";s:3:"gpa";s:3:"191";s:3:"i m";s:3:"192";s:3:"iha";s:3:"193";s:3:"k s";s:3:"194";s:3:"law";s:3:"195";s:3:"or ";s:3:"196";s:3:"rs ";s:3:"197";s:3:"siy";s:3:"198";s:3:"tag";s:3:"199";s:3:" al";s:3:"200";s:3:" at";s:3:"201";s:3:" ha";s:3:"202";s:3:" hu";s:3:"203";s:3:" im";s:3:"204";s:3:"a h";s:3:"205";s:3:"bu ";s:3:"206";s:3:"e s";s:3:"207";s:3:"gma";s:3:"208";s:3:"kas";s:3:"209";s:3:"lag";s:3:"210";s:3:"mon";s:3:"211";s:3:"nah";s:3:"212";s:3:"ngo";s:3:"213";s:3:"r s";s:3:"214";s:3:"ra ";s:3:"215";s:3:"sab";s:3:"216";s:3:"sam";s:3:"217";s:3:"sul";s:3:"218";s:3:"uba";s:3:"219";s:3:"uha";s:3:"220";s:3:" lo";s:3:"221";s:3:" re";s:3:"222";s:3:"ada";s:3:"223";s:3:"aki";s:3:"224";s:3:"aya";s:3:"225";s:3:"bah";s:3:"226";s:3:"ce ";s:3:"227";s:3:"d n";s:3:"228";s:3:"lab";s:3:"229";s:3:"pa ";s:3:"230";s:3:"pak";s:3:"231";s:3:"s n";s:3:"232";s:3:"s s";s:3:"233";s:3:"tan";s:3:"234";s:3:"taw";s:3:"235";s:3:"te ";s:3:"236";s:3:"uma";s:3:"237";s:3:"ura";s:3:"238";s:3:" in";s:3:"239";s:3:" lu";s:3:"240";s:3:"a c";s:3:"241";s:3:"abi";s:3:"242";s:3:"at ";s:3:"243";s:3:"awo";s:3:"244";s:3:"bat";s:3:"245";s:3:"dal";s:3:"246";s:3:"dla";s:3:"247";s:3:"ele";s:3:"248";s:3:"g t";s:3:"249";s:3:"g u";s:3:"250";s:3:"gay";s:3:"251";s:3:"go ";s:3:"252";s:3:"hab";s:3:"253";s:3:"hin";s:3:"254";s:3:"i e";s:3:"255";s:3:"i n";s:3:"256";s:3:"kab";s:3:"257";s:3:"kap";s:3:"258";s:3:"lay";s:3:"259";s:3:"lin";s:3:"260";s:3:"nil";s:3:"261";s:3:"pam";s:3:"262";s:3:"pas";s:3:"263";s:3:"pro";s:3:"264";s:3:"pul";s:3:"265";s:3:"ta ";s:3:"266";s:3:"ton";s:3:"267";s:3:"uga";s:3:"268";s:3:"ugm";s:3:"269";s:3:"unt";s:3:"270";s:3:" co";s:3:"271";s:3:" gu";s:3:"272";s:3:" mi";s:3:"273";s:3:" pi";s:3:"274";s:3:" ti";s:3:"275";s:3:"a o";s:3:"276";s:3:"abu";s:3:"277";s:3:"adl";s:3:"278";s:3:"ado";s:3:"279";s:3:"agh";s:3:"280";s:3:"agk";s:3:"281";s:3:"ao ";s:3:"282";s:3:"art";s:3:"283";s:3:"bal";s:3:"284";s:3:"cit";s:3:"285";s:3:"di ";s:3:"286";s:3:"dto";s:3:"287";s:3:"dun";s:3:"288";s:3:"ent";s:3:"289";s:3:"g e";s:3:"290";s:3:"gon";s:3:"291";s:3:"gug";s:3:"292";s:3:"ia ";s:3:"293";s:3:"iba";s:3:"294";s:3:"ice";s:3:"295";s:3:"in ";s:3:"296";s:3:"inu";s:3:"297";s:3:"it ";s:3:"298";s:3:"kaa";s:3:"299";}s:8:"croatian";a:300:{s:3:"je ";s:1:"0";s:3:" na";s:1:"1";s:3:" pr";s:1:"2";s:3:" po";s:1:"3";s:3:"na ";s:1:"4";s:3:" je";s:1:"5";s:3:" za";s:1:"6";s:3:"ije";s:1:"7";s:3:"ne ";s:1:"8";s:3:" i ";s:1:"9";s:3:"ti ";s:2:"10";s:3:"da ";s:2:"11";s:3:" ko";s:2:"12";s:3:" ne";s:2:"13";s:3:"li ";s:2:"14";s:3:" bi";s:2:"15";s:3:" da";s:2:"16";s:3:" u ";s:2:"17";s:3:"ma ";s:2:"18";s:3:"mo ";s:2:"19";s:3:"a n";s:2:"20";s:3:"ih ";s:2:"21";s:3:"za ";s:2:"22";s:3:"a s";s:2:"23";s:3:"ko ";s:2:"24";s:3:"i s";s:2:"25";s:3:"a p";s:2:"26";s:3:"koj";s:2:"27";s:3:"pro";s:2:"28";s:3:"ju ";s:2:"29";s:3:"se ";s:2:"30";s:3:" go";s:2:"31";s:3:"ost";s:2:"32";s:3:"to ";s:2:"33";s:3:"va ";s:2:"34";s:3:" do";s:2:"35";s:3:" to";s:2:"36";s:3:"e n";s:2:"37";s:3:"i p";s:2:"38";s:3:" od";s:2:"39";s:3:" ra";s:2:"40";s:3:"no ";s:2:"41";s:3:"ako";s:2:"42";s:3:"ka ";s:2:"43";s:3:"ni ";s:2:"44";s:3:" ka";s:2:"45";s:3:" se";s:2:"46";s:3:" mo";s:2:"47";s:3:" st";s:2:"48";s:3:"i n";s:2:"49";s:3:"ima";s:2:"50";s:3:"ja ";s:2:"51";s:3:"pri";s:2:"52";s:3:"vat";s:2:"53";s:3:"sta";s:2:"54";s:3:" su";s:2:"55";s:3:"ati";s:2:"56";s:3:"e p";s:2:"57";s:3:"ta ";s:2:"58";s:3:"tsk";s:2:"59";s:3:"e i";s:2:"60";s:3:"nij";s:2:"61";s:3:" tr";s:2:"62";s:3:"cij";s:2:"63";s:3:"jen";s:2:"64";s:3:"nos";s:2:"65";s:3:"o s";s:2:"66";s:3:" iz";s:2:"67";s:3:"om ";s:2:"68";s:3:"tro";s:2:"69";s:3:"ili";s:2:"70";s:3:"iti";s:2:"71";s:3:"pos";s:2:"72";s:3:" al";s:2:"73";s:3:"a i";s:2:"74";s:3:"a o";s:2:"75";s:3:"e s";s:2:"76";s:3:"ija";s:2:"77";s:3:"ini";s:2:"78";s:3:"pre";s:2:"79";s:3:"str";s:2:"80";s:3:"la ";s:2:"81";s:3:"og ";s:2:"82";s:3:"ovo";s:2:"83";s:3:" sv";s:2:"84";s:3:"ekt";s:2:"85";s:3:"nje";s:2:"86";s:3:"o p";s:2:"87";s:3:"odi";s:2:"88";s:3:"rva";s:2:"89";s:3:" ni";s:2:"90";s:3:"ali";s:2:"91";s:3:"min";s:2:"92";s:3:"rij";s:2:"93";s:3:"a t";s:2:"94";s:3:"a z";s:2:"95";s:3:"ats";s:2:"96";s:3:"iva";s:2:"97";s:3:"o t";s:2:"98";s:3:"od ";s:2:"99";s:3:"oje";s:3:"100";s:3:"ra ";s:3:"101";s:3:" hr";s:3:"102";s:3:"a m";s:3:"103";s:3:"a u";s:3:"104";s:3:"hrv";s:3:"105";s:3:"im ";s:3:"106";s:3:"ke ";s:3:"107";s:3:"o i";s:3:"108";s:3:"ovi";s:3:"109";s:3:"red";s:3:"110";s:3:"riv";s:3:"111";s:3:"te ";s:3:"112";s:3:"bi ";s:3:"113";s:3:"e o";s:3:"114";s:3:"god";s:3:"115";s:3:"i d";s:3:"116";s:3:"lek";s:3:"117";s:3:"umi";s:3:"118";s:3:"zvo";s:3:"119";s:3:"din";s:3:"120";s:3:"e u";s:3:"121";s:3:"ene";s:3:"122";s:3:"jed";s:3:"123";s:3:"ji ";s:3:"124";s:3:"lje";s:3:"125";s:3:"nog";s:3:"126";s:3:"su ";s:3:"127";s:3:" a ";s:3:"128";s:3:" el";s:3:"129";s:3:" mi";s:3:"130";s:3:" o ";s:3:"131";s:3:"a d";s:3:"132";s:3:"alu";s:3:"133";s:3:"ele";s:3:"134";s:3:"i u";s:3:"135";s:3:"izv";s:3:"136";s:3:"ktr";s:3:"137";s:3:"lum";s:3:"138";s:3:"o d";s:3:"139";s:3:"ori";s:3:"140";s:3:"rad";s:3:"141";s:3:"sto";s:3:"142";s:3:"a k";s:3:"143";s:3:"anj";s:3:"144";s:3:"ava";s:3:"145";s:3:"e k";s:3:"146";s:3:"men";s:3:"147";s:3:"nic";s:3:"148";s:3:"o j";s:3:"149";s:3:"oj ";s:3:"150";s:3:"ove";s:3:"151";s:3:"ski";s:3:"152";s:3:"tvr";s:3:"153";s:3:"una";s:3:"154";s:3:"vor";s:3:"155";s:3:" di";s:3:"156";s:3:" no";s:3:"157";s:3:" s ";s:3:"158";s:3:" ta";s:3:"159";s:3:" tv";s:3:"160";s:3:"i i";s:3:"161";s:3:"i o";s:3:"162";s:3:"kak";s:3:"163";s:4:"roÅ¡";s:3:"164";s:3:"sko";s:3:"165";s:3:"vod";s:3:"166";s:3:" sa";s:3:"167";s:4:" će";s:3:"168";s:3:"a b";s:3:"169";s:3:"adi";s:3:"170";s:3:"amo";s:3:"171";s:3:"eni";s:3:"172";s:3:"gov";s:3:"173";s:3:"iju";s:3:"174";s:3:"ku ";s:3:"175";s:3:"o n";s:3:"176";s:3:"ora";s:3:"177";s:3:"rav";s:3:"178";s:3:"ruj";s:3:"179";s:3:"smo";s:3:"180";s:3:"tav";s:3:"181";s:3:"tru";s:3:"182";s:3:"u p";s:3:"183";s:3:"ve ";s:3:"184";s:3:" in";s:3:"185";s:3:" pl";s:3:"186";s:3:"aci";s:3:"187";s:3:"bit";s:3:"188";s:3:"de ";s:3:"189";s:4:"diÅ¡";s:3:"190";s:3:"ema";s:3:"191";s:3:"i m";s:3:"192";s:3:"ika";s:3:"193";s:4:"iÅ¡t";s:3:"194";s:3:"jer";s:3:"195";s:3:"ki ";s:3:"196";s:3:"mog";s:3:"197";s:3:"nik";s:3:"198";s:3:"nov";s:3:"199";s:3:"nu ";s:3:"200";s:3:"oji";s:3:"201";s:3:"oli";s:3:"202";s:3:"pla";s:3:"203";s:3:"pod";s:3:"204";s:3:"st ";s:3:"205";s:3:"sti";s:3:"206";s:3:"tra";s:3:"207";s:3:"tre";s:3:"208";s:3:"vo ";s:3:"209";s:3:" sm";s:3:"210";s:4:" Å¡t";s:3:"211";s:3:"dan";s:3:"212";s:3:"e z";s:3:"213";s:3:"i t";s:3:"214";s:3:"io ";s:3:"215";s:3:"ist";s:3:"216";s:3:"kon";s:3:"217";s:3:"lo ";s:3:"218";s:3:"stv";s:3:"219";s:3:"u s";s:3:"220";s:3:"uje";s:3:"221";s:3:"ust";s:3:"222";s:4:"će ";s:3:"223";s:4:"ći ";s:3:"224";s:4:"Å¡to";s:3:"225";s:3:" dr";s:3:"226";s:3:" im";s:3:"227";s:3:" li";s:3:"228";s:3:"ada";s:3:"229";s:3:"aft";s:3:"230";s:3:"ani";s:3:"231";s:3:"ao ";s:3:"232";s:3:"ars";s:3:"233";s:3:"ata";s:3:"234";s:3:"e t";s:3:"235";s:3:"emo";s:3:"236";s:3:"i k";s:3:"237";s:3:"ine";s:3:"238";s:3:"jem";s:3:"239";s:3:"kov";s:3:"240";s:3:"lik";s:3:"241";s:3:"lji";s:3:"242";s:3:"mje";s:3:"243";s:3:"naf";s:3:"244";s:3:"ner";s:3:"245";s:3:"nih";s:3:"246";s:3:"nja";s:3:"247";s:3:"ogo";s:3:"248";s:3:"oiz";s:3:"249";s:3:"ome";s:3:"250";s:3:"pot";s:3:"251";s:3:"ran";s:3:"252";s:3:"ri ";s:3:"253";s:3:"roi";s:3:"254";s:3:"rtk";s:3:"255";s:3:"ska";s:3:"256";s:3:"ter";s:3:"257";s:3:"u i";s:3:"258";s:3:"u o";s:3:"259";s:3:"vi ";s:3:"260";s:3:"vrt";s:3:"261";s:3:" me";s:3:"262";s:3:" ug";s:3:"263";s:3:"ak ";s:3:"264";s:3:"ama";s:3:"265";s:4:"drž";s:3:"266";s:3:"e e";s:3:"267";s:3:"e g";s:3:"268";s:3:"e m";s:3:"269";s:3:"em ";s:3:"270";s:3:"eme";s:3:"271";s:3:"enj";s:3:"272";s:3:"ent";s:3:"273";s:3:"er ";s:3:"274";s:3:"ere";s:3:"275";s:3:"erg";s:3:"276";s:3:"eur";s:3:"277";s:3:"go ";s:3:"278";s:3:"i b";s:3:"279";s:3:"i z";s:3:"280";s:3:"jet";s:3:"281";s:3:"ksi";s:3:"282";s:3:"o u";s:3:"283";s:3:"oda";s:3:"284";s:3:"ona";s:3:"285";s:3:"pra";s:3:"286";s:3:"reb";s:3:"287";s:3:"rem";s:3:"288";s:3:"rop";s:3:"289";s:3:"tri";s:3:"290";s:4:"žav";s:3:"291";s:3:" ci";s:3:"292";s:3:" eu";s:3:"293";s:3:" re";s:3:"294";s:3:" te";s:3:"295";s:3:" uv";s:3:"296";s:3:" ve";s:3:"297";s:3:"aju";s:3:"298";s:3:"an ";s:3:"299";}s:5:"czech";a:300:{s:3:" pr";s:1:"0";s:3:" po";s:1:"1";s:4:"ní ";s:1:"2";s:3:"pro";s:1:"3";s:3:" na";s:1:"4";s:3:"na ";s:1:"5";s:4:" pÅ™";s:1:"6";s:3:"ch ";s:1:"7";s:3:" je";s:1:"8";s:3:" ne";s:1:"9";s:4:"že ";s:2:"10";s:4:" že";s:2:"11";s:3:" se";s:2:"12";s:3:" do";s:2:"13";s:3:" ro";s:2:"14";s:3:" st";s:2:"15";s:3:" v ";s:2:"16";s:3:" ve";s:2:"17";s:4:"pÅ™e";s:2:"18";s:3:"se ";s:2:"19";s:3:"ho ";s:2:"20";s:3:"sta";s:2:"21";s:3:" to";s:2:"22";s:3:" vy";s:2:"23";s:3:" za";s:2:"24";s:3:"ou ";s:2:"25";s:3:" a ";s:2:"26";s:3:"to ";s:2:"27";s:3:" by";s:2:"28";s:3:"la ";s:2:"29";s:3:"ce ";s:2:"30";s:3:"e v";s:2:"31";s:3:"ist";s:2:"32";s:3:"le ";s:2:"33";s:3:"pod";s:2:"34";s:4:"í p";s:2:"35";s:3:" vl";s:2:"36";s:3:"e n";s:2:"37";s:3:"e s";s:2:"38";s:3:"je ";s:2:"39";s:4:"ké ";s:2:"40";s:3:"by ";s:2:"41";s:3:"em ";s:2:"42";s:4:"ých";s:2:"43";s:3:" od";s:2:"44";s:3:"ova";s:2:"45";s:4:"Å™ed";s:2:"46";s:3:"dy ";s:2:"47";s:4:"ení";s:2:"48";s:3:"kon";s:2:"49";s:3:"li ";s:2:"50";s:4:"nÄ› ";s:2:"51";s:3:"str";s:2:"52";s:4:" zá";s:2:"53";s:3:"ve ";s:2:"54";s:3:" ka";s:2:"55";s:3:" sv";s:2:"56";s:3:"e p";s:2:"57";s:3:"it ";s:2:"58";s:4:"lád";s:2:"59";s:3:"oho";s:2:"60";s:3:"rov";s:2:"61";s:3:"roz";s:2:"62";s:3:"ter";s:2:"63";s:4:"vlá";s:2:"64";s:4:"ím ";s:2:"65";s:3:" ko";s:2:"66";s:3:"hod";s:2:"67";s:3:"nis";s:2:"68";s:5:"pří";s:2:"69";s:4:"ský";s:2:"70";s:3:" mi";s:2:"71";s:3:" ob";s:2:"72";s:3:" so";s:2:"73";s:3:"a p";s:2:"74";s:3:"ali";s:2:"75";s:3:"bud";s:2:"76";s:3:"edn";s:2:"77";s:3:"ick";s:2:"78";s:3:"kte";s:2:"79";s:3:"ku ";s:2:"80";s:3:"o s";s:2:"81";s:3:"al ";s:2:"82";s:3:"ci ";s:2:"83";s:3:"e t";s:2:"84";s:3:"il ";s:2:"85";s:3:"ny ";s:2:"86";s:4:"né ";s:2:"87";s:3:"odl";s:2:"88";s:4:"ová";s:2:"89";s:3:"rot";s:2:"90";s:3:"sou";s:2:"91";s:5:"ání";s:2:"92";s:3:" bu";s:2:"93";s:3:" mo";s:2:"94";s:3:" o ";s:2:"95";s:3:"ast";s:2:"96";s:3:"byl";s:2:"97";s:3:"de ";s:2:"98";s:3:"ek ";s:2:"99";s:3:"ost";s:3:"100";s:4:" mí";s:3:"101";s:3:" ta";s:3:"102";s:3:"es ";s:3:"103";s:3:"jed";s:3:"104";s:3:"ky ";s:3:"105";s:3:"las";s:3:"106";s:3:"m p";s:3:"107";s:3:"nes";s:3:"108";s:4:"ním";s:3:"109";s:3:"ran";s:3:"110";s:3:"rem";s:3:"111";s:3:"ros";s:3:"112";s:4:"ého";s:3:"113";s:3:" de";s:3:"114";s:3:" kt";s:3:"115";s:3:" ni";s:3:"116";s:3:" si";s:3:"117";s:4:" vý";s:3:"118";s:3:"at ";s:3:"119";s:4:"jí ";s:3:"120";s:4:"ký ";s:3:"121";s:3:"mi ";s:3:"122";s:3:"pre";s:3:"123";s:3:"tak";s:3:"124";s:3:"tan";s:3:"125";s:3:"y v";s:3:"126";s:4:"Å™ek";s:3:"127";s:3:" ch";s:3:"128";s:3:" li";s:3:"129";s:4:" ná";s:3:"130";s:3:" pa";s:3:"131";s:4:" Å™e";s:3:"132";s:3:"da ";s:3:"133";s:3:"dle";s:3:"134";s:3:"dne";s:3:"135";s:3:"i p";s:3:"136";s:3:"i v";s:3:"137";s:3:"ly ";s:3:"138";s:3:"min";s:3:"139";s:3:"o n";s:3:"140";s:3:"o v";s:3:"141";s:3:"pol";s:3:"142";s:3:"tra";s:3:"143";s:3:"val";s:3:"144";s:4:"vní";s:3:"145";s:4:"ích";s:3:"146";s:4:"ý p";s:3:"147";s:4:"Å™ej";s:3:"148";s:3:" ce";s:3:"149";s:3:" kd";s:3:"150";s:3:" le";s:3:"151";s:3:"a s";s:3:"152";s:3:"a z";s:3:"153";s:3:"cen";s:3:"154";s:3:"e k";s:3:"155";s:3:"eds";s:3:"156";s:3:"ekl";s:3:"157";s:3:"emi";s:3:"158";s:3:"kl ";s:3:"159";s:3:"lat";s:3:"160";s:3:"lo ";s:3:"161";s:4:"mié";s:3:"162";s:3:"nov";s:3:"163";s:3:"pra";s:3:"164";s:3:"sku";s:3:"165";s:4:"ské";s:3:"166";s:3:"sti";s:3:"167";s:3:"tav";s:3:"168";s:3:"ti ";s:3:"169";s:3:"ty ";s:3:"170";s:4:"ván";s:3:"171";s:4:"vé ";s:3:"172";s:3:"y n";s:3:"173";s:3:"y s";s:3:"174";s:4:"í s";s:3:"175";s:4:"í v";s:3:"176";s:4:"Ä› p";s:3:"177";s:3:" dn";s:3:"178";s:4:" nÄ›";s:3:"179";s:3:" sp";s:3:"180";s:4:" Äs";s:3:"181";s:3:"a n";s:3:"182";s:3:"a t";s:3:"183";s:3:"ak ";s:3:"184";s:4:"dní";s:3:"185";s:3:"doh";s:3:"186";s:3:"e b";s:3:"187";s:3:"e m";s:3:"188";s:3:"ejn";s:3:"189";s:3:"ena";s:3:"190";s:3:"est";s:3:"191";s:3:"ini";s:3:"192";s:3:"m z";s:3:"193";s:3:"nal";s:3:"194";s:3:"nou";s:3:"195";s:4:"ná ";s:3:"196";s:3:"ovi";s:3:"197";s:4:"ové";s:3:"198";s:4:"ový";s:3:"199";s:3:"rsk";s:3:"200";s:4:"stá";s:3:"201";s:4:"tí ";s:3:"202";s:4:"tÅ™e";s:3:"203";s:4:"tů ";s:3:"204";s:3:"ude";s:3:"205";s:3:"za ";s:3:"206";s:4:"é p";s:3:"207";s:4:"ém ";s:3:"208";s:4:"í d";s:3:"209";s:3:" ir";s:3:"210";s:3:" zv";s:3:"211";s:3:"ale";s:3:"212";s:4:"anÄ›";s:3:"213";s:3:"ave";s:3:"214";s:4:"cké";s:3:"215";s:3:"den";s:3:"216";s:3:"e z";s:3:"217";s:3:"ech";s:3:"218";s:3:"en ";s:3:"219";s:4:"erý";s:3:"220";s:3:"hla";s:3:"221";s:3:"i s";s:3:"222";s:4:"iér";s:3:"223";s:3:"lov";s:3:"224";s:3:"mu ";s:3:"225";s:3:"neb";s:3:"226";s:3:"nic";s:3:"227";s:3:"o b";s:3:"228";s:3:"o m";s:3:"229";s:3:"pad";s:3:"230";s:3:"pot";s:3:"231";s:3:"rav";s:3:"232";s:3:"rop";s:3:"233";s:4:"rý ";s:3:"234";s:3:"sed";s:3:"235";s:3:"si ";s:3:"236";s:3:"t p";s:3:"237";s:3:"tic";s:3:"238";s:3:"tu ";s:3:"239";s:4:"tÄ› ";s:3:"240";s:3:"u p";s:3:"241";s:3:"u v";s:3:"242";s:4:"vá ";s:3:"243";s:5:"výš";s:3:"244";s:4:"zvý";s:3:"245";s:5:"Äní";s:3:"246";s:5:"ří ";s:3:"247";s:4:"ům ";s:3:"248";s:3:" bl";s:3:"249";s:3:" br";s:3:"250";s:3:" ho";s:3:"251";s:3:" ja";s:3:"252";s:3:" re";s:3:"253";s:3:" s ";s:3:"254";s:3:" z ";s:3:"255";s:3:" zd";s:3:"256";s:3:"a v";s:3:"257";s:3:"ani";s:3:"258";s:3:"ato";s:3:"259";s:3:"bla";s:3:"260";s:3:"bri";s:3:"261";s:4:"eÄn";s:3:"262";s:4:"eÅ™e";s:3:"263";s:3:"h v";s:3:"264";s:3:"i n";s:3:"265";s:3:"ie ";s:3:"266";s:3:"ila";s:3:"267";s:3:"irs";s:3:"268";s:3:"ite";s:3:"269";s:3:"kov";s:3:"270";s:3:"nos";s:3:"271";s:3:"o o";s:3:"272";s:3:"o p";s:3:"273";s:3:"oce";s:3:"274";s:3:"ody";s:3:"275";s:3:"ohl";s:3:"276";s:3:"oli";s:3:"277";s:3:"ovo";s:3:"278";s:3:"pla";s:3:"279";s:4:"poÄ";s:3:"280";s:4:"prá";s:3:"281";s:3:"ra ";s:3:"282";s:3:"rit";s:3:"283";s:3:"rod";s:3:"284";s:3:"ry ";s:3:"285";s:3:"sd ";s:3:"286";s:3:"sko";s:3:"287";s:3:"ssd";s:3:"288";s:3:"tel";s:3:"289";s:3:"u s";s:3:"290";s:3:"vat";s:3:"291";s:4:"veÅ™";s:3:"292";s:3:"vit";s:3:"293";s:3:"vla";s:3:"294";s:3:"y p";s:3:"295";s:4:"áln";s:3:"296";s:4:"Äss";s:3:"297";s:4:"Å¡en";s:3:"298";s:3:" al";s:3:"299";}s:6:"danish";a:300:{s:3:"er ";s:1:"0";s:3:"en ";s:1:"1";s:3:" de";s:1:"2";s:3:"et ";s:1:"3";s:3:"der";s:1:"4";s:3:"de ";s:1:"5";s:3:"for";s:1:"6";s:3:" fo";s:1:"7";s:3:" i ";s:1:"8";s:3:"at ";s:1:"9";s:3:" at";s:2:"10";s:3:"re ";s:2:"11";s:3:"det";s:2:"12";s:3:" ha";s:2:"13";s:3:"nde";s:2:"14";s:3:"ere";s:2:"15";s:3:"ing";s:2:"16";s:3:"den";s:2:"17";s:3:" me";s:2:"18";s:3:" og";s:2:"19";s:3:"ger";s:2:"20";s:3:"ter";s:2:"21";s:3:" er";s:2:"22";s:3:" si";s:2:"23";s:3:"and";s:2:"24";s:3:" af";s:2:"25";s:3:"or ";s:2:"26";s:3:" st";s:2:"27";s:3:" ti";s:2:"28";s:3:" en";s:2:"29";s:3:"og ";s:2:"30";s:3:"ar ";s:2:"31";s:3:"il ";s:2:"32";s:3:"r s";s:2:"33";s:3:"ige";s:2:"34";s:3:"til";s:2:"35";s:3:"ke ";s:2:"36";s:3:"r e";s:2:"37";s:3:"af ";s:2:"38";s:3:"kke";s:2:"39";s:3:" ma";s:2:"40";s:4:" pÃ¥";s:2:"41";s:3:"om ";s:2:"42";s:4:"pÃ¥ ";s:2:"43";s:3:"ed ";s:2:"44";s:3:"ge ";s:2:"45";s:3:"end";s:2:"46";s:3:"nge";s:2:"47";s:3:"t s";s:2:"48";s:3:"e s";s:2:"49";s:3:"ler";s:2:"50";s:3:" sk";s:2:"51";s:3:"els";s:2:"52";s:3:"ern";s:2:"53";s:3:"sig";s:2:"54";s:3:"ne ";s:2:"55";s:3:"lig";s:2:"56";s:3:"r d";s:2:"57";s:3:"ska";s:2:"58";s:3:" vi";s:2:"59";s:3:"har";s:2:"60";s:3:" be";s:2:"61";s:3:" se";s:2:"62";s:3:"an ";s:2:"63";s:3:"ikk";s:2:"64";s:3:"lle";s:2:"65";s:3:"gen";s:2:"66";s:3:"n f";s:2:"67";s:3:"ste";s:2:"68";s:3:"t a";s:2:"69";s:3:"t d";s:2:"70";s:3:"rin";s:2:"71";s:3:" ik";s:2:"72";s:3:"es ";s:2:"73";s:3:"ng ";s:2:"74";s:3:"ver";s:2:"75";s:3:"r b";s:2:"76";s:3:"sen";s:2:"77";s:3:"ede";s:2:"78";s:3:"men";s:2:"79";s:3:"r i";s:2:"80";s:3:" he";s:2:"81";s:3:" et";s:2:"82";s:3:"ig ";s:2:"83";s:3:"lan";s:2:"84";s:3:"med";s:2:"85";s:3:"nd ";s:2:"86";s:3:"rne";s:2:"87";s:3:" da";s:2:"88";s:3:" in";s:2:"89";s:3:"e t";s:2:"90";s:3:"mme";s:2:"91";s:3:"und";s:2:"92";s:3:" om";s:2:"93";s:3:"e e";s:2:"94";s:3:"e m";s:2:"95";s:3:"her";s:2:"96";s:3:"le ";s:2:"97";s:3:"r f";s:2:"98";s:3:"t f";s:2:"99";s:4:"sÃ¥ ";s:3:"100";s:3:"te ";s:3:"101";s:3:" so";s:3:"102";s:3:"ele";s:3:"103";s:3:"t e";s:3:"104";s:3:" ko";s:3:"105";s:3:"est";s:3:"106";s:3:"ske";s:3:"107";s:3:" bl";s:3:"108";s:3:"e f";s:3:"109";s:3:"ekt";s:3:"110";s:3:"mar";s:3:"111";s:3:"bru";s:3:"112";s:3:"e a";s:3:"113";s:3:"el ";s:3:"114";s:3:"ers";s:3:"115";s:3:"ret";s:3:"116";s:3:"som";s:3:"117";s:3:"tte";s:3:"118";s:3:"ve ";s:3:"119";s:3:" la";s:3:"120";s:3:" ud";s:3:"121";s:3:" ve";s:3:"122";s:3:"age";s:3:"123";s:3:"e d";s:3:"124";s:3:"e h";s:3:"125";s:3:"lse";s:3:"126";s:3:"man";s:3:"127";s:3:"rug";s:3:"128";s:3:"sel";s:3:"129";s:3:"ser";s:3:"130";s:3:" fi";s:3:"131";s:3:" op";s:3:"132";s:3:" pr";s:3:"133";s:3:"dt ";s:3:"134";s:3:"e i";s:3:"135";s:3:"n m";s:3:"136";s:3:"r m";s:3:"137";s:3:" an";s:3:"138";s:3:" re";s:3:"139";s:3:" sa";s:3:"140";s:3:"ion";s:3:"141";s:3:"ner";s:3:"142";s:3:"res";s:3:"143";s:3:"t i";s:3:"144";s:3:"get";s:3:"145";s:3:"n s";s:3:"146";s:3:"one";s:3:"147";s:3:"orb";s:3:"148";s:3:"t h";s:3:"149";s:3:"vis";s:3:"150";s:4:"Ã¥r ";s:3:"151";s:3:" fr";s:3:"152";s:3:"bil";s:3:"153";s:3:"e k";s:3:"154";s:3:"ens";s:3:"155";s:3:"ind";s:3:"156";s:3:"omm";s:3:"157";s:3:"t m";s:3:"158";s:3:" hv";s:3:"159";s:3:" je";s:3:"160";s:3:"dan";s:3:"161";s:3:"ent";s:3:"162";s:3:"fte";s:3:"163";s:3:"nin";s:3:"164";s:3:" mi";s:3:"165";s:3:"e o";s:3:"166";s:3:"e p";s:3:"167";s:3:"n o";s:3:"168";s:3:"nte";s:3:"169";s:3:" ku";s:3:"170";s:3:"ell";s:3:"171";s:3:"nas";s:3:"172";s:3:"ore";s:3:"173";s:3:"r h";s:3:"174";s:3:"r k";s:3:"175";s:3:"sta";s:3:"176";s:3:"sto";s:3:"177";s:3:"dag";s:3:"178";s:3:"eri";s:3:"179";s:3:"kun";s:3:"180";s:3:"lde";s:3:"181";s:3:"mer";s:3:"182";s:3:"r a";s:3:"183";s:3:"r v";s:3:"184";s:3:"rek";s:3:"185";s:3:"rer";s:3:"186";s:3:"t o";s:3:"187";s:3:"tor";s:3:"188";s:4:"tør";s:3:"189";s:4:" fÃ¥";s:3:"190";s:4:" mÃ¥";s:3:"191";s:3:" to";s:3:"192";s:3:"boe";s:3:"193";s:3:"che";s:3:"194";s:3:"e v";s:3:"195";s:3:"i d";s:3:"196";s:3:"ive";s:3:"197";s:3:"kab";s:3:"198";s:3:"ns ";s:3:"199";s:3:"oel";s:3:"200";s:3:"se ";s:3:"201";s:3:"t v";s:3:"202";s:3:" al";s:3:"203";s:3:" bo";s:3:"204";s:3:" un";s:3:"205";s:3:"ans";s:3:"206";s:3:"dre";s:3:"207";s:3:"ire";s:3:"208";s:4:"køb";s:3:"209";s:3:"ors";s:3:"210";s:3:"ove";s:3:"211";s:3:"ren";s:3:"212";s:3:"t b";s:3:"213";s:4:"ør ";s:3:"214";s:3:" ka";s:3:"215";s:3:"ald";s:3:"216";s:3:"bet";s:3:"217";s:3:"gt ";s:3:"218";s:3:"isk";s:3:"219";s:3:"kal";s:3:"220";s:3:"kom";s:3:"221";s:3:"lev";s:3:"222";s:3:"n d";s:3:"223";s:3:"n i";s:3:"224";s:3:"pri";s:3:"225";s:3:"r p";s:3:"226";s:3:"rbr";s:3:"227";s:4:"søg";s:3:"228";s:3:"tel";s:3:"229";s:4:" sÃ¥";s:3:"230";s:3:" te";s:3:"231";s:3:" va";s:3:"232";s:3:"al ";s:3:"233";s:3:"dir";s:3:"234";s:3:"eje";s:3:"235";s:3:"fis";s:3:"236";s:4:"gsÃ¥";s:3:"237";s:3:"isc";s:3:"238";s:3:"jer";s:3:"239";s:3:"ker";s:3:"240";s:3:"ogs";s:3:"241";s:3:"sch";s:3:"242";s:3:"st ";s:3:"243";s:3:"t k";s:3:"244";s:3:"uge";s:3:"245";s:3:" di";s:3:"246";s:3:"ag ";s:3:"247";s:3:"d a";s:3:"248";s:3:"g i";s:3:"249";s:3:"ill";s:3:"250";s:3:"l a";s:3:"251";s:3:"lsk";s:3:"252";s:3:"n a";s:3:"253";s:3:"on ";s:3:"254";s:3:"sam";s:3:"255";s:3:"str";s:3:"256";s:3:"tet";s:3:"257";s:3:"var";s:3:"258";s:3:" mo";s:3:"259";s:3:"art";s:3:"260";s:3:"ash";s:3:"261";s:3:"att";s:3:"262";s:3:"e b";s:3:"263";s:3:"han";s:3:"264";s:3:"hav";s:3:"265";s:3:"kla";s:3:"266";s:3:"kon";s:3:"267";s:3:"n t";s:3:"268";s:3:"ned";s:3:"269";s:3:"r o";s:3:"270";s:3:"ra ";s:3:"271";s:3:"rre";s:3:"272";s:3:"ves";s:3:"273";s:3:"vil";s:3:"274";s:3:" el";s:3:"275";s:3:" kr";s:3:"276";s:3:" ov";s:3:"277";s:3:"ann";s:3:"278";s:3:"e u";s:3:"279";s:3:"ess";s:3:"280";s:3:"fra";s:3:"281";s:3:"g a";s:3:"282";s:3:"g d";s:3:"283";s:3:"int";s:3:"284";s:3:"ngs";s:3:"285";s:3:"rde";s:3:"286";s:3:"tra";s:3:"287";s:4:" Ã¥r";s:3:"288";s:3:"akt";s:3:"289";s:3:"asi";s:3:"290";s:3:"em ";s:3:"291";s:3:"gel";s:3:"292";s:3:"gym";s:3:"293";s:3:"hol";s:3:"294";s:3:"kan";s:3:"295";s:3:"mna";s:3:"296";s:3:"n h";s:3:"297";s:3:"nsk";s:3:"298";s:3:"old";s:3:"299";}s:5:"dutch";a:300:{s:3:"en ";s:1:"0";s:3:"de ";s:1:"1";s:3:" de";s:1:"2";s:3:"et ";s:1:"3";s:3:"an ";s:1:"4";s:3:" he";s:1:"5";s:3:"er ";s:1:"6";s:3:" va";s:1:"7";s:3:"n d";s:1:"8";s:3:"van";s:1:"9";s:3:"een";s:2:"10";s:3:"het";s:2:"11";s:3:" ge";s:2:"12";s:3:"oor";s:2:"13";s:3:" ee";s:2:"14";s:3:"der";s:2:"15";s:3:" en";s:2:"16";s:3:"ij ";s:2:"17";s:3:"aar";s:2:"18";s:3:"gen";s:2:"19";s:3:"te ";s:2:"20";s:3:"ver";s:2:"21";s:3:" in";s:2:"22";s:3:" me";s:2:"23";s:3:"aan";s:2:"24";s:3:"den";s:2:"25";s:3:" we";s:2:"26";s:3:"at ";s:2:"27";s:3:"in ";s:2:"28";s:3:" da";s:2:"29";s:3:" te";s:2:"30";s:3:"eer";s:2:"31";s:3:"nde";s:2:"32";s:3:"ter";s:2:"33";s:3:"ste";s:2:"34";s:3:"n v";s:2:"35";s:3:" vo";s:2:"36";s:3:" zi";s:2:"37";s:3:"ing";s:2:"38";s:3:"n h";s:2:"39";s:3:"voo";s:2:"40";s:3:"is ";s:2:"41";s:3:" op";s:2:"42";s:3:"tie";s:2:"43";s:3:" aa";s:2:"44";s:3:"ede";s:2:"45";s:3:"erd";s:2:"46";s:3:"ers";s:2:"47";s:3:" be";s:2:"48";s:3:"eme";s:2:"49";s:3:"ten";s:2:"50";s:3:"ken";s:2:"51";s:3:"n e";s:2:"52";s:3:" ni";s:2:"53";s:3:" ve";s:2:"54";s:3:"ent";s:2:"55";s:3:"ijn";s:2:"56";s:3:"jn ";s:2:"57";s:3:"mee";s:2:"58";s:3:"iet";s:2:"59";s:3:"n w";s:2:"60";s:3:"ng ";s:2:"61";s:3:"nie";s:2:"62";s:3:" is";s:2:"63";s:3:"cht";s:2:"64";s:3:"dat";s:2:"65";s:3:"ere";s:2:"66";s:3:"ie ";s:2:"67";s:3:"ijk";s:2:"68";s:3:"n b";s:2:"69";s:3:"rde";s:2:"70";s:3:"ar ";s:2:"71";s:3:"e b";s:2:"72";s:3:"e a";s:2:"73";s:3:"met";s:2:"74";s:3:"t d";s:2:"75";s:3:"el ";s:2:"76";s:3:"ond";s:2:"77";s:3:"t h";s:2:"78";s:3:" al";s:2:"79";s:3:"e w";s:2:"80";s:3:"op ";s:2:"81";s:3:"ren";s:2:"82";s:3:" di";s:2:"83";s:3:" on";s:2:"84";s:3:"al ";s:2:"85";s:3:"and";s:2:"86";s:3:"bij";s:2:"87";s:3:"zij";s:2:"88";s:3:" bi";s:2:"89";s:3:" hi";s:2:"90";s:3:" wi";s:2:"91";s:3:"or ";s:2:"92";s:3:"r d";s:2:"93";s:3:"t v";s:2:"94";s:3:" wa";s:2:"95";s:3:"e h";s:2:"96";s:3:"lle";s:2:"97";s:3:"rt ";s:2:"98";s:3:"ang";s:2:"99";s:3:"hij";s:3:"100";s:3:"men";s:3:"101";s:3:"n a";s:3:"102";s:3:"n z";s:3:"103";s:3:"rs ";s:3:"104";s:3:" om";s:3:"105";s:3:"e o";s:3:"106";s:3:"e v";s:3:"107";s:3:"end";s:3:"108";s:3:"est";s:3:"109";s:3:"n t";s:3:"110";s:3:"par";s:3:"111";s:3:" pa";s:3:"112";s:3:" pr";s:3:"113";s:3:" ze";s:3:"114";s:3:"e g";s:3:"115";s:3:"e p";s:3:"116";s:3:"n p";s:3:"117";s:3:"ord";s:3:"118";s:3:"oud";s:3:"119";s:3:"raa";s:3:"120";s:3:"sch";s:3:"121";s:3:"t e";s:3:"122";s:3:"ege";s:3:"123";s:3:"ich";s:3:"124";s:3:"ien";s:3:"125";s:3:"aat";s:3:"126";s:3:"ek ";s:3:"127";s:3:"len";s:3:"128";s:3:"n m";s:3:"129";s:3:"nge";s:3:"130";s:3:"nt ";s:3:"131";s:3:"ove";s:3:"132";s:3:"rd ";s:3:"133";s:3:"wer";s:3:"134";s:3:" ma";s:3:"135";s:3:" mi";s:3:"136";s:3:"daa";s:3:"137";s:3:"e k";s:3:"138";s:3:"lij";s:3:"139";s:3:"mer";s:3:"140";s:3:"n g";s:3:"141";s:3:"n o";s:3:"142";s:3:"om ";s:3:"143";s:3:"sen";s:3:"144";s:3:"t b";s:3:"145";s:3:"wij";s:3:"146";s:3:" ho";s:3:"147";s:3:"e m";s:3:"148";s:3:"ele";s:3:"149";s:3:"gem";s:3:"150";s:3:"heb";s:3:"151";s:3:"pen";s:3:"152";s:3:"ude";s:3:"153";s:3:" bo";s:3:"154";s:3:" ja";s:3:"155";s:3:"die";s:3:"156";s:3:"e e";s:3:"157";s:3:"eli";s:3:"158";s:3:"erk";s:3:"159";s:3:"le ";s:3:"160";s:3:"pro";s:3:"161";s:3:"rij";s:3:"162";s:3:" er";s:3:"163";s:3:" za";s:3:"164";s:3:"e d";s:3:"165";s:3:"ens";s:3:"166";s:3:"ind";s:3:"167";s:3:"ke ";s:3:"168";s:3:"n k";s:3:"169";s:3:"nd ";s:3:"170";s:3:"nen";s:3:"171";s:3:"nte";s:3:"172";s:3:"r h";s:3:"173";s:3:"s d";s:3:"174";s:3:"s e";s:3:"175";s:3:"t z";s:3:"176";s:3:" b ";s:3:"177";s:3:" co";s:3:"178";s:3:" ik";s:3:"179";s:3:" ko";s:3:"180";s:3:" ov";s:3:"181";s:3:"eke";s:3:"182";s:3:"hou";s:3:"183";s:3:"ik ";s:3:"184";s:3:"iti";s:3:"185";s:3:"lan";s:3:"186";s:3:"ns ";s:3:"187";s:3:"t g";s:3:"188";s:3:"t m";s:3:"189";s:3:" do";s:3:"190";s:3:" le";s:3:"191";s:3:" zo";s:3:"192";s:3:"ams";s:3:"193";s:3:"e z";s:3:"194";s:3:"g v";s:3:"195";s:3:"it ";s:3:"196";s:3:"je ";s:3:"197";s:3:"ls ";s:3:"198";s:3:"maa";s:3:"199";s:3:"n i";s:3:"200";s:3:"nke";s:3:"201";s:3:"rke";s:3:"202";s:3:"uit";s:3:"203";s:3:" ha";s:3:"204";s:3:" ka";s:3:"205";s:3:" mo";s:3:"206";s:3:" re";s:3:"207";s:3:" st";s:3:"208";s:3:" to";s:3:"209";s:3:"age";s:3:"210";s:3:"als";s:3:"211";s:3:"ark";s:3:"212";s:3:"art";s:3:"213";s:3:"ben";s:3:"214";s:3:"e r";s:3:"215";s:3:"e s";s:3:"216";s:3:"ert";s:3:"217";s:3:"eze";s:3:"218";s:3:"ht ";s:3:"219";s:3:"ijd";s:3:"220";s:3:"lem";s:3:"221";s:3:"r v";s:3:"222";s:3:"rte";s:3:"223";s:3:"t p";s:3:"224";s:3:"zeg";s:3:"225";s:3:"zic";s:3:"226";s:3:"aak";s:3:"227";s:3:"aal";s:3:"228";s:3:"ag ";s:3:"229";s:3:"ale";s:3:"230";s:3:"bbe";s:3:"231";s:3:"ch ";s:3:"232";s:3:"e t";s:3:"233";s:3:"ebb";s:3:"234";s:3:"erz";s:3:"235";s:3:"ft ";s:3:"236";s:3:"ge ";s:3:"237";s:3:"led";s:3:"238";s:3:"mst";s:3:"239";s:3:"n n";s:3:"240";s:3:"oek";s:3:"241";s:3:"r i";s:3:"242";s:3:"t o";s:3:"243";s:3:"t w";s:3:"244";s:3:"tel";s:3:"245";s:3:"tte";s:3:"246";s:3:"uur";s:3:"247";s:3:"we ";s:3:"248";s:3:"zit";s:3:"249";s:3:" af";s:3:"250";s:3:" li";s:3:"251";s:3:" ui";s:3:"252";s:3:"ak ";s:3:"253";s:3:"all";s:3:"254";s:3:"aut";s:3:"255";s:3:"doo";s:3:"256";s:3:"e i";s:3:"257";s:3:"ene";s:3:"258";s:3:"erg";s:3:"259";s:3:"ete";s:3:"260";s:3:"ges";s:3:"261";s:3:"hee";s:3:"262";s:3:"jaa";s:3:"263";s:3:"jke";s:3:"264";s:3:"kee";s:3:"265";s:3:"kel";s:3:"266";s:3:"kom";s:3:"267";s:3:"lee";s:3:"268";s:3:"moe";s:3:"269";s:3:"n s";s:3:"270";s:3:"ort";s:3:"271";s:3:"rec";s:3:"272";s:3:"s o";s:3:"273";s:3:"s v";s:3:"274";s:3:"teg";s:3:"275";s:3:"tij";s:3:"276";s:3:"ven";s:3:"277";s:3:"waa";s:3:"278";s:3:"wel";s:3:"279";s:3:" an";s:3:"280";s:3:" au";s:3:"281";s:3:" bu";s:3:"282";s:3:" gr";s:3:"283";s:3:" pl";s:3:"284";s:3:" ti";s:3:"285";s:3:"'' ";s:3:"286";s:3:"ade";s:3:"287";s:3:"dag";s:3:"288";s:3:"e l";s:3:"289";s:3:"ech";s:3:"290";s:3:"eel";s:3:"291";s:3:"eft";s:3:"292";s:3:"ger";s:3:"293";s:3:"gt ";s:3:"294";s:3:"ig ";s:3:"295";s:3:"itt";s:3:"296";s:3:"j d";s:3:"297";s:3:"ppe";s:3:"298";s:3:"rda";s:3:"299";}s:7:"english";a:300:{s:3:" th";s:1:"0";s:3:"the";s:1:"1";s:3:"he ";s:1:"2";s:3:"ed ";s:1:"3";s:3:" to";s:1:"4";s:3:" in";s:1:"5";s:3:"er ";s:1:"6";s:3:"ing";s:1:"7";s:3:"ng ";s:1:"8";s:3:" an";s:1:"9";s:3:"nd ";s:2:"10";s:3:" of";s:2:"11";s:3:"and";s:2:"12";s:3:"to ";s:2:"13";s:3:"of ";s:2:"14";s:3:" co";s:2:"15";s:3:"at ";s:2:"16";s:3:"on ";s:2:"17";s:3:"in ";s:2:"18";s:3:" a ";s:2:"19";s:3:"d t";s:2:"20";s:3:" he";s:2:"21";s:3:"e t";s:2:"22";s:3:"ion";s:2:"23";s:3:"es ";s:2:"24";s:3:" re";s:2:"25";s:3:"re ";s:2:"26";s:3:"hat";s:2:"27";s:3:" sa";s:2:"28";s:3:" st";s:2:"29";s:3:" ha";s:2:"30";s:3:"her";s:2:"31";s:3:"tha";s:2:"32";s:3:"tio";s:2:"33";s:3:"or ";s:2:"34";s:3:" ''";s:2:"35";s:3:"en ";s:2:"36";s:3:" wh";s:2:"37";s:3:"e s";s:2:"38";s:3:"ent";s:2:"39";s:3:"n t";s:2:"40";s:3:"s a";s:2:"41";s:3:"as ";s:2:"42";s:3:"for";s:2:"43";s:3:"is ";s:2:"44";s:3:"t t";s:2:"45";s:3:" be";s:2:"46";s:3:"ld ";s:2:"47";s:3:"e a";s:2:"48";s:3:"rs ";s:2:"49";s:3:" wa";s:2:"50";s:3:"ut ";s:2:"51";s:3:"ve ";s:2:"52";s:3:"ll ";s:2:"53";s:3:"al ";s:2:"54";s:3:" ma";s:2:"55";s:3:"e i";s:2:"56";s:3:" fo";s:2:"57";s:3:"'s ";s:2:"58";s:3:"an ";s:2:"59";s:3:"est";s:2:"60";s:3:" hi";s:2:"61";s:3:" mo";s:2:"62";s:3:" se";s:2:"63";s:3:" pr";s:2:"64";s:3:"s t";s:2:"65";s:3:"ate";s:2:"66";s:3:"st ";s:2:"67";s:3:"ter";s:2:"68";s:3:"ere";s:2:"69";s:3:"ted";s:2:"70";s:3:"nt ";s:2:"71";s:3:"ver";s:2:"72";s:3:"d a";s:2:"73";s:3:" wi";s:2:"74";s:3:"se ";s:2:"75";s:3:"e c";s:2:"76";s:3:"ect";s:2:"77";s:3:"ns ";s:2:"78";s:3:" on";s:2:"79";s:3:"ly ";s:2:"80";s:3:"tol";s:2:"81";s:3:"ey ";s:2:"82";s:3:"r t";s:2:"83";s:3:" ca";s:2:"84";s:3:"ati";s:2:"85";s:3:"ts ";s:2:"86";s:3:"all";s:2:"87";s:3:" no";s:2:"88";s:3:"his";s:2:"89";s:3:"s o";s:2:"90";s:3:"ers";s:2:"91";s:3:"con";s:2:"92";s:3:"e o";s:2:"93";s:3:"ear";s:2:"94";s:3:"f t";s:2:"95";s:3:"e w";s:2:"96";s:3:"was";s:2:"97";s:3:"ons";s:2:"98";s:3:"sta";s:2:"99";s:3:"'' ";s:3:"100";s:3:"sti";s:3:"101";s:3:"n a";s:3:"102";s:3:"sto";s:3:"103";s:3:"t h";s:3:"104";s:3:" we";s:3:"105";s:3:"id ";s:3:"106";s:3:"th ";s:3:"107";s:3:" it";s:3:"108";s:3:"ce ";s:3:"109";s:3:" di";s:3:"110";s:3:"ave";s:3:"111";s:3:"d h";s:3:"112";s:3:"cou";s:3:"113";s:3:"pro";s:3:"114";s:3:"ad ";s:3:"115";s:3:"oll";s:3:"116";s:3:"ry ";s:3:"117";s:3:"d s";s:3:"118";s:3:"e m";s:3:"119";s:3:" so";s:3:"120";s:3:"ill";s:3:"121";s:3:"cti";s:3:"122";s:3:"te ";s:3:"123";s:3:"tor";s:3:"124";s:3:"eve";s:3:"125";s:3:"g t";s:3:"126";s:3:"it ";s:3:"127";s:3:" ch";s:3:"128";s:3:" de";s:3:"129";s:3:"hav";s:3:"130";s:3:"oul";s:3:"131";s:3:"ty ";s:3:"132";s:3:"uld";s:3:"133";s:3:"use";s:3:"134";s:3:" al";s:3:"135";s:3:"are";s:3:"136";s:3:"ch ";s:3:"137";s:3:"me ";s:3:"138";s:3:"out";s:3:"139";s:3:"ove";s:3:"140";s:3:"wit";s:3:"141";s:3:"ys ";s:3:"142";s:3:"chi";s:3:"143";s:3:"t a";s:3:"144";s:3:"ith";s:3:"145";s:3:"oth";s:3:"146";s:3:" ab";s:3:"147";s:3:" te";s:3:"148";s:3:" wo";s:3:"149";s:3:"s s";s:3:"150";s:3:"res";s:3:"151";s:3:"t w";s:3:"152";s:3:"tin";s:3:"153";s:3:"e b";s:3:"154";s:3:"e h";s:3:"155";s:3:"nce";s:3:"156";s:3:"t s";s:3:"157";s:3:"y t";s:3:"158";s:3:"e p";s:3:"159";s:3:"ele";s:3:"160";s:3:"hin";s:3:"161";s:3:"s i";s:3:"162";s:3:"nte";s:3:"163";s:3:" li";s:3:"164";s:3:"le ";s:3:"165";s:3:" do";s:3:"166";s:3:"aid";s:3:"167";s:3:"hey";s:3:"168";s:3:"ne ";s:3:"169";s:3:"s w";s:3:"170";s:3:" as";s:3:"171";s:3:" fr";s:3:"172";s:3:" tr";s:3:"173";s:3:"end";s:3:"174";s:3:"sai";s:3:"175";s:3:" el";s:3:"176";s:3:" ne";s:3:"177";s:3:" su";s:3:"178";s:3:"'t ";s:3:"179";s:3:"ay ";s:3:"180";s:3:"hou";s:3:"181";s:3:"ive";s:3:"182";s:3:"lec";s:3:"183";s:3:"n't";s:3:"184";s:3:" ye";s:3:"185";s:3:"but";s:3:"186";s:3:"d o";s:3:"187";s:3:"o t";s:3:"188";s:3:"y o";s:3:"189";s:3:" ho";s:3:"190";s:3:" me";s:3:"191";s:3:"be ";s:3:"192";s:3:"cal";s:3:"193";s:3:"e e";s:3:"194";s:3:"had";s:3:"195";s:3:"ple";s:3:"196";s:3:" at";s:3:"197";s:3:" bu";s:3:"198";s:3:" la";s:3:"199";s:3:"d b";s:3:"200";s:3:"s h";s:3:"201";s:3:"say";s:3:"202";s:3:"t i";s:3:"203";s:3:" ar";s:3:"204";s:3:"e f";s:3:"205";s:3:"ght";s:3:"206";s:3:"hil";s:3:"207";s:3:"igh";s:3:"208";s:3:"int";s:3:"209";s:3:"not";s:3:"210";s:3:"ren";s:3:"211";s:3:" is";s:3:"212";s:3:" pa";s:3:"213";s:3:" sh";s:3:"214";s:3:"ays";s:3:"215";s:3:"com";s:3:"216";s:3:"n s";s:3:"217";s:3:"r a";s:3:"218";s:3:"rin";s:3:"219";s:3:"y a";s:3:"220";s:3:" un";s:3:"221";s:3:"n c";s:3:"222";s:3:"om ";s:3:"223";s:3:"thi";s:3:"224";s:3:" mi";s:3:"225";s:3:"by ";s:3:"226";s:3:"d i";s:3:"227";s:3:"e d";s:3:"228";s:3:"e n";s:3:"229";s:3:"t o";s:3:"230";s:3:" by";s:3:"231";s:3:"e r";s:3:"232";s:3:"eri";s:3:"233";s:3:"old";s:3:"234";s:3:"ome";s:3:"235";s:3:"whe";s:3:"236";s:3:"yea";s:3:"237";s:3:" gr";s:3:"238";s:3:"ar ";s:3:"239";s:3:"ity";s:3:"240";s:3:"mpl";s:3:"241";s:3:"oun";s:3:"242";s:3:"one";s:3:"243";s:3:"ow ";s:3:"244";s:3:"r s";s:3:"245";s:3:"s f";s:3:"246";s:3:"tat";s:3:"247";s:3:" ba";s:3:"248";s:3:" vo";s:3:"249";s:3:"bou";s:3:"250";s:3:"sam";s:3:"251";s:3:"tim";s:3:"252";s:3:"vot";s:3:"253";s:3:"abo";s:3:"254";s:3:"ant";s:3:"255";s:3:"ds ";s:3:"256";s:3:"ial";s:3:"257";s:3:"ine";s:3:"258";s:3:"man";s:3:"259";s:3:"men";s:3:"260";s:3:" or";s:3:"261";s:3:" po";s:3:"262";s:3:"amp";s:3:"263";s:3:"can";s:3:"264";s:3:"der";s:3:"265";s:3:"e l";s:3:"266";s:3:"les";s:3:"267";s:3:"ny ";s:3:"268";s:3:"ot ";s:3:"269";s:3:"rec";s:3:"270";s:3:"tes";s:3:"271";s:3:"tho";s:3:"272";s:3:"ica";s:3:"273";s:3:"ild";s:3:"274";s:3:"ir ";s:3:"275";s:3:"nde";s:3:"276";s:3:"ose";s:3:"277";s:3:"ous";s:3:"278";s:3:"pre";s:3:"279";s:3:"ste";s:3:"280";s:3:"era";s:3:"281";s:3:"per";s:3:"282";s:3:"r o";s:3:"283";s:3:"red";s:3:"284";s:3:"rie";s:3:"285";s:3:" bo";s:3:"286";s:3:" le";s:3:"287";s:3:"ali";s:3:"288";s:3:"ars";s:3:"289";s:3:"ore";s:3:"290";s:3:"ric";s:3:"291";s:3:"s m";s:3:"292";s:3:"str";s:3:"293";s:3:" fa";s:3:"294";s:3:"ess";s:3:"295";s:3:"ie ";s:3:"296";s:3:"ist";s:3:"297";s:3:"lat";s:3:"298";s:3:"uri";s:3:"299";}s:8:"estonian";a:300:{s:3:"st ";s:1:"0";s:3:" ka";s:1:"1";s:3:"on ";s:1:"2";s:3:"ja ";s:1:"3";s:3:" va";s:1:"4";s:3:" on";s:1:"5";s:3:" ja";s:1:"6";s:3:" ko";s:1:"7";s:3:"se ";s:1:"8";s:3:"ast";s:1:"9";s:3:"le ";s:2:"10";s:3:"es ";s:2:"11";s:3:"as ";s:2:"12";s:3:"is ";s:2:"13";s:3:"ud ";s:2:"14";s:3:" sa";s:2:"15";s:3:"da ";s:2:"16";s:3:"ga ";s:2:"17";s:3:" ta";s:2:"18";s:3:"aja";s:2:"19";s:3:"sta";s:2:"20";s:3:" ku";s:2:"21";s:3:" pe";s:2:"22";s:3:"a k";s:2:"23";s:3:"est";s:2:"24";s:3:"ist";s:2:"25";s:3:"ks ";s:2:"26";s:3:"ta ";s:2:"27";s:3:"al ";s:2:"28";s:3:"ava";s:2:"29";s:3:"id ";s:2:"30";s:3:"saa";s:2:"31";s:3:"mis";s:2:"32";s:3:"te ";s:2:"33";s:3:"val";s:2:"34";s:3:" et";s:2:"35";s:3:"nud";s:2:"36";s:3:" te";s:2:"37";s:3:"inn";s:2:"38";s:3:" se";s:2:"39";s:3:" tu";s:2:"40";s:3:"a v";s:2:"41";s:3:"alu";s:2:"42";s:3:"e k";s:2:"43";s:3:"ise";s:2:"44";s:3:"lu ";s:2:"45";s:3:"ma ";s:2:"46";s:3:"mes";s:2:"47";s:3:" mi";s:2:"48";s:3:"et ";s:2:"49";s:3:"iku";s:2:"50";s:3:"lin";s:2:"51";s:3:"ad ";s:2:"52";s:3:"el ";s:2:"53";s:3:"ime";s:2:"54";s:3:"ne ";s:2:"55";s:3:"nna";s:2:"56";s:3:" ha";s:2:"57";s:3:" in";s:2:"58";s:3:" ke";s:2:"59";s:4:" võ";s:2:"60";s:3:"a s";s:2:"61";s:3:"a t";s:2:"62";s:3:"ab ";s:2:"63";s:3:"e s";s:2:"64";s:3:"esi";s:2:"65";s:3:" la";s:2:"66";s:3:" li";s:2:"67";s:3:"e v";s:2:"68";s:3:"eks";s:2:"69";s:3:"ema";s:2:"70";s:3:"las";s:2:"71";s:3:"les";s:2:"72";s:3:"rju";s:2:"73";s:3:"tle";s:2:"74";s:3:"tsi";s:2:"75";s:3:"tus";s:2:"76";s:3:"upa";s:2:"77";s:3:"use";s:2:"78";s:3:"ust";s:2:"79";s:3:"var";s:2:"80";s:4:" lä";s:2:"81";s:3:"ali";s:2:"82";s:3:"arj";s:2:"83";s:3:"de ";s:2:"84";s:3:"ete";s:2:"85";s:3:"i t";s:2:"86";s:3:"iga";s:2:"87";s:3:"ilm";s:2:"88";s:3:"kui";s:2:"89";s:3:"li ";s:2:"90";s:3:"tul";s:2:"91";s:3:" ei";s:2:"92";s:3:" me";s:2:"93";s:4:" sõ";s:2:"94";s:3:"aal";s:2:"95";s:3:"ata";s:2:"96";s:3:"dus";s:2:"97";s:3:"ei ";s:2:"98";s:3:"nik";s:2:"99";s:3:"pea";s:3:"100";s:3:"s k";s:3:"101";s:3:"s o";s:3:"102";s:3:"sal";s:3:"103";s:4:"sõn";s:3:"104";s:3:"ter";s:3:"105";s:3:"ul ";s:3:"106";s:4:"või";s:3:"107";s:3:" el";s:3:"108";s:3:" ne";s:3:"109";s:3:"a j";s:3:"110";s:3:"ate";s:3:"111";s:3:"end";s:3:"112";s:3:"i k";s:3:"113";s:3:"ita";s:3:"114";s:3:"kar";s:3:"115";s:3:"kor";s:3:"116";s:3:"l o";s:3:"117";s:3:"lt ";s:3:"118";s:3:"maa";s:3:"119";s:3:"oli";s:3:"120";s:3:"sti";s:3:"121";s:3:"vad";s:3:"122";s:5:"ään";s:3:"123";s:3:" ju";s:3:"124";s:4:" jä";s:3:"125";s:4:" kü";s:3:"126";s:3:" ma";s:3:"127";s:3:" po";s:3:"128";s:4:" üt";s:3:"129";s:3:"aas";s:3:"130";s:3:"aks";s:3:"131";s:3:"at ";s:3:"132";s:3:"ed ";s:3:"133";s:3:"eri";s:3:"134";s:3:"hoi";s:3:"135";s:3:"i s";s:3:"136";s:3:"ka ";s:3:"137";s:3:"la ";s:3:"138";s:3:"nni";s:3:"139";s:3:"oid";s:3:"140";s:3:"pai";s:3:"141";s:3:"rit";s:3:"142";s:3:"us ";s:3:"143";s:4:"ütl";s:3:"144";s:3:" aa";s:3:"145";s:3:" lo";s:3:"146";s:3:" to";s:3:"147";s:3:" ve";s:3:"148";s:3:"a e";s:3:"149";s:3:"ada";s:3:"150";s:3:"aid";s:3:"151";s:3:"ami";s:3:"152";s:3:"and";s:3:"153";s:3:"dla";s:3:"154";s:3:"e j";s:3:"155";s:3:"ega";s:3:"156";s:3:"gi ";s:3:"157";s:3:"gu ";s:3:"158";s:3:"i p";s:3:"159";s:3:"idl";s:3:"160";s:3:"ik ";s:3:"161";s:3:"ini";s:3:"162";s:3:"jup";s:3:"163";s:3:"kal";s:3:"164";s:3:"kas";s:3:"165";s:3:"kes";s:3:"166";s:3:"koh";s:3:"167";s:3:"s e";s:3:"168";s:3:"s p";s:3:"169";s:3:"sel";s:3:"170";s:3:"sse";s:3:"171";s:3:"ui ";s:3:"172";s:3:" pi";s:3:"173";s:3:" si";s:3:"174";s:3:"aru";s:3:"175";s:3:"eda";s:3:"176";s:3:"eva";s:3:"177";s:3:"fil";s:3:"178";s:3:"i v";s:3:"179";s:3:"ida";s:3:"180";s:3:"ing";s:3:"181";s:5:"lää";s:3:"182";s:3:"me ";s:3:"183";s:3:"na ";s:3:"184";s:3:"nda";s:3:"185";s:3:"nim";s:3:"186";s:3:"ole";s:3:"187";s:3:"ots";s:3:"188";s:3:"ris";s:3:"189";s:3:"s l";s:3:"190";s:3:"sia";s:3:"191";s:3:"t p";s:3:"192";s:3:" en";s:3:"193";s:3:" mu";s:3:"194";s:3:" ol";s:3:"195";s:4:" põ";s:3:"196";s:3:" su";s:3:"197";s:4:" vä";s:3:"198";s:4:" üh";s:3:"199";s:3:"a l";s:3:"200";s:3:"a p";s:3:"201";s:3:"aga";s:3:"202";s:3:"ale";s:3:"203";s:3:"aps";s:3:"204";s:3:"arv";s:3:"205";s:3:"e a";s:3:"206";s:3:"ela";s:3:"207";s:3:"ika";s:3:"208";s:3:"lle";s:3:"209";s:3:"loo";s:3:"210";s:3:"mal";s:3:"211";s:3:"pet";s:3:"212";s:3:"t k";s:3:"213";s:3:"tee";s:3:"214";s:3:"tis";s:3:"215";s:3:"vat";s:3:"216";s:4:"äne";s:3:"217";s:4:"õnn";s:3:"218";s:3:" es";s:3:"219";s:3:" fi";s:3:"220";s:3:" vi";s:3:"221";s:3:"a i";s:3:"222";s:3:"a o";s:3:"223";s:3:"aab";s:3:"224";s:3:"aap";s:3:"225";s:3:"ala";s:3:"226";s:3:"alt";s:3:"227";s:3:"ama";s:3:"228";s:3:"anu";s:3:"229";s:3:"e p";s:3:"230";s:3:"e t";s:3:"231";s:3:"eal";s:3:"232";s:3:"eli";s:3:"233";s:3:"haa";s:3:"234";s:3:"hin";s:3:"235";s:3:"iva";s:3:"236";s:3:"kon";s:3:"237";s:3:"ku ";s:3:"238";s:3:"lik";s:3:"239";s:3:"lm ";s:3:"240";s:3:"min";s:3:"241";s:3:"n t";s:3:"242";s:3:"odu";s:3:"243";s:3:"oon";s:3:"244";s:3:"psa";s:3:"245";s:3:"ri ";s:3:"246";s:3:"si ";s:3:"247";s:3:"stu";s:3:"248";s:3:"t e";s:3:"249";s:3:"t s";s:3:"250";s:3:"ti ";s:3:"251";s:3:"ule";s:3:"252";s:3:"uur";s:3:"253";s:3:"vas";s:3:"254";s:3:"vee";s:3:"255";s:3:" ki";s:3:"256";s:3:" ni";s:3:"257";s:4:" nä";s:3:"258";s:3:" ra";s:3:"259";s:3:"aig";s:3:"260";s:3:"aka";s:3:"261";s:3:"all";s:3:"262";s:3:"atu";s:3:"263";s:3:"e e";s:3:"264";s:3:"eis";s:3:"265";s:3:"ers";s:3:"266";s:3:"i e";s:3:"267";s:3:"ii ";s:3:"268";s:3:"iis";s:3:"269";s:3:"il ";s:3:"270";s:3:"ima";s:3:"271";s:3:"its";s:3:"272";s:3:"kka";s:3:"273";s:3:"kuh";s:3:"274";s:3:"l k";s:3:"275";s:3:"lat";s:3:"276";s:3:"maj";s:3:"277";s:3:"ndu";s:3:"278";s:3:"ni ";s:3:"279";s:3:"nii";s:3:"280";s:3:"oma";s:3:"281";s:3:"ool";s:3:"282";s:3:"rso";s:3:"283";s:3:"ru ";s:3:"284";s:3:"rva";s:3:"285";s:3:"s t";s:3:"286";s:3:"sek";s:3:"287";s:3:"son";s:3:"288";s:3:"ste";s:3:"289";s:3:"t m";s:3:"290";s:3:"taj";s:3:"291";s:3:"tam";s:3:"292";s:3:"ude";s:3:"293";s:3:"uho";s:3:"294";s:3:"vai";s:3:"295";s:3:" ag";s:3:"296";s:3:" os";s:3:"297";s:3:" pa";s:3:"298";s:3:" re";s:3:"299";}s:5:"farsi";a:300:{s:5:"ان ";s:1:"0";s:5:"ای ";s:1:"1";s:5:"Ù‡ ا";s:1:"2";s:5:" اي";s:1:"3";s:5:" در";s:1:"4";s:5:"به ";s:1:"5";s:5:" بر";s:1:"6";s:5:"در ";s:1:"7";s:6:"ران";s:1:"8";s:5:" به";s:1:"9";s:5:"ÛŒ ا";s:2:"10";s:5:"از ";s:2:"11";s:5:"ين ";s:2:"12";s:5:"Ù…ÛŒ ";s:2:"13";s:5:" از";s:2:"14";s:5:"ده ";s:2:"15";s:5:"ست ";s:2:"16";s:6:"است";s:2:"17";s:5:" اس";s:2:"18";s:5:" Ú©Ù‡";s:2:"19";s:5:"Ú©Ù‡ ";s:2:"20";s:6:"اير";s:2:"21";s:5:"ند ";s:2:"22";s:6:"اين";s:2:"23";s:5:" ها";s:2:"24";s:6:"يرا";s:2:"25";s:5:"ود ";s:2:"26";s:5:" را";s:2:"27";s:6:"های";s:2:"28";s:5:" خو";s:2:"29";s:5:"ته ";s:2:"30";s:5:"را ";s:2:"31";s:6:"رای";s:2:"32";s:5:"رد ";s:2:"33";s:5:"Ù† ب";s:2:"34";s:6:"کرد";s:2:"35";s:4:" Ùˆ ";s:2:"36";s:5:" کر";s:2:"37";s:5:"ات ";s:2:"38";s:6:"برا";s:2:"39";s:5:"د Ú©";s:2:"40";s:6:"مان";s:2:"41";s:5:"ÛŒ د";s:2:"42";s:5:" ان";s:2:"43";s:6:"خوا";s:2:"44";s:6:"شور";s:2:"45";s:5:" با";s:2:"46";s:5:"Ù† ا";s:2:"47";s:5:" سا";s:2:"48";s:6:"تمی";s:2:"49";s:5:"ری ";s:2:"50";s:6:"اتم";s:2:"51";s:5:"ا ا";s:2:"52";s:6:"واه";s:2:"53";s:5:" ات";s:2:"54";s:5:" عر";s:2:"55";s:5:"اق ";s:2:"56";s:5:"ر Ù…";s:2:"57";s:6:"راق";s:2:"58";s:6:"عرا";s:2:"59";s:5:"ÛŒ ب";s:2:"60";s:5:" تا";s:2:"61";s:5:" تو";s:2:"62";s:5:"ار ";s:2:"63";s:5:"ر ا";s:2:"64";s:5:"Ù† Ù…";s:2:"65";s:5:"Ù‡ ب";s:2:"66";s:5:"ور ";s:2:"67";s:5:"يد ";s:2:"68";s:5:"ÛŒ Ú©";s:2:"69";s:5:" ام";s:2:"70";s:5:" دا";s:2:"71";s:5:" Ú©Ù†";s:2:"72";s:6:"اهد";s:2:"73";s:5:"هد ";s:2:"74";s:5:" آن";s:2:"75";s:5:" Ù…ÛŒ";s:2:"76";s:5:" ني";s:2:"77";s:5:" Ú¯Ù";s:2:"78";s:5:"د ا";s:2:"79";s:6:"Ú¯Ùت";s:2:"80";s:5:" Ú©Ø´";s:2:"81";s:5:"ا ب";s:2:"82";s:5:"Ù†ÛŒ ";s:2:"83";s:5:"ها ";s:2:"84";s:6:"کشو";s:2:"85";s:5:" رو";s:2:"86";s:5:"ت Ú©";s:2:"87";s:6:"نيو";s:2:"88";s:5:"Ù‡ Ù…";s:2:"89";s:5:"ÙˆÛŒ ";s:2:"90";s:5:"ÛŒ ت";s:2:"91";s:5:" شو";s:2:"92";s:5:"ال ";s:2:"93";s:6:"دار";s:2:"94";s:5:"مه ";s:2:"95";s:5:"Ù† Ú©";s:2:"96";s:5:"Ù‡ د";s:2:"97";s:5:"يه ";s:2:"98";s:5:" ما";s:2:"99";s:6:"امه";s:3:"100";s:5:"د ب";s:3:"101";s:6:"زار";s:3:"102";s:6:"ورا";s:3:"103";s:6:"گزا";s:3:"104";s:5:" پي";s:3:"105";s:5:"آن ";s:3:"106";s:6:"انت";s:3:"107";s:5:"ت ا";s:3:"108";s:5:"Ùت ";s:3:"109";s:5:"Ù‡ Ù†";s:3:"110";s:5:"ÛŒ Ø®";s:3:"111";s:6:"اما";s:3:"112";s:6:"بات";s:3:"113";s:5:"ما ";s:3:"114";s:6:"ملل";s:3:"115";s:6:"نام";s:3:"116";s:5:"ير ";s:3:"117";s:5:"ÛŒ Ù…";s:3:"118";s:5:"ÛŒ Ù‡";s:3:"119";s:5:" آم";s:3:"120";s:5:" ای";s:3:"121";s:5:" من";s:3:"122";s:6:"انس";s:3:"123";s:6:"اني";s:3:"124";s:5:"ت د";s:3:"125";s:6:"رده";s:3:"126";s:6:"ساز";s:3:"127";s:5:"Ù† د";s:3:"128";s:5:"نه ";s:3:"129";s:6:"ورد";s:3:"130";s:5:" او";s:3:"131";s:5:" بي";s:3:"132";s:5:" سو";s:3:"133";s:5:" شد";s:3:"134";s:6:"اده";s:3:"135";s:6:"اند";s:3:"136";s:5:"با ";s:3:"137";s:5:"ت ب";s:3:"138";s:5:"ر ب";s:3:"139";s:5:"ز ا";s:3:"140";s:6:"زما";s:3:"141";s:6:"سته";s:3:"142";s:5:"Ù† ر";s:3:"143";s:5:"Ù‡ س";s:3:"144";s:6:"وان";s:3:"145";s:5:"وز ";s:3:"146";s:5:"ÛŒ ر";s:3:"147";s:5:"ÛŒ س";s:3:"148";s:5:" هس";s:3:"149";s:6:"ابا";s:3:"150";s:5:"ام ";s:3:"151";s:6:"اور";s:3:"152";s:6:"تخا";s:3:"153";s:6:"خاب";s:3:"154";s:6:"خود";s:3:"155";s:5:"د د";s:3:"156";s:5:"دن ";s:3:"157";s:6:"رها";s:3:"158";s:6:"روز";s:3:"159";s:6:"رگز";s:3:"160";s:6:"نتخ";s:3:"161";s:5:"Ù‡ Ø´";s:3:"162";s:5:"Ù‡ Ù‡";s:3:"163";s:6:"هست";s:3:"164";s:5:"يت ";s:3:"165";s:5:"يم ";s:3:"166";s:5:" دو";s:3:"167";s:5:" دي";s:3:"168";s:5:" مو";s:3:"169";s:5:" نو";s:3:"170";s:5:" هم";s:3:"171";s:5:" کا";s:3:"172";s:5:"اد ";s:3:"173";s:6:"اری";s:3:"174";s:6:"انی";s:3:"175";s:5:"بر ";s:3:"176";s:6:"بود";s:3:"177";s:5:"ت Ù‡";s:3:"178";s:5:"Ø­ Ù‡";s:3:"179";s:6:"حال";s:3:"180";s:5:"رش ";s:3:"181";s:5:"عه ";s:3:"182";s:5:"Ù„ÛŒ ";s:3:"183";s:5:"وم ";s:3:"184";s:6:"ژان";s:3:"185";s:5:" سل";s:3:"186";s:6:"آمر";s:3:"187";s:5:"اح ";s:3:"188";s:6:"توس";s:3:"189";s:6:"داد";s:3:"190";s:6:"دام";s:3:"191";s:5:"ر د";s:3:"192";s:5:"ره ";s:3:"193";s:6:"ريک";s:3:"194";s:5:"زی ";s:3:"195";s:6:"سلا";s:3:"196";s:6:"شود";s:3:"197";s:6:"لاح";s:3:"198";s:6:"مري";s:3:"199";s:6:"نند";s:3:"200";s:5:"Ù‡ ع";s:3:"201";s:6:"يما";s:3:"202";s:6:"يکا";s:3:"203";s:6:"پيم";s:3:"204";s:5:"گر ";s:3:"205";s:5:" Ø¢Ú˜";s:3:"206";s:5:" ال";s:3:"207";s:5:" بو";s:3:"208";s:5:" مق";s:3:"209";s:5:" مل";s:3:"210";s:5:" ÙˆÛŒ";s:3:"211";s:6:"آژا";s:3:"212";s:6:"ازم";s:3:"213";s:6:"ازی";s:3:"214";s:6:"بار";s:3:"215";s:6:"برن";s:3:"216";s:5:"ر Ø¢";s:3:"217";s:5:"ز س";s:3:"218";s:6:"سعه";s:3:"219";s:6:"شته";s:3:"220";s:6:"مات";s:3:"221";s:5:"Ù† Ø¢";s:3:"222";s:5:"Ù† Ù¾";s:3:"223";s:5:"نس ";s:3:"224";s:5:"Ù‡ Ú¯";s:3:"225";s:6:"وسع";s:3:"226";s:6:"يان";s:3:"227";s:6:"يوم";s:3:"228";s:5:"کا ";s:3:"229";s:6:"کام";s:3:"230";s:6:"کند";s:3:"231";s:5:" خا";s:3:"232";s:5:" سر";s:3:"233";s:6:"آور";s:3:"234";s:6:"ارد";s:3:"235";s:6:"اقد";s:3:"236";s:6:"ايم";s:3:"237";s:6:"ايی";s:3:"238";s:6:"برگ";s:3:"239";s:5:"ت ع";s:3:"240";s:5:"تن ";s:3:"241";s:5:"خت ";s:3:"242";s:5:"د Ùˆ";s:3:"243";s:5:"ر Ø®";s:3:"244";s:5:"رک ";s:3:"245";s:6:"زير";s:3:"246";s:6:"Ùته";s:3:"247";s:6:"قدا";s:3:"248";s:5:"Ù„ ت";s:3:"249";s:6:"مين";s:3:"250";s:5:"Ù† Ú¯";s:3:"251";s:5:"Ù‡ Ø¢";s:3:"252";s:5:"Ù‡ Ø®";s:3:"253";s:5:"Ù‡ Ú©";s:3:"254";s:6:"ورک";s:3:"255";s:6:"ويو";s:3:"256";s:6:"يور";s:3:"257";s:6:"يوي";s:3:"258";s:5:"ÙŠÛŒ ";s:3:"259";s:5:"Ú© ت";s:3:"260";s:5:"ÛŒ Ø´";s:3:"261";s:5:" اق";s:3:"262";s:5:" حا";s:3:"263";s:5:" حق";s:3:"264";s:5:" دس";s:3:"265";s:5:" Ø´Ú©";s:3:"266";s:5:" عم";s:3:"267";s:5:" ÙŠÚ©";s:3:"268";s:5:"ا ت";s:3:"269";s:5:"ا د";s:3:"270";s:6:"ارج";s:3:"271";s:6:"بين";s:3:"272";s:5:"ت Ù…";s:3:"273";s:5:"ت Ùˆ";s:3:"274";s:6:"تاي";s:3:"275";s:6:"دست";s:3:"276";s:5:"ر Ø­";s:3:"277";s:5:"ر س";s:3:"278";s:6:"رنا";s:3:"279";s:5:"ز ب";s:3:"280";s:6:"شکا";s:3:"281";s:5:"لل ";s:3:"282";s:5:"Ù… Ú©";s:3:"283";s:5:"مز ";s:3:"284";s:6:"ندا";s:3:"285";s:6:"نوا";s:3:"286";s:5:"Ùˆ ا";s:3:"287";s:6:"وره";s:3:"288";s:5:"ون ";s:3:"289";s:6:"وند";s:3:"290";s:6:"يمز";s:3:"291";s:5:" آو";s:3:"292";s:5:" اع";s:3:"293";s:5:" Ùر";s:3:"294";s:5:" مت";s:3:"295";s:5:" نه";s:3:"296";s:5:" هر";s:3:"297";s:5:" وز";s:3:"298";s:5:" گز";s:3:"299";}s:7:"finnish";a:300:{s:3:"en ";s:1:"0";s:3:"in ";s:1:"1";s:3:"an ";s:1:"2";s:3:"on ";s:1:"3";s:3:"ist";s:1:"4";s:3:"ta ";s:1:"5";s:3:"ja ";s:1:"6";s:3:"n t";s:1:"7";s:3:"sa ";s:1:"8";s:3:"sta";s:1:"9";s:3:"aan";s:2:"10";s:3:"n p";s:2:"11";s:3:" on";s:2:"12";s:3:"ssa";s:2:"13";s:3:"tta";s:2:"14";s:4:"tä ";s:2:"15";s:3:" ka";s:2:"16";s:3:" pa";s:2:"17";s:3:"si ";s:2:"18";s:3:" ja";s:2:"19";s:3:"n k";s:2:"20";s:3:"lla";s:2:"21";s:4:"än ";s:2:"22";s:3:"een";s:2:"23";s:3:"n v";s:2:"24";s:3:"ksi";s:2:"25";s:3:"ett";s:2:"26";s:3:"nen";s:2:"27";s:3:"taa";s:2:"28";s:4:"ttä";s:2:"29";s:3:" va";s:2:"30";s:3:"ill";s:2:"31";s:3:"itt";s:2:"32";s:3:" jo";s:2:"33";s:3:" ko";s:2:"34";s:3:"n s";s:2:"35";s:3:" tu";s:2:"36";s:3:"ia ";s:2:"37";s:3:" su";s:2:"38";s:3:"a p";s:2:"39";s:3:"aa ";s:2:"40";s:3:"la ";s:2:"41";s:3:"lle";s:2:"42";s:3:"n m";s:2:"43";s:3:"le ";s:2:"44";s:3:"tte";s:2:"45";s:3:"na ";s:2:"46";s:3:" ta";s:2:"47";s:3:" ve";s:2:"48";s:3:"at ";s:2:"49";s:3:" vi";s:2:"50";s:3:"utt";s:2:"51";s:3:" sa";s:2:"52";s:3:"ise";s:2:"53";s:3:"sen";s:2:"54";s:3:" ku";s:2:"55";s:4:" nä";s:2:"56";s:4:" pä";s:2:"57";s:3:"ste";s:2:"58";s:3:" ol";s:2:"59";s:3:"a t";s:2:"60";s:3:"ais";s:2:"61";s:3:"maa";s:2:"62";s:3:"ti ";s:2:"63";s:3:"a o";s:2:"64";s:3:"oit";s:2:"65";s:5:"pää";s:2:"66";s:3:" pi";s:2:"67";s:3:"a v";s:2:"68";s:3:"ala";s:2:"69";s:3:"ine";s:2:"70";s:3:"isi";s:2:"71";s:3:"tel";s:2:"72";s:3:"tti";s:2:"73";s:3:" si";s:2:"74";s:3:"a k";s:2:"75";s:3:"all";s:2:"76";s:3:"iin";s:2:"77";s:3:"kin";s:2:"78";s:4:"stä";s:2:"79";s:3:"uom";s:2:"80";s:3:"vii";s:2:"81";s:3:" ma";s:2:"82";s:3:" se";s:2:"83";s:4:"enä";s:2:"84";s:3:" mu";s:2:"85";s:3:"a s";s:2:"86";s:3:"est";s:2:"87";s:3:"iss";s:2:"88";s:4:"llä";s:2:"89";s:3:"lok";s:2:"90";s:4:"lä ";s:2:"91";s:3:"n j";s:2:"92";s:3:"n o";s:2:"93";s:3:"toi";s:2:"94";s:3:"ven";s:2:"95";s:3:"ytt";s:2:"96";s:3:" li";s:2:"97";s:3:"ain";s:2:"98";s:3:"et ";s:2:"99";s:3:"ina";s:3:"100";s:3:"n a";s:3:"101";s:3:"n n";s:3:"102";s:3:"oll";s:3:"103";s:3:"plo";s:3:"104";s:3:"ten";s:3:"105";s:3:"ust";s:3:"106";s:4:"äll";s:3:"107";s:5:"ään";s:3:"108";s:3:" to";s:3:"109";s:3:"den";s:3:"110";s:3:"men";s:3:"111";s:3:"oki";s:3:"112";s:3:"suo";s:3:"113";s:4:"sä ";s:3:"114";s:5:"tää";s:3:"115";s:3:"uks";s:3:"116";s:3:"vat";s:3:"117";s:3:" al";s:3:"118";s:3:" ke";s:3:"119";s:3:" te";s:3:"120";s:3:"a e";s:3:"121";s:3:"lii";s:3:"122";s:3:"tai";s:3:"123";s:3:"tei";s:3:"124";s:4:"äis";s:3:"125";s:5:"ää ";s:3:"126";s:3:" pl";s:3:"127";s:3:"ell";s:3:"128";s:3:"i t";s:3:"129";s:3:"ide";s:3:"130";s:3:"ikk";s:3:"131";s:3:"ki ";s:3:"132";s:3:"nta";s:3:"133";s:3:"ova";s:3:"134";s:3:"yst";s:3:"135";s:3:"yt ";s:3:"136";s:4:"ä p";s:3:"137";s:4:"äyt";s:3:"138";s:3:" ha";s:3:"139";s:3:" pe";s:3:"140";s:4:" tä";s:3:"141";s:3:"a n";s:3:"142";s:3:"aik";s:3:"143";s:3:"i p";s:3:"144";s:3:"i v";s:3:"145";s:3:"nyt";s:3:"146";s:4:"näy";s:3:"147";s:3:"pal";s:3:"148";s:3:"tee";s:3:"149";s:3:"un ";s:3:"150";s:3:" me";s:3:"151";s:3:"a m";s:3:"152";s:3:"ess";s:3:"153";s:3:"kau";s:3:"154";s:3:"pai";s:3:"155";s:3:"stu";s:3:"156";s:3:"ut ";s:3:"157";s:3:"voi";s:3:"158";s:3:" et";s:3:"159";s:3:"a h";s:3:"160";s:3:"eis";s:3:"161";s:3:"hte";s:3:"162";s:3:"i o";s:3:"163";s:3:"iik";s:3:"164";s:3:"ita";s:3:"165";s:3:"jou";s:3:"166";s:3:"mis";s:3:"167";s:3:"nin";s:3:"168";s:3:"nut";s:3:"169";s:3:"sia";s:3:"170";s:4:"ssä";s:3:"171";s:3:"van";s:3:"172";s:3:" ty";s:3:"173";s:3:" yh";s:3:"174";s:3:"aks";s:3:"175";s:3:"ime";s:3:"176";s:3:"loi";s:3:"177";s:3:"me ";s:3:"178";s:3:"n e";s:3:"179";s:3:"n h";s:3:"180";s:3:"n l";s:3:"181";s:3:"oin";s:3:"182";s:3:"ome";s:3:"183";s:3:"ott";s:3:"184";s:3:"ouk";s:3:"185";s:3:"sit";s:3:"186";s:3:"sti";s:3:"187";s:3:"tet";s:3:"188";s:3:"tie";s:3:"189";s:3:"ukk";s:3:"190";s:4:"ä k";s:3:"191";s:3:" ra";s:3:"192";s:3:" ti";s:3:"193";s:3:"aja";s:3:"194";s:3:"asi";s:3:"195";s:3:"ent";s:3:"196";s:3:"iga";s:3:"197";s:3:"iig";s:3:"198";s:3:"ite";s:3:"199";s:3:"jan";s:3:"200";s:3:"kaa";s:3:"201";s:3:"kse";s:3:"202";s:3:"laa";s:3:"203";s:3:"lan";s:3:"204";s:3:"li ";s:3:"205";s:4:"näj";s:3:"206";s:3:"ole";s:3:"207";s:3:"tii";s:3:"208";s:3:"usi";s:3:"209";s:5:"äjä";s:3:"210";s:3:" ov";s:3:"211";s:3:"a a";s:3:"212";s:3:"ant";s:3:"213";s:3:"ava";s:3:"214";s:3:"ei ";s:3:"215";s:3:"eri";s:3:"216";s:3:"kan";s:3:"217";s:3:"kku";s:3:"218";s:3:"lai";s:3:"219";s:3:"lis";s:3:"220";s:4:"läi";s:3:"221";s:3:"mat";s:3:"222";s:3:"ois";s:3:"223";s:3:"pel";s:3:"224";s:3:"sil";s:3:"225";s:3:"sty";s:3:"226";s:3:"taj";s:3:"227";s:3:"tav";s:3:"228";s:3:"ttu";s:3:"229";s:4:"työ";s:3:"230";s:4:"yös";s:3:"231";s:4:"ä o";s:3:"232";s:3:" ai";s:3:"233";s:3:" pu";s:3:"234";s:3:"a j";s:3:"235";s:3:"a l";s:3:"236";s:3:"aal";s:3:"237";s:3:"arv";s:3:"238";s:3:"ass";s:3:"239";s:3:"ien";s:3:"240";s:3:"imi";s:3:"241";s:3:"imm";s:3:"242";s:4:"itä";s:3:"243";s:3:"ka ";s:3:"244";s:3:"kes";s:3:"245";s:3:"kue";s:3:"246";s:3:"lee";s:3:"247";s:3:"lin";s:3:"248";s:3:"llo";s:3:"249";s:3:"one";s:3:"250";s:3:"ri ";s:3:"251";s:3:"t o";s:3:"252";s:3:"t p";s:3:"253";s:3:"tu ";s:3:"254";s:3:"val";s:3:"255";s:3:"vuo";s:3:"256";s:3:" ei";s:3:"257";s:3:" he";s:3:"258";s:3:" hy";s:3:"259";s:3:" my";s:3:"260";s:3:" vo";s:3:"261";s:3:"ali";s:3:"262";s:3:"alo";s:3:"263";s:3:"ano";s:3:"264";s:3:"ast";s:3:"265";s:3:"att";s:3:"266";s:3:"auk";s:3:"267";s:3:"eli";s:3:"268";s:3:"ely";s:3:"269";s:3:"hti";s:3:"270";s:3:"ika";s:3:"271";s:3:"ken";s:3:"272";s:3:"kki";s:3:"273";s:3:"lys";s:3:"274";s:3:"min";s:3:"275";s:4:"myö";s:3:"276";s:3:"oht";s:3:"277";s:3:"oma";s:3:"278";s:3:"tus";s:3:"279";s:3:"umi";s:3:"280";s:3:"yks";s:3:"281";s:4:"ät ";s:3:"282";s:5:"ääl";s:3:"283";s:4:"ös ";s:3:"284";s:3:" ar";s:3:"285";s:3:" eu";s:3:"286";s:3:" hu";s:3:"287";s:3:" na";s:3:"288";s:3:"aat";s:3:"289";s:3:"alk";s:3:"290";s:3:"alu";s:3:"291";s:3:"ans";s:3:"292";s:3:"arj";s:3:"293";s:3:"enn";s:3:"294";s:3:"han";s:3:"295";s:3:"kuu";s:3:"296";s:3:"n y";s:3:"297";s:3:"set";s:3:"298";s:3:"sim";s:3:"299";}s:6:"french";a:300:{s:3:"es ";s:1:"0";s:3:" de";s:1:"1";s:3:"de ";s:1:"2";s:3:" le";s:1:"3";s:3:"ent";s:1:"4";s:3:"le ";s:1:"5";s:3:"nt ";s:1:"6";s:3:"la ";s:1:"7";s:3:"s d";s:1:"8";s:3:" la";s:1:"9";s:3:"ion";s:2:"10";s:3:"on ";s:2:"11";s:3:"re ";s:2:"12";s:3:" pa";s:2:"13";s:3:"e l";s:2:"14";s:3:"e d";s:2:"15";s:3:" l'";s:2:"16";s:3:"e p";s:2:"17";s:3:" co";s:2:"18";s:3:" pr";s:2:"19";s:3:"tio";s:2:"20";s:3:"ns ";s:2:"21";s:3:" en";s:2:"22";s:3:"ne ";s:2:"23";s:3:"que";s:2:"24";s:3:"r l";s:2:"25";s:3:"les";s:2:"26";s:3:"ur ";s:2:"27";s:3:"en ";s:2:"28";s:3:"ati";s:2:"29";s:3:"ue ";s:2:"30";s:3:" po";s:2:"31";s:3:" d'";s:2:"32";s:3:"par";s:2:"33";s:3:" a ";s:2:"34";s:3:"et ";s:2:"35";s:3:"it ";s:2:"36";s:3:" qu";s:2:"37";s:3:"men";s:2:"38";s:3:"ons";s:2:"39";s:3:"te ";s:2:"40";s:3:" et";s:2:"41";s:3:"t d";s:2:"42";s:3:" re";s:2:"43";s:3:"des";s:2:"44";s:3:" un";s:2:"45";s:3:"ie ";s:2:"46";s:3:"s l";s:2:"47";s:3:" su";s:2:"48";s:3:"pou";s:2:"49";s:3:" au";s:2:"50";s:4:" à ";s:2:"51";s:3:"con";s:2:"52";s:3:"er ";s:2:"53";s:3:" no";s:2:"54";s:3:"ait";s:2:"55";s:3:"e c";s:2:"56";s:3:"se ";s:2:"57";s:4:"té ";s:2:"58";s:3:"du ";s:2:"59";s:3:" du";s:2:"60";s:4:" dé";s:2:"61";s:3:"ce ";s:2:"62";s:3:"e e";s:2:"63";s:3:"is ";s:2:"64";s:3:"n d";s:2:"65";s:3:"s a";s:2:"66";s:3:" so";s:2:"67";s:3:"e r";s:2:"68";s:3:"e s";s:2:"69";s:3:"our";s:2:"70";s:3:"res";s:2:"71";s:3:"ssi";s:2:"72";s:3:"eur";s:2:"73";s:3:" se";s:2:"74";s:3:"eme";s:2:"75";s:3:"est";s:2:"76";s:3:"us ";s:2:"77";s:3:"sur";s:2:"78";s:3:"ant";s:2:"79";s:3:"iqu";s:2:"80";s:3:"s p";s:2:"81";s:3:"une";s:2:"82";s:3:"uss";s:2:"83";s:3:"l'a";s:2:"84";s:3:"pro";s:2:"85";s:3:"ter";s:2:"86";s:3:"tre";s:2:"87";s:3:"end";s:2:"88";s:3:"rs ";s:2:"89";s:3:" ce";s:2:"90";s:3:"e a";s:2:"91";s:3:"t p";s:2:"92";s:3:"un ";s:2:"93";s:3:" ma";s:2:"94";s:3:" ru";s:2:"95";s:4:" ré";s:2:"96";s:3:"ous";s:2:"97";s:3:"ris";s:2:"98";s:3:"rus";s:2:"99";s:3:"sse";s:3:"100";s:3:"ans";s:3:"101";s:3:"ar ";s:3:"102";s:3:"com";s:3:"103";s:3:"e m";s:3:"104";s:3:"ire";s:3:"105";s:3:"nce";s:3:"106";s:3:"nte";s:3:"107";s:3:"t l";s:3:"108";s:3:" av";s:3:"109";s:3:" mo";s:3:"110";s:3:" te";s:3:"111";s:3:"il ";s:3:"112";s:3:"me ";s:3:"113";s:3:"ont";s:3:"114";s:3:"ten";s:3:"115";s:3:"a p";s:3:"116";s:3:"dan";s:3:"117";s:3:"pas";s:3:"118";s:3:"qui";s:3:"119";s:3:"s e";s:3:"120";s:3:"s s";s:3:"121";s:3:" in";s:3:"122";s:3:"ist";s:3:"123";s:3:"lle";s:3:"124";s:3:"nou";s:3:"125";s:4:"pré";s:3:"126";s:3:"'un";s:3:"127";s:3:"air";s:3:"128";s:3:"d'a";s:3:"129";s:3:"ir ";s:3:"130";s:3:"n e";s:3:"131";s:3:"rop";s:3:"132";s:3:"ts ";s:3:"133";s:3:" da";s:3:"134";s:3:"a s";s:3:"135";s:3:"as ";s:3:"136";s:3:"au ";s:3:"137";s:3:"den";s:3:"138";s:3:"mai";s:3:"139";s:3:"mis";s:3:"140";s:3:"ori";s:3:"141";s:3:"out";s:3:"142";s:3:"rme";s:3:"143";s:3:"sio";s:3:"144";s:3:"tte";s:3:"145";s:3:"ux ";s:3:"146";s:3:"a d";s:3:"147";s:3:"ien";s:3:"148";s:3:"n a";s:3:"149";s:3:"ntr";s:3:"150";s:3:"omm";s:3:"151";s:3:"ort";s:3:"152";s:3:"ouv";s:3:"153";s:3:"s c";s:3:"154";s:3:"son";s:3:"155";s:3:"tes";s:3:"156";s:3:"ver";s:3:"157";s:4:"ère";s:3:"158";s:3:" il";s:3:"159";s:3:" m ";s:3:"160";s:3:" sa";s:3:"161";s:3:" ve";s:3:"162";s:3:"a r";s:3:"163";s:3:"ais";s:3:"164";s:3:"ava";s:3:"165";s:3:"di ";s:3:"166";s:3:"n p";s:3:"167";s:3:"sti";s:3:"168";s:3:"ven";s:3:"169";s:3:" mi";s:3:"170";s:3:"ain";s:3:"171";s:3:"enc";s:3:"172";s:3:"for";s:3:"173";s:4:"ité";s:3:"174";s:3:"lar";s:3:"175";s:3:"oir";s:3:"176";s:3:"rem";s:3:"177";s:3:"ren";s:3:"178";s:3:"rro";s:3:"179";s:4:"rés";s:3:"180";s:3:"sie";s:3:"181";s:3:"t a";s:3:"182";s:3:"tur";s:3:"183";s:3:" pe";s:3:"184";s:3:" to";s:3:"185";s:3:"d'u";s:3:"186";s:3:"ell";s:3:"187";s:3:"err";s:3:"188";s:3:"ers";s:3:"189";s:3:"ide";s:3:"190";s:3:"ine";s:3:"191";s:3:"iss";s:3:"192";s:3:"mes";s:3:"193";s:3:"por";s:3:"194";s:3:"ran";s:3:"195";s:3:"sit";s:3:"196";s:3:"st ";s:3:"197";s:3:"t r";s:3:"198";s:3:"uti";s:3:"199";s:3:"vai";s:3:"200";s:4:"é l";s:3:"201";s:4:"ési";s:3:"202";s:3:" di";s:3:"203";s:3:" n'";s:3:"204";s:4:" ét";s:3:"205";s:3:"a c";s:3:"206";s:3:"ass";s:3:"207";s:3:"e t";s:3:"208";s:3:"in ";s:3:"209";s:3:"nde";s:3:"210";s:3:"pre";s:3:"211";s:3:"rat";s:3:"212";s:3:"s m";s:3:"213";s:3:"ste";s:3:"214";s:3:"tai";s:3:"215";s:3:"tch";s:3:"216";s:3:"ui ";s:3:"217";s:3:"uro";s:3:"218";s:4:"ès ";s:3:"219";s:3:" es";s:3:"220";s:3:" fo";s:3:"221";s:3:" tr";s:3:"222";s:3:"'ad";s:3:"223";s:3:"app";s:3:"224";s:3:"aux";s:3:"225";s:4:"e à";s:3:"226";s:3:"ett";s:3:"227";s:3:"iti";s:3:"228";s:3:"lit";s:3:"229";s:3:"nal";s:3:"230";s:4:"opé";s:3:"231";s:3:"r d";s:3:"232";s:3:"ra ";s:3:"233";s:3:"rai";s:3:"234";s:3:"ror";s:3:"235";s:3:"s r";s:3:"236";s:3:"tat";s:3:"237";s:4:"uté";s:3:"238";s:4:"à l";s:3:"239";s:3:" af";s:3:"240";s:3:"anc";s:3:"241";s:3:"ara";s:3:"242";s:3:"art";s:3:"243";s:3:"bre";s:3:"244";s:4:"ché";s:3:"245";s:3:"dre";s:3:"246";s:3:"e f";s:3:"247";s:3:"ens";s:3:"248";s:3:"lem";s:3:"249";s:3:"n r";s:3:"250";s:3:"n t";s:3:"251";s:3:"ndr";s:3:"252";s:3:"nne";s:3:"253";s:3:"onn";s:3:"254";s:3:"pos";s:3:"255";s:3:"s t";s:3:"256";s:3:"tiq";s:3:"257";s:3:"ure";s:3:"258";s:3:" tu";s:3:"259";s:3:"ale";s:3:"260";s:3:"and";s:3:"261";s:3:"ave";s:3:"262";s:3:"cla";s:3:"263";s:3:"cou";s:3:"264";s:3:"e n";s:3:"265";s:3:"emb";s:3:"266";s:3:"ins";s:3:"267";s:3:"jou";s:3:"268";s:3:"mme";s:3:"269";s:3:"rie";s:3:"270";s:4:"rès";s:3:"271";s:3:"sem";s:3:"272";s:3:"str";s:3:"273";s:3:"t i";s:3:"274";s:3:"ues";s:3:"275";s:3:"uni";s:3:"276";s:3:"uve";s:3:"277";s:4:"é d";s:3:"278";s:4:"ée ";s:3:"279";s:3:" ch";s:3:"280";s:3:" do";s:3:"281";s:3:" eu";s:3:"282";s:3:" fa";s:3:"283";s:3:" lo";s:3:"284";s:3:" ne";s:3:"285";s:3:" ra";s:3:"286";s:3:"arl";s:3:"287";s:3:"att";s:3:"288";s:3:"ec ";s:3:"289";s:3:"ica";s:3:"290";s:3:"l a";s:3:"291";s:3:"l'o";s:3:"292";s:4:"l'é";s:3:"293";s:3:"mmi";s:3:"294";s:3:"nta";s:3:"295";s:3:"orm";s:3:"296";s:3:"ou ";s:3:"297";s:3:"r u";s:3:"298";s:3:"rle";s:3:"299";}s:6:"german";a:300:{s:3:"en ";s:1:"0";s:3:"er ";s:1:"1";s:3:" de";s:1:"2";s:3:"der";s:1:"3";s:3:"ie ";s:1:"4";s:3:" di";s:1:"5";s:3:"die";s:1:"6";s:3:"sch";s:1:"7";s:3:"ein";s:1:"8";s:3:"che";s:1:"9";s:3:"ich";s:2:"10";s:3:"den";s:2:"11";s:3:"in ";s:2:"12";s:3:"te ";s:2:"13";s:3:"ch ";s:2:"14";s:3:" ei";s:2:"15";s:3:"ung";s:2:"16";s:3:"n d";s:2:"17";s:3:"nd ";s:2:"18";s:3:" be";s:2:"19";s:3:"ver";s:2:"20";s:3:"es ";s:2:"21";s:3:" zu";s:2:"22";s:3:"eit";s:2:"23";s:3:"gen";s:2:"24";s:3:"und";s:2:"25";s:3:" un";s:2:"26";s:3:" au";s:2:"27";s:3:" in";s:2:"28";s:3:"cht";s:2:"29";s:3:"it ";s:2:"30";s:3:"ten";s:2:"31";s:3:" da";s:2:"32";s:3:"ent";s:2:"33";s:3:" ve";s:2:"34";s:3:"and";s:2:"35";s:3:" ge";s:2:"36";s:3:"ine";s:2:"37";s:3:" mi";s:2:"38";s:3:"r d";s:2:"39";s:3:"hen";s:2:"40";s:3:"ng ";s:2:"41";s:3:"nde";s:2:"42";s:3:" vo";s:2:"43";s:3:"e d";s:2:"44";s:3:"ber";s:2:"45";s:3:"men";s:2:"46";s:3:"ei ";s:2:"47";s:3:"mit";s:2:"48";s:3:" st";s:2:"49";s:3:"ter";s:2:"50";s:3:"ren";s:2:"51";s:3:"t d";s:2:"52";s:3:" er";s:2:"53";s:3:"ere";s:2:"54";s:3:"n s";s:2:"55";s:3:"ste";s:2:"56";s:3:" se";s:2:"57";s:3:"e s";s:2:"58";s:3:"ht ";s:2:"59";s:3:"des";s:2:"60";s:3:"ist";s:2:"61";s:3:"ne ";s:2:"62";s:3:"auf";s:2:"63";s:3:"e a";s:2:"64";s:3:"isc";s:2:"65";s:3:"on ";s:2:"66";s:3:"rte";s:2:"67";s:3:" re";s:2:"68";s:3:" we";s:2:"69";s:3:"ges";s:2:"70";s:3:"uch";s:2:"71";s:4:" fü";s:2:"72";s:3:" so";s:2:"73";s:3:"bei";s:2:"74";s:3:"e e";s:2:"75";s:3:"nen";s:2:"76";s:3:"r s";s:2:"77";s:3:"ach";s:2:"78";s:4:"für";s:2:"79";s:3:"ier";s:2:"80";s:3:"par";s:2:"81";s:4:"ür ";s:2:"82";s:3:" ha";s:2:"83";s:3:"as ";s:2:"84";s:3:"ert";s:2:"85";s:3:" an";s:2:"86";s:3:" pa";s:2:"87";s:3:" sa";s:2:"88";s:3:" sp";s:2:"89";s:3:" wi";s:2:"90";s:3:"for";s:2:"91";s:3:"tag";s:2:"92";s:3:"zu ";s:2:"93";s:3:"das";s:2:"94";s:3:"rei";s:2:"95";s:3:"he ";s:2:"96";s:3:"hre";s:2:"97";s:3:"nte";s:2:"98";s:3:"sen";s:2:"99";s:3:"vor";s:3:"100";s:3:" sc";s:3:"101";s:3:"ech";s:3:"102";s:3:"etz";s:3:"103";s:3:"hei";s:3:"104";s:3:"lan";s:3:"105";s:3:"n a";s:3:"106";s:3:"pd ";s:3:"107";s:3:"st ";s:3:"108";s:3:"sta";s:3:"109";s:3:"ese";s:3:"110";s:3:"lic";s:3:"111";s:3:" ab";s:3:"112";s:3:" si";s:3:"113";s:3:"gte";s:3:"114";s:3:" wa";s:3:"115";s:3:"iti";s:3:"116";s:3:"kei";s:3:"117";s:3:"n e";s:3:"118";s:3:"nge";s:3:"119";s:3:"sei";s:3:"120";s:3:"tra";s:3:"121";s:3:"zen";s:3:"122";s:3:" im";s:3:"123";s:3:" la";s:3:"124";s:3:"art";s:3:"125";s:3:"im ";s:3:"126";s:3:"lle";s:3:"127";s:3:"n w";s:3:"128";s:3:"rde";s:3:"129";s:3:"rec";s:3:"130";s:3:"set";s:3:"131";s:3:"str";s:3:"132";s:3:"tei";s:3:"133";s:3:"tte";s:3:"134";s:3:" ni";s:3:"135";s:3:"e p";s:3:"136";s:3:"ehe";s:3:"137";s:3:"ers";s:3:"138";s:3:"g d";s:3:"139";s:3:"nic";s:3:"140";s:3:"von";s:3:"141";s:3:" al";s:3:"142";s:3:" pr";s:3:"143";s:3:"an ";s:3:"144";s:3:"aus";s:3:"145";s:3:"erf";s:3:"146";s:3:"r e";s:3:"147";s:3:"tze";s:3:"148";s:4:"tür";s:3:"149";s:3:"uf ";s:3:"150";s:3:"ag ";s:3:"151";s:3:"als";s:3:"152";s:3:"ar ";s:3:"153";s:3:"chs";s:3:"154";s:3:"end";s:3:"155";s:3:"ge ";s:3:"156";s:3:"ige";s:3:"157";s:3:"ion";s:3:"158";s:3:"ls ";s:3:"159";s:3:"n m";s:3:"160";s:3:"ngs";s:3:"161";s:3:"nis";s:3:"162";s:3:"nt ";s:3:"163";s:3:"ord";s:3:"164";s:3:"s s";s:3:"165";s:3:"sse";s:3:"166";s:4:" tü";s:3:"167";s:3:"ahl";s:3:"168";s:3:"e b";s:3:"169";s:3:"ede";s:3:"170";s:3:"em ";s:3:"171";s:3:"len";s:3:"172";s:3:"n i";s:3:"173";s:3:"orm";s:3:"174";s:3:"pro";s:3:"175";s:3:"rke";s:3:"176";s:3:"run";s:3:"177";s:3:"s d";s:3:"178";s:3:"wah";s:3:"179";s:3:"wer";s:3:"180";s:4:"ürk";s:3:"181";s:3:" me";s:3:"182";s:3:"age";s:3:"183";s:3:"att";s:3:"184";s:3:"ell";s:3:"185";s:3:"est";s:3:"186";s:3:"hat";s:3:"187";s:3:"n b";s:3:"188";s:3:"oll";s:3:"189";s:3:"raf";s:3:"190";s:3:"s a";s:3:"191";s:3:"tsc";s:3:"192";s:3:" es";s:3:"193";s:3:" fo";s:3:"194";s:3:" gr";s:3:"195";s:3:" ja";s:3:"196";s:3:"abe";s:3:"197";s:3:"auc";s:3:"198";s:3:"ben";s:3:"199";s:3:"e n";s:3:"200";s:3:"ege";s:3:"201";s:3:"lie";s:3:"202";s:3:"n u";s:3:"203";s:3:"r v";s:3:"204";s:3:"re ";s:3:"205";s:3:"rit";s:3:"206";s:3:"sag";s:3:"207";s:3:" am";s:3:"208";s:3:"agt";s:3:"209";s:3:"ahr";s:3:"210";s:3:"bra";s:3:"211";s:3:"de ";s:3:"212";s:3:"erd";s:3:"213";s:3:"her";s:3:"214";s:3:"ite";s:3:"215";s:3:"le ";s:3:"216";s:3:"n p";s:3:"217";s:3:"n v";s:3:"218";s:3:"or ";s:3:"219";s:3:"rbe";s:3:"220";s:3:"rt ";s:3:"221";s:3:"sic";s:3:"222";s:3:"wie";s:3:"223";s:4:"übe";s:3:"224";s:3:" is";s:3:"225";s:4:" üb";s:3:"226";s:3:"cha";s:3:"227";s:3:"chi";s:3:"228";s:3:"e f";s:3:"229";s:3:"e m";s:3:"230";s:3:"eri";s:3:"231";s:3:"ied";s:3:"232";s:3:"mme";s:3:"233";s:3:"ner";s:3:"234";s:3:"r a";s:3:"235";s:3:"sti";s:3:"236";s:3:"t a";s:3:"237";s:3:"t s";s:3:"238";s:3:"tis";s:3:"239";s:3:" ko";s:3:"240";s:3:"arb";s:3:"241";s:3:"ds ";s:3:"242";s:3:"gan";s:3:"243";s:3:"n z";s:3:"244";s:3:"r f";s:3:"245";s:3:"r w";s:3:"246";s:3:"ran";s:3:"247";s:3:"se ";s:3:"248";s:3:"t i";s:3:"249";s:3:"wei";s:3:"250";s:3:"wir";s:3:"251";s:3:" br";s:3:"252";s:3:" np";s:3:"253";s:3:"am ";s:3:"254";s:3:"bes";s:3:"255";s:3:"d d";s:3:"256";s:3:"deu";s:3:"257";s:3:"e g";s:3:"258";s:3:"e k";s:3:"259";s:3:"efo";s:3:"260";s:3:"et ";s:3:"261";s:3:"eut";s:3:"262";s:3:"fen";s:3:"263";s:3:"hse";s:3:"264";s:3:"lte";s:3:"265";s:3:"n r";s:3:"266";s:3:"npd";s:3:"267";s:3:"r b";s:3:"268";s:3:"rhe";s:3:"269";s:3:"t w";s:3:"270";s:3:"tz ";s:3:"271";s:3:" fr";s:3:"272";s:3:" ih";s:3:"273";s:3:" ke";s:3:"274";s:3:" ma";s:3:"275";s:3:"ame";s:3:"276";s:3:"ang";s:3:"277";s:3:"d s";s:3:"278";s:3:"eil";s:3:"279";s:3:"el ";s:3:"280";s:3:"era";s:3:"281";s:3:"erh";s:3:"282";s:3:"h d";s:3:"283";s:3:"i d";s:3:"284";s:3:"kan";s:3:"285";s:3:"n f";s:3:"286";s:3:"n l";s:3:"287";s:3:"nts";s:3:"288";s:3:"och";s:3:"289";s:3:"rag";s:3:"290";s:3:"rd ";s:3:"291";s:3:"spd";s:3:"292";s:3:"spr";s:3:"293";s:3:"tio";s:3:"294";s:3:" ar";s:3:"295";s:3:" en";s:3:"296";s:3:" ka";s:3:"297";s:3:"ark";s:3:"298";s:3:"ass";s:3:"299";}s:5:"hausa";a:300:{s:3:" da";s:1:"0";s:3:"da ";s:1:"1";s:3:"in ";s:1:"2";s:3:"an ";s:1:"3";s:3:"ya ";s:1:"4";s:3:" wa";s:1:"5";s:3:" ya";s:1:"6";s:3:"na ";s:1:"7";s:3:"ar ";s:1:"8";s:3:"a d";s:1:"9";s:3:" ma";s:2:"10";s:3:"wa ";s:2:"11";s:3:"a a";s:2:"12";s:3:"a k";s:2:"13";s:3:"a s";s:2:"14";s:3:" ta";s:2:"15";s:3:"wan";s:2:"16";s:3:" a ";s:2:"17";s:3:" ba";s:2:"18";s:3:" ka";s:2:"19";s:3:"ta ";s:2:"20";s:3:"a y";s:2:"21";s:3:"n d";s:2:"22";s:3:" ha";s:2:"23";s:3:" na";s:2:"24";s:3:" su";s:2:"25";s:3:" sa";s:2:"26";s:3:"kin";s:2:"27";s:3:"sa ";s:2:"28";s:3:"ata";s:2:"29";s:3:" ko";s:2:"30";s:3:"a t";s:2:"31";s:3:"su ";s:2:"32";s:3:" ga";s:2:"33";s:3:"ai ";s:2:"34";s:3:" sh";s:2:"35";s:3:"a m";s:2:"36";s:3:"uwa";s:2:"37";s:3:"iya";s:2:"38";s:3:"ma ";s:2:"39";s:3:"a w";s:2:"40";s:3:"asa";s:2:"41";s:3:"yan";s:2:"42";s:3:"ka ";s:2:"43";s:3:"ani";s:2:"44";s:3:"shi";s:2:"45";s:3:"a b";s:2:"46";s:3:"a h";s:2:"47";s:3:"a c";s:2:"48";s:3:"ama";s:2:"49";s:3:"ba ";s:2:"50";s:3:"nan";s:2:"51";s:3:"n a";s:2:"52";s:3:" mu";s:2:"53";s:3:"ana";s:2:"54";s:3:" yi";s:2:"55";s:3:"a g";s:2:"56";s:3:" za";s:2:"57";s:3:"i d";s:2:"58";s:3:" ku";s:2:"59";s:3:"aka";s:2:"60";s:3:"yi ";s:2:"61";s:3:"n k";s:2:"62";s:3:"ann";s:2:"63";s:3:"ke ";s:2:"64";s:3:"tar";s:2:"65";s:3:" ci";s:2:"66";s:3:"iki";s:2:"67";s:3:"n s";s:2:"68";s:3:"ko ";s:2:"69";s:3:" ra";s:2:"70";s:3:"ki ";s:2:"71";s:3:"ne ";s:2:"72";s:3:"a z";s:2:"73";s:3:"mat";s:2:"74";s:3:"hak";s:2:"75";s:3:"nin";s:2:"76";s:3:"e d";s:2:"77";s:3:"nna";s:2:"78";s:3:"uma";s:2:"79";s:3:"nda";s:2:"80";s:3:"a n";s:2:"81";s:3:"ada";s:2:"82";s:3:"cik";s:2:"83";s:3:"ni ";s:2:"84";s:3:"rin";s:2:"85";s:3:"una";s:2:"86";s:3:"ara";s:2:"87";s:3:"kum";s:2:"88";s:3:"akk";s:2:"89";s:3:" ce";s:2:"90";s:3:" du";s:2:"91";s:3:"man";s:2:"92";s:3:"n y";s:2:"93";s:3:"nci";s:2:"94";s:3:"sar";s:2:"95";s:3:"aki";s:2:"96";s:3:"awa";s:2:"97";s:3:"ci ";s:2:"98";s:3:"kan";s:2:"99";s:3:"kar";s:3:"100";s:3:"ari";s:3:"101";s:3:"n m";s:3:"102";s:3:"and";s:3:"103";s:3:"hi ";s:3:"104";s:3:"n t";s:3:"105";s:3:"ga ";s:3:"106";s:3:"owa";s:3:"107";s:3:"ash";s:3:"108";s:3:"kam";s:3:"109";s:3:"dan";s:3:"110";s:3:"ewa";s:3:"111";s:3:"nsa";s:3:"112";s:3:"ali";s:3:"113";s:3:"ami";s:3:"114";s:3:" ab";s:3:"115";s:3:" do";s:3:"116";s:3:"anc";s:3:"117";s:3:"n r";s:3:"118";s:3:"aya";s:3:"119";s:3:"i n";s:3:"120";s:3:"sun";s:3:"121";s:3:"uka";s:3:"122";s:3:" al";s:3:"123";s:3:" ne";s:3:"124";s:3:"a'a";s:3:"125";s:3:"cew";s:3:"126";s:3:"cin";s:3:"127";s:3:"mas";s:3:"128";s:3:"tak";s:3:"129";s:3:"un ";s:3:"130";s:3:"aba";s:3:"131";s:3:"kow";s:3:"132";s:3:"a r";s:3:"133";s:3:"ra ";s:3:"134";s:3:" ja";s:3:"135";s:4:" Æ™a";s:3:"136";s:3:"en ";s:3:"137";s:3:"r d";s:3:"138";s:3:"sam";s:3:"139";s:3:"tsa";s:3:"140";s:3:" ru";s:3:"141";s:3:"ce ";s:3:"142";s:3:"i a";s:3:"143";s:3:"abi";s:3:"144";s:3:"ida";s:3:"145";s:3:"mut";s:3:"146";s:3:"n g";s:3:"147";s:3:"n j";s:3:"148";s:3:"san";s:3:"149";s:4:"a Æ™";s:3:"150";s:3:"har";s:3:"151";s:3:"on ";s:3:"152";s:3:"i m";s:3:"153";s:3:"suk";s:3:"154";s:3:" ak";s:3:"155";s:3:" ji";s:3:"156";s:3:"yar";s:3:"157";s:3:"'ya";s:3:"158";s:3:"kwa";s:3:"159";s:3:"min";s:3:"160";s:3:" 'y";s:3:"161";s:3:"ane";s:3:"162";s:3:"ban";s:3:"163";s:3:"ins";s:3:"164";s:3:"ruw";s:3:"165";s:3:"i k";s:3:"166";s:3:"n h";s:3:"167";s:3:" ad";s:3:"168";s:3:"ake";s:3:"169";s:3:"n w";s:3:"170";s:3:"sha";s:3:"171";s:3:"utu";s:3:"172";s:4:" Æ´a";s:3:"173";s:3:"bay";s:3:"174";s:3:"tan";s:3:"175";s:4:"Æ´an";s:3:"176";s:3:"bin";s:3:"177";s:3:"duk";s:3:"178";s:3:"e m";s:3:"179";s:3:"n n";s:3:"180";s:3:"oka";s:3:"181";s:3:"yin";s:3:"182";s:4:"É—an";s:3:"183";s:3:" fa";s:3:"184";s:3:"a i";s:3:"185";s:3:"kki";s:3:"186";s:3:"re ";s:3:"187";s:3:"za ";s:3:"188";s:3:"ala";s:3:"189";s:3:"asu";s:3:"190";s:3:"han";s:3:"191";s:3:"i y";s:3:"192";s:3:"mar";s:3:"193";s:3:"ran";s:3:"194";s:4:"Æ™as";s:3:"195";s:3:"add";s:3:"196";s:3:"ars";s:3:"197";s:3:"gab";s:3:"198";s:3:"ira";s:3:"199";s:3:"mma";s:3:"200";s:3:"u d";s:3:"201";s:3:" ts";s:3:"202";s:3:"abb";s:3:"203";s:3:"abu";s:3:"204";s:3:"aga";s:3:"205";s:3:"gar";s:3:"206";s:3:"n b";s:3:"207";s:4:" É—a";s:3:"208";s:3:"aci";s:3:"209";s:3:"aik";s:3:"210";s:3:"am ";s:3:"211";s:3:"dun";s:3:"212";s:3:"e s";s:3:"213";s:3:"i b";s:3:"214";s:3:"i w";s:3:"215";s:3:"kas";s:3:"216";s:3:"kok";s:3:"217";s:3:"wam";s:3:"218";s:3:" am";s:3:"219";s:3:"amf";s:3:"220";s:3:"bba";s:3:"221";s:3:"din";s:3:"222";s:3:"fan";s:3:"223";s:3:"gwa";s:3:"224";s:3:"i s";s:3:"225";s:3:"wat";s:3:"226";s:3:"ano";s:3:"227";s:3:"are";s:3:"228";s:3:"dai";s:3:"229";s:3:"iri";s:3:"230";s:3:"ma'";s:3:"231";s:3:" la";s:3:"232";s:3:"all";s:3:"233";s:3:"dam";s:3:"234";s:3:"ika";s:3:"235";s:3:"mi ";s:3:"236";s:3:"she";s:3:"237";s:3:"tum";s:3:"238";s:3:"uni";s:3:"239";s:3:" an";s:3:"240";s:3:" ai";s:3:"241";s:3:" ke";s:3:"242";s:3:" ki";s:3:"243";s:3:"dag";s:3:"244";s:3:"mai";s:3:"245";s:3:"mfa";s:3:"246";s:3:"no ";s:3:"247";s:3:"nsu";s:3:"248";s:3:"o d";s:3:"249";s:3:"sak";s:3:"250";s:3:"um ";s:3:"251";s:3:" bi";s:3:"252";s:3:" gw";s:3:"253";s:3:" kw";s:3:"254";s:3:"jam";s:3:"255";s:3:"yya";s:3:"256";s:3:"a j";s:3:"257";s:3:"fa ";s:3:"258";s:3:"uta";s:3:"259";s:3:" hu";s:3:"260";s:3:"'a ";s:3:"261";s:3:"ans";s:3:"262";s:4:"aÉ—a";s:3:"263";s:3:"dda";s:3:"264";s:3:"hin";s:3:"265";s:3:"niy";s:3:"266";s:3:"r s";s:3:"267";s:3:"bat";s:3:"268";s:3:"dar";s:3:"269";s:3:"gan";s:3:"270";s:3:"i t";s:3:"271";s:3:"nta";s:3:"272";s:3:"oki";s:3:"273";s:3:"omi";s:3:"274";s:3:"sal";s:3:"275";s:3:"a l";s:3:"276";s:3:"kac";s:3:"277";s:3:"lla";s:3:"278";s:3:"wad";s:3:"279";s:3:"war";s:3:"280";s:3:"amm";s:3:"281";s:3:"dom";s:3:"282";s:3:"r m";s:3:"283";s:3:"ras";s:3:"284";s:3:"sai";s:3:"285";s:3:" lo";s:3:"286";s:3:"ats";s:3:"287";s:3:"hal";s:3:"288";s:3:"kat";s:3:"289";s:3:"li ";s:3:"290";s:3:"lok";s:3:"291";s:3:"n c";s:3:"292";s:3:"nar";s:3:"293";s:3:"tin";s:3:"294";s:3:"afa";s:3:"295";s:3:"bub";s:3:"296";s:3:"i g";s:3:"297";s:3:"isa";s:3:"298";s:3:"mak";s:3:"299";}s:8:"hawaiian";a:300:{s:3:" ka";s:1:"0";s:3:"na ";s:1:"1";s:3:" o ";s:1:"2";s:3:"ka ";s:1:"3";s:3:" ma";s:1:"4";s:3:" a ";s:1:"5";s:3:" la";s:1:"6";s:3:"a i";s:1:"7";s:3:"a m";s:1:"8";s:3:" i ";s:1:"9";s:3:"la ";s:2:"10";s:3:"ana";s:2:"11";s:3:"ai ";s:2:"12";s:3:"ia ";s:2:"13";s:3:"a o";s:2:"14";s:3:"a k";s:2:"15";s:3:"a h";s:2:"16";s:3:"o k";s:2:"17";s:3:" ke";s:2:"18";s:3:"a a";s:2:"19";s:3:"i k";s:2:"20";s:3:" ho";s:2:"21";s:3:" ia";s:2:"22";s:3:"ua ";s:2:"23";s:3:" na";s:2:"24";s:3:" me";s:2:"25";s:3:"e k";s:2:"26";s:3:"e a";s:2:"27";s:3:"au ";s:2:"28";s:3:"ke ";s:2:"29";s:3:"ma ";s:2:"30";s:3:"mai";s:2:"31";s:3:"aku";s:2:"32";s:3:" ak";s:2:"33";s:3:"ahi";s:2:"34";s:3:" ha";s:2:"35";s:3:" ko";s:2:"36";s:3:" e ";s:2:"37";s:3:"a l";s:2:"38";s:3:" no";s:2:"39";s:3:"me ";s:2:"40";s:3:"ku ";s:2:"41";s:3:"aka";s:2:"42";s:3:"kan";s:2:"43";s:3:"no ";s:2:"44";s:3:"i a";s:2:"45";s:3:"ho ";s:2:"46";s:3:"ou ";s:2:"47";s:3:" ai";s:2:"48";s:3:"i o";s:2:"49";s:3:"a p";s:2:"50";s:3:"o l";s:2:"51";s:3:"o a";s:2:"52";s:3:"ama";s:2:"53";s:3:"a n";s:2:"54";s:3:" an";s:2:"55";s:3:"i m";s:2:"56";s:3:"han";s:2:"57";s:3:"i i";s:2:"58";s:3:"iho";s:2:"59";s:3:"kou";s:2:"60";s:3:"ne ";s:2:"61";s:3:" ih";s:2:"62";s:3:"o i";s:2:"63";s:3:"iki";s:2:"64";s:3:"ona";s:2:"65";s:3:"hoo";s:2:"66";s:3:"le ";s:2:"67";s:3:"e h";s:2:"68";s:3:" he";s:2:"69";s:3:"ina";s:2:"70";s:3:" wa";s:2:"71";s:3:"ea ";s:2:"72";s:3:"ako";s:2:"73";s:3:"u i";s:2:"74";s:3:"kah";s:2:"75";s:3:"oe ";s:2:"76";s:3:"i l";s:2:"77";s:3:"u a";s:2:"78";s:3:" pa";s:2:"79";s:3:"hoi";s:2:"80";s:3:"e i";s:2:"81";s:3:"era";s:2:"82";s:3:"ko ";s:2:"83";s:3:"u m";s:2:"84";s:3:"kua";s:2:"85";s:3:"mak";s:2:"86";s:3:"oi ";s:2:"87";s:3:"kai";s:2:"88";s:3:"i n";s:2:"89";s:3:"a e";s:2:"90";s:3:"hin";s:2:"91";s:3:"ane";s:2:"92";s:3:" ol";s:2:"93";s:3:"i h";s:2:"94";s:3:"mea";s:2:"95";s:3:"wah";s:2:"96";s:3:"lak";s:2:"97";s:3:"e m";s:2:"98";s:3:"o n";s:2:"99";s:3:"u l";s:3:"100";s:3:"ika";s:3:"101";s:3:"ki ";s:3:"102";s:3:"a w";s:3:"103";s:3:"mal";s:3:"104";s:3:"hi ";s:3:"105";s:3:"e n";s:3:"106";s:3:"u o";s:3:"107";s:3:"hik";s:3:"108";s:3:" ku";s:3:"109";s:3:"e l";s:3:"110";s:3:"ele";s:3:"111";s:3:"ra ";s:3:"112";s:3:"ber";s:3:"113";s:3:"ine";s:3:"114";s:3:"abe";s:3:"115";s:3:"ain";s:3:"116";s:3:"ala";s:3:"117";s:3:"lo ";s:3:"118";s:3:" po";s:3:"119";s:3:"kon";s:3:"120";s:3:" ab";s:3:"121";s:3:"ole";s:3:"122";s:3:"he ";s:3:"123";s:3:"pau";s:3:"124";s:3:"mah";s:3:"125";s:3:"va ";s:3:"126";s:3:"ela";s:3:"127";s:3:"kau";s:3:"128";s:3:"nak";s:3:"129";s:3:" oe";s:3:"130";s:3:"kei";s:3:"131";s:3:"oia";s:3:"132";s:3:" ie";s:3:"133";s:3:"ram";s:3:"134";s:3:" oi";s:3:"135";s:3:"oa ";s:3:"136";s:3:"eho";s:3:"137";s:3:"hov";s:3:"138";s:3:"ieh";s:3:"139";s:3:"ova";s:3:"140";s:3:" ua";s:3:"141";s:3:"una";s:3:"142";s:3:"ara";s:3:"143";s:3:"o s";s:3:"144";s:3:"awa";s:3:"145";s:3:"o o";s:3:"146";s:3:"nau";s:3:"147";s:3:"u n";s:3:"148";s:3:"wa ";s:3:"149";s:3:"wai";s:3:"150";s:3:"hel";s:3:"151";s:3:" ae";s:3:"152";s:3:" al";s:3:"153";s:3:"ae ";s:3:"154";s:3:"ta ";s:3:"155";s:3:"aik";s:3:"156";s:3:" hi";s:3:"157";s:3:"ale";s:3:"158";s:3:"ila";s:3:"159";s:3:"lel";s:3:"160";s:3:"ali";s:3:"161";s:3:"eik";s:3:"162";s:3:"olo";s:3:"163";s:3:"onu";s:3:"164";s:3:" lo";s:3:"165";s:3:"aua";s:3:"166";s:3:"e o";s:3:"167";s:3:"ola";s:3:"168";s:3:"hon";s:3:"169";s:3:"mam";s:3:"170";s:3:"nan";s:3:"171";s:3:" au";s:3:"172";s:3:"aha";s:3:"173";s:3:"lau";s:3:"174";s:3:"nua";s:3:"175";s:3:"oho";s:3:"176";s:3:"oma";s:3:"177";s:3:" ao";s:3:"178";s:3:"ii ";s:3:"179";s:3:"alu";s:3:"180";s:3:"ima";s:3:"181";s:3:"mau";s:3:"182";s:3:"ike";s:3:"183";s:3:"apa";s:3:"184";s:3:"elo";s:3:"185";s:3:"lii";s:3:"186";s:3:"poe";s:3:"187";s:3:"aia";s:3:"188";s:3:"noa";s:3:"189";s:3:" in";s:3:"190";s:3:"o m";s:3:"191";s:3:"oka";s:3:"192";s:3:"'u ";s:3:"193";s:3:"aho";s:3:"194";s:3:"ei ";s:3:"195";s:3:"eka";s:3:"196";s:3:"ha ";s:3:"197";s:3:"lu ";s:3:"198";s:3:"nei";s:3:"199";s:3:"hol";s:3:"200";s:3:"ino";s:3:"201";s:3:"o e";s:3:"202";s:3:"ema";s:3:"203";s:3:"iwa";s:3:"204";s:3:"olu";s:3:"205";s:3:"ada";s:3:"206";s:3:"naa";s:3:"207";s:3:"pa ";s:3:"208";s:3:"u k";s:3:"209";s:3:"ewa";s:3:"210";s:3:"hua";s:3:"211";s:3:"lam";s:3:"212";s:3:"lua";s:3:"213";s:3:"o h";s:3:"214";s:3:"ook";s:3:"215";s:3:"u h";s:3:"216";s:3:" li";s:3:"217";s:3:"ahu";s:3:"218";s:3:"amu";s:3:"219";s:3:"ui ";s:3:"220";s:3:" il";s:3:"221";s:3:" mo";s:3:"222";s:3:" se";s:3:"223";s:3:"eia";s:3:"224";s:3:"law";s:3:"225";s:3:" hu";s:3:"226";s:3:" ik";s:3:"227";s:3:"ail";s:3:"228";s:3:"e p";s:3:"229";s:3:"li ";s:3:"230";s:3:"lun";s:3:"231";s:3:"uli";s:3:"232";s:3:"io ";s:3:"233";s:3:"kik";s:3:"234";s:3:"noh";s:3:"235";s:3:"u e";s:3:"236";s:3:" sa";s:3:"237";s:3:"aaw";s:3:"238";s:3:"awe";s:3:"239";s:3:"ena";s:3:"240";s:3:"hal";s:3:"241";s:3:"kol";s:3:"242";s:3:"lan";s:3:"243";s:3:" le";s:3:"244";s:3:" ne";s:3:"245";s:3:"a'u";s:3:"246";s:3:"ilo";s:3:"247";s:3:"kap";s:3:"248";s:3:"oko";s:3:"249";s:3:"sa ";s:3:"250";s:3:" pe";s:3:"251";s:3:"hop";s:3:"252";s:3:"loa";s:3:"253";s:3:"ope";s:3:"254";s:3:"pe ";s:3:"255";s:3:" ad";s:3:"256";s:3:" pu";s:3:"257";s:3:"ahe";s:3:"258";s:3:"aol";s:3:"259";s:3:"ia'";s:3:"260";s:3:"lai";s:3:"261";s:3:"loh";s:3:"262";s:3:"na'";s:3:"263";s:3:"oom";s:3:"264";s:3:"aau";s:3:"265";s:3:"eri";s:3:"266";s:3:"kul";s:3:"267";s:3:"we ";s:3:"268";s:3:"ake";s:3:"269";s:3:"kek";s:3:"270";s:3:"laa";s:3:"271";s:3:"ri ";s:3:"272";s:3:"iku";s:3:"273";s:3:"kak";s:3:"274";s:3:"lim";s:3:"275";s:3:"nah";s:3:"276";s:3:"ner";s:3:"277";s:3:"nui";s:3:"278";s:3:"ono";s:3:"279";s:3:"a u";s:3:"280";s:3:"dam";s:3:"281";s:3:"kum";s:3:"282";s:3:"lok";s:3:"283";s:3:"mua";s:3:"284";s:3:"uma";s:3:"285";s:3:"wal";s:3:"286";s:3:"wi ";s:3:"287";s:3:"'i ";s:3:"288";s:3:"a'i";s:3:"289";s:3:"aan";s:3:"290";s:3:"alo";s:3:"291";s:3:"eta";s:3:"292";s:3:"mu ";s:3:"293";s:3:"ohe";s:3:"294";s:3:"u p";s:3:"295";s:3:"ula";s:3:"296";s:3:"uwa";s:3:"297";s:3:" nu";s:3:"298";s:3:"amo";s:3:"299";}s:5:"hindi";a:300:{s:7:"ें ";s:1:"0";s:7:" है";s:1:"1";s:9:"में";s:1:"2";s:7:" मे";s:1:"3";s:7:"ने ";s:1:"4";s:7:"की ";s:1:"5";s:7:"के ";s:1:"6";s:7:"है ";s:1:"7";s:7:" के";s:1:"8";s:7:" की";s:1:"9";s:7:" को";s:2:"10";s:7:"ों ";s:2:"11";s:7:"को ";s:2:"12";s:7:"ा ह";s:2:"13";s:7:" का";s:2:"14";s:7:"से ";s:2:"15";s:7:"ा क";s:2:"16";s:7:"े क";s:2:"17";s:7:"ं क";s:2:"18";s:7:"या ";s:2:"19";s:7:" कि";s:2:"20";s:7:" से";s:2:"21";s:7:"का ";s:2:"22";s:7:"ी क";s:2:"23";s:7:" ने";s:2:"24";s:7:" और";s:2:"25";s:7:"और ";s:2:"26";s:7:"ना ";s:2:"27";s:7:"कि ";s:2:"28";s:7:"भी ";s:2:"29";s:7:"ी स";s:2:"30";s:7:" जा";s:2:"31";s:7:" पर";s:2:"32";s:7:"ार ";s:2:"33";s:7:" कर";s:2:"34";s:7:"ी ह";s:2:"35";s:7:" हो";s:2:"36";s:7:"ही ";s:2:"37";s:9:"िया";s:2:"38";s:7:" इस";s:2:"39";s:7:" रह";s:2:"40";s:7:"र क";s:2:"41";s:9:"à¥à¤¨à¤¾";s:2:"42";s:7:"ता ";s:2:"43";s:7:"ान ";s:2:"44";s:7:"े स";s:2:"45";s:7:" भी";s:2:"46";s:7:" रा";s:2:"47";s:7:"े ह";s:2:"48";s:7:" चà¥";s:2:"49";s:7:" पा";s:2:"50";s:7:"पर ";s:2:"51";s:9:"चà¥à¤¨";s:2:"52";s:9:"नाव";s:2:"53";s:7:" कह";s:2:"54";s:9:"पà¥à¤°";s:2:"55";s:7:" भा";s:2:"56";s:9:"राज";s:2:"57";s:9:"हैं";s:2:"58";s:7:"ा स";s:2:"59";s:7:"ै क";s:2:"60";s:7:"ैं ";s:2:"61";s:7:"नी ";s:2:"62";s:7:"ल क";s:2:"63";s:7:"ीं ";s:2:"64";s:7:"़ी ";s:2:"65";s:7:"था ";s:2:"66";s:7:"री ";s:2:"67";s:7:"ाव ";s:2:"68";s:7:"े ब";s:2:"69";s:7:" पà¥";s:2:"70";s:9:"कà¥à¤·";s:2:"71";s:7:"पा ";s:2:"72";s:7:"ले ";s:2:"73";s:7:" दे";s:2:"74";s:7:"ला ";s:2:"75";s:7:"हा ";s:2:"76";s:9:"ाजप";s:2:"77";s:7:" था";s:2:"78";s:7:" नह";s:2:"79";s:7:"इस ";s:2:"80";s:7:"कर ";s:2:"81";s:9:"जपा";s:2:"82";s:9:"नही";s:2:"83";s:9:"भाज";s:2:"84";s:9:"यों";s:2:"85";s:7:"र स";s:2:"86";s:9:"हीं";s:2:"87";s:7:" अम";s:2:"88";s:7:" बा";s:2:"89";s:7:" मा";s:2:"90";s:7:" वि";s:2:"91";s:9:"रीक";s:2:"92";s:7:"िठ";s:2:"93";s:7:"े प";s:2:"94";s:9:"à¥à¤¯à¤¾";s:2:"95";s:7:" ही";s:2:"96";s:7:"ं म";s:2:"97";s:9:"कार";s:2:"98";s:7:"ा ज";s:2:"99";s:7:"े ल";s:3:"100";s:7:" ता";s:3:"101";s:7:" दि";s:3:"102";s:7:" सा";s:3:"103";s:7:" हम";s:3:"104";s:7:"ा न";s:3:"105";s:7:"ा म";s:3:"106";s:9:"ाक़";s:3:"107";s:9:"à¥à¤¤à¤¾";s:3:"108";s:7:" à¤à¤•";s:3:"109";s:7:" सं";s:3:"110";s:7:" सà¥";s:3:"111";s:9:"अमर";s:3:"112";s:9:"क़ी";s:3:"113";s:9:"ताज";s:3:"114";s:9:"मरी";s:3:"115";s:9:"सà¥à¤¥";s:3:"116";s:7:"ा थ";s:3:"117";s:9:"ारà¥";s:3:"118";s:7:" हà¥";s:3:"119";s:9:"इरा";s:3:"120";s:7:"à¤à¤• ";s:3:"121";s:7:"न क";s:3:"122";s:7:"र म";s:3:"123";s:9:"राक";s:3:"124";s:7:"ी ज";s:3:"125";s:7:"ी न";s:3:"126";s:7:" इर";s:3:"127";s:7:" उन";s:3:"128";s:7:" पह";s:3:"129";s:9:"कहा";s:3:"130";s:7:"ते ";s:3:"131";s:7:"े अ";s:3:"132";s:7:" तो";s:3:"133";s:7:" सà¥";s:3:"134";s:7:"ति ";s:3:"135";s:7:"ती ";s:3:"136";s:7:"तो ";s:3:"137";s:9:"मिल";s:3:"138";s:7:"िक ";s:3:"139";s:9:"ियो";s:3:"140";s:9:"à¥à¤°à¥‡";s:3:"141";s:7:" अप";s:3:"142";s:7:" फ़";s:3:"143";s:7:" लि";s:3:"144";s:7:" लो";s:3:"145";s:7:" सम";s:3:"146";s:7:"म क";s:3:"147";s:9:"रà¥à¤Ÿ";s:3:"148";s:7:"हो ";s:3:"149";s:7:"ा च";s:3:"150";s:7:"ाई ";s:3:"151";s:9:"ाने";s:3:"152";s:7:"िन ";s:3:"153";s:7:"à¥à¤¯ ";s:3:"154";s:7:" उस";s:3:"155";s:7:" क़";s:3:"156";s:7:" सक";s:3:"157";s:7:" सै";s:3:"158";s:7:"ं प";s:3:"159";s:7:"ं ह";s:3:"160";s:7:"गी ";s:3:"161";s:7:"त क";s:3:"162";s:9:"मान";s:3:"163";s:7:"र न";s:3:"164";s:9:"षà¥à¤Ÿ";s:3:"165";s:7:"स क";s:3:"166";s:9:"सà¥à¤¤";s:3:"167";s:7:"ाठ";s:3:"168";s:7:"ी ब";s:3:"169";s:7:"ी म";s:3:"170";s:9:"à¥à¤°à¥€";s:3:"171";s:7:" दो";s:3:"172";s:7:" मि";s:3:"173";s:7:" मà¥";s:3:"174";s:7:" ले";s:3:"175";s:7:" शा";s:3:"176";s:7:"ं स";s:3:"177";s:9:"ज़ा";s:3:"178";s:9:"तà¥à¤°";s:3:"179";s:7:"थी ";s:3:"180";s:9:"लिà¤";s:3:"181";s:7:"सी ";s:3:"182";s:7:"़ा ";s:3:"183";s:9:"़ार";s:3:"184";s:9:"ांग";s:3:"185";s:7:"े द";s:3:"186";s:7:"े म";s:3:"187";s:7:"à¥à¤µ ";s:3:"188";s:7:" ना";s:3:"189";s:7:" बन";s:3:"190";s:9:"ंगà¥";s:3:"191";s:9:"कां";s:3:"192";s:7:"गा ";s:3:"193";s:9:"गà¥à¤°";s:3:"194";s:7:"जा ";s:3:"195";s:9:"जà¥à¤¯";s:3:"196";s:7:"दी ";s:3:"197";s:7:"न म";s:3:"198";s:9:"पार";s:3:"199";s:7:"भा ";s:3:"200";s:9:"रही";s:3:"201";s:7:"रे ";s:3:"202";s:9:"रेस";s:3:"203";s:7:"ली ";s:3:"204";s:9:"सभा";s:3:"205";s:7:"ा र";s:3:"206";s:7:"ाल ";s:3:"207";s:7:"ी अ";s:3:"208";s:9:"ीकी";s:3:"209";s:7:"े त";s:3:"210";s:7:"ेश ";s:3:"211";s:7:" अं";s:3:"212";s:7:" तक";s:3:"213";s:7:" या";s:3:"214";s:7:"ई ह";s:3:"215";s:9:"करन";s:3:"216";s:7:"तक ";s:3:"217";s:9:"देश";s:3:"218";s:9:"वरà¥";s:3:"219";s:9:"ाया";s:3:"220";s:7:"ी भ";s:3:"221";s:7:"ेस ";s:3:"222";s:7:"à¥à¤· ";s:3:"223";s:7:" गय";s:3:"224";s:7:" जि";s:3:"225";s:7:" थी";s:3:"226";s:7:" बड";s:3:"227";s:7:" यह";s:3:"228";s:7:" वा";s:3:"229";s:9:"ंतर";s:3:"230";s:9:"अंत";s:3:"231";s:7:"क़ ";s:3:"232";s:9:"गया";s:3:"233";s:7:"टी ";s:3:"234";s:9:"निक";s:3:"235";s:9:"नà¥à¤¹";s:3:"236";s:9:"पहल";s:3:"237";s:9:"बड़";s:3:"238";s:9:"मार";s:3:"239";s:7:"र प";s:3:"240";s:9:"रने";s:3:"241";s:9:"ाज़";s:3:"242";s:7:"ि इ";s:3:"243";s:7:"ी र";s:3:"244";s:7:"े ज";s:3:"245";s:7:"े व";s:3:"246";s:7:"à¥à¤Ÿ ";s:3:"247";s:9:"à¥à¤Ÿà¥€";s:3:"248";s:7:" अब";s:3:"249";s:7:" लग";s:3:"250";s:7:" वर";s:3:"251";s:7:" सी";s:3:"252";s:7:"ं भ";s:3:"253";s:9:"उनà¥";s:3:"254";s:7:"क क";s:3:"255";s:9:"किय";s:3:"256";s:9:"देख";s:3:"257";s:9:"पूर";s:3:"258";s:9:"फ़à¥";s:3:"259";s:7:"यह ";s:3:"260";s:9:"यान";s:3:"261";s:9:"रिक";s:3:"262";s:9:"रिय";s:3:"263";s:9:"रà¥à¤¡";s:3:"264";s:9:"लेक";s:3:"265";s:9:"सकत";s:3:"266";s:9:"हों";s:3:"267";s:9:"होग";s:3:"268";s:7:"ा अ";s:3:"269";s:7:"ा द";s:3:"270";s:7:"ा प";s:3:"271";s:7:"ाद ";s:3:"272";s:9:"ारा";s:3:"273";s:7:"ित ";s:3:"274";s:7:"ी त";s:3:"275";s:7:"ी प";s:3:"276";s:7:"ो क";s:3:"277";s:7:"ो द";s:3:"278";s:7:" ते";s:3:"279";s:7:" नि";s:3:"280";s:7:" सर";s:3:"281";s:7:" हा";s:3:"282";s:7:"ं द";s:3:"283";s:9:"अपन";s:3:"284";s:9:"जान";s:3:"285";s:7:"त म";s:3:"286";s:9:"थित";s:3:"287";s:9:"पनी";s:3:"288";s:9:"महल";s:3:"289";s:7:"र ह";s:3:"290";s:9:"लोग";s:3:"291";s:7:"व क";s:3:"292";s:9:"हना";s:3:"293";s:7:"हल ";s:3:"294";s:9:"हाà¤";s:3:"295";s:9:"ाजà¥";s:3:"296";s:9:"ाना";s:3:"297";s:9:"िकà¥";s:3:"298";s:9:"िसà¥";s:3:"299";}s:9:"hungarian";a:300:{s:3:" a ";s:1:"0";s:3:" az";s:1:"1";s:3:" sz";s:1:"2";s:3:"az ";s:1:"3";s:3:" me";s:1:"4";s:3:"en ";s:1:"5";s:3:" el";s:1:"6";s:3:" ho";s:1:"7";s:3:"ek ";s:1:"8";s:3:"gy ";s:1:"9";s:3:"tt ";s:2:"10";s:3:"ett";s:2:"11";s:3:"sze";s:2:"12";s:3:" fe";s:2:"13";s:4:"és ";s:2:"14";s:3:" ki";s:2:"15";s:3:"tet";s:2:"16";s:3:" be";s:2:"17";s:3:"et ";s:2:"18";s:3:"ter";s:2:"19";s:4:" kö";s:2:"20";s:4:" és";s:2:"21";s:3:"hog";s:2:"22";s:3:"meg";s:2:"23";s:3:"ogy";s:2:"24";s:3:"szt";s:2:"25";s:3:"te ";s:2:"26";s:3:"t a";s:2:"27";s:3:"zet";s:2:"28";s:3:"a m";s:2:"29";s:3:"nek";s:2:"30";s:3:"nt ";s:2:"31";s:4:"ség";s:2:"32";s:4:"szá";s:2:"33";s:3:"ak ";s:2:"34";s:3:" va";s:2:"35";s:3:"an ";s:2:"36";s:3:"eze";s:2:"37";s:3:"ra ";s:2:"38";s:3:"ta ";s:2:"39";s:3:" mi";s:2:"40";s:3:"int";s:2:"41";s:4:"köz";s:2:"42";s:3:" is";s:2:"43";s:3:"esz";s:2:"44";s:3:"fel";s:2:"45";s:3:"min";s:2:"46";s:3:"nak";s:2:"47";s:3:"ors";s:2:"48";s:3:"zer";s:2:"49";s:3:" te";s:2:"50";s:3:"a a";s:2:"51";s:3:"a k";s:2:"52";s:3:"is ";s:2:"53";s:3:" cs";s:2:"54";s:3:"ele";s:2:"55";s:3:"er ";s:2:"56";s:3:"men";s:2:"57";s:3:"si ";s:2:"58";s:3:"tek";s:2:"59";s:3:"ti ";s:2:"60";s:3:" ne";s:2:"61";s:3:"csa";s:2:"62";s:3:"ent";s:2:"63";s:3:"z e";s:2:"64";s:3:"a t";s:2:"65";s:3:"ala";s:2:"66";s:3:"ere";s:2:"67";s:3:"es ";s:2:"68";s:3:"lom";s:2:"69";s:3:"lte";s:2:"70";s:3:"mon";s:2:"71";s:3:"ond";s:2:"72";s:3:"rsz";s:2:"73";s:3:"sza";s:2:"74";s:3:"tte";s:2:"75";s:4:"zág";s:2:"76";s:4:"ány";s:2:"77";s:3:" fo";s:2:"78";s:3:" ma";s:2:"79";s:3:"ai ";s:2:"80";s:3:"ben";s:2:"81";s:3:"el ";s:2:"82";s:3:"ene";s:2:"83";s:3:"ik ";s:2:"84";s:3:"jel";s:2:"85";s:4:"tás";s:2:"86";s:4:"áll";s:2:"87";s:3:" ha";s:2:"88";s:3:" le";s:2:"89";s:4:" ál";s:2:"90";s:3:"agy";s:2:"91";s:4:"alá";s:2:"92";s:3:"isz";s:2:"93";s:3:"y a";s:2:"94";s:3:"zte";s:2:"95";s:4:"ás ";s:2:"96";s:3:" al";s:2:"97";s:3:"e a";s:2:"98";s:3:"egy";s:2:"99";s:3:"ely";s:3:"100";s:3:"for";s:3:"101";s:3:"lat";s:3:"102";s:3:"lt ";s:3:"103";s:3:"n a";s:3:"104";s:3:"oga";s:3:"105";s:3:"on ";s:3:"106";s:3:"re ";s:3:"107";s:3:"st ";s:3:"108";s:4:"ság";s:3:"109";s:3:"t m";s:3:"110";s:4:"án ";s:3:"111";s:4:"ét ";s:3:"112";s:4:"ült";s:3:"113";s:3:" je";s:3:"114";s:3:"gi ";s:3:"115";s:3:"k a";s:3:"116";s:4:"kül";s:3:"117";s:3:"lam";s:3:"118";s:3:"len";s:3:"119";s:4:"lás";s:3:"120";s:4:"más";s:3:"121";s:3:"s k";s:3:"122";s:3:"vez";s:3:"123";s:4:"áso";s:3:"124";s:5:"özö";s:3:"125";s:3:" ta";s:3:"126";s:3:"a s";s:3:"127";s:3:"a v";s:3:"128";s:3:"asz";s:3:"129";s:4:"atá";s:3:"130";s:4:"etÅ‘";s:3:"131";s:3:"kez";s:3:"132";s:3:"let";s:3:"133";s:3:"mag";s:3:"134";s:3:"nem";s:3:"135";s:4:"szé";s:3:"136";s:3:"z m";s:3:"137";s:4:"át ";s:3:"138";s:4:"éte";s:3:"139";s:4:"ölt";s:3:"140";s:3:" de";s:3:"141";s:3:" gy";s:3:"142";s:4:" ké";s:3:"143";s:3:" mo";s:3:"144";s:4:" vá";s:3:"145";s:4:" ér";s:3:"146";s:3:"a b";s:3:"147";s:3:"a f";s:3:"148";s:3:"ami";s:3:"149";s:3:"at ";s:3:"150";s:3:"ato";s:3:"151";s:3:"att";s:3:"152";s:3:"bef";s:3:"153";s:3:"dta";s:3:"154";s:3:"gya";s:3:"155";s:3:"hat";s:3:"156";s:3:"i s";s:3:"157";s:3:"las";s:3:"158";s:3:"ndt";s:3:"159";s:3:"rt ";s:3:"160";s:3:"szo";s:3:"161";s:3:"t k";s:3:"162";s:4:"tár";s:3:"163";s:4:"tés";s:3:"164";s:3:"van";s:3:"165";s:5:"ásá";s:3:"166";s:4:"ól ";s:3:"167";s:4:" bé";s:3:"168";s:3:" eg";s:3:"169";s:3:" or";s:3:"170";s:4:" pá";s:3:"171";s:4:" pé";s:3:"172";s:3:" ve";s:3:"173";s:3:"ban";s:3:"174";s:3:"eke";s:3:"175";s:4:"ekü";s:3:"176";s:4:"elÅ‘";s:3:"177";s:3:"erv";s:3:"178";s:3:"ete";s:3:"179";s:3:"fog";s:3:"180";s:3:"i a";s:3:"181";s:3:"kis";s:3:"182";s:4:"lád";s:3:"183";s:3:"nte";s:3:"184";s:3:"nye";s:3:"185";s:3:"nyi";s:3:"186";s:3:"ok ";s:3:"187";s:4:"omá";s:3:"188";s:3:"os ";s:3:"189";s:4:"rán";s:3:"190";s:4:"rás";s:3:"191";s:3:"sal";s:3:"192";s:3:"t e";s:3:"193";s:4:"vál";s:3:"194";s:3:"yar";s:3:"195";s:4:"ágo";s:3:"196";s:4:"ála";s:3:"197";s:4:"ége";s:3:"198";s:4:"ény";s:3:"199";s:4:"ött";s:3:"200";s:4:" tá";s:3:"201";s:4:"adó";s:3:"202";s:3:"elh";s:3:"203";s:3:"fej";s:3:"204";s:3:"het";s:3:"205";s:3:"hoz";s:3:"206";s:3:"ill";s:3:"207";s:4:"jár";s:3:"208";s:4:"kés";s:3:"209";s:3:"llo";s:3:"210";s:3:"mi ";s:3:"211";s:3:"ny ";s:3:"212";s:3:"ont";s:3:"213";s:3:"ren";s:3:"214";s:3:"res";s:3:"215";s:3:"rin";s:3:"216";s:3:"s a";s:3:"217";s:3:"s e";s:3:"218";s:3:"ssz";s:3:"219";s:3:"zt ";s:3:"220";s:3:" ez";s:3:"221";s:3:" ka";s:3:"222";s:3:" ke";s:3:"223";s:3:" ko";s:3:"224";s:3:" re";s:3:"225";s:3:"a h";s:3:"226";s:3:"a n";s:3:"227";s:3:"den";s:3:"228";s:4:"dó ";s:3:"229";s:3:"efo";s:3:"230";s:3:"gad";s:3:"231";s:3:"gat";s:3:"232";s:3:"gye";s:3:"233";s:3:"hel";s:3:"234";s:3:"k e";s:3:"235";s:3:"ket";s:3:"236";s:3:"les";s:3:"237";s:4:"mán";s:3:"238";s:3:"nde";s:3:"239";s:3:"nis";s:3:"240";s:3:"ozz";s:3:"241";s:3:"t b";s:3:"242";s:3:"t i";s:3:"243";s:4:"t é";s:3:"244";s:3:"tat";s:3:"245";s:3:"tos";s:3:"246";s:3:"val";s:3:"247";s:3:"z o";s:3:"248";s:3:"zak";s:3:"249";s:4:"ád ";s:3:"250";s:4:"ály";s:3:"251";s:4:"ára";s:3:"252";s:4:"ési";s:3:"253";s:4:"ész";s:3:"254";s:3:" ak";s:3:"255";s:3:" am";s:3:"256";s:3:" es";s:3:"257";s:4:" há";s:3:"258";s:3:" ny";s:3:"259";s:4:" tö";s:3:"260";s:3:"aka";s:3:"261";s:3:"art";s:3:"262";s:4:"ató";s:3:"263";s:3:"azt";s:3:"264";s:3:"bbe";s:3:"265";s:3:"ber";s:3:"266";s:4:"ció";s:3:"267";s:3:"cso";s:3:"268";s:3:"em ";s:3:"269";s:3:"eti";s:3:"270";s:4:"eté";s:3:"271";s:3:"gal";s:3:"272";s:3:"i t";s:3:"273";s:3:"ini";s:3:"274";s:3:"ist";s:3:"275";s:3:"ja ";s:3:"276";s:3:"ker";s:3:"277";s:3:"ki ";s:3:"278";s:3:"kor";s:3:"279";s:3:"koz";s:3:"280";s:4:"l é";s:3:"281";s:4:"ljá";s:3:"282";s:3:"lye";s:3:"283";s:3:"n v";s:3:"284";s:3:"ni ";s:3:"285";s:4:"pál";s:3:"286";s:3:"ror";s:3:"287";s:4:"ról";s:3:"288";s:4:"rül";s:3:"289";s:3:"s c";s:3:"290";s:3:"s p";s:3:"291";s:3:"s s";s:3:"292";s:3:"s v";s:3:"293";s:3:"sok";s:3:"294";s:3:"t j";s:3:"295";s:3:"t t";s:3:"296";s:3:"tar";s:3:"297";s:3:"tel";s:3:"298";s:3:"vat";s:3:"299";}s:9:"icelandic";a:300:{s:4:"að ";s:1:"0";s:3:"um ";s:1:"1";s:4:" að";s:1:"2";s:3:"ir ";s:1:"3";s:4:"ið ";s:1:"4";s:3:"ur ";s:1:"5";s:3:" ve";s:1:"6";s:4:" í ";s:1:"7";s:3:"na ";s:1:"8";s:4:" á ";s:1:"9";s:3:" se";s:2:"10";s:3:" er";s:2:"11";s:3:" og";s:2:"12";s:3:"ar ";s:2:"13";s:3:"og ";s:2:"14";s:3:"ver";s:2:"15";s:3:" mi";s:2:"16";s:3:"inn";s:2:"17";s:3:"nn ";s:2:"18";s:3:" fy";s:2:"19";s:3:"er ";s:2:"20";s:3:"fyr";s:2:"21";s:3:" ek";s:2:"22";s:3:" en";s:2:"23";s:3:" ha";s:2:"24";s:3:" he";s:2:"25";s:3:"ekk";s:2:"26";s:3:" st";s:2:"27";s:3:"ki ";s:2:"28";s:3:"st ";s:2:"29";s:4:"ði ";s:2:"30";s:3:" ba";s:2:"31";s:3:" me";s:2:"32";s:3:" vi";s:2:"33";s:3:"ig ";s:2:"34";s:3:"rir";s:2:"35";s:3:"yri";s:2:"36";s:3:" um";s:2:"37";s:3:"g f";s:2:"38";s:3:"leg";s:2:"39";s:3:"lei";s:2:"40";s:3:"ns ";s:2:"41";s:4:"ð s";s:2:"42";s:3:" ei";s:2:"43";s:4:" þa";s:2:"44";s:3:"in ";s:2:"45";s:3:"kki";s:2:"46";s:3:"r h";s:2:"47";s:3:"r s";s:2:"48";s:3:"egi";s:2:"49";s:3:"ein";s:2:"50";s:3:"ga ";s:2:"51";s:3:"ing";s:2:"52";s:3:"ra ";s:2:"53";s:3:"sta";s:2:"54";s:3:" va";s:2:"55";s:4:" þe";s:2:"56";s:3:"ann";s:2:"57";s:3:"en ";s:2:"58";s:3:"mil";s:2:"59";s:3:"sem";s:2:"60";s:4:"tjó";s:2:"61";s:4:"arð";s:2:"62";s:3:"di ";s:2:"63";s:3:"eit";s:2:"64";s:3:"haf";s:2:"65";s:3:"ill";s:2:"66";s:3:"ins";s:2:"67";s:3:"ist";s:2:"68";s:3:"llj";s:2:"69";s:3:"ndi";s:2:"70";s:3:"r a";s:2:"71";s:3:"r e";s:2:"72";s:3:"seg";s:2:"73";s:3:"un ";s:2:"74";s:3:"var";s:2:"75";s:3:" bi";s:2:"76";s:3:" el";s:2:"77";s:3:" fo";s:2:"78";s:3:" ge";s:2:"79";s:3:" yf";s:2:"80";s:3:"and";s:2:"81";s:3:"aug";s:2:"82";s:3:"bau";s:2:"83";s:3:"big";s:2:"84";s:3:"ega";s:2:"85";s:3:"eld";s:2:"86";s:4:"erð";s:2:"87";s:3:"fir";s:2:"88";s:3:"foo";s:2:"89";s:3:"gin";s:2:"90";s:3:"itt";s:2:"91";s:3:"n s";s:2:"92";s:3:"ngi";s:2:"93";s:3:"num";s:2:"94";s:3:"od ";s:2:"95";s:3:"ood";s:2:"96";s:3:"sin";s:2:"97";s:3:"ta ";s:2:"98";s:3:"tt ";s:2:"99";s:4:"við";s:3:"100";s:3:"yfi";s:3:"101";s:4:"ð e";s:3:"102";s:4:"ð f";s:3:"103";s:3:" hr";s:3:"104";s:4:" sé";s:3:"105";s:4:" þv";s:3:"106";s:3:"a e";s:3:"107";s:4:"a á";s:3:"108";s:3:"em ";s:3:"109";s:3:"gi ";s:3:"110";s:3:"i f";s:3:"111";s:3:"jar";s:3:"112";s:4:"jór";s:3:"113";s:3:"lja";s:3:"114";s:3:"m e";s:3:"115";s:4:"r á";s:3:"116";s:3:"rei";s:3:"117";s:3:"rst";s:3:"118";s:4:"rða";s:3:"119";s:4:"rði";s:3:"120";s:4:"rðu";s:3:"121";s:3:"stj";s:3:"122";s:3:"und";s:3:"123";s:3:"veg";s:3:"124";s:4:"ví ";s:3:"125";s:4:"ð v";s:3:"126";s:5:"það";s:3:"127";s:5:"því";s:3:"128";s:3:" fj";s:3:"129";s:3:" ko";s:3:"130";s:3:" sl";s:3:"131";s:3:"eik";s:3:"132";s:3:"end";s:3:"133";s:3:"ert";s:3:"134";s:3:"ess";s:3:"135";s:4:"fjá";s:3:"136";s:3:"fur";s:3:"137";s:3:"gir";s:3:"138";s:4:"hús";s:3:"139";s:4:"jár";s:3:"140";s:3:"n e";s:3:"141";s:3:"ri ";s:3:"142";s:3:"tar";s:3:"143";s:5:"ð þ";s:3:"144";s:4:"ðar";s:3:"145";s:4:"ður";s:3:"146";s:4:"þes";s:3:"147";s:3:" br";s:3:"148";s:4:" hú";s:3:"149";s:3:" kr";s:3:"150";s:3:" le";s:3:"151";s:3:" up";s:3:"152";s:3:"a s";s:3:"153";s:3:"egg";s:3:"154";s:3:"i s";s:3:"155";s:3:"irt";s:3:"156";s:3:"ja ";s:3:"157";s:4:"kið";s:3:"158";s:3:"len";s:3:"159";s:4:"með";s:3:"160";s:3:"mik";s:3:"161";s:3:"n b";s:3:"162";s:3:"nar";s:3:"163";s:3:"nir";s:3:"164";s:3:"nun";s:3:"165";s:3:"r f";s:3:"166";s:3:"r v";s:3:"167";s:4:"rið";s:3:"168";s:3:"rt ";s:3:"169";s:3:"sti";s:3:"170";s:3:"t v";s:3:"171";s:3:"ti ";s:3:"172";s:3:"una";s:3:"173";s:3:"upp";s:3:"174";s:4:"ða ";s:3:"175";s:4:"óna";s:3:"176";s:3:" al";s:3:"177";s:3:" fr";s:3:"178";s:3:" gr";s:3:"179";s:3:"a v";s:3:"180";s:3:"all";s:3:"181";s:3:"an ";s:3:"182";s:3:"da ";s:3:"183";s:4:"eið";s:3:"184";s:4:"eð ";s:3:"185";s:3:"fa ";s:3:"186";s:3:"fra";s:3:"187";s:3:"g e";s:3:"188";s:3:"ger";s:3:"189";s:4:"gið";s:3:"190";s:3:"gt ";s:3:"191";s:3:"han";s:3:"192";s:3:"hef";s:3:"193";s:3:"hel";s:3:"194";s:3:"her";s:3:"195";s:3:"hra";s:3:"196";s:3:"i a";s:3:"197";s:3:"i e";s:3:"198";s:3:"i v";s:3:"199";s:4:"i þ";s:3:"200";s:3:"iki";s:3:"201";s:4:"jón";s:3:"202";s:4:"jör";s:3:"203";s:3:"ka ";s:3:"204";s:4:"kró";s:3:"205";s:4:"lík";s:3:"206";s:3:"m h";s:3:"207";s:3:"n a";s:3:"208";s:3:"nga";s:3:"209";s:3:"r l";s:3:"210";s:3:"ram";s:3:"211";s:3:"ru ";s:3:"212";s:5:"ráð";s:3:"213";s:4:"rón";s:3:"214";s:3:"svo";s:3:"215";s:3:"vin";s:3:"216";s:4:"í b";s:3:"217";s:4:"í h";s:3:"218";s:4:"ð h";s:3:"219";s:4:"ð k";s:3:"220";s:4:"ð m";s:3:"221";s:5:"örð";s:3:"222";s:3:" af";s:3:"223";s:3:" fa";s:3:"224";s:4:" lí";s:3:"225";s:4:" rá";s:3:"226";s:3:" sk";s:3:"227";s:3:" sv";s:3:"228";s:3:" te";s:3:"229";s:3:"a b";s:3:"230";s:3:"a f";s:3:"231";s:3:"a h";s:3:"232";s:3:"a k";s:3:"233";s:3:"a u";s:3:"234";s:3:"afi";s:3:"235";s:3:"agn";s:3:"236";s:3:"arn";s:3:"237";s:3:"ast";s:3:"238";s:3:"ber";s:3:"239";s:3:"efu";s:3:"240";s:3:"enn";s:3:"241";s:3:"erb";s:3:"242";s:3:"erg";s:3:"243";s:3:"fi ";s:3:"244";s:3:"g a";s:3:"245";s:3:"gar";s:3:"246";s:4:"iðs";s:3:"247";s:3:"ker";s:3:"248";s:3:"kke";s:3:"249";s:3:"lan";s:3:"250";s:4:"ljó";s:3:"251";s:3:"llt";s:3:"252";s:3:"ma ";s:3:"253";s:4:"mið";s:3:"254";s:3:"n v";s:3:"255";s:4:"n í";s:3:"256";s:3:"nan";s:3:"257";s:3:"nda";s:3:"258";s:3:"ndu";s:3:"259";s:4:"nið";s:3:"260";s:3:"nna";s:3:"261";s:3:"nnu";s:3:"262";s:3:"nu ";s:3:"263";s:3:"r o";s:3:"264";s:3:"rbe";s:3:"265";s:3:"rgi";s:3:"266";s:4:"slö";s:3:"267";s:4:"sé ";s:3:"268";s:3:"t a";s:3:"269";s:3:"t h";s:3:"270";s:3:"til";s:3:"271";s:3:"tin";s:3:"272";s:3:"ugu";s:3:"273";s:3:"vil";s:3:"274";s:3:"ygg";s:3:"275";s:4:"á s";s:3:"276";s:4:"ð a";s:3:"277";s:4:"ð b";s:3:"278";s:4:"órn";s:3:"279";s:4:"ögn";s:3:"280";s:4:"öku";s:3:"281";s:3:" at";s:3:"282";s:3:" fi";s:3:"283";s:4:" fé";s:3:"284";s:3:" ka";s:3:"285";s:3:" ma";s:3:"286";s:3:" no";s:3:"287";s:3:" sa";s:3:"288";s:3:" si";s:3:"289";s:3:" ti";s:3:"290";s:4:" ák";s:3:"291";s:3:"a m";s:3:"292";s:3:"a t";s:3:"293";s:4:"a í";s:3:"294";s:4:"a þ";s:3:"295";s:3:"afa";s:3:"296";s:3:"afs";s:3:"297";s:3:"ald";s:3:"298";s:3:"arf";s:3:"299";}s:10:"indonesian";a:300:{s:3:"an ";s:1:"0";s:3:" me";s:1:"1";s:3:"kan";s:1:"2";s:3:"ang";s:1:"3";s:3:"ng ";s:1:"4";s:3:" pe";s:1:"5";s:3:"men";s:1:"6";s:3:" di";s:1:"7";s:3:" ke";s:1:"8";s:3:" da";s:1:"9";s:3:" se";s:2:"10";s:3:"eng";s:2:"11";s:3:" be";s:2:"12";s:3:"nga";s:2:"13";s:3:"nya";s:2:"14";s:3:" te";s:2:"15";s:3:"ah ";s:2:"16";s:3:"ber";s:2:"17";s:3:"aka";s:2:"18";s:3:" ya";s:2:"19";s:3:"dan";s:2:"20";s:3:"di ";s:2:"21";s:3:"yan";s:2:"22";s:3:"n p";s:2:"23";s:3:"per";s:2:"24";s:3:"a m";s:2:"25";s:3:"ita";s:2:"26";s:3:" pa";s:2:"27";s:3:"da ";s:2:"28";s:3:"ata";s:2:"29";s:3:"ada";s:2:"30";s:3:"ya ";s:2:"31";s:3:"ta ";s:2:"32";s:3:" in";s:2:"33";s:3:"ala";s:2:"34";s:3:"eri";s:2:"35";s:3:"ia ";s:2:"36";s:3:"a d";s:2:"37";s:3:"n k";s:2:"38";s:3:"am ";s:2:"39";s:3:"ga ";s:2:"40";s:3:"at ";s:2:"41";s:3:"era";s:2:"42";s:3:"n d";s:2:"43";s:3:"ter";s:2:"44";s:3:" ka";s:2:"45";s:3:"a p";s:2:"46";s:3:"ari";s:2:"47";s:3:"emb";s:2:"48";s:3:"n m";s:2:"49";s:3:"ri ";s:2:"50";s:3:" ba";s:2:"51";s:3:"aan";s:2:"52";s:3:"ak ";s:2:"53";s:3:"ra ";s:2:"54";s:3:" it";s:2:"55";s:3:"ara";s:2:"56";s:3:"ela";s:2:"57";s:3:"ni ";s:2:"58";s:3:"ali";s:2:"59";s:3:"ran";s:2:"60";s:3:"ar ";s:2:"61";s:3:"eru";s:2:"62";s:3:"lah";s:2:"63";s:3:"a b";s:2:"64";s:3:"asi";s:2:"65";s:3:"awa";s:2:"66";s:3:"eba";s:2:"67";s:3:"gan";s:2:"68";s:3:"n b";s:2:"69";s:3:" ha";s:2:"70";s:3:"ini";s:2:"71";s:3:"mer";s:2:"72";s:3:" la";s:2:"73";s:3:" mi";s:2:"74";s:3:"and";s:2:"75";s:3:"ena";s:2:"76";s:3:"wan";s:2:"77";s:3:" sa";s:2:"78";s:3:"aha";s:2:"79";s:3:"lam";s:2:"80";s:3:"n i";s:2:"81";s:3:"nda";s:2:"82";s:3:" wa";s:2:"83";s:3:"a i";s:2:"84";s:3:"dua";s:2:"85";s:3:"g m";s:2:"86";s:3:"mi ";s:2:"87";s:3:"n a";s:2:"88";s:3:"rus";s:2:"89";s:3:"tel";s:2:"90";s:3:"yak";s:2:"91";s:3:" an";s:2:"92";s:3:"dal";s:2:"93";s:3:"h d";s:2:"94";s:3:"i s";s:2:"95";s:3:"ing";s:2:"96";s:3:"min";s:2:"97";s:3:"ngg";s:2:"98";s:3:"tak";s:2:"99";s:3:"ami";s:3:"100";s:3:"beb";s:3:"101";s:3:"den";s:3:"102";s:3:"gat";s:3:"103";s:3:"ian";s:3:"104";s:3:"ih ";s:3:"105";s:3:"pad";s:3:"106";s:3:"rga";s:3:"107";s:3:"san";s:3:"108";s:3:"ua ";s:3:"109";s:3:" de";s:3:"110";s:3:"a t";s:3:"111";s:3:"arg";s:3:"112";s:3:"dar";s:3:"113";s:3:"elu";s:3:"114";s:3:"har";s:3:"115";s:3:"i k";s:3:"116";s:3:"i m";s:3:"117";s:3:"i p";s:3:"118";s:3:"ika";s:3:"119";s:3:"in ";s:3:"120";s:3:"iny";s:3:"121";s:3:"itu";s:3:"122";s:3:"mba";s:3:"123";s:3:"n t";s:3:"124";s:3:"ntu";s:3:"125";s:3:"pan";s:3:"126";s:3:"pen";s:3:"127";s:3:"sah";s:3:"128";s:3:"tan";s:3:"129";s:3:"tu ";s:3:"130";s:3:"a k";s:3:"131";s:3:"ban";s:3:"132";s:3:"edu";s:3:"133";s:3:"eka";s:3:"134";s:3:"g d";s:3:"135";s:3:"ka ";s:3:"136";s:3:"ker";s:3:"137";s:3:"nde";s:3:"138";s:3:"nta";s:3:"139";s:3:"ora";s:3:"140";s:3:"usa";s:3:"141";s:3:" du";s:3:"142";s:3:" ma";s:3:"143";s:3:"a s";s:3:"144";s:3:"ai ";s:3:"145";s:3:"ant";s:3:"146";s:3:"bas";s:3:"147";s:3:"end";s:3:"148";s:3:"i d";s:3:"149";s:3:"ira";s:3:"150";s:3:"kam";s:3:"151";s:3:"lan";s:3:"152";s:3:"n s";s:3:"153";s:3:"uli";s:3:"154";s:3:"al ";s:3:"155";s:3:"apa";s:3:"156";s:3:"ere";s:3:"157";s:3:"ert";s:3:"158";s:3:"lia";s:3:"159";s:3:"mem";s:3:"160";s:3:"rka";s:3:"161";s:3:"si ";s:3:"162";s:3:"tal";s:3:"163";s:3:"ung";s:3:"164";s:3:" ak";s:3:"165";s:3:"a a";s:3:"166";s:3:"a w";s:3:"167";s:3:"ani";s:3:"168";s:3:"ask";s:3:"169";s:3:"ent";s:3:"170";s:3:"gar";s:3:"171";s:3:"haa";s:3:"172";s:3:"i i";s:3:"173";s:3:"isa";s:3:"174";s:3:"ked";s:3:"175";s:3:"mbe";s:3:"176";s:3:"ska";s:3:"177";s:3:"tor";s:3:"178";s:3:"uan";s:3:"179";s:3:"uk ";s:3:"180";s:3:"uka";s:3:"181";s:3:" ad";s:3:"182";s:3:" to";s:3:"183";s:3:"asa";s:3:"184";s:3:"aya";s:3:"185";s:3:"bag";s:3:"186";s:3:"dia";s:3:"187";s:3:"dun";s:3:"188";s:3:"erj";s:3:"189";s:3:"mas";s:3:"190";s:3:"na ";s:3:"191";s:3:"rek";s:3:"192";s:3:"rit";s:3:"193";s:3:"sih";s:3:"194";s:3:"us ";s:3:"195";s:3:" bi";s:3:"196";s:3:"a h";s:3:"197";s:3:"ama";s:3:"198";s:3:"dib";s:3:"199";s:3:"ers";s:3:"200";s:3:"g s";s:3:"201";s:3:"han";s:3:"202";s:3:"ik ";s:3:"203";s:3:"kem";s:3:"204";s:3:"ma ";s:3:"205";s:3:"n l";s:3:"206";s:3:"nit";s:3:"207";s:3:"r b";s:3:"208";s:3:"rja";s:3:"209";s:3:"sa ";s:3:"210";s:3:" ju";s:3:"211";s:3:" or";s:3:"212";s:3:" si";s:3:"213";s:3:" ti";s:3:"214";s:3:"a y";s:3:"215";s:3:"aga";s:3:"216";s:3:"any";s:3:"217";s:3:"as ";s:3:"218";s:3:"cul";s:3:"219";s:3:"eme";s:3:"220";s:3:"emu";s:3:"221";s:3:"eny";s:3:"222";s:3:"epa";s:3:"223";s:3:"erb";s:3:"224";s:3:"erl";s:3:"225";s:3:"gi ";s:3:"226";s:3:"h m";s:3:"227";s:3:"i a";s:3:"228";s:3:"kel";s:3:"229";s:3:"li ";s:3:"230";s:3:"mel";s:3:"231";s:3:"nia";s:3:"232";s:3:"opa";s:3:"233";s:3:"rta";s:3:"234";s:3:"sia";s:3:"235";s:3:"tah";s:3:"236";s:3:"ula";s:3:"237";s:3:"un ";s:3:"238";s:3:"unt";s:3:"239";s:3:" at";s:3:"240";s:3:" bu";s:3:"241";s:3:" pu";s:3:"242";s:3:" ta";s:3:"243";s:3:"agi";s:3:"244";s:3:"alu";s:3:"245";s:3:"amb";s:3:"246";s:3:"bah";s:3:"247";s:3:"bis";s:3:"248";s:3:"er ";s:3:"249";s:3:"i t";s:3:"250";s:3:"ibe";s:3:"251";s:3:"ir ";s:3:"252";s:3:"ja ";s:3:"253";s:3:"k m";s:3:"254";s:3:"kar";s:3:"255";s:3:"lai";s:3:"256";s:3:"lal";s:3:"257";s:3:"lu ";s:3:"258";s:3:"mpa";s:3:"259";s:3:"ngk";s:3:"260";s:3:"nja";s:3:"261";s:3:"or ";s:3:"262";s:3:"pa ";s:3:"263";s:3:"pas";s:3:"264";s:3:"pem";s:3:"265";s:3:"rak";s:3:"266";s:3:"rik";s:3:"267";s:3:"seb";s:3:"268";s:3:"tam";s:3:"269";s:3:"tem";s:3:"270";s:3:"top";s:3:"271";s:3:"tuk";s:3:"272";s:3:"uni";s:3:"273";s:3:"war";s:3:"274";s:3:" al";s:3:"275";s:3:" ga";s:3:"276";s:3:" ge";s:3:"277";s:3:" ir";s:3:"278";s:3:" ja";s:3:"279";s:3:" mu";s:3:"280";s:3:" na";s:3:"281";s:3:" pr";s:3:"282";s:3:" su";s:3:"283";s:3:" un";s:3:"284";s:3:"ad ";s:3:"285";s:3:"adi";s:3:"286";s:3:"akt";s:3:"287";s:3:"ann";s:3:"288";s:3:"apo";s:3:"289";s:3:"bel";s:3:"290";s:3:"bul";s:3:"291";s:3:"der";s:3:"292";s:3:"ega";s:3:"293";s:3:"eke";s:3:"294";s:3:"ema";s:3:"295";s:3:"emp";s:3:"296";s:3:"ene";s:3:"297";s:3:"enj";s:3:"298";s:3:"esa";s:3:"299";}s:7:"italian";a:300:{s:3:" di";s:1:"0";s:3:"to ";s:1:"1";s:3:"la ";s:1:"2";s:3:" de";s:1:"3";s:3:"di ";s:1:"4";s:3:"no ";s:1:"5";s:3:" co";s:1:"6";s:3:"re ";s:1:"7";s:3:"ion";s:1:"8";s:3:"e d";s:1:"9";s:3:" e ";s:2:"10";s:3:"le ";s:2:"11";s:3:"del";s:2:"12";s:3:"ne ";s:2:"13";s:3:"ti ";s:2:"14";s:3:"ell";s:2:"15";s:3:" la";s:2:"16";s:3:" un";s:2:"17";s:3:"ni ";s:2:"18";s:3:"i d";s:2:"19";s:3:"per";s:2:"20";s:3:" pe";s:2:"21";s:3:"ent";s:2:"22";s:3:" in";s:2:"23";s:3:"one";s:2:"24";s:3:"he ";s:2:"25";s:3:"ta ";s:2:"26";s:3:"zio";s:2:"27";s:3:"che";s:2:"28";s:3:"o d";s:2:"29";s:3:"a d";s:2:"30";s:3:"na ";s:2:"31";s:3:"ato";s:2:"32";s:3:"e s";s:2:"33";s:3:" so";s:2:"34";s:3:"i s";s:2:"35";s:3:"lla";s:2:"36";s:3:"a p";s:2:"37";s:3:"li ";s:2:"38";s:3:"te ";s:2:"39";s:3:" al";s:2:"40";s:3:" ch";s:2:"41";s:3:"er ";s:2:"42";s:3:" pa";s:2:"43";s:3:" si";s:2:"44";s:3:"con";s:2:"45";s:3:"sta";s:2:"46";s:3:" pr";s:2:"47";s:3:"a c";s:2:"48";s:3:" se";s:2:"49";s:3:"el ";s:2:"50";s:3:"ia ";s:2:"51";s:3:"si ";s:2:"52";s:3:"e p";s:2:"53";s:3:" da";s:2:"54";s:3:"e i";s:2:"55";s:3:"i p";s:2:"56";s:3:"ont";s:2:"57";s:3:"ano";s:2:"58";s:3:"i c";s:2:"59";s:3:"all";s:2:"60";s:3:"azi";s:2:"61";s:3:"nte";s:2:"62";s:3:"on ";s:2:"63";s:3:"nti";s:2:"64";s:3:"o s";s:2:"65";s:3:" ri";s:2:"66";s:3:"i a";s:2:"67";s:3:"o a";s:2:"68";s:3:"un ";s:2:"69";s:3:" an";s:2:"70";s:3:"are";s:2:"71";s:3:"ari";s:2:"72";s:3:"e a";s:2:"73";s:3:"i e";s:2:"74";s:3:"ita";s:2:"75";s:3:"men";s:2:"76";s:3:"ri ";s:2:"77";s:3:" ca";s:2:"78";s:3:" il";s:2:"79";s:3:" no";s:2:"80";s:3:" po";s:2:"81";s:3:"a s";s:2:"82";s:3:"ant";s:2:"83";s:3:"il ";s:2:"84";s:3:"in ";s:2:"85";s:3:"a l";s:2:"86";s:3:"ati";s:2:"87";s:3:"cia";s:2:"88";s:3:"e c";s:2:"89";s:3:"ro ";s:2:"90";s:3:"ann";s:2:"91";s:3:"est";s:2:"92";s:3:"gli";s:2:"93";s:4:"tà ";s:2:"94";s:3:" qu";s:2:"95";s:3:"e l";s:2:"96";s:3:"nta";s:2:"97";s:3:" a ";s:2:"98";s:3:"com";s:2:"99";s:3:"o c";s:3:"100";s:3:"ra ";s:3:"101";s:3:" le";s:3:"102";s:3:" ne";s:3:"103";s:3:"ali";s:3:"104";s:3:"ere";s:3:"105";s:3:"ist";s:3:"106";s:3:" ma";s:3:"107";s:4:" è ";s:3:"108";s:3:"io ";s:3:"109";s:3:"lle";s:3:"110";s:3:"me ";s:3:"111";s:3:"era";s:3:"112";s:3:"ica";s:3:"113";s:3:"ost";s:3:"114";s:3:"pro";s:3:"115";s:3:"tar";s:3:"116";s:3:"una";s:3:"117";s:3:" pi";s:3:"118";s:3:"da ";s:3:"119";s:3:"tat";s:3:"120";s:3:" mi";s:3:"121";s:3:"att";s:3:"122";s:3:"ca ";s:3:"123";s:3:"mo ";s:3:"124";s:3:"non";s:3:"125";s:3:"par";s:3:"126";s:3:"sti";s:3:"127";s:3:" fa";s:3:"128";s:3:" i ";s:3:"129";s:3:" re";s:3:"130";s:3:" su";s:3:"131";s:3:"ess";s:3:"132";s:3:"ini";s:3:"133";s:3:"nto";s:3:"134";s:3:"o l";s:3:"135";s:3:"ssi";s:3:"136";s:3:"tto";s:3:"137";s:3:"a e";s:3:"138";s:3:"ame";s:3:"139";s:3:"col";s:3:"140";s:3:"ei ";s:3:"141";s:3:"ma ";s:3:"142";s:3:"o i";s:3:"143";s:3:"za ";s:3:"144";s:3:" st";s:3:"145";s:3:"a a";s:3:"146";s:3:"ale";s:3:"147";s:3:"anc";s:3:"148";s:3:"ani";s:3:"149";s:3:"i m";s:3:"150";s:3:"ian";s:3:"151";s:3:"o p";s:3:"152";s:3:"oni";s:3:"153";s:3:"sio";s:3:"154";s:3:"tan";s:3:"155";s:3:"tti";s:3:"156";s:3:" lo";s:3:"157";s:3:"i r";s:3:"158";s:3:"oci";s:3:"159";s:3:"oli";s:3:"160";s:3:"ona";s:3:"161";s:3:"ono";s:3:"162";s:3:"tra";s:3:"163";s:3:" l ";s:3:"164";s:3:"a r";s:3:"165";s:3:"eri";s:3:"166";s:3:"ett";s:3:"167";s:3:"lo ";s:3:"168";s:3:"nza";s:3:"169";s:3:"que";s:3:"170";s:3:"str";s:3:"171";s:3:"ter";s:3:"172";s:3:"tta";s:3:"173";s:3:" ba";s:3:"174";s:3:" li";s:3:"175";s:3:" te";s:3:"176";s:3:"ass";s:3:"177";s:3:"e f";s:3:"178";s:3:"enz";s:3:"179";s:3:"for";s:3:"180";s:3:"nno";s:3:"181";s:3:"olo";s:3:"182";s:3:"ori";s:3:"183";s:3:"res";s:3:"184";s:3:"tor";s:3:"185";s:3:" ci";s:3:"186";s:3:" vo";s:3:"187";s:3:"a i";s:3:"188";s:3:"al ";s:3:"189";s:3:"chi";s:3:"190";s:3:"e n";s:3:"191";s:3:"lia";s:3:"192";s:3:"pre";s:3:"193";s:3:"ria";s:3:"194";s:3:"uni";s:3:"195";s:3:"ver";s:3:"196";s:3:" sp";s:3:"197";s:3:"imo";s:3:"198";s:3:"l a";s:3:"199";s:3:"l c";s:3:"200";s:3:"ran";s:3:"201";s:3:"sen";s:3:"202";s:3:"soc";s:3:"203";s:3:"tic";s:3:"204";s:3:" fi";s:3:"205";s:3:" mo";s:3:"206";s:3:"a n";s:3:"207";s:3:"ce ";s:3:"208";s:3:"dei";s:3:"209";s:3:"ggi";s:3:"210";s:3:"gio";s:3:"211";s:3:"iti";s:3:"212";s:3:"l s";s:3:"213";s:3:"lit";s:3:"214";s:3:"ll ";s:3:"215";s:3:"mon";s:3:"216";s:3:"ola";s:3:"217";s:3:"pac";s:3:"218";s:3:"sim";s:3:"219";s:3:"tit";s:3:"220";s:3:"utt";s:3:"221";s:3:"vol";s:3:"222";s:3:" ar";s:3:"223";s:3:" fo";s:3:"224";s:3:" ha";s:3:"225";s:3:" sa";s:3:"226";s:3:"acc";s:3:"227";s:3:"e r";s:3:"228";s:3:"ire";s:3:"229";s:3:"man";s:3:"230";s:3:"ntr";s:3:"231";s:3:"rat";s:3:"232";s:3:"sco";s:3:"233";s:3:"tro";s:3:"234";s:3:"tut";s:3:"235";s:3:"va ";s:3:"236";s:3:" do";s:3:"237";s:3:" gi";s:3:"238";s:3:" me";s:3:"239";s:3:" sc";s:3:"240";s:3:" tu";s:3:"241";s:3:" ve";s:3:"242";s:3:" vi";s:3:"243";s:3:"a m";s:3:"244";s:3:"ber";s:3:"245";s:3:"can";s:3:"246";s:3:"cit";s:3:"247";s:3:"i l";s:3:"248";s:3:"ier";s:3:"249";s:4:"ità";s:3:"250";s:3:"lli";s:3:"251";s:3:"min";s:3:"252";s:3:"n p";s:3:"253";s:3:"nat";s:3:"254";s:3:"nda";s:3:"255";s:3:"o e";s:3:"256";s:3:"o f";s:3:"257";s:3:"o u";s:3:"258";s:3:"ore";s:3:"259";s:3:"oro";s:3:"260";s:3:"ort";s:3:"261";s:3:"sto";s:3:"262";s:3:"ten";s:3:"263";s:3:"tiv";s:3:"264";s:3:"van";s:3:"265";s:3:"art";s:3:"266";s:3:"cco";s:3:"267";s:3:"ci ";s:3:"268";s:3:"cos";s:3:"269";s:3:"dal";s:3:"270";s:3:"e v";s:3:"271";s:3:"i i";s:3:"272";s:3:"ila";s:3:"273";s:3:"ino";s:3:"274";s:3:"l p";s:3:"275";s:3:"n c";s:3:"276";s:3:"nit";s:3:"277";s:3:"ole";s:3:"278";s:3:"ome";s:3:"279";s:3:"po ";s:3:"280";s:3:"rio";s:3:"281";s:3:"sa ";s:3:"282";s:3:" ce";s:3:"283";s:3:" es";s:3:"284";s:3:" tr";s:3:"285";s:3:"a b";s:3:"286";s:3:"and";s:3:"287";s:3:"ata";s:3:"288";s:3:"der";s:3:"289";s:3:"ens";s:3:"290";s:3:"ers";s:3:"291";s:3:"gi ";s:3:"292";s:3:"ial";s:3:"293";s:3:"ina";s:3:"294";s:3:"itt";s:3:"295";s:3:"izi";s:3:"296";s:3:"lan";s:3:"297";s:3:"lor";s:3:"298";s:3:"mil";s:3:"299";}s:6:"kazakh";a:300:{s:5:"ан ";s:1:"0";s:5:"ен ";s:1:"1";s:5:"Ñ‹Ò£ ";s:1:"2";s:5:" қа";s:1:"3";s:5:" ба";s:1:"4";s:5:"ай ";s:1:"5";s:6:"нда";s:1:"6";s:5:"ын ";s:1:"7";s:5:" Ñа";s:1:"8";s:5:" ал";s:1:"9";s:5:"ді ";s:2:"10";s:6:"ары";s:2:"11";s:5:"ды ";s:2:"12";s:5:"ып ";s:2:"13";s:5:" мұ";s:2:"14";s:5:" бі";s:2:"15";s:6:"аÑÑ‹";s:2:"16";s:5:"да ";s:2:"17";s:6:"най";s:2:"18";s:5:" жа";s:2:"19";s:6:"мұн";s:2:"20";s:6:"Ñта";s:2:"21";s:6:"ған";s:2:"22";s:5:"н б";s:2:"23";s:6:"ұна";s:2:"24";s:5:" бо";s:2:"25";s:6:"ның";s:2:"26";s:5:"ін ";s:2:"27";s:6:"лар";s:2:"28";s:6:"Ñын";s:2:"29";s:5:" де";s:2:"30";s:6:"аға";s:2:"31";s:6:"тан";s:2:"32";s:5:" кө";s:2:"33";s:6:"бір";s:2:"34";s:5:"ер ";s:2:"35";s:6:"мен";s:2:"36";s:6:"аза";s:2:"37";s:6:"ынд";s:2:"38";s:6:"ыны";s:2:"39";s:5:" ме";s:2:"40";s:6:"анд";s:2:"41";s:6:"ері";s:2:"42";s:6:"бол";s:2:"43";s:6:"дың";s:2:"44";s:6:"қаз";s:2:"45";s:6:"аты";s:2:"46";s:5:"ÑÑ‹ ";s:2:"47";s:6:"тын";s:2:"48";s:5:"Ò“Ñ‹ ";s:2:"49";s:5:" ке";s:2:"50";s:5:"ар ";s:2:"51";s:6:"зақ";s:2:"52";s:5:"Ñ‹Ò› ";s:2:"53";s:6:"ала";s:2:"54";s:6:"алы";s:2:"55";s:6:"аны";s:2:"56";s:6:"ара";s:2:"57";s:6:"ағы";s:2:"58";s:6:"ген";s:2:"59";s:6:"тар";s:2:"60";s:6:"тер";s:2:"61";s:6:"Ñ‚Ñ‹Ñ€";s:2:"62";s:6:"айд";s:2:"63";s:6:"ард";s:2:"64";s:5:"де ";s:2:"65";s:5:"ға ";s:2:"66";s:5:" қо";s:2:"67";s:6:"бар";s:2:"68";s:5:"Ñ–Ò£ ";s:2:"69";s:6:"қан";s:2:"70";s:5:" бе";s:2:"71";s:5:" қы";s:2:"72";s:6:"ақÑ";s:2:"73";s:6:"гер";s:2:"74";s:6:"дан";s:2:"75";s:6:"дар";s:2:"76";s:6:"лық";s:2:"77";s:6:"лға";s:2:"78";s:6:"ына";s:2:"79";s:5:"Ñ–Ñ€ ";s:2:"80";s:6:"ірі";s:2:"81";s:6:"ғаÑ";s:2:"82";s:5:" та";s:2:"83";s:5:"а б";s:2:"84";s:5:"гі ";s:2:"85";s:6:"еді";s:2:"86";s:6:"еле";s:2:"87";s:6:"йды";s:2:"88";s:5:"н к";s:2:"89";s:5:"н Ñ‚";s:2:"90";s:6:"ола";s:2:"91";s:6:"рын";s:2:"92";s:5:"іп ";s:2:"93";s:6:"Ò›ÑÑ‚";s:2:"94";s:6:"қта";s:2:"95";s:5:"Ò£ б";s:2:"96";s:5:" ай";s:2:"97";s:5:" ол";s:2:"98";s:5:" Ñо";s:2:"99";s:6:"айт";s:3:"100";s:6:"дағ";s:3:"101";s:6:"иге";s:3:"102";s:6:"лер";s:3:"103";s:6:"лып";s:3:"104";s:5:"н а";s:3:"105";s:5:"ік ";s:3:"106";s:6:"ақт";s:3:"107";s:6:"бағ";s:3:"108";s:6:"кен";s:3:"109";s:5:"н Ò›";s:3:"110";s:5:"ны ";s:3:"111";s:6:"рге";s:3:"112";s:6:"рға";s:3:"113";s:5:"Ñ‹Ñ€ ";s:3:"114";s:5:" ар";s:3:"115";s:6:"алғ";s:3:"116";s:6:"аÑа";s:3:"117";s:6:"баÑ";s:3:"118";s:6:"бер";s:3:"119";s:5:"ге ";s:3:"120";s:6:"еті";s:3:"121";s:5:"на ";s:3:"122";s:6:"нде";s:3:"123";s:5:"не ";s:3:"124";s:6:"ниг";s:3:"125";s:6:"рды";s:3:"126";s:5:"ры ";s:3:"127";s:6:"Ñай";s:3:"128";s:5:" ау";s:3:"129";s:5:" кү";s:3:"130";s:5:" ни";s:3:"131";s:5:" от";s:3:"132";s:5:" өз";s:3:"133";s:6:"ауд";s:3:"134";s:5:"еп ";s:3:"135";s:6:"иÑл";s:3:"136";s:6:"лты";s:3:"137";s:5:"н ж";s:3:"138";s:5:"н о";s:3:"139";s:6:"оÑÑ‹";s:3:"140";s:6:"оты";s:3:"141";s:6:"рып";s:3:"142";s:5:"рі ";s:3:"143";s:6:"тке";s:3:"144";s:5:"Ñ‚Ñ‹ ";s:3:"145";s:5:"Ñ‹ б";s:3:"146";s:5:"Ñ‹ ж";s:3:"147";s:6:"ылы";s:3:"148";s:6:"Ñ‹ÑÑ‹";s:3:"149";s:5:"Ñ– Ñ";s:3:"150";s:6:"қар";s:3:"151";s:5:" бұ";s:3:"152";s:5:" да";s:3:"153";s:5:" же";s:3:"154";s:5:" Ñ‚Ò±";s:3:"155";s:5:" Ò›Ò±";s:3:"156";s:6:"ады";s:3:"157";s:6:"айл";s:3:"158";s:5:"ап ";s:3:"159";s:6:"ата";s:3:"160";s:6:"ені";s:3:"161";s:6:"йла";s:3:"162";s:5:"н м";s:3:"163";s:5:"н Ñ";s:3:"164";s:6:"нды";s:3:"165";s:6:"нді";s:3:"166";s:5:"Ñ€ м";s:3:"167";s:6:"тай";s:3:"168";s:6:"тін";s:3:"169";s:5:"Ñ‹ Ñ‚";s:3:"170";s:5:"Ñ‹Ñ ";s:3:"171";s:6:"інд";s:3:"172";s:5:" би";s:3:"173";s:5:"а ж";s:3:"174";s:6:"ауы";s:3:"175";s:6:"деп";s:3:"176";s:6:"дің";s:3:"177";s:6:"еке";s:3:"178";s:6:"ери";s:3:"179";s:6:"йын";s:3:"180";s:6:"кел";s:3:"181";s:6:"лды";s:3:"182";s:5:"ма ";s:3:"183";s:6:"нан";s:3:"184";s:6:"оны";s:3:"185";s:5:"п ж";s:3:"186";s:5:"п о";s:3:"187";s:5:"Ñ€ б";s:3:"188";s:6:"риÑ";s:3:"189";s:6:"рла";s:3:"190";s:6:"уда";s:3:"191";s:6:"шыл";s:3:"192";s:5:"Ñ‹ а";s:3:"193";s:6:"ықт";s:3:"194";s:5:"Ñ– а";s:3:"195";s:5:"Ñ– б";s:3:"196";s:5:"із ";s:3:"197";s:6:"ілі";s:3:"198";s:5:"Ò£ Ò›";s:3:"199";s:5:" аÑ";s:3:"200";s:5:" ек";s:3:"201";s:5:" жо";s:3:"202";s:5:" мә";s:3:"203";s:5:" оÑ";s:3:"204";s:5:" ре";s:3:"205";s:5:" Ñе";s:3:"206";s:6:"алд";s:3:"207";s:6:"дал";s:3:"208";s:6:"дег";s:3:"209";s:6:"дей";s:3:"210";s:5:"е б";s:3:"211";s:5:"ет ";s:3:"212";s:6:"жаÑ";s:3:"213";s:5:"й б";s:3:"214";s:6:"лау";s:3:"215";s:6:"лда";s:3:"216";s:6:"мет";s:3:"217";s:6:"нын";s:3:"218";s:6:"Ñар";s:3:"219";s:5:"ÑÑ– ";s:3:"220";s:5:"Ñ‚Ñ– ";s:3:"221";s:6:"ыры";s:3:"222";s:6:"ыта";s:3:"223";s:6:"Ñ–ÑÑ–";s:3:"224";s:5:"Ò£ а";s:3:"225";s:6:"өте";s:3:"226";s:5:" ат";s:3:"227";s:5:" ел";s:3:"228";s:5:" жү";s:3:"229";s:5:" ма";s:3:"230";s:5:" то";s:3:"231";s:5:" шы";s:3:"232";s:5:"а а";s:3:"233";s:6:"алт";s:3:"234";s:6:"ама";s:3:"235";s:6:"арл";s:3:"236";s:6:"аÑÑ‚";s:3:"237";s:6:"бұл";s:3:"238";s:6:"дай";s:3:"239";s:6:"дық";s:3:"240";s:5:"ек ";s:3:"241";s:6:"ель";s:3:"242";s:6:"еÑÑ–";s:3:"243";s:6:"зді";s:3:"244";s:6:"көт";s:3:"245";s:6:"лем";s:3:"246";s:5:"ль ";s:3:"247";s:5:"н е";s:3:"248";s:5:"п а";s:3:"249";s:5:"Ñ€ а";s:3:"250";s:6:"реÑ";s:3:"251";s:5:"Ñа ";s:3:"252";s:5:"та ";s:3:"253";s:6:"тте";s:3:"254";s:6:"тұр";s:3:"255";s:5:"шы ";s:3:"256";s:5:"Ñ‹ д";s:3:"257";s:5:"Ñ‹ Ò›";s:3:"258";s:5:"ыз ";s:3:"259";s:6:"қыт";s:3:"260";s:5:" ко";s:3:"261";s:5:" не";s:3:"262";s:5:" ой";s:3:"263";s:5:" ор";s:3:"264";s:5:" ÑÒ±";s:3:"265";s:5:" Ñ‚Ò¯";s:3:"266";s:6:"аль";s:3:"267";s:6:"аре";s:3:"268";s:6:"атт";s:3:"269";s:6:"дір";s:3:"270";s:5:"ев ";s:3:"271";s:6:"егі";s:3:"272";s:6:"еда";s:3:"273";s:6:"екі";s:3:"274";s:6:"елд";s:3:"275";s:6:"ерг";s:3:"276";s:6:"ерд";s:3:"277";s:6:"иÑд";s:3:"278";s:6:"кер";s:3:"279";s:6:"кет";s:3:"280";s:6:"лыÑ";s:3:"281";s:6:"ліÑ";s:3:"282";s:6:"мед";s:3:"283";s:6:"мпи";s:3:"284";s:5:"н д";s:3:"285";s:5:"ні ";s:3:"286";s:6:"нін";s:3:"287";s:5:"п Ñ‚";s:3:"288";s:6:"пек";s:3:"289";s:6:"рел";s:3:"290";s:6:"рта";s:3:"291";s:6:"ріл";s:3:"292";s:6:"рін";s:3:"293";s:6:"Ñен";s:3:"294";s:6:"тал";s:3:"295";s:6:"шіл";s:3:"296";s:5:"Ñ‹ к";s:3:"297";s:5:"Ñ‹ м";s:3:"298";s:6:"Ñ‹ÑÑ‚";s:3:"299";}s:6:"kyrgyz";a:300:{s:5:"ын ";s:1:"0";s:5:"ан ";s:1:"1";s:5:" жа";s:1:"2";s:5:"ен ";s:1:"3";s:5:"да ";s:1:"4";s:5:" та";s:1:"5";s:5:"ар ";s:1:"6";s:5:"ин ";s:1:"7";s:5:" ка";s:1:"8";s:6:"ары";s:1:"9";s:5:" ал";s:2:"10";s:5:" ба";s:2:"11";s:5:" би";s:2:"12";s:6:"лар";s:2:"13";s:5:" бо";s:2:"14";s:5:" кы";s:2:"15";s:6:"ала";s:2:"16";s:5:"н к";s:2:"17";s:5:" Ñа";s:2:"18";s:6:"нда";s:2:"19";s:6:"ган";s:2:"20";s:6:"тар";s:2:"21";s:5:" де";s:2:"22";s:6:"анд";s:2:"23";s:5:"н б";s:2:"24";s:5:" ке";s:2:"25";s:6:"ард";s:2:"26";s:6:"мен";s:2:"27";s:5:"н Ñ‚";s:2:"28";s:6:"ара";s:2:"29";s:6:"нын";s:2:"30";s:5:" да";s:2:"31";s:5:" ме";s:2:"32";s:6:"кыр";s:2:"33";s:5:" че";s:2:"34";s:5:"н а";s:2:"35";s:5:"ры ";s:2:"36";s:5:" ко";s:2:"37";s:6:"ген";s:2:"38";s:6:"дар";s:2:"39";s:6:"кен";s:2:"40";s:6:"кта";s:2:"41";s:5:"уу ";s:2:"42";s:6:"ене";s:2:"43";s:6:"ери";s:2:"44";s:5:" ша";s:2:"45";s:6:"алы";s:2:"46";s:5:"ат ";s:2:"47";s:5:"на ";s:2:"48";s:5:" кө";s:2:"49";s:5:" Ñм";s:2:"50";s:6:"аты";s:2:"51";s:6:"дан";s:2:"52";s:6:"деп";s:2:"53";s:6:"дын";s:2:"54";s:5:"еп ";s:2:"55";s:6:"нен";s:2:"56";s:6:"рын";s:2:"57";s:5:" бе";s:2:"58";s:6:"кан";s:2:"59";s:6:"луу";s:2:"60";s:6:"ргы";s:2:"61";s:6:"тан";s:2:"62";s:6:"шай";s:2:"63";s:6:"ырг";s:2:"64";s:5:"үн ";s:2:"65";s:5:" ар";s:2:"66";s:5:" ма";s:2:"67";s:6:"агы";s:2:"68";s:6:"акт";s:2:"69";s:6:"аны";s:2:"70";s:5:"гы ";s:2:"71";s:6:"гыз";s:2:"72";s:5:"ды ";s:2:"73";s:6:"рда";s:2:"74";s:5:"ай ";s:2:"75";s:6:"бир";s:2:"76";s:6:"бол";s:2:"77";s:5:"ер ";s:2:"78";s:5:"н Ñ";s:2:"79";s:6:"нды";s:2:"80";s:5:"ун ";s:2:"81";s:5:"ча ";s:2:"82";s:6:"ынд";s:2:"83";s:5:"а к";s:2:"84";s:6:"ага";s:2:"85";s:6:"айл";s:2:"86";s:6:"ана";s:2:"87";s:5:"ап ";s:2:"88";s:5:"га ";s:2:"89";s:6:"лге";s:2:"90";s:6:"нча";s:2:"91";s:5:"п к";s:2:"92";s:6:"рды";s:2:"93";s:6:"туу";s:2:"94";s:6:"ыны";s:2:"95";s:5:" ан";s:2:"96";s:5:" өз";s:2:"97";s:6:"ама";s:2:"98";s:6:"ата";s:2:"99";s:6:"дин";s:3:"100";s:5:"йт ";s:3:"101";s:6:"лга";s:3:"102";s:6:"лоо";s:3:"103";s:5:"оо ";s:3:"104";s:5:"ри ";s:3:"105";s:6:"тин";s:3:"106";s:5:"ыз ";s:3:"107";s:5:"ып ";s:3:"108";s:6:"Ó©Ñ€Ò¯";s:3:"109";s:5:" па";s:3:"110";s:5:" Ñк";s:3:"111";s:5:"а б";s:3:"112";s:6:"алг";s:3:"113";s:6:"аÑÑ‹";s:3:"114";s:6:"ашт";s:3:"115";s:6:"биз";s:3:"116";s:6:"кел";s:3:"117";s:6:"кте";s:3:"118";s:6:"тал";s:3:"119";s:5:" не";s:3:"120";s:5:" Ñу";s:3:"121";s:6:"акы";s:3:"122";s:6:"ент";s:3:"123";s:6:"инд";s:3:"124";s:5:"ир ";s:3:"125";s:6:"кал";s:3:"126";s:5:"н д";s:3:"127";s:6:"нде";s:3:"128";s:6:"ого";s:3:"129";s:6:"онд";s:3:"130";s:6:"оюн";s:3:"131";s:5:"Ñ€ б";s:3:"132";s:5:"Ñ€ м";s:3:"133";s:6:"ран";s:3:"134";s:6:"Ñал";s:3:"135";s:6:"Ñта";s:3:"136";s:5:"ÑÑ‹ ";s:3:"137";s:6:"ура";s:3:"138";s:6:"ыгы";s:3:"139";s:5:" аш";s:3:"140";s:5:" ми";s:3:"141";s:5:" ÑÑ‹";s:3:"142";s:5:" ту";s:3:"143";s:5:"ал ";s:3:"144";s:6:"арт";s:3:"145";s:6:"бор";s:3:"146";s:6:"елг";s:3:"147";s:6:"ени";s:3:"148";s:5:"ет ";s:3:"149";s:6:"жат";s:3:"150";s:6:"йло";s:3:"151";s:6:"кар";s:3:"152";s:5:"н м";s:3:"153";s:6:"огу";s:3:"154";s:5:"п а";s:3:"155";s:5:"п ж";s:3:"156";s:5:"Ñ€ Ñ";s:3:"157";s:6:"Ñын";s:3:"158";s:5:"ык ";s:3:"159";s:6:"юнч";s:3:"160";s:5:" бу";s:3:"161";s:5:" ур";s:3:"162";s:5:"а а";s:3:"163";s:5:"ак ";s:3:"164";s:6:"алд";s:3:"165";s:6:"алу";s:3:"166";s:6:"бар";s:3:"167";s:6:"бер";s:3:"168";s:6:"бою";s:3:"169";s:5:"ге ";s:3:"170";s:6:"дон";s:3:"171";s:6:"еги";s:3:"172";s:6:"ект";s:3:"173";s:6:"ефт";s:3:"174";s:5:"из ";s:3:"175";s:6:"кат";s:3:"176";s:6:"лды";s:3:"177";s:5:"н ч";s:3:"178";s:5:"н Ñ";s:3:"179";s:5:"н Ó©";s:3:"180";s:6:"ндо";s:3:"181";s:6:"неф";s:3:"182";s:5:"он ";s:3:"183";s:6:"Ñат";s:3:"184";s:6:"тор";s:3:"185";s:5:"Ñ‚Ñ‹ ";s:3:"186";s:6:"уда";s:3:"187";s:5:"ул ";s:3:"188";s:6:"ула";s:3:"189";s:6:"ууд";s:3:"190";s:5:"Ñ‹ б";s:3:"191";s:5:"Ñ‹ ж";s:3:"192";s:5:"Ñ‹ к";s:3:"193";s:5:"ыл ";s:3:"194";s:6:"ына";s:3:"195";s:6:"Ñке";s:3:"196";s:6:"ÑÑÑ‹";s:3:"197";s:5:" ат";s:3:"198";s:5:" до";s:3:"199";s:5:" жы";s:3:"200";s:5:" Ñо";s:3:"201";s:5:" чы";s:3:"202";s:6:"ааÑ";s:3:"203";s:6:"айт";s:3:"204";s:6:"аÑÑ‚";s:3:"205";s:6:"баа";s:3:"206";s:6:"баш";s:3:"207";s:6:"гар";s:3:"208";s:6:"гын";s:3:"209";s:5:"дө ";s:3:"210";s:5:"е б";s:3:"211";s:5:"ек ";s:3:"212";s:6:"жыл";s:3:"213";s:5:"и б";s:3:"214";s:5:"ик ";s:3:"215";s:6:"иÑÑ";s:3:"216";s:6:"кыз";s:3:"217";s:6:"лда";s:3:"218";s:6:"лык";s:3:"219";s:6:"мда";s:3:"220";s:5:"н ж";s:3:"221";s:6:"нди";s:3:"222";s:5:"ни ";s:3:"223";s:6:"нин";s:3:"224";s:6:"орд";s:3:"225";s:6:"рдо";s:3:"226";s:6:"Ñто";s:3:"227";s:5:"та ";s:3:"228";s:6:"тер";s:3:"229";s:6:"тти";s:3:"230";s:6:"тур";s:3:"231";s:6:"тын";s:3:"232";s:5:"уп ";s:3:"233";s:6:"ушу";s:3:"234";s:6:"фти";s:3:"235";s:6:"ыкт";s:3:"236";s:5:"үп ";s:3:"237";s:5:"өн ";s:3:"238";s:5:" ай";s:3:"239";s:5:" бү";s:3:"240";s:5:" ич";s:3:"241";s:5:" иш";s:3:"242";s:5:" мо";s:3:"243";s:5:" пр";s:3:"244";s:5:" ре";s:3:"245";s:5:" өк";s:3:"246";s:5:" Ó©Ñ‚";s:3:"247";s:5:"а д";s:3:"248";s:5:"а у";s:3:"249";s:5:"а Ñ";s:3:"250";s:6:"айм";s:3:"251";s:6:"амд";s:3:"252";s:6:"атт";s:3:"253";s:6:"бек";s:3:"254";s:6:"бул";s:3:"255";s:6:"гол";s:3:"256";s:6:"дег";s:3:"257";s:6:"еге";s:3:"258";s:6:"ейт";s:3:"259";s:6:"еле";s:3:"260";s:6:"енд";s:3:"261";s:6:"жак";s:3:"262";s:5:"и к";s:3:"263";s:6:"ини";s:3:"264";s:6:"ири";s:3:"265";s:6:"йма";s:3:"266";s:6:"кто";s:3:"267";s:6:"лик";s:3:"268";s:6:"мак";s:3:"269";s:6:"меÑ";s:3:"270";s:5:"н у";s:3:"271";s:5:"н ш";s:3:"272";s:6:"нтт";s:3:"273";s:5:"ол ";s:3:"274";s:6:"оло";s:3:"275";s:6:"пар";s:3:"276";s:6:"рак";s:3:"277";s:6:"Ñ€Ò¯Ò¯";s:3:"278";s:6:"ÑÑ‹Ñ€";s:3:"279";s:5:"ти ";s:3:"280";s:6:"тик";s:3:"281";s:6:"тта";s:3:"282";s:6:"Ñ‚Ó©Ñ€";s:3:"283";s:5:"у ж";s:3:"284";s:5:"у Ñ";s:3:"285";s:6:"шка";s:3:"286";s:5:"Ñ‹ м";s:3:"287";s:6:"ызы";s:3:"288";s:6:"ылд";s:3:"289";s:6:"Ñме";s:3:"290";s:6:"үрү";s:3:"291";s:6:"өлү";s:3:"292";s:6:"Ó©Ñ‚Ó©";s:3:"293";s:5:" же";s:3:"294";s:5:" Ñ‚Ò¯";s:3:"295";s:5:" Ñл";s:3:"296";s:5:" өн";s:3:"297";s:5:"а ж";s:3:"298";s:6:"ады";s:3:"299";}s:5:"latin";a:300:{s:3:"um ";s:1:"0";s:3:"us ";s:1:"1";s:3:"ut ";s:1:"2";s:3:"et ";s:1:"3";s:3:"is ";s:1:"4";s:3:" et";s:1:"5";s:3:" in";s:1:"6";s:3:" qu";s:1:"7";s:3:"tur";s:1:"8";s:3:" pr";s:1:"9";s:3:"est";s:2:"10";s:3:"tio";s:2:"11";s:3:" au";s:2:"12";s:3:"am ";s:2:"13";s:3:"em ";s:2:"14";s:3:"aut";s:2:"15";s:3:" di";s:2:"16";s:3:"ent";s:2:"17";s:3:"in ";s:2:"18";s:3:"dic";s:2:"19";s:3:"t e";s:2:"20";s:3:" es";s:2:"21";s:3:"ur ";s:2:"22";s:3:"ati";s:2:"23";s:3:"ion";s:2:"24";s:3:"st ";s:2:"25";s:3:" ut";s:2:"26";s:3:"ae ";s:2:"27";s:3:"qua";s:2:"28";s:3:" de";s:2:"29";s:3:"nt ";s:2:"30";s:3:" su";s:2:"31";s:3:" si";s:2:"32";s:3:"itu";s:2:"33";s:3:"unt";s:2:"34";s:3:"rum";s:2:"35";s:3:"ia ";s:2:"36";s:3:"es ";s:2:"37";s:3:"ter";s:2:"38";s:3:" re";s:2:"39";s:3:"nti";s:2:"40";s:3:"rae";s:2:"41";s:3:"s e";s:2:"42";s:3:"qui";s:2:"43";s:3:"io ";s:2:"44";s:3:"pro";s:2:"45";s:3:"it ";s:2:"46";s:3:"per";s:2:"47";s:3:"ita";s:2:"48";s:3:"one";s:2:"49";s:3:"ici";s:2:"50";s:3:"ius";s:2:"51";s:3:" co";s:2:"52";s:3:"t d";s:2:"53";s:3:"bus";s:2:"54";s:3:"pra";s:2:"55";s:3:"m e";s:2:"56";s:3:" no";s:2:"57";s:3:"edi";s:2:"58";s:3:"tia";s:2:"59";s:3:"ue ";s:2:"60";s:3:"ibu";s:2:"61";s:3:" se";s:2:"62";s:3:" ad";s:2:"63";s:3:"er ";s:2:"64";s:3:" fi";s:2:"65";s:3:"ili";s:2:"66";s:3:"que";s:2:"67";s:3:"t i";s:2:"68";s:3:"de ";s:2:"69";s:3:"oru";s:2:"70";s:3:" te";s:2:"71";s:3:"ali";s:2:"72";s:3:" pe";s:2:"73";s:3:"aed";s:2:"74";s:3:"cit";s:2:"75";s:3:"m d";s:2:"76";s:3:"t s";s:2:"77";s:3:"tat";s:2:"78";s:3:"tem";s:2:"79";s:3:"tis";s:2:"80";s:3:"t p";s:2:"81";s:3:"sti";s:2:"82";s:3:"te ";s:2:"83";s:3:"cum";s:2:"84";s:3:"ere";s:2:"85";s:3:"ium";s:2:"86";s:3:" ex";s:2:"87";s:3:"rat";s:2:"88";s:3:"ta ";s:2:"89";s:3:"con";s:2:"90";s:3:"cti";s:2:"91";s:3:"oni";s:2:"92";s:3:"ra ";s:2:"93";s:3:"s i";s:2:"94";s:3:" cu";s:2:"95";s:3:" sa";s:2:"96";s:3:"eni";s:2:"97";s:3:"nis";s:2:"98";s:3:"nte";s:2:"99";s:3:"eri";s:3:"100";s:3:"omi";s:3:"101";s:3:"re ";s:3:"102";s:3:"s a";s:3:"103";s:3:"min";s:3:"104";s:3:"os ";s:3:"105";s:3:"ti ";s:3:"106";s:3:"uer";s:3:"107";s:3:" ma";s:3:"108";s:3:" ue";s:3:"109";s:3:"m s";s:3:"110";s:3:"nem";s:3:"111";s:3:"t m";s:3:"112";s:3:" mo";s:3:"113";s:3:" po";s:3:"114";s:3:" ui";s:3:"115";s:3:"gen";s:3:"116";s:3:"ict";s:3:"117";s:3:"m i";s:3:"118";s:3:"ris";s:3:"119";s:3:"s s";s:3:"120";s:3:"t a";s:3:"121";s:3:"uae";s:3:"122";s:3:" do";s:3:"123";s:3:"m a";s:3:"124";s:3:"t c";s:3:"125";s:3:" ge";s:3:"126";s:3:"as ";s:3:"127";s:3:"e i";s:3:"128";s:3:"e p";s:3:"129";s:3:"ne ";s:3:"130";s:3:" ca";s:3:"131";s:3:"ine";s:3:"132";s:3:"quo";s:3:"133";s:3:"s p";s:3:"134";s:3:" al";s:3:"135";s:3:"e e";s:3:"136";s:3:"ntu";s:3:"137";s:3:"ro ";s:3:"138";s:3:"tri";s:3:"139";s:3:"tus";s:3:"140";s:3:"uit";s:3:"141";s:3:"atu";s:3:"142";s:3:"ini";s:3:"143";s:3:"iqu";s:3:"144";s:3:"m p";s:3:"145";s:3:"ost";s:3:"146";s:3:"res";s:3:"147";s:3:"ura";s:3:"148";s:3:" ac";s:3:"149";s:3:" fu";s:3:"150";s:3:"a e";s:3:"151";s:3:"ant";s:3:"152";s:3:"nes";s:3:"153";s:3:"nim";s:3:"154";s:3:"sun";s:3:"155";s:3:"tra";s:3:"156";s:3:"e a";s:3:"157";s:3:"s d";s:3:"158";s:3:" pa";s:3:"159";s:3:" uo";s:3:"160";s:3:"ecu";s:3:"161";s:3:" om";s:3:"162";s:3:" tu";s:3:"163";s:3:"ad ";s:3:"164";s:3:"cut";s:3:"165";s:3:"omn";s:3:"166";s:3:"s q";s:3:"167";s:3:" ei";s:3:"168";s:3:"ex ";s:3:"169";s:3:"icu";s:3:"170";s:3:"tor";s:3:"171";s:3:"uid";s:3:"172";s:3:" ip";s:3:"173";s:3:" me";s:3:"174";s:3:"e s";s:3:"175";s:3:"era";s:3:"176";s:3:"eru";s:3:"177";s:3:"iam";s:3:"178";s:3:"ide";s:3:"179";s:3:"ips";s:3:"180";s:3:" iu";s:3:"181";s:3:"a s";s:3:"182";s:3:"do ";s:3:"183";s:3:"e d";s:3:"184";s:3:"eiu";s:3:"185";s:3:"ica";s:3:"186";s:3:"im ";s:3:"187";s:3:"m c";s:3:"188";s:3:"m u";s:3:"189";s:3:"tiu";s:3:"190";s:3:" ho";s:3:"191";s:3:"cat";s:3:"192";s:3:"ist";s:3:"193";s:3:"nat";s:3:"194";s:3:"on ";s:3:"195";s:3:"pti";s:3:"196";s:3:"reg";s:3:"197";s:3:"rit";s:3:"198";s:3:"s t";s:3:"199";s:3:"sic";s:3:"200";s:3:"spe";s:3:"201";s:3:" en";s:3:"202";s:3:" sp";s:3:"203";s:3:"dis";s:3:"204";s:3:"eli";s:3:"205";s:3:"liq";s:3:"206";s:3:"lis";s:3:"207";s:3:"men";s:3:"208";s:3:"mus";s:3:"209";s:3:"num";s:3:"210";s:3:"pos";s:3:"211";s:3:"sio";s:3:"212";s:3:" an";s:3:"213";s:3:" gr";s:3:"214";s:3:"abi";s:3:"215";s:3:"acc";s:3:"216";s:3:"ect";s:3:"217";s:3:"ri ";s:3:"218";s:3:"uan";s:3:"219";s:3:" le";s:3:"220";s:3:"ecc";s:3:"221";s:3:"ete";s:3:"222";s:3:"gra";s:3:"223";s:3:"non";s:3:"224";s:3:"se ";s:3:"225";s:3:"uen";s:3:"226";s:3:"uis";s:3:"227";s:3:" fa";s:3:"228";s:3:" tr";s:3:"229";s:3:"ate";s:3:"230";s:3:"e c";s:3:"231";s:3:"fil";s:3:"232";s:3:"na ";s:3:"233";s:3:"ni ";s:3:"234";s:3:"pul";s:3:"235";s:3:"s f";s:3:"236";s:3:"ui ";s:3:"237";s:3:"at ";s:3:"238";s:3:"cce";s:3:"239";s:3:"dam";s:3:"240";s:3:"i e";s:3:"241";s:3:"ina";s:3:"242";s:3:"leg";s:3:"243";s:3:"nos";s:3:"244";s:3:"ori";s:3:"245";s:3:"pec";s:3:"246";s:3:"rop";s:3:"247";s:3:"sta";s:3:"248";s:3:"uia";s:3:"249";s:3:"ene";s:3:"250";s:3:"iue";s:3:"251";s:3:"iui";s:3:"252";s:3:"siu";s:3:"253";s:3:"t t";s:3:"254";s:3:"t u";s:3:"255";s:3:"tib";s:3:"256";s:3:"tit";s:3:"257";s:3:" da";s:3:"258";s:3:" ne";s:3:"259";s:3:"a d";s:3:"260";s:3:"and";s:3:"261";s:3:"ege";s:3:"262";s:3:"equ";s:3:"263";s:3:"hom";s:3:"264";s:3:"imu";s:3:"265";s:3:"lor";s:3:"266";s:3:"m m";s:3:"267";s:3:"mni";s:3:"268";s:3:"ndo";s:3:"269";s:3:"ner";s:3:"270";s:3:"o e";s:3:"271";s:3:"r e";s:3:"272";s:3:"sit";s:3:"273";s:3:"tum";s:3:"274";s:3:"utu";s:3:"275";s:3:"a p";s:3:"276";s:3:"bis";s:3:"277";s:3:"bit";s:3:"278";s:3:"cer";s:3:"279";s:3:"cta";s:3:"280";s:3:"dom";s:3:"281";s:3:"fut";s:3:"282";s:3:"i s";s:3:"283";s:3:"ign";s:3:"284";s:3:"int";s:3:"285";s:3:"mod";s:3:"286";s:3:"ndu";s:3:"287";s:3:"nit";s:3:"288";s:3:"rib";s:3:"289";s:3:"rti";s:3:"290";s:3:"tas";s:3:"291";s:3:"und";s:3:"292";s:3:" ab";s:3:"293";s:3:"err";s:3:"294";s:3:"ers";s:3:"295";s:3:"ite";s:3:"296";s:3:"iti";s:3:"297";s:3:"m t";s:3:"298";s:3:"o p";s:3:"299";}s:7:"latvian";a:300:{s:3:"as ";s:1:"0";s:3:" la";s:1:"1";s:3:" pa";s:1:"2";s:3:" ne";s:1:"3";s:3:"es ";s:1:"4";s:3:" un";s:1:"5";s:3:"un ";s:1:"6";s:3:" ka";s:1:"7";s:3:" va";s:1:"8";s:3:"ar ";s:1:"9";s:3:"s p";s:2:"10";s:3:" ar";s:2:"11";s:3:" vi";s:2:"12";s:3:"is ";s:2:"13";s:3:"ai ";s:2:"14";s:3:" no";s:2:"15";s:3:"ja ";s:2:"16";s:3:"ija";s:2:"17";s:3:"iem";s:2:"18";s:3:"em ";s:2:"19";s:3:"tu ";s:2:"20";s:3:"tie";s:2:"21";s:3:"vie";s:2:"22";s:3:"lat";s:2:"23";s:3:"aks";s:2:"24";s:3:"ien";s:2:"25";s:3:"kst";s:2:"26";s:3:"ies";s:2:"27";s:3:"s a";s:2:"28";s:3:"rak";s:2:"29";s:3:"atv";s:2:"30";s:3:"tvi";s:2:"31";s:3:" ja";s:2:"32";s:3:" pi";s:2:"33";s:3:"ka ";s:2:"34";s:3:" ir";s:2:"35";s:3:"ir ";s:2:"36";s:3:"ta ";s:2:"37";s:3:" sa";s:2:"38";s:3:"ts ";s:2:"39";s:4:" kÄ";s:2:"40";s:4:"Äs ";s:2:"41";s:3:" ti";s:2:"42";s:3:"ot ";s:2:"43";s:3:"s n";s:2:"44";s:3:" ie";s:2:"45";s:3:" ta";s:2:"46";s:4:"arÄ«";s:2:"47";s:3:"par";s:2:"48";s:3:"pie";s:2:"49";s:3:" pr";s:2:"50";s:4:"kÄ ";s:2:"51";s:3:" at";s:2:"52";s:3:" ra";s:2:"53";s:3:"am ";s:2:"54";s:4:"inÄ";s:2:"55";s:4:"tÄ ";s:2:"56";s:3:" iz";s:2:"57";s:3:"jas";s:2:"58";s:3:"lai";s:2:"59";s:3:" na";s:2:"60";s:3:"aut";s:2:"61";s:4:"ieÅ¡";s:2:"62";s:3:"s s";s:2:"63";s:3:" ap";s:2:"64";s:3:" ko";s:2:"65";s:3:" st";s:2:"66";s:3:"iek";s:2:"67";s:3:"iet";s:2:"68";s:3:"jau";s:2:"69";s:3:"us ";s:2:"70";s:4:"rÄ« ";s:2:"71";s:3:"tik";s:2:"72";s:4:"Ä«ba";s:2:"73";s:3:"na ";s:2:"74";s:3:" ga";s:2:"75";s:3:"cij";s:2:"76";s:3:"s i";s:2:"77";s:3:" uz";s:2:"78";s:3:"jum";s:2:"79";s:3:"s v";s:2:"80";s:3:"ms ";s:2:"81";s:3:"var";s:2:"82";s:3:" ku";s:2:"83";s:3:" ma";s:2:"84";s:4:"jÄ ";s:2:"85";s:3:"sta";s:2:"86";s:3:"s u";s:2:"87";s:4:" tÄ";s:2:"88";s:3:"die";s:2:"89";s:3:"kai";s:2:"90";s:3:"kas";s:2:"91";s:3:"ska";s:2:"92";s:3:" ci";s:2:"93";s:3:" da";s:2:"94";s:3:"kur";s:2:"95";s:3:"lie";s:2:"96";s:3:"tas";s:2:"97";s:3:"a p";s:2:"98";s:3:"est";s:2:"99";s:4:"stÄ";s:3:"100";s:4:"Å¡an";s:3:"101";s:3:"nes";s:3:"102";s:3:"nie";s:3:"103";s:3:"s d";s:3:"104";s:3:"s m";s:3:"105";s:3:"val";s:3:"106";s:3:" di";s:3:"107";s:3:" es";s:3:"108";s:3:" re";s:3:"109";s:3:"no ";s:3:"110";s:3:"to ";s:3:"111";s:3:"umu";s:3:"112";s:3:"vai";s:3:"113";s:4:"Å¡i ";s:3:"114";s:4:" vÄ“";s:3:"115";s:3:"kum";s:3:"116";s:3:"nu ";s:3:"117";s:3:"rie";s:3:"118";s:3:"s t";s:3:"119";s:4:"Äm ";s:3:"120";s:3:"ad ";s:3:"121";s:3:"et ";s:3:"122";s:3:"mu ";s:3:"123";s:3:"s l";s:3:"124";s:3:" be";s:3:"125";s:3:"aud";s:3:"126";s:3:"tur";s:3:"127";s:3:"vij";s:3:"128";s:4:"viņ";s:3:"129";s:4:"Äju";s:3:"130";s:3:"bas";s:3:"131";s:3:"gad";s:3:"132";s:3:"i n";s:3:"133";s:3:"ika";s:3:"134";s:3:"os ";s:3:"135";s:3:"a v";s:3:"136";s:3:"not";s:3:"137";s:3:"oti";s:3:"138";s:3:"sts";s:3:"139";s:3:"aik";s:3:"140";s:3:"u a";s:3:"141";s:4:"Ä a";s:3:"142";s:4:"Äk ";s:3:"143";s:3:" to";s:3:"144";s:3:"ied";s:3:"145";s:3:"stu";s:3:"146";s:3:"ti ";s:3:"147";s:3:"u p";s:3:"148";s:4:"vÄ“l";s:3:"149";s:4:"Äci";s:3:"150";s:4:" Å¡o";s:3:"151";s:3:"gi ";s:3:"152";s:3:"ko ";s:3:"153";s:3:"pro";s:3:"154";s:3:"s r";s:3:"155";s:4:"tÄj";s:3:"156";s:3:"u s";s:3:"157";s:3:"u v";s:3:"158";s:3:"vis";s:3:"159";s:3:"aun";s:3:"160";s:3:"ks ";s:3:"161";s:3:"str";s:3:"162";s:3:"zin";s:3:"163";s:3:"a a";s:3:"164";s:4:"adÄ«";s:3:"165";s:3:"da ";s:3:"166";s:3:"dar";s:3:"167";s:3:"ena";s:3:"168";s:3:"ici";s:3:"169";s:3:"kra";s:3:"170";s:3:"nas";s:3:"171";s:4:"stÄ«";s:3:"172";s:4:"Å¡u ";s:3:"173";s:4:" mÄ“";s:3:"174";s:3:"a n";s:3:"175";s:3:"eci";s:3:"176";s:3:"i s";s:3:"177";s:3:"ie ";s:3:"178";s:4:"iņa";s:3:"179";s:3:"ju ";s:3:"180";s:3:"las";s:3:"181";s:3:"r t";s:3:"182";s:3:"ums";s:3:"183";s:4:"Å¡ie";s:3:"184";s:3:"bu ";s:3:"185";s:3:"cit";s:3:"186";s:3:"i a";s:3:"187";s:3:"ina";s:3:"188";s:3:"ma ";s:3:"189";s:3:"pus";s:3:"190";s:3:"ra ";s:3:"191";s:3:" au";s:3:"192";s:3:" se";s:3:"193";s:3:" sl";s:3:"194";s:3:"a s";s:3:"195";s:3:"ais";s:3:"196";s:4:"eÅ¡i";s:3:"197";s:3:"iec";s:3:"198";s:3:"iku";s:3:"199";s:4:"pÄr";s:3:"200";s:3:"s b";s:3:"201";s:3:"s k";s:3:"202";s:3:"sot";s:3:"203";s:5:"ÄdÄ";s:3:"204";s:3:" in";s:3:"205";s:3:" li";s:3:"206";s:3:" tr";s:3:"207";s:3:"ana";s:3:"208";s:3:"eso";s:3:"209";s:3:"ikr";s:3:"210";s:3:"man";s:3:"211";s:3:"ne ";s:3:"212";s:3:"u k";s:3:"213";s:3:" tu";s:3:"214";s:3:"an ";s:3:"215";s:3:"av ";s:3:"216";s:3:"bet";s:3:"217";s:4:"bÅ«t";s:3:"218";s:3:"im ";s:3:"219";s:3:"isk";s:3:"220";s:4:"lÄ«d";s:3:"221";s:3:"nav";s:3:"222";s:3:"ras";s:3:"223";s:3:"ri ";s:3:"224";s:3:"s g";s:3:"225";s:3:"sti";s:3:"226";s:4:"Ä«dz";s:3:"227";s:3:" ai";s:3:"228";s:3:"arb";s:3:"229";s:3:"cin";s:3:"230";s:3:"das";s:3:"231";s:3:"ent";s:3:"232";s:3:"gal";s:3:"233";s:3:"i p";s:3:"234";s:3:"lik";s:3:"235";s:4:"mÄ ";s:3:"236";s:3:"nek";s:3:"237";s:3:"pat";s:3:"238";s:4:"rÄ“t";s:3:"239";s:3:"si ";s:3:"240";s:3:"tra";s:3:"241";s:4:"uÅ¡i";s:3:"242";s:3:"vei";s:3:"243";s:3:" br";s:3:"244";s:3:" pu";s:3:"245";s:3:" sk";s:3:"246";s:3:"als";s:3:"247";s:3:"ama";s:3:"248";s:3:"edz";s:3:"249";s:3:"eka";s:3:"250";s:4:"eÅ¡u";s:3:"251";s:3:"ieg";s:3:"252";s:3:"jis";s:3:"253";s:3:"kam";s:3:"254";s:3:"lst";s:3:"255";s:4:"nÄk";s:3:"256";s:3:"oli";s:3:"257";s:3:"pre";s:3:"258";s:4:"pÄ“c";s:3:"259";s:3:"rot";s:3:"260";s:4:"tÄs";s:3:"261";s:3:"usi";s:3:"262";s:4:"Ä“l ";s:3:"263";s:4:"Ä“s ";s:3:"264";s:3:" bi";s:3:"265";s:3:" de";s:3:"266";s:3:" me";s:3:"267";s:4:" pÄ";s:3:"268";s:3:"a i";s:3:"269";s:3:"aid";s:3:"270";s:4:"ajÄ";s:3:"271";s:3:"ikt";s:3:"272";s:3:"kat";s:3:"273";s:3:"lic";s:3:"274";s:3:"lod";s:3:"275";s:3:"mi ";s:3:"276";s:3:"ni ";s:3:"277";s:3:"pri";s:3:"278";s:4:"rÄd";s:3:"279";s:4:"rÄ«g";s:3:"280";s:3:"sim";s:3:"281";s:4:"trÄ";s:3:"282";s:3:"u l";s:3:"283";s:3:"uto";s:3:"284";s:3:"uz ";s:3:"285";s:4:"Ä“c ";s:3:"286";s:5:"Ä«tÄ";s:3:"287";s:3:" ce";s:3:"288";s:4:" jÄ";s:3:"289";s:3:" sv";s:3:"290";s:3:"a t";s:3:"291";s:3:"aga";s:3:"292";s:3:"aiz";s:3:"293";s:3:"atu";s:3:"294";s:3:"ba ";s:3:"295";s:3:"cie";s:3:"296";s:3:"du ";s:3:"297";s:3:"dzi";s:3:"298";s:4:"dzÄ«";s:3:"299";}s:10:"lithuanian";a:300:{s:3:"as ";s:1:"0";s:3:" pa";s:1:"1";s:3:" ka";s:1:"2";s:3:"ai ";s:1:"3";s:3:"us ";s:1:"4";s:3:"os ";s:1:"5";s:3:"is ";s:1:"6";s:3:" ne";s:1:"7";s:3:" ir";s:1:"8";s:3:"ir ";s:1:"9";s:3:"ti ";s:2:"10";s:3:" pr";s:2:"11";s:3:"aus";s:2:"12";s:3:"ini";s:2:"13";s:3:"s p";s:2:"14";s:3:"pas";s:2:"15";s:4:"ių ";s:2:"16";s:3:" ta";s:2:"17";s:3:" vi";s:2:"18";s:3:"iau";s:2:"19";s:3:" ko";s:2:"20";s:3:" su";s:2:"21";s:3:"kai";s:2:"22";s:3:"o p";s:2:"23";s:3:"usi";s:2:"24";s:3:" sa";s:2:"25";s:3:"vo ";s:2:"26";s:3:"tai";s:2:"27";s:3:"ali";s:2:"28";s:4:"tų ";s:2:"29";s:3:"io ";s:2:"30";s:3:"jo ";s:2:"31";s:3:"s k";s:2:"32";s:3:"sta";s:2:"33";s:3:"iai";s:2:"34";s:3:" bu";s:2:"35";s:3:" nu";s:2:"36";s:3:"ius";s:2:"37";s:3:"mo ";s:2:"38";s:3:" po";s:2:"39";s:3:"ien";s:2:"40";s:3:"s s";s:2:"41";s:3:"tas";s:2:"42";s:3:" me";s:2:"43";s:3:"uvo";s:2:"44";s:3:"kad";s:2:"45";s:4:" iÅ¡";s:2:"46";s:3:" la";s:2:"47";s:3:"to ";s:2:"48";s:3:"ais";s:2:"49";s:3:"ie ";s:2:"50";s:3:"kur";s:2:"51";s:3:"uri";s:2:"52";s:3:" ku";s:2:"53";s:3:"ijo";s:2:"54";s:4:"Äia";s:2:"55";s:3:"au ";s:2:"56";s:3:"met";s:2:"57";s:3:"je ";s:2:"58";s:3:" va";s:2:"59";s:3:"ad ";s:2:"60";s:3:" ap";s:2:"61";s:3:"and";s:2:"62";s:3:" gr";s:2:"63";s:3:" ti";s:2:"64";s:3:"kal";s:2:"65";s:3:"asi";s:2:"66";s:3:"i p";s:2:"67";s:4:"iÄi";s:2:"68";s:3:"s i";s:2:"69";s:3:"s v";s:2:"70";s:3:"ink";s:2:"71";s:3:"o n";s:2:"72";s:4:"Ä—s ";s:2:"73";s:3:"buv";s:2:"74";s:3:"s a";s:2:"75";s:3:" ga";s:2:"76";s:3:"aip";s:2:"77";s:3:"avi";s:2:"78";s:3:"mas";s:2:"79";s:3:"pri";s:2:"80";s:3:"tik";s:2:"81";s:3:" re";s:2:"82";s:3:"etu";s:2:"83";s:3:"jos";s:2:"84";s:3:" da";s:2:"85";s:3:"ent";s:2:"86";s:3:"oli";s:2:"87";s:3:"par";s:2:"88";s:3:"ant";s:2:"89";s:3:"ara";s:2:"90";s:3:"tar";s:2:"91";s:3:"ama";s:2:"92";s:3:"gal";s:2:"93";s:3:"imo";s:2:"94";s:4:"iÅ¡k";s:2:"95";s:3:"o s";s:2:"96";s:3:" at";s:2:"97";s:3:" be";s:2:"98";s:4:" į ";s:2:"99";s:3:"min";s:3:"100";s:3:"tin";s:3:"101";s:3:" tu";s:3:"102";s:3:"s n";s:3:"103";s:3:" jo";s:3:"104";s:3:"dar";s:3:"105";s:3:"ip ";s:3:"106";s:3:"rei";s:3:"107";s:3:" te";s:3:"108";s:4:"dži";s:3:"109";s:3:"kas";s:3:"110";s:3:"nin";s:3:"111";s:3:"tei";s:3:"112";s:3:"vie";s:3:"113";s:3:" li";s:3:"114";s:3:" se";s:3:"115";s:3:"cij";s:3:"116";s:3:"gar";s:3:"117";s:3:"lai";s:3:"118";s:3:"art";s:3:"119";s:3:"lau";s:3:"120";s:3:"ras";s:3:"121";s:3:"no ";s:3:"122";s:3:"o k";s:3:"123";s:4:"tÄ… ";s:3:"124";s:3:" ar";s:3:"125";s:4:"Ä—jo";s:3:"126";s:4:"viÄ";s:3:"127";s:3:"iga";s:3:"128";s:3:"pra";s:3:"129";s:3:"vis";s:3:"130";s:3:" na";s:3:"131";s:3:"men";s:3:"132";s:3:"oki";s:3:"133";s:4:"raÅ¡";s:3:"134";s:3:"s t";s:3:"135";s:3:"iet";s:3:"136";s:3:"ika";s:3:"137";s:3:"int";s:3:"138";s:3:"kom";s:3:"139";s:3:"tam";s:3:"140";s:3:"aug";s:3:"141";s:3:"avo";s:3:"142";s:3:"rie";s:3:"143";s:3:"s b";s:3:"144";s:3:" st";s:3:"145";s:3:"eim";s:3:"146";s:3:"ko ";s:3:"147";s:3:"nus";s:3:"148";s:3:"pol";s:3:"149";s:3:"ria";s:3:"150";s:3:"sau";s:3:"151";s:3:"api";s:3:"152";s:3:"me ";s:3:"153";s:3:"ne ";s:3:"154";s:3:"sik";s:3:"155";s:4:" Å¡i";s:3:"156";s:3:"i n";s:3:"157";s:3:"ia ";s:3:"158";s:3:"ici";s:3:"159";s:3:"oja";s:3:"160";s:3:"sak";s:3:"161";s:3:"sti";s:3:"162";s:3:"ui ";s:3:"163";s:3:"ame";s:3:"164";s:3:"lie";s:3:"165";s:3:"o t";s:3:"166";s:3:"pie";s:3:"167";s:4:"Äiu";s:3:"168";s:3:" di";s:3:"169";s:3:" pe";s:3:"170";s:3:"gri";s:3:"171";s:3:"ios";s:3:"172";s:3:"lia";s:3:"173";s:3:"lin";s:3:"174";s:3:"s d";s:3:"175";s:3:"s g";s:3:"176";s:3:"ta ";s:3:"177";s:3:"uot";s:3:"178";s:3:" ja";s:3:"179";s:4:" už";s:3:"180";s:3:"aut";s:3:"181";s:3:"i s";s:3:"182";s:3:"ino";s:3:"183";s:4:"mÄ… ";s:3:"184";s:3:"oje";s:3:"185";s:3:"rav";s:3:"186";s:4:"dÄ—l";s:3:"187";s:3:"nti";s:3:"188";s:3:"o a";s:3:"189";s:3:"toj";s:3:"190";s:4:"Ä—l ";s:3:"191";s:3:" to";s:3:"192";s:3:" vy";s:3:"193";s:3:"ar ";s:3:"194";s:3:"ina";s:3:"195";s:3:"lic";s:3:"196";s:3:"o v";s:3:"197";s:3:"sei";s:3:"198";s:3:"su ";s:3:"199";s:3:" mi";s:3:"200";s:3:" pi";s:3:"201";s:3:"din";s:3:"202";s:4:"iÅ¡ ";s:3:"203";s:3:"lan";s:3:"204";s:3:"si ";s:3:"205";s:3:"tus";s:3:"206";s:3:" ba";s:3:"207";s:3:"asa";s:3:"208";s:3:"ata";s:3:"209";s:3:"kla";s:3:"210";s:3:"omi";s:3:"211";s:3:"tat";s:3:"212";s:3:" an";s:3:"213";s:3:" ji";s:3:"214";s:3:"als";s:3:"215";s:3:"ena";s:3:"216";s:4:"jų ";s:3:"217";s:3:"nuo";s:3:"218";s:3:"per";s:3:"219";s:3:"rig";s:3:"220";s:3:"s m";s:3:"221";s:3:"val";s:3:"222";s:3:"yta";s:3:"223";s:4:"Äio";s:3:"224";s:3:" ra";s:3:"225";s:3:"i k";s:3:"226";s:3:"lik";s:3:"227";s:3:"net";s:3:"228";s:4:"nÄ— ";s:3:"229";s:3:"tis";s:3:"230";s:3:"tuo";s:3:"231";s:3:"yti";s:3:"232";s:4:"Ä™s ";s:3:"233";s:4:"ų s";s:3:"234";s:3:"ada";s:3:"235";s:3:"ari";s:3:"236";s:3:"do ";s:3:"237";s:3:"eik";s:3:"238";s:3:"eis";s:3:"239";s:3:"ist";s:3:"240";s:3:"lst";s:3:"241";s:3:"ma ";s:3:"242";s:3:"nes";s:3:"243";s:3:"sav";s:3:"244";s:3:"sio";s:3:"245";s:3:"tau";s:3:"246";s:3:" ki";s:3:"247";s:3:"aik";s:3:"248";s:3:"aud";s:3:"249";s:3:"ies";s:3:"250";s:3:"ori";s:3:"251";s:3:"s r";s:3:"252";s:3:"ska";s:3:"253";s:3:" ge";s:3:"254";s:3:"ast";s:3:"255";s:3:"eig";s:3:"256";s:3:"et ";s:3:"257";s:3:"iam";s:3:"258";s:3:"isa";s:3:"259";s:3:"mis";s:3:"260";s:3:"nam";s:3:"261";s:3:"ome";s:3:"262";s:4:"žia";s:3:"263";s:3:"aba";s:3:"264";s:3:"aul";s:3:"265";s:3:"ikr";s:3:"266";s:4:"kÄ… ";s:3:"267";s:3:"nta";s:3:"268";s:3:"ra ";s:3:"269";s:3:"tur";s:3:"270";s:3:" ma";s:3:"271";s:3:"die";s:3:"272";s:3:"ei ";s:3:"273";s:3:"i t";s:3:"274";s:3:"nas";s:3:"275";s:3:"rin";s:3:"276";s:3:"sto";s:3:"277";s:3:"tie";s:3:"278";s:3:"tuv";s:3:"279";s:3:"vos";s:3:"280";s:4:"ų p";s:3:"281";s:4:" dÄ—";s:3:"282";s:3:"are";s:3:"283";s:3:"ats";s:3:"284";s:4:"enÄ—";s:3:"285";s:3:"ili";s:3:"286";s:3:"ima";s:3:"287";s:3:"kar";s:3:"288";s:3:"ms ";s:3:"289";s:3:"nia";s:3:"290";s:3:"r p";s:3:"291";s:3:"rod";s:3:"292";s:3:"s l";s:3:"293";s:3:" o ";s:3:"294";s:3:"e p";s:3:"295";s:3:"es ";s:3:"296";s:3:"ide";s:3:"297";s:3:"ik ";s:3:"298";s:3:"ja ";s:3:"299";}s:10:"macedonian";a:300:{s:5:"на ";s:1:"0";s:5:" на";s:1:"1";s:5:"та ";s:1:"2";s:6:"ата";s:1:"3";s:6:"ија";s:1:"4";s:5:" пр";s:1:"5";s:5:"то ";s:1:"6";s:5:"ја ";s:1:"7";s:5:" за";s:1:"8";s:5:"а н";s:1:"9";s:4:" и ";s:2:"10";s:5:"а Ñ";s:2:"11";s:5:"те ";s:2:"12";s:6:"ите";s:2:"13";s:5:" ко";s:2:"14";s:5:"от ";s:2:"15";s:5:" де";s:2:"16";s:5:" по";s:2:"17";s:5:"а д";s:2:"18";s:5:"во ";s:2:"19";s:5:"за ";s:2:"20";s:5:" во";s:2:"21";s:5:" од";s:2:"22";s:5:" Ñе";s:2:"23";s:5:" не";s:2:"24";s:5:"Ñе ";s:2:"25";s:5:" до";s:2:"26";s:5:"а в";s:2:"27";s:5:"ка ";s:2:"28";s:6:"ање";s:2:"29";s:5:"а п";s:2:"30";s:5:"о п";s:2:"31";s:6:"ува";s:2:"32";s:6:"циј";s:2:"33";s:5:"а о";s:2:"34";s:6:"ици";s:2:"35";s:6:"ето";s:2:"36";s:5:"о н";s:2:"37";s:6:"ани";s:2:"38";s:5:"ни ";s:2:"39";s:5:" вл";s:2:"40";s:6:"дек";s:2:"41";s:6:"ека";s:2:"42";s:6:"њет";s:2:"43";s:5:"ќе ";s:2:"44";s:4:" е ";s:2:"45";s:5:"а з";s:2:"46";s:5:"а и";s:2:"47";s:5:"ат ";s:2:"48";s:6:"вла";s:2:"49";s:5:"го ";s:2:"50";s:5:"е н";s:2:"51";s:5:"од ";s:2:"52";s:6:"пре";s:2:"53";s:5:" го";s:2:"54";s:5:" да";s:2:"55";s:5:" ма";s:2:"56";s:5:" ре";s:2:"57";s:5:" ќе";s:2:"58";s:6:"али";s:2:"59";s:5:"и д";s:2:"60";s:5:"и н";s:2:"61";s:6:"иот";s:2:"62";s:6:"нат";s:2:"63";s:6:"ово";s:2:"64";s:5:" па";s:2:"65";s:5:" ра";s:2:"66";s:5:" Ñо";s:2:"67";s:6:"ове";s:2:"68";s:6:"пра";s:2:"69";s:6:"што";s:2:"70";s:5:"ње ";s:2:"71";s:5:"а е";s:2:"72";s:5:"да ";s:2:"73";s:6:"дат";s:2:"74";s:6:"дон";s:2:"75";s:5:"е в";s:2:"76";s:5:"е д";s:2:"77";s:5:"е з";s:2:"78";s:5:"е Ñ";s:2:"79";s:6:"кон";s:2:"80";s:6:"нит";s:2:"81";s:5:"но ";s:2:"82";s:6:"они";s:2:"83";s:6:"ото";s:2:"84";s:6:"пар";s:2:"85";s:6:"при";s:2:"86";s:6:"Ñта";s:2:"87";s:5:"Ñ‚ н";s:2:"88";s:5:" шт";s:2:"89";s:5:"а к";s:2:"90";s:6:"аци";s:2:"91";s:5:"ва ";s:2:"92";s:6:"вањ";s:2:"93";s:5:"е п";s:2:"94";s:6:"ени";s:2:"95";s:5:"ла ";s:2:"96";s:6:"лад";s:2:"97";s:6:"мак";s:2:"98";s:6:"неÑ";s:2:"99";s:6:"ноÑ";s:3:"100";s:6:"про";s:3:"101";s:6:"рен";s:3:"102";s:6:"јат";s:3:"103";s:5:" ин";s:3:"104";s:5:" ме";s:3:"105";s:5:" то";s:3:"106";s:5:"а г";s:3:"107";s:5:"а м";s:3:"108";s:5:"а Ñ€";s:3:"109";s:6:"аке";s:3:"110";s:6:"ако";s:3:"111";s:6:"вор";s:3:"112";s:6:"гов";s:3:"113";s:6:"едо";s:3:"114";s:6:"ена";s:3:"115";s:5:"и и";s:3:"116";s:6:"ира";s:3:"117";s:6:"кед";s:3:"118";s:5:"не ";s:3:"119";s:6:"ниц";s:3:"120";s:6:"ниј";s:3:"121";s:6:"оÑÑ‚";s:3:"122";s:5:"ра ";s:3:"123";s:6:"рат";s:3:"124";s:6:"ред";s:3:"125";s:6:"Ñка";s:3:"126";s:6:"тен";s:3:"127";s:5:" ка";s:3:"128";s:5:" Ñп";s:3:"129";s:5:" ја";s:3:"130";s:5:"а Ñ‚";s:3:"131";s:6:"аде";s:3:"132";s:6:"арт";s:3:"133";s:5:"е г";s:3:"134";s:5:"е и";s:3:"135";s:6:"кат";s:3:"136";s:6:"лаÑ";s:3:"137";s:6:"нио";s:3:"138";s:5:"о Ñ";s:3:"139";s:5:"ри ";s:3:"140";s:5:" ба";s:3:"141";s:5:" би";s:3:"142";s:6:"ава";s:3:"143";s:6:"ате";s:3:"144";s:6:"вни";s:3:"145";s:5:"д н";s:3:"146";s:6:"ден";s:3:"147";s:6:"дов";s:3:"148";s:6:"држ";s:3:"149";s:6:"дув";s:3:"150";s:5:"е о";s:3:"151";s:5:"ен ";s:3:"152";s:6:"ере";s:3:"153";s:6:"ери";s:3:"154";s:5:"и п";s:3:"155";s:5:"и Ñ";s:3:"156";s:6:"ина";s:3:"157";s:6:"кој";s:3:"158";s:6:"нци";s:3:"159";s:5:"о м";s:3:"160";s:5:"о о";s:3:"161";s:6:"одн";s:3:"162";s:6:"пор";s:3:"163";s:6:"Ñки";s:3:"164";s:6:"Ñпо";s:3:"165";s:6:"Ñтв";s:3:"166";s:6:"Ñти";s:3:"167";s:6:"тво";s:3:"168";s:5:"ти ";s:3:"169";s:5:" об";s:3:"170";s:5:" ов";s:3:"171";s:5:"а б";s:3:"172";s:6:"алн";s:3:"173";s:6:"ара";s:3:"174";s:6:"бар";s:3:"175";s:5:"е к";s:3:"176";s:5:"ед ";s:3:"177";s:6:"ент";s:3:"178";s:6:"еѓу";s:3:"179";s:5:"и о";s:3:"180";s:5:"ии ";s:3:"181";s:6:"меѓ";s:3:"182";s:5:"о д";s:3:"183";s:6:"оја";s:3:"184";s:6:"пот";s:3:"185";s:6:"раз";s:3:"186";s:6:"раш";s:3:"187";s:6:"Ñпр";s:3:"188";s:6:"Ñто";s:3:"189";s:5:"Ñ‚ д";s:3:"190";s:5:"ци ";s:3:"191";s:5:" бе";s:3:"192";s:5:" гр";s:3:"193";s:5:" др";s:3:"194";s:5:" из";s:3:"195";s:5:" ÑÑ‚";s:3:"196";s:5:"аа ";s:3:"197";s:6:"бид";s:3:"198";s:6:"вед";s:3:"199";s:6:"гла";s:3:"200";s:6:"еко";s:3:"201";s:6:"енд";s:3:"202";s:6:"еÑе";s:3:"203";s:6:"етÑ";s:3:"204";s:6:"зац";s:3:"205";s:5:"и Ñ‚";s:3:"206";s:6:"иза";s:3:"207";s:6:"инÑ";s:3:"208";s:6:"иÑÑ‚";s:3:"209";s:5:"ки ";s:3:"210";s:6:"ков";s:3:"211";s:6:"кол";s:3:"212";s:5:"ку ";s:3:"213";s:6:"лиц";s:3:"214";s:5:"о з";s:3:"215";s:5:"о и";s:3:"216";s:6:"ова";s:3:"217";s:6:"олк";s:3:"218";s:6:"оре";s:3:"219";s:6:"ори";s:3:"220";s:6:"под";s:3:"221";s:6:"рањ";s:3:"222";s:6:"реф";s:3:"223";s:6:"ржа";s:3:"224";s:6:"ров";s:3:"225";s:6:"рти";s:3:"226";s:5:"Ñо ";s:3:"227";s:6:"тор";s:3:"228";s:6:"фер";s:3:"229";s:6:"цен";s:3:"230";s:6:"цит";s:3:"231";s:4:" а ";s:3:"232";s:5:" вр";s:3:"233";s:5:" гл";s:3:"234";s:5:" дп";s:3:"235";s:5:" мо";s:3:"236";s:5:" ни";s:3:"237";s:5:" но";s:3:"238";s:5:" оп";s:3:"239";s:5:" от";s:3:"240";s:5:"а Ñœ";s:3:"241";s:6:"або";s:3:"242";s:6:"ада";s:3:"243";s:6:"аÑа";s:3:"244";s:6:"аша";s:3:"245";s:5:"ба ";s:3:"246";s:6:"бот";s:3:"247";s:6:"ваа";s:3:"248";s:6:"ват";s:3:"249";s:6:"вот";s:3:"250";s:5:"ги ";s:3:"251";s:6:"гра";s:3:"252";s:5:"де ";s:3:"253";s:6:"дин";s:3:"254";s:6:"дум";s:3:"255";s:6:"евр";s:3:"256";s:6:"еду";s:3:"257";s:6:"ено";s:3:"258";s:6:"ера";s:3:"259";s:5:"ÐµÑ ";s:3:"260";s:6:"ење";s:3:"261";s:5:"же ";s:3:"262";s:6:"зак";s:3:"263";s:5:"и в";s:3:"264";s:6:"ила";s:3:"265";s:6:"иту";s:3:"266";s:6:"коа";s:3:"267";s:6:"кои";s:3:"268";s:6:"лан";s:3:"269";s:6:"лку";s:3:"270";s:6:"лож";s:3:"271";s:6:"мот";s:3:"272";s:6:"нду";s:3:"273";s:6:"нÑÑ‚";s:3:"274";s:5:"о в";s:3:"275";s:5:"оа ";s:3:"276";s:6:"оал";s:3:"277";s:6:"обр";s:3:"278";s:5:"ов ";s:3:"279";s:6:"ови";s:3:"280";s:6:"овн";s:3:"281";s:5:"ои ";s:3:"282";s:5:"ор ";s:3:"283";s:6:"орм";s:3:"284";s:5:"ој ";s:3:"285";s:6:"рет";s:3:"286";s:6:"Ñед";s:3:"287";s:5:"ÑÑ‚ ";s:3:"288";s:6:"тер";s:3:"289";s:6:"тиј";s:3:"290";s:6:"тоа";s:3:"291";s:6:"фор";s:3:"292";s:6:"ции";s:3:"293";s:5:"ѓу ";s:3:"294";s:5:" ал";s:3:"295";s:5:" ве";s:3:"296";s:5:" вм";s:3:"297";s:5:" ги";s:3:"298";s:5:" ду";s:3:"299";}s:9:"mongolian";a:300:{s:5:"ын ";s:1:"0";s:5:" ба";s:1:"1";s:5:"йн ";s:1:"2";s:6:"бай";s:1:"3";s:6:"ийн";s:1:"4";s:6:"уул";s:1:"5";s:5:" ул";s:1:"6";s:6:"улÑ";s:1:"7";s:5:"ан ";s:1:"8";s:5:" ха";s:1:"9";s:6:"ний";s:2:"10";s:5:"н Ñ…";s:2:"11";s:6:"гаа";s:2:"12";s:6:"Ñын";s:2:"13";s:5:"ий ";s:2:"14";s:6:"лÑÑ‹";s:2:"15";s:5:" бо";s:2:"16";s:5:"й б";s:2:"17";s:5:"Ñн ";s:2:"18";s:5:"ах ";s:2:"19";s:6:"бол";s:2:"20";s:5:"ол ";s:2:"21";s:5:"н б";s:2:"22";s:6:"оло";s:2:"23";s:5:" Ñ…Ñ";s:2:"24";s:6:"онг";s:2:"25";s:6:"гол";s:2:"26";s:6:"гуу";s:2:"27";s:6:"нго";s:2:"28";s:5:"ыг ";s:2:"29";s:6:"жил";s:2:"30";s:5:" мо";s:2:"31";s:6:"лаг";s:2:"32";s:6:"лла";s:2:"33";s:6:"мон";s:2:"34";s:5:" Ñ‚Ñ”";s:2:"35";s:5:" ху";s:2:"36";s:6:"айд";s:2:"37";s:5:"ны ";s:2:"38";s:5:"он ";s:2:"39";s:6:"Ñан";s:2:"40";s:6:"хий";s:2:"41";s:5:" аж";s:2:"42";s:5:" ор";s:2:"43";s:5:"л у";s:2:"44";s:5:"н Ñ‚";s:2:"45";s:6:"улг";s:2:"46";s:6:"айг";s:2:"47";s:6:"длы";s:2:"48";s:5:"йг ";s:2:"49";s:5:" за";s:2:"50";s:6:"дÑÑ";s:2:"51";s:5:"н а";s:2:"52";s:6:"ндÑ";s:2:"53";s:6:"ула";s:2:"54";s:5:"ÑÑ ";s:2:"55";s:6:"ага";s:2:"56";s:6:"ийг";s:2:"57";s:4:"vй ";s:2:"58";s:5:"аа ";s:2:"59";s:5:"й а";s:2:"60";s:6:"лын";s:2:"61";s:5:"н з";s:2:"62";s:5:" аю";s:2:"63";s:5:" зє";s:2:"64";s:6:"аар";s:2:"65";s:5:"ад ";s:2:"66";s:5:"ар ";s:2:"67";s:5:"гvй";s:2:"68";s:6:"зєв";s:2:"69";s:6:"ажи";s:2:"70";s:5:"ал ";s:2:"71";s:6:"аюу";s:2:"72";s:5:"г Ñ…";s:2:"73";s:5:"лгv";s:2:"74";s:5:"лж ";s:2:"75";s:6:"Ñни";s:2:"76";s:6:"ÑÑн";s:2:"77";s:6:"юул";s:2:"78";s:6:"йдл";s:2:"79";s:6:"лыг";s:2:"80";s:6:"нхи";s:2:"81";s:6:"ууд";s:2:"82";s:6:"хам";s:2:"83";s:5:" нÑ";s:2:"84";s:5:" Ñа";s:2:"85";s:6:"гий";s:2:"86";s:6:"лах";s:2:"87";s:6:"лєл";s:2:"88";s:6:"рєн";s:2:"89";s:6:"єгч";s:2:"90";s:5:" та";s:2:"91";s:6:"илл";s:2:"92";s:6:"лий";s:2:"93";s:6:"лÑÑ…";s:2:"94";s:6:"рий";s:2:"95";s:5:"ÑÑ… ";s:2:"96";s:5:" ер";s:2:"97";s:5:" ÑÑ€";s:2:"98";s:6:"влє";s:2:"99";s:6:"ерє";s:3:"100";s:6:"ийл";s:3:"101";s:6:"лон";s:3:"102";s:6:"лєг";s:3:"103";s:6:"євл";s:3:"104";s:6:"єнх";s:3:"105";s:5:" хо";s:3:"106";s:6:"ари";s:3:"107";s:5:"их ";s:3:"108";s:6:"хан";s:3:"109";s:5:"ÑÑ€ ";s:3:"110";s:5:"єн ";s:3:"111";s:4:"vvл";s:3:"112";s:5:"ж б";s:3:"113";s:6:"Ñ‚Ñй";s:3:"114";s:5:"Ñ… Ñ…";s:3:"115";s:6:"Ñрх";s:3:"116";s:4:" vн";s:3:"117";s:5:" нь";s:3:"118";s:5:"vнд";s:3:"119";s:6:"алт";s:3:"120";s:6:"йлє";s:3:"121";s:5:"нь ";s:3:"122";s:6:"тєр";s:3:"123";s:5:" га";s:3:"124";s:5:" Ñу";s:3:"125";s:6:"аан";s:3:"126";s:6:"даа";s:3:"127";s:6:"илц";s:3:"128";s:6:"йгу";s:3:"129";s:5:"л а";s:3:"130";s:6:"лаа";s:3:"131";s:5:"н н";s:3:"132";s:6:"руу";s:3:"133";s:5:"Ñй ";s:3:"134";s:5:" то";s:3:"135";s:5:"н Ñ";s:3:"136";s:6:"рил";s:3:"137";s:6:"єри";s:3:"138";s:6:"ааг";s:3:"139";s:5:"гч ";s:3:"140";s:6:"лÑÑ";s:3:"141";s:5:"н о";s:3:"142";s:6:"Ñ€Ñг";s:3:"143";s:6:"Ñуу";s:3:"144";s:6:"ÑÑ€Ñ";s:3:"145";s:6:"їїл";s:3:"146";s:4:" yн";s:3:"147";s:5:" бу";s:3:"148";s:5:" дÑ";s:3:"149";s:5:" ол";s:3:"150";s:5:" ту";s:3:"151";s:5:" ши";s:3:"152";s:5:"yнд";s:3:"153";s:6:"аши";s:3:"154";s:5:"г Ñ‚";s:3:"155";s:5:"иг ";s:3:"156";s:5:"йл ";s:3:"157";s:6:"хар";s:3:"158";s:6:"шин";s:3:"159";s:5:"Ñг ";s:3:"160";s:5:"єр ";s:3:"161";s:5:" их";s:3:"162";s:5:" Ñ…Ñ”";s:3:"163";s:5:" Ñ…Ñ—";s:3:"164";s:5:"ам ";s:3:"165";s:6:"анг";s:3:"166";s:5:"ин ";s:3:"167";s:6:"йга";s:3:"168";s:6:"лÑа";s:3:"169";s:4:"н v";s:3:"170";s:5:"н е";s:3:"171";s:6:"нал";s:3:"172";s:5:"нд ";s:3:"173";s:6:"хуу";s:3:"174";s:6:"цаа";s:3:"175";s:5:"Ñд ";s:3:"176";s:6:"ÑÑÑ€";s:3:"177";s:5:"єл ";s:3:"178";s:5:"vйл";s:3:"179";s:6:"ада";s:3:"180";s:6:"айн";s:3:"181";s:6:"ала";s:3:"182";s:6:"амт";s:3:"183";s:6:"гах";s:3:"184";s:5:"д Ñ…";s:3:"185";s:6:"дал";s:3:"186";s:6:"зар";s:3:"187";s:5:"л б";s:3:"188";s:6:"лан";s:3:"189";s:5:"н д";s:3:"190";s:6:"ÑÑн";s:3:"191";s:6:"улл";s:3:"192";s:5:"Ñ… б";s:3:"193";s:6:"Ñ…ÑÑ€";s:3:"194";s:4:" бv";s:3:"195";s:5:" да";s:3:"196";s:5:" зо";s:3:"197";s:5:"vÑ€Ñ";s:3:"198";s:6:"аад";s:3:"199";s:6:"гÑÑ";s:3:"200";s:6:"лÑн";s:3:"201";s:5:"н и";s:3:"202";s:5:"н Ñ";s:3:"203";s:6:"нга";s:3:"204";s:5:"Ð½Ñ ";s:3:"205";s:6:"тал";s:3:"206";s:6:"тын";s:3:"207";s:6:"хур";s:3:"208";s:5:"Ñл ";s:3:"209";s:5:" на";s:3:"210";s:5:" ни";s:3:"211";s:5:" он";s:3:"212";s:5:"vлÑ";s:3:"213";s:5:"аг ";s:3:"214";s:5:"аж ";s:3:"215";s:5:"ай ";s:3:"216";s:6:"ата";s:3:"217";s:6:"бар";s:3:"218";s:5:"г б";s:3:"219";s:6:"гад";s:3:"220";s:6:"гїй";s:3:"221";s:5:"й Ñ…";s:3:"222";s:5:"лт ";s:3:"223";s:5:"н м";s:3:"224";s:5:"на ";s:3:"225";s:6:"оро";s:3:"226";s:6:"уль";s:3:"227";s:6:"чин";s:3:"228";s:5:"Ñж ";s:3:"229";s:6:"ÑнÑ";s:3:"230";s:6:"ÑÑд";s:3:"231";s:5:"їй ";s:3:"232";s:6:"їлÑ";s:3:"233";s:5:" би";s:3:"234";s:5:" Ñ‚Ñ";s:3:"235";s:5:" Ñн";s:3:"236";s:6:"аны";s:3:"237";s:6:"дий";s:3:"238";s:6:"дÑÑ";s:3:"239";s:6:"лал";s:3:"240";s:6:"лга";s:3:"241";s:5:"лд ";s:3:"242";s:6:"лог";s:3:"243";s:5:"ль ";s:3:"244";s:5:"н у";s:3:"245";s:5:"н Ñ—";s:3:"246";s:5:"Ñ€ б";s:3:"247";s:6:"рал";s:3:"248";s:6:"Ñон";s:3:"249";s:6:"тай";s:3:"250";s:6:"удл";s:3:"251";s:6:"Ñлт";s:3:"252";s:6:"Ñрг";s:3:"253";s:6:"єлє";s:3:"254";s:4:" vй";s:3:"255";s:4:" в ";s:3:"256";s:5:" гÑ";s:3:"257";s:4:" Ñ…v";s:3:"258";s:6:"ара";s:3:"259";s:5:"бvÑ€";s:3:"260";s:5:"д н";s:3:"261";s:5:"д о";s:3:"262";s:5:"л Ñ…";s:3:"263";s:5:"Ð»Ñ ";s:3:"264";s:6:"лты";s:3:"265";s:5:"н г";s:3:"266";s:6:"нÑг";s:3:"267";s:6:"огт";s:3:"268";s:6:"олы";s:3:"269";s:6:"оёр";s:3:"270";s:5:"Ñ€ Ñ‚";s:3:"271";s:6:"Ñ€ÑÑ";s:3:"272";s:6:"тав";s:3:"273";s:6:"тог";s:3:"274";s:6:"уур";s:3:"275";s:6:"хоё";s:3:"276";s:6:"Ñ…Ñл";s:3:"277";s:6:"Ñ…ÑÑ";s:3:"278";s:6:"ÑлÑ";s:3:"279";s:5:"Ñ‘Ñ€ ";s:3:"280";s:5:" ав";s:3:"281";s:5:" аÑ";s:3:"282";s:5:" аш";s:3:"283";s:5:" ду";s:3:"284";s:5:" Ñо";s:3:"285";s:5:" чи";s:3:"286";s:5:" Ñв";s:3:"287";s:5:" єр";s:3:"288";s:6:"аал";s:3:"289";s:6:"алд";s:3:"290";s:6:"амж";s:3:"291";s:6:"анд";s:3:"292";s:6:"аÑу";s:3:"293";s:6:"вÑÑ€";s:3:"294";s:5:"г у";s:3:"295";s:6:"двÑ";s:3:"296";s:4:"жvv";s:3:"297";s:6:"лца";s:3:"298";s:6:"лÑл";s:3:"299";}s:6:"nepali";a:300:{s:7:"को ";s:1:"0";s:7:"का ";s:1:"1";s:7:"मा ";s:1:"2";s:9:"हरà¥";s:1:"3";s:7:" ने";s:1:"4";s:9:"नेप";s:1:"5";s:9:"पाल";s:1:"6";s:9:"ेपा";s:1:"7";s:7:" सम";s:1:"8";s:7:"ले ";s:1:"9";s:7:" पà¥";s:2:"10";s:9:"पà¥à¤°";s:2:"11";s:9:"कार";s:2:"12";s:7:"ा स";s:2:"13";s:9:"à¤à¤•à¥‹";s:2:"14";s:7:" भà¤";s:2:"15";s:5:" छ ";s:2:"16";s:7:" भा";s:2:"17";s:9:"à¥à¤°à¤®";s:2:"18";s:7:" गर";s:2:"19";s:9:"रà¥à¤•";s:2:"20";s:5:" र ";s:2:"21";s:9:"भार";s:2:"22";s:9:"ारत";s:2:"23";s:7:" का";s:2:"24";s:7:" वि";s:2:"25";s:9:"भà¤à¤•";s:2:"26";s:9:"ाली";s:2:"27";s:7:"ली ";s:2:"28";s:7:"ा प";s:2:"29";s:9:"ीहर";s:2:"30";s:9:"ारà¥";s:2:"31";s:7:"ो छ";s:2:"32";s:7:"ना ";s:2:"33";s:7:"रॠ";s:2:"34";s:9:"ालक";s:2:"35";s:9:"à¥à¤¯à¤¾";s:2:"36";s:7:" बा";s:2:"37";s:9:"à¤à¤•à¤¾";s:2:"38";s:7:"ने ";s:2:"39";s:9:"नà¥à¤¤";s:2:"40";s:7:"ा ब";s:2:"41";s:9:"ाको";s:2:"42";s:7:"ार ";s:2:"43";s:7:"ा भ";s:2:"44";s:9:"ाहर";s:2:"45";s:9:"à¥à¤°à¥‹";s:2:"46";s:9:"कà¥à¤·";s:2:"47";s:7:"नॠ";s:2:"48";s:9:"ारी";s:2:"49";s:7:" नि";s:2:"50";s:7:"ा न";s:2:"51";s:7:"ी स";s:2:"52";s:7:" डà¥";s:2:"53";s:9:"कà¥à¤°";s:2:"54";s:9:"जना";s:2:"55";s:7:"यो ";s:2:"56";s:7:"ा छ";s:2:"57";s:9:"ेवा";s:2:"58";s:9:"à¥à¤¤à¤¾";s:2:"59";s:7:" रा";s:2:"60";s:9:"तà¥à¤¯";s:2:"61";s:9:"नà¥à¤¦";s:2:"62";s:9:"हà¥à¤¨";s:2:"63";s:7:"ा क";s:2:"64";s:9:"ामा";s:2:"65";s:7:"ी न";s:2:"66";s:9:"à¥à¤¦à¤¾";s:2:"67";s:7:" से";s:2:"68";s:9:"छनà¥";s:2:"69";s:9:"मà¥à¤¬";s:2:"70";s:9:"रोत";s:2:"71";s:9:"सेव";s:2:"72";s:9:"सà¥à¤¤";s:2:"73";s:9:"सà¥à¤°";s:2:"74";s:9:"ेका";s:2:"75";s:7:"à¥à¤¤ ";s:2:"76";s:7:" बी";s:2:"77";s:7:" हà¥";s:2:"78";s:9:"कà¥à¤¤";s:2:"79";s:9:"तà¥à¤°";s:2:"80";s:7:"रत ";s:2:"81";s:9:"रà¥à¤¨";s:2:"82";s:9:"रà¥à¤¯";s:2:"83";s:7:"ा र";s:2:"84";s:9:"ाका";s:2:"85";s:9:"à¥à¤•à¥‹";s:2:"86";s:7:" à¤à¤•";s:2:"87";s:7:" सं";s:2:"88";s:7:" सà¥";s:2:"89";s:9:"बीब";s:2:"90";s:9:"बीस";s:2:"91";s:9:"लको";s:2:"92";s:9:"सà¥à¤¯";s:2:"93";s:9:"ीबी";s:2:"94";s:9:"ीसी";s:2:"95";s:9:"ेको";s:2:"96";s:7:"ो स";s:2:"97";s:9:"à¥à¤¯à¤•";s:2:"98";s:7:" छन";s:2:"99";s:7:" जन";s:3:"100";s:7:" बि";s:3:"101";s:7:" मà¥";s:3:"102";s:7:" सà¥";s:3:"103";s:9:"गरà¥";s:3:"104";s:9:"ताह";s:3:"105";s:9:"नà¥à¤§";s:3:"106";s:9:"बार";s:3:"107";s:9:"मनà¥";s:3:"108";s:9:"मसà¥";s:3:"109";s:9:"रà¥à¤²";s:3:"110";s:9:"लाई";s:3:"111";s:7:"ा व";s:3:"112";s:7:"ाई ";s:3:"113";s:7:"ाल ";s:3:"114";s:9:"िका";s:3:"115";s:7:" तà¥";s:3:"116";s:7:" मा";s:3:"117";s:7:" यस";s:3:"118";s:7:" रà¥";s:3:"119";s:9:"ताक";s:3:"120";s:9:"बनà¥";s:3:"121";s:7:"र ब";s:3:"122";s:7:"रण ";s:3:"123";s:9:"रà¥à¤ª";s:3:"124";s:9:"रेक";s:3:"125";s:9:"षà¥à¤Ÿ";s:3:"126";s:9:"समà¥";s:3:"127";s:7:"सी ";s:3:"128";s:9:"ाà¤à¤•";s:3:"129";s:9:"à¥à¤•à¤¾";s:3:"130";s:9:"à¥à¤•à¥";s:3:"131";s:7:" अध";s:3:"132";s:7:" अन";s:3:"133";s:7:" तथ";s:3:"134";s:7:" थि";s:3:"135";s:7:" दे";s:3:"136";s:7:" पर";s:3:"137";s:7:" बै";s:3:"138";s:9:"तथा";s:3:"139";s:7:"ता ";s:3:"140";s:7:"दा ";s:3:"141";s:9:"दà¥à¤¦";s:3:"142";s:7:"नी ";s:3:"143";s:9:"बाट";s:3:"144";s:9:"यकà¥";s:3:"145";s:7:"री ";s:3:"146";s:9:"रीह";s:3:"147";s:9:"रà¥à¤®";s:3:"148";s:9:"लका";s:3:"149";s:9:"समस";s:3:"150";s:7:"ा अ";s:3:"151";s:7:"ा à¤";s:3:"152";s:7:"ाट ";s:3:"153";s:7:"िय ";s:3:"154";s:7:"ो प";s:3:"155";s:7:"ो म";s:3:"156";s:7:"à¥à¤¨ ";s:3:"157";s:9:"à¥à¤¨à¥‡";s:3:"158";s:9:"à¥à¤·à¤¾";s:3:"159";s:7:" पा";s:3:"160";s:7:" यो";s:3:"161";s:7:" हा";s:3:"162";s:9:"अधि";s:3:"163";s:9:"डà¥à¤µ";s:3:"164";s:7:"त भ";s:3:"165";s:7:"त स";s:3:"166";s:7:"था ";s:3:"167";s:9:"धिक";s:3:"168";s:9:"पमा";s:3:"169";s:9:"बैठ";s:3:"170";s:9:"मà¥à¤¦";s:3:"171";s:7:"या ";s:3:"172";s:9:"यà¥à¤•";s:3:"173";s:7:"र न";s:3:"174";s:9:"रति";s:3:"175";s:9:"वान";s:3:"176";s:9:"सार";s:3:"177";s:7:"ा आ";s:3:"178";s:7:"ा ज";s:3:"179";s:7:"ा ह";s:3:"180";s:9:"à¥à¤¦à¥";s:3:"181";s:9:"à¥à¤ªà¤®";s:3:"182";s:9:"à¥à¤²à¥‡";s:3:"183";s:9:"à¥à¤µà¤¾";s:3:"184";s:9:"ैठक";s:3:"185";s:7:"ो ब";s:3:"186";s:9:"à¥à¤¤à¤°";s:3:"187";s:7:"à¥à¤¯ ";s:3:"188";s:9:"à¥à¤¯à¤¸";s:3:"189";s:7:" कà¥";s:3:"190";s:7:" मन";s:3:"191";s:7:" रह";s:3:"192";s:9:"चार";s:3:"193";s:9:"तिय";s:3:"194";s:7:"दै ";s:3:"195";s:9:"निर";s:3:"196";s:7:"नॠ";s:3:"197";s:9:"परà¥";s:3:"198";s:9:"रकà¥";s:3:"199";s:9:"रà¥à¤¦";s:3:"200";s:9:"समा";s:3:"201";s:9:"सà¥à¤°";s:3:"202";s:9:"ाउन";s:3:"203";s:7:"ान ";s:3:"204";s:9:"ानम";s:3:"205";s:9:"ारण";s:3:"206";s:9:"ाले";s:3:"207";s:7:"ि ब";s:3:"208";s:9:"ियो";s:3:"209";s:9:"à¥à¤¨à¥";s:3:"210";s:9:"à¥à¤°à¤•";s:3:"211";s:9:"à¥à¤¤à¥";s:3:"212";s:9:"à¥à¤¬à¤¨";s:3:"213";s:9:"à¥à¤°à¤¾";s:3:"214";s:7:"à¥à¤· ";s:3:"215";s:7:" आर";s:3:"216";s:7:" जल";s:3:"217";s:7:" बे";s:3:"218";s:7:" या";s:3:"219";s:7:" सा";s:3:"220";s:9:"आà¤à¤•";s:3:"221";s:7:"à¤à¤• ";s:3:"222";s:9:"करà¥";s:3:"223";s:9:"जलस";s:3:"224";s:9:"णका";s:3:"225";s:7:"त र";s:3:"226";s:9:"दà¥à¤°";s:3:"227";s:9:"धान";s:3:"228";s:7:"धि ";s:3:"229";s:9:"नका";s:3:"230";s:9:"नमा";s:3:"231";s:7:"नि ";s:3:"232";s:9:"ममा";s:3:"233";s:7:"रम ";s:3:"234";s:9:"रहे";s:3:"235";s:9:"राज";s:3:"236";s:9:"लसà¥";s:3:"237";s:7:"ला ";s:3:"238";s:9:"वार";s:3:"239";s:9:"सका";s:3:"240";s:9:"हिल";s:3:"241";s:9:"हेक";s:3:"242";s:7:"ा त";s:3:"243";s:9:"ारे";s:3:"244";s:9:"िनà¥";s:3:"245";s:9:"िसà¥";s:3:"246";s:7:"े स";s:3:"247";s:7:"ो न";s:3:"248";s:7:"ो र";s:3:"249";s:7:"ोत ";s:3:"250";s:9:"à¥à¤§à¤¿";s:3:"251";s:9:"à¥à¤®à¥€";s:3:"252";s:9:"à¥à¤°à¤¸";s:3:"253";s:7:" दà¥";s:3:"254";s:7:" पन";s:3:"255";s:7:" बत";s:3:"256";s:7:" बन";s:3:"257";s:7:" भन";s:3:"258";s:9:"ंयà¥";s:3:"259";s:9:"आरम";s:3:"260";s:7:"खि ";s:3:"261";s:9:"णà¥à¤¡";s:3:"262";s:9:"तका";s:3:"263";s:9:"ताल";s:3:"264";s:7:"दी ";s:3:"265";s:9:"देख";s:3:"266";s:9:"निय";s:3:"267";s:9:"पनि";s:3:"268";s:9:"पà¥à¤¤";s:3:"269";s:9:"बता";s:3:"270";s:7:"मी ";s:3:"271";s:9:"मà¥à¤­";s:3:"272";s:7:"र स";s:3:"273";s:9:"रमà¥";s:3:"274";s:9:"लमा";s:3:"275";s:9:"विश";s:3:"276";s:9:"षाक";s:3:"277";s:9:"संय";s:3:"278";s:7:"ा ड";s:3:"279";s:7:"ा म";s:3:"280";s:9:"ानक";s:3:"281";s:9:"ालम";s:3:"282";s:7:"ि भ";s:3:"283";s:7:"ित ";s:3:"284";s:7:"ी प";s:3:"285";s:7:"ी र";s:3:"286";s:7:"ॠभ";s:3:"287";s:9:"à¥à¤¨à¥‡";s:3:"288";s:7:"े ग";s:3:"289";s:9:"ेखि";s:3:"290";s:7:"ेर ";s:3:"291";s:7:"ो भ";s:3:"292";s:7:"ो व";s:3:"293";s:7:"ो ह";s:3:"294";s:7:"à¥à¤­ ";s:3:"295";s:7:"à¥à¤° ";s:3:"296";s:7:" ता";s:3:"297";s:7:" नम";s:3:"298";s:7:" ना";s:3:"299";}s:9:"norwegian";a:300:{s:3:"er ";s:1:"0";s:3:"en ";s:1:"1";s:3:"et ";s:1:"2";s:3:" de";s:1:"3";s:3:"det";s:1:"4";s:3:" i ";s:1:"5";s:3:"for";s:1:"6";s:3:"il ";s:1:"7";s:3:" fo";s:1:"8";s:3:" me";s:1:"9";s:3:"ing";s:2:"10";s:3:"om ";s:2:"11";s:3:" ha";s:2:"12";s:3:" og";s:2:"13";s:3:"ter";s:2:"14";s:3:" er";s:2:"15";s:3:" ti";s:2:"16";s:3:" st";s:2:"17";s:3:"og ";s:2:"18";s:3:"til";s:2:"19";s:3:"ne ";s:2:"20";s:3:" vi";s:2:"21";s:3:"re ";s:2:"22";s:3:" en";s:2:"23";s:3:" se";s:2:"24";s:3:"te ";s:2:"25";s:3:"or ";s:2:"26";s:3:"de ";s:2:"27";s:3:"kke";s:2:"28";s:3:"ke ";s:2:"29";s:3:"ar ";s:2:"30";s:3:"ng ";s:2:"31";s:3:"r s";s:2:"32";s:3:"ene";s:2:"33";s:3:" so";s:2:"34";s:3:"e s";s:2:"35";s:3:"der";s:2:"36";s:3:"an ";s:2:"37";s:3:"som";s:2:"38";s:3:"ste";s:2:"39";s:3:"at ";s:2:"40";s:3:"ed ";s:2:"41";s:3:"r i";s:2:"42";s:3:" av";s:2:"43";s:3:" in";s:2:"44";s:3:"men";s:2:"45";s:3:" at";s:2:"46";s:3:" ko";s:2:"47";s:4:" pÃ¥";s:2:"48";s:3:"har";s:2:"49";s:3:" si";s:2:"50";s:3:"ere";s:2:"51";s:4:"pÃ¥ ";s:2:"52";s:3:"nde";s:2:"53";s:3:"and";s:2:"54";s:3:"els";s:2:"55";s:3:"ett";s:2:"56";s:3:"tte";s:2:"57";s:3:"lig";s:2:"58";s:3:"t s";s:2:"59";s:3:"den";s:2:"60";s:3:"t i";s:2:"61";s:3:"ikk";s:2:"62";s:3:"med";s:2:"63";s:3:"n s";s:2:"64";s:3:"rt ";s:2:"65";s:3:"ser";s:2:"66";s:3:"ska";s:2:"67";s:3:"t e";s:2:"68";s:3:"ker";s:2:"69";s:3:"sen";s:2:"70";s:3:"av ";s:2:"71";s:3:"ler";s:2:"72";s:3:"r a";s:2:"73";s:3:"ten";s:2:"74";s:3:"e f";s:2:"75";s:3:"r e";s:2:"76";s:3:"r t";s:2:"77";s:3:"ede";s:2:"78";s:3:"ig ";s:2:"79";s:3:" re";s:2:"80";s:3:"han";s:2:"81";s:3:"lle";s:2:"82";s:3:"ner";s:2:"83";s:3:" bl";s:2:"84";s:3:" fr";s:2:"85";s:3:"le ";s:2:"86";s:3:" ve";s:2:"87";s:3:"e t";s:2:"88";s:3:"lan";s:2:"89";s:3:"mme";s:2:"90";s:3:"nge";s:2:"91";s:3:" be";s:2:"92";s:3:" ik";s:2:"93";s:3:" om";s:2:"94";s:4:" Ã¥ ";s:2:"95";s:3:"ell";s:2:"96";s:3:"sel";s:2:"97";s:3:"sta";s:2:"98";s:3:"ver";s:2:"99";s:3:" et";s:3:"100";s:3:" sk";s:3:"101";s:3:"nte";s:3:"102";s:3:"one";s:3:"103";s:3:"ore";s:3:"104";s:3:"r d";s:3:"105";s:3:"ske";s:3:"106";s:3:" an";s:3:"107";s:3:" la";s:3:"108";s:3:"del";s:3:"109";s:3:"gen";s:3:"110";s:3:"nin";s:3:"111";s:3:"r f";s:3:"112";s:3:"r v";s:3:"113";s:3:"se ";s:3:"114";s:3:" po";s:3:"115";s:3:"ir ";s:3:"116";s:3:"jon";s:3:"117";s:3:"mer";s:3:"118";s:3:"nen";s:3:"119";s:3:"omm";s:3:"120";s:3:"sjo";s:3:"121";s:3:" fl";s:3:"122";s:3:" sa";s:3:"123";s:3:"ern";s:3:"124";s:3:"kom";s:3:"125";s:3:"r m";s:3:"126";s:3:"r o";s:3:"127";s:3:"ren";s:3:"128";s:3:"vil";s:3:"129";s:3:"ale";s:3:"130";s:3:"es ";s:3:"131";s:3:"n a";s:3:"132";s:3:"t f";s:3:"133";s:3:" le";s:3:"134";s:3:"bli";s:3:"135";s:3:"e e";s:3:"136";s:3:"e i";s:3:"137";s:3:"e v";s:3:"138";s:3:"het";s:3:"139";s:3:"ye ";s:3:"140";s:3:" ir";s:3:"141";s:3:"al ";s:3:"142";s:3:"e o";s:3:"143";s:3:"ide";s:3:"144";s:3:"iti";s:3:"145";s:3:"lit";s:3:"146";s:3:"nne";s:3:"147";s:3:"ran";s:3:"148";s:3:"t o";s:3:"149";s:3:"tal";s:3:"150";s:3:"tat";s:3:"151";s:3:"tt ";s:3:"152";s:3:" ka";s:3:"153";s:3:"ans";s:3:"154";s:3:"asj";s:3:"155";s:3:"ge ";s:3:"156";s:3:"inn";s:3:"157";s:3:"kon";s:3:"158";s:3:"lse";s:3:"159";s:3:"pet";s:3:"160";s:3:"t d";s:3:"161";s:3:"vi ";s:3:"162";s:3:" ut";s:3:"163";s:3:"ent";s:3:"164";s:3:"eri";s:3:"165";s:3:"oli";s:3:"166";s:3:"r p";s:3:"167";s:3:"ret";s:3:"168";s:3:"ris";s:3:"169";s:3:"sto";s:3:"170";s:3:"str";s:3:"171";s:3:"t a";s:3:"172";s:3:" ga";s:3:"173";s:3:"all";s:3:"174";s:3:"ape";s:3:"175";s:3:"g s";s:3:"176";s:3:"ill";s:3:"177";s:3:"ira";s:3:"178";s:3:"kap";s:3:"179";s:3:"nn ";s:3:"180";s:3:"opp";s:3:"181";s:3:"r h";s:3:"182";s:3:"rin";s:3:"183";s:3:" br";s:3:"184";s:3:" op";s:3:"185";s:3:"e m";s:3:"186";s:3:"ert";s:3:"187";s:3:"ger";s:3:"188";s:3:"ion";s:3:"189";s:3:"kal";s:3:"190";s:3:"lsk";s:3:"191";s:3:"nes";s:3:"192";s:3:" gj";s:3:"193";s:3:" mi";s:3:"194";s:3:" pr";s:3:"195";s:3:"ang";s:3:"196";s:3:"e h";s:3:"197";s:3:"e r";s:3:"198";s:3:"elt";s:3:"199";s:3:"enn";s:3:"200";s:3:"i s";s:3:"201";s:3:"ist";s:3:"202";s:3:"jen";s:3:"203";s:3:"kan";s:3:"204";s:3:"lt ";s:3:"205";s:3:"nal";s:3:"206";s:3:"res";s:3:"207";s:3:"tor";s:3:"208";s:3:"ass";s:3:"209";s:3:"dre";s:3:"210";s:3:"e b";s:3:"211";s:3:"e p";s:3:"212";s:3:"mel";s:3:"213";s:3:"n t";s:3:"214";s:3:"nse";s:3:"215";s:3:"ort";s:3:"216";s:3:"per";s:3:"217";s:3:"reg";s:3:"218";s:3:"sje";s:3:"219";s:3:"t p";s:3:"220";s:3:"t v";s:3:"221";s:3:" hv";s:3:"222";s:4:" nÃ¥";s:3:"223";s:3:" va";s:3:"224";s:3:"ann";s:3:"225";s:3:"ato";s:3:"226";s:3:"e a";s:3:"227";s:3:"est";s:3:"228";s:3:"ise";s:3:"229";s:3:"isk";s:3:"230";s:3:"oil";s:3:"231";s:3:"ord";s:3:"232";s:3:"pol";s:3:"233";s:3:"ra ";s:3:"234";s:3:"rak";s:3:"235";s:3:"sse";s:3:"236";s:3:"toi";s:3:"237";s:3:" gr";s:3:"238";s:3:"ak ";s:3:"239";s:3:"eg ";s:3:"240";s:3:"ele";s:3:"241";s:3:"g a";s:3:"242";s:3:"ige";s:3:"243";s:3:"igh";s:3:"244";s:3:"m e";s:3:"245";s:3:"n f";s:3:"246";s:3:"n v";s:3:"247";s:3:"ndr";s:3:"248";s:3:"nsk";s:3:"249";s:3:"rer";s:3:"250";s:3:"t m";s:3:"251";s:3:"und";s:3:"252";s:3:"var";s:3:"253";s:4:"Ã¥r ";s:3:"254";s:3:" he";s:3:"255";s:3:" no";s:3:"256";s:3:" ny";s:3:"257";s:3:"end";s:3:"258";s:3:"ete";s:3:"259";s:3:"fly";s:3:"260";s:3:"g i";s:3:"261";s:3:"ghe";s:3:"262";s:3:"ier";s:3:"263";s:3:"ind";s:3:"264";s:3:"int";s:3:"265";s:3:"lin";s:3:"266";s:3:"n d";s:3:"267";s:3:"n p";s:3:"268";s:3:"rne";s:3:"269";s:3:"sak";s:3:"270";s:3:"sie";s:3:"271";s:3:"t b";s:3:"272";s:3:"tid";s:3:"273";s:3:" al";s:3:"274";s:3:" pa";s:3:"275";s:3:" tr";s:3:"276";s:3:"ag ";s:3:"277";s:3:"dig";s:3:"278";s:3:"e d";s:3:"279";s:3:"e k";s:3:"280";s:3:"ess";s:3:"281";s:3:"hol";s:3:"282";s:3:"i d";s:3:"283";s:3:"lag";s:3:"284";s:3:"led";s:3:"285";s:3:"n e";s:3:"286";s:3:"n i";s:3:"287";s:3:"n o";s:3:"288";s:3:"pri";s:3:"289";s:3:"r b";s:3:"290";s:3:"st ";s:3:"291";s:3:" fe";s:3:"292";s:3:" li";s:3:"293";s:3:" ry";s:3:"294";s:3:"air";s:3:"295";s:3:"ake";s:3:"296";s:3:"d s";s:3:"297";s:3:"eas";s:3:"298";s:3:"egi";s:3:"299";}s:6:"pashto";a:300:{s:4:" د ";s:1:"0";s:5:"اؤ ";s:1:"1";s:5:" اؤ";s:1:"2";s:5:"نو ";s:1:"3";s:5:"Û Ø¯";s:1:"4";s:5:"ره ";s:1:"5";s:5:" په";s:1:"6";s:5:"نه ";s:1:"7";s:5:"Ú†Û ";s:1:"8";s:5:" Ú†Û";s:1:"9";s:5:"په ";s:2:"10";s:5:"Ù‡ د";s:2:"11";s:5:"ته ";s:2:"12";s:5:"Ùˆ ا";s:2:"13";s:6:"ونو";s:2:"14";s:5:"Ùˆ د";s:2:"15";s:5:" او";s:2:"16";s:6:"انو";s:2:"17";s:6:"ونه";s:2:"18";s:5:"Ù‡ Ú©";s:2:"19";s:5:" دا";s:2:"20";s:5:"Ù‡ ا";s:2:"21";s:5:"Ø¯Û ";s:2:"22";s:5:"ÚšÛ ";s:2:"23";s:5:" Ú©Û";s:2:"24";s:5:"ان ";s:2:"25";s:5:"لو ";s:2:"26";s:5:"هم ";s:2:"27";s:5:"Ùˆ Ù…";s:2:"28";s:6:"Ú©ÚšÛ";s:2:"29";s:5:"Ù‡ Ù…";s:2:"30";s:5:"Ù‰ ا";s:2:"31";s:5:" نو";s:2:"32";s:5:" ته";s:2:"33";s:5:" Ú©Úš";s:2:"34";s:6:"رون";s:2:"35";s:5:"Ú©Û ";s:2:"36";s:5:"ده ";s:2:"37";s:5:"له ";s:2:"38";s:5:"به ";s:2:"39";s:5:"رو ";s:2:"40";s:5:" هم";s:2:"41";s:5:"Ù‡ Ùˆ";s:2:"42";s:5:"وى ";s:2:"43";s:5:"او ";s:2:"44";s:6:"تون";s:2:"45";s:5:"دا ";s:2:"46";s:5:" Ú©Ùˆ";s:2:"47";s:5:" Ú©Ú“";s:2:"48";s:6:"قام";s:2:"49";s:5:" تر";s:2:"50";s:6:"ران";s:2:"51";s:5:"Ù‡ Ù¾";s:2:"52";s:5:"Û Ùˆ";s:2:"53";s:5:"Û Ù¾";s:2:"54";s:5:" به";s:2:"55";s:5:" خو";s:2:"56";s:5:"تو ";s:2:"57";s:5:"د د";s:2:"58";s:5:"د ا";s:2:"59";s:5:"Ù‡ ت";s:2:"60";s:5:"Ùˆ Ù¾";s:2:"61";s:5:"يا ";s:2:"62";s:5:" خپ";s:2:"63";s:5:" دو";s:2:"64";s:5:" را";s:2:"65";s:5:" مش";s:2:"66";s:5:" پر";s:2:"67";s:6:"ارو";s:2:"68";s:5:"Ø±Û ";s:2:"69";s:5:"Ù… د";s:2:"70";s:6:"مشر";s:2:"71";s:5:" شو";s:2:"72";s:5:" ور";s:2:"73";s:5:"ار ";s:2:"74";s:5:"دى ";s:2:"75";s:5:" اد";s:2:"76";s:5:" دى";s:2:"77";s:5:" مو";s:2:"78";s:5:"د Ù¾";s:2:"79";s:5:"لي ";s:2:"80";s:5:"Ùˆ Ú©";s:2:"81";s:5:" مق";s:2:"82";s:5:" يو";s:2:"83";s:5:"ؤ د";s:2:"84";s:6:"خپل";s:2:"85";s:6:"سره";s:2:"86";s:5:"Ù‡ Ú†";s:2:"87";s:5:"ور ";s:2:"88";s:5:" تا";s:2:"89";s:5:" دÛ";s:2:"90";s:5:" رو";s:2:"91";s:5:" سر";s:2:"92";s:5:" مل";s:2:"93";s:5:" کا";s:2:"94";s:5:"ؤ ا";s:2:"95";s:6:"اره";s:2:"96";s:6:"برو";s:2:"97";s:5:"مه ";s:2:"98";s:5:"Ù‡ ب";s:2:"99";s:5:"Ùˆ ت";s:3:"100";s:6:"پښت";s:3:"101";s:5:" با";s:3:"102";s:5:" دغ";s:3:"103";s:5:" قب";s:3:"104";s:5:" له";s:3:"105";s:5:" وا";s:3:"106";s:5:" پا";s:3:"107";s:5:" Ù¾Úš";s:3:"108";s:5:"د Ù…";s:3:"109";s:5:"د Ù‡";s:3:"110";s:5:"Ù„Û ";s:3:"111";s:6:"مات";s:3:"112";s:5:"مو ";s:3:"113";s:5:"Ù‡ Ù‡";s:3:"114";s:5:"وي ";s:3:"115";s:5:"Û Ø¨";s:3:"116";s:5:"Û Ú©";s:3:"117";s:5:" ده";s:3:"118";s:5:" قا";s:3:"119";s:5:"ال ";s:3:"120";s:6:"اما";s:3:"121";s:5:"د Ù†";s:3:"122";s:6:"قبر";s:3:"123";s:5:"Ù‡ Ù†";s:3:"124";s:6:"پار";s:3:"125";s:5:" اث";s:3:"126";s:5:" بي";s:3:"127";s:5:" لا";s:3:"128";s:5:" لر";s:3:"129";s:6:"اثا";s:3:"130";s:5:"د Ø®";s:3:"131";s:6:"دار";s:3:"132";s:6:"ريخ";s:3:"133";s:6:"شرا";s:3:"134";s:6:"مقا";s:3:"135";s:5:"Ù†Û ";s:3:"136";s:5:"Ù‡ ر";s:3:"137";s:5:"Ù‡ Ù„";s:3:"138";s:6:"ولو";s:3:"139";s:5:"يو ";s:3:"140";s:6:"کوم";s:3:"141";s:5:" دد";s:3:"142";s:5:" لو";s:3:"143";s:5:" مح";s:3:"144";s:5:" مر";s:3:"145";s:5:" وو";s:3:"146";s:6:"اتو";s:3:"147";s:6:"اري";s:3:"148";s:6:"الو";s:3:"149";s:6:"اند";s:3:"150";s:6:"خان";s:3:"151";s:5:"د ت";s:3:"152";s:5:"Ø³Û ";s:3:"153";s:5:"لى ";s:3:"154";s:6:"نور";s:3:"155";s:5:"Ùˆ Ù„";s:3:"156";s:5:"ÙŠ Ú†";s:3:"157";s:5:"Ú“ÙŠ ";s:3:"158";s:6:"ښتو";s:3:"159";s:5:"Û Ù„";s:3:"160";s:5:" جو";s:3:"161";s:5:" سي";s:3:"162";s:5:"ام ";s:3:"163";s:6:"بان";s:3:"164";s:6:"تار";s:3:"165";s:5:"تر ";s:3:"166";s:6:"ثار";s:3:"167";s:5:"خو ";s:3:"168";s:5:"دو ";s:3:"169";s:5:"ر Ú©";s:3:"170";s:5:"Ù„ د";s:3:"171";s:6:"مون";s:3:"172";s:6:"ندÛ";s:3:"173";s:5:"Ùˆ Ù†";s:3:"174";s:5:"ول ";s:3:"175";s:5:"وه ";s:3:"176";s:5:"Ù‰ Ùˆ";s:3:"177";s:5:"ÙŠ د";s:3:"178";s:5:"Û Ø§";s:3:"179";s:5:"Û Øª";s:3:"180";s:5:"Û ÙŠ";s:3:"181";s:5:" Ø­Ú©";s:3:"182";s:5:" خب";s:3:"183";s:5:" نه";s:3:"184";s:5:" پو";s:3:"185";s:5:"ا د";s:3:"186";s:5:"ØªÛ ";s:3:"187";s:6:"جوړ";s:3:"188";s:6:"Ø­Ú©Ù…";s:3:"189";s:6:"Ø­Ú©Ùˆ";s:3:"190";s:6:"خبر";s:3:"191";s:6:"دان";s:3:"192";s:5:"ر د";s:3:"193";s:5:"غه ";s:3:"194";s:6:"قاÙ";s:3:"195";s:6:"محک";s:3:"196";s:6:"وال";s:3:"197";s:6:"ومت";s:3:"198";s:6:"ويل";s:3:"199";s:5:"Ù‰ د";s:3:"200";s:5:"Ù‰ Ù…";s:3:"201";s:6:"يره";s:3:"202";s:5:"پر ";s:3:"203";s:6:"کول";s:3:"204";s:5:"Û Ù‡";s:3:"205";s:5:" تي";s:3:"206";s:5:" خا";s:3:"207";s:5:" ÙˆÚ©";s:3:"208";s:5:" يا";s:3:"209";s:5:" Úا";s:3:"210";s:5:"ؤ Ù‚";s:3:"211";s:6:"انÛ";s:3:"212";s:5:"بى ";s:3:"213";s:5:"غو ";s:3:"214";s:5:"Ù‡ Ø®";s:3:"215";s:5:"Ùˆ ب";s:3:"216";s:6:"ودا";s:3:"217";s:6:"يدو";s:3:"218";s:5:"Ú“Û ";s:3:"219";s:6:"کال";s:3:"220";s:5:" بر";s:3:"221";s:5:" قد";s:3:"222";s:5:" مي";s:3:"223";s:5:" وي";s:3:"224";s:5:" کر";s:3:"225";s:5:"ؤ Ù…";s:3:"226";s:5:"ات ";s:3:"227";s:6:"ايي";s:3:"228";s:5:"تى ";s:3:"229";s:6:"تيا";s:3:"230";s:6:"تير";s:3:"231";s:6:"خوا";s:3:"232";s:6:"دغو";s:3:"233";s:5:"دم ";s:3:"234";s:6:"ديم";s:3:"235";s:5:"ر Ùˆ";s:3:"236";s:6:"قدي";s:3:"237";s:5:"Ù… Ø®";s:3:"238";s:6:"مان";s:3:"239";s:5:"Ù…Û ";s:3:"240";s:6:"نيو";s:3:"241";s:5:"Ù†Ú– ";s:3:"242";s:5:"Ù‡ ÙŠ";s:3:"243";s:5:"Ùˆ س";s:3:"244";s:5:"Ùˆ Ú†";s:3:"245";s:6:"وان";s:3:"246";s:6:"ورو";s:3:"247";s:6:"ونږ";s:3:"248";s:6:"پور";s:3:"249";s:5:"Ú“Ù‡ ";s:3:"250";s:5:"Ú“Ùˆ ";s:3:"251";s:5:"Û Ø¯";s:3:"252";s:5:"Û Ù†";s:3:"253";s:5:" اه";s:3:"254";s:5:" زي";s:3:"255";s:5:" سو";s:3:"256";s:5:" شي";s:3:"257";s:5:" هر";s:3:"258";s:5:" هغ";s:3:"259";s:5:" ښا";s:3:"260";s:6:"اتل";s:3:"261";s:5:"اق ";s:3:"262";s:6:"اني";s:3:"263";s:6:"بري";s:3:"264";s:5:"Ø¨Û ";s:3:"265";s:5:"ت ا";s:3:"266";s:5:"د ب";s:3:"267";s:5:"د س";s:3:"268";s:5:"ر Ù…";s:3:"269";s:5:"رى ";s:3:"270";s:6:"عرا";s:3:"271";s:6:"لان";s:3:"272";s:5:"مى ";s:3:"273";s:5:"نى ";s:3:"274";s:5:"Ùˆ Ø®";s:3:"275";s:5:"وئ ";s:3:"276";s:6:"ورک";s:3:"277";s:6:"ورÛ";s:3:"278";s:5:"ون ";s:3:"279";s:6:"ÙˆÚ©Ú“";s:3:"280";s:5:"Ù‰ Ú†";s:3:"281";s:6:"يمه";s:3:"282";s:5:"ÙŠÛ ";s:3:"283";s:6:"ښتن";s:3:"284";s:5:"Ú©Ù‡ ";s:3:"285";s:6:"Ú©Ú“ÙŠ";s:3:"286";s:5:"Û Ø®";s:3:"287";s:5:"Û’ Ø´";s:3:"288";s:5:" تح";s:3:"289";s:5:" تو";s:3:"290";s:5:" در";s:3:"291";s:5:" دپ";s:3:"292";s:5:" صو";s:3:"293";s:5:" عر";s:3:"294";s:5:" ول";s:3:"295";s:5:" يؤ";s:3:"296";s:5:" Ù¾Û€";s:3:"297";s:5:" Ú…Ùˆ";s:3:"298";s:5:"ا ا";s:3:"299";}s:6:"pidgin";a:300:{s:3:" de";s:1:"0";s:3:" we";s:1:"1";s:3:" di";s:1:"2";s:3:"di ";s:1:"3";s:3:"dem";s:1:"4";s:3:"em ";s:1:"5";s:3:"ay ";s:1:"6";s:3:" sa";s:1:"7";s:3:"or ";s:1:"8";s:3:"say";s:1:"9";s:3:"ke ";s:2:"10";s:3:"ey ";s:2:"11";s:3:" an";s:2:"12";s:3:" go";s:2:"13";s:3:" e ";s:2:"14";s:3:" to";s:2:"15";s:3:" ma";s:2:"16";s:3:"e d";s:2:"17";s:3:"wey";s:2:"18";s:3:"for";s:2:"19";s:3:"nd ";s:2:"20";s:3:"to ";s:2:"21";s:3:" be";s:2:"22";s:3:" fo";s:2:"23";s:3:"ake";s:2:"24";s:3:"im ";s:2:"25";s:3:" pe";s:2:"26";s:3:"le ";s:2:"27";s:3:"go ";s:2:"28";s:3:"ll ";s:2:"29";s:3:"de ";s:2:"30";s:3:"e s";s:2:"31";s:3:"on ";s:2:"32";s:3:"get";s:2:"33";s:3:"ght";s:2:"34";s:3:"igh";s:2:"35";s:3:" ri";s:2:"36";s:3:"et ";s:2:"37";s:3:"rig";s:2:"38";s:3:" ge";s:2:"39";s:3:"y d";s:2:"40";s:3:" na";s:2:"41";s:3:"mak";s:2:"42";s:3:"t t";s:2:"43";s:3:" no";s:2:"44";s:3:"and";s:2:"45";s:3:"tin";s:2:"46";s:3:"ing";s:2:"47";s:3:"eve";s:2:"48";s:3:"ri ";s:2:"49";s:3:" im";s:2:"50";s:3:" am";s:2:"51";s:3:" or";s:2:"52";s:3:"am ";s:2:"53";s:3:"be ";s:2:"54";s:3:" ev";s:2:"55";s:3:" ta";s:2:"56";s:3:"ht ";s:2:"57";s:3:"e w";s:2:"58";s:3:" li";s:2:"59";s:3:"eri";s:2:"60";s:3:"ng ";s:2:"61";s:3:"ver";s:2:"62";s:3:"all";s:2:"63";s:3:"e f";s:2:"64";s:3:"ers";s:2:"65";s:3:"ntr";s:2:"66";s:3:"ont";s:2:"67";s:3:" do";s:2:"68";s:3:"r d";s:2:"69";s:3:" ko";s:2:"70";s:3:" ti";s:2:"71";s:3:"an ";s:2:"72";s:3:"kon";s:2:"73";s:3:"per";s:2:"74";s:3:"tri";s:2:"75";s:3:"y e";s:2:"76";s:3:"rso";s:2:"77";s:3:"son";s:2:"78";s:3:"no ";s:2:"79";s:3:"ome";s:2:"80";s:3:"is ";s:2:"81";s:3:"do ";s:2:"82";s:3:"ne ";s:2:"83";s:3:"one";s:2:"84";s:3:"ion";s:2:"85";s:3:"m g";s:2:"86";s:3:"i k";s:2:"87";s:3:" al";s:2:"88";s:3:"bod";s:2:"89";s:3:"i w";s:2:"90";s:3:"odi";s:2:"91";s:3:" so";s:2:"92";s:3:" wo";s:2:"93";s:3:"o d";s:2:"94";s:3:"st ";s:2:"95";s:3:"t r";s:2:"96";s:3:" of";s:2:"97";s:3:"aim";s:2:"98";s:3:"e g";s:2:"99";s:3:"nai";s:3:"100";s:3:" co";s:3:"101";s:3:"dis";s:3:"102";s:3:"me ";s:3:"103";s:3:"of ";s:3:"104";s:3:" wa";s:3:"105";s:3:"e t";s:3:"106";s:3:" ar";s:3:"107";s:3:"e l";s:3:"108";s:3:"ike";s:3:"109";s:3:"lik";s:3:"110";s:3:"t a";s:3:"111";s:3:"wor";s:3:"112";s:3:"alk";s:3:"113";s:3:"ell";s:3:"114";s:3:"eop";s:3:"115";s:3:"lk ";s:3:"116";s:3:"opl";s:3:"117";s:3:"peo";s:3:"118";s:3:"ple";s:3:"119";s:3:"re ";s:3:"120";s:3:"tal";s:3:"121";s:3:"any";s:3:"122";s:3:"e a";s:3:"123";s:3:"o g";s:3:"124";s:3:"art";s:3:"125";s:3:"cle";s:3:"126";s:3:"i p";s:3:"127";s:3:"icl";s:3:"128";s:3:"rti";s:3:"129";s:3:"the";s:3:"130";s:3:"tic";s:3:"131";s:3:"we ";s:3:"132";s:3:"f d";s:3:"133";s:3:"in ";s:3:"134";s:3:" mu";s:3:"135";s:3:"e n";s:3:"136";s:3:"e o";s:3:"137";s:3:"mus";s:3:"138";s:3:"n d";s:3:"139";s:3:"na ";s:3:"140";s:3:"o m";s:3:"141";s:3:"ust";s:3:"142";s:3:"wel";s:3:"143";s:3:"e e";s:3:"144";s:3:"her";s:3:"145";s:3:"m d";s:3:"146";s:3:"nt ";s:3:"147";s:3:" fi";s:3:"148";s:3:"at ";s:3:"149";s:3:"e b";s:3:"150";s:3:"it ";s:3:"151";s:3:"m w";s:3:"152";s:3:"o t";s:3:"153";s:3:"wan";s:3:"154";s:3:"com";s:3:"155";s:3:"da ";s:3:"156";s:3:"fit";s:3:"157";s:3:"m b";s:3:"158";s:3:"so ";s:3:"159";s:3:" fr";s:3:"160";s:3:"ce ";s:3:"161";s:3:"er ";s:3:"162";s:3:"o a";s:3:"163";s:3:" if";s:3:"164";s:3:" on";s:3:"165";s:3:"ent";s:3:"166";s:3:"if ";s:3:"167";s:3:"ind";s:3:"168";s:3:"kin";s:3:"169";s:3:"l d";s:3:"170";s:3:"man";s:3:"171";s:3:"o s";s:3:"172";s:3:" se";s:3:"173";s:3:"y a";s:3:"174";s:3:"y m";s:3:"175";s:3:" re";s:3:"176";s:3:"ee ";s:3:"177";s:3:"k a";s:3:"178";s:3:"t s";s:3:"179";s:3:"ve ";s:3:"180";s:3:"y w";s:3:"181";s:3:" ki";s:3:"182";s:3:"eti";s:3:"183";s:3:"men";s:3:"184";s:3:"ta ";s:3:"185";s:3:"y n";s:3:"186";s:3:"d t";s:3:"187";s:3:"dey";s:3:"188";s:3:"e c";s:3:"189";s:3:"i o";s:3:"190";s:3:"ibo";s:3:"191";s:3:"ld ";s:3:"192";s:3:"m t";s:3:"193";s:3:"n b";s:3:"194";s:3:"o b";s:3:"195";s:3:"ow ";s:3:"196";s:3:"ree";s:3:"197";s:3:"rio";s:3:"198";s:3:"t d";s:3:"199";s:3:" hu";s:3:"200";s:3:" su";s:3:"201";s:3:"en ";s:3:"202";s:3:"hts";s:3:"203";s:3:"ive";s:3:"204";s:3:"m n";s:3:"205";s:3:"n g";s:3:"206";s:3:"ny ";s:3:"207";s:3:"oth";s:3:"208";s:3:"ts ";s:3:"209";s:3:" as";s:3:"210";s:3:" wh";s:3:"211";s:3:"as ";s:3:"212";s:3:"gom";s:3:"213";s:3:"hum";s:3:"214";s:3:"k s";s:3:"215";s:3:"oda";s:3:"216";s:3:"ork";s:3:"217";s:3:"se ";s:3:"218";s:3:"uma";s:3:"219";s:3:"ut ";s:3:"220";s:3:" ba";s:3:"221";s:3:" ot";s:3:"222";s:3:"ano";s:3:"223";s:3:"m a";s:3:"224";s:3:"m s";s:3:"225";s:3:"nod";s:3:"226";s:3:"om ";s:3:"227";s:3:"r a";s:3:"228";s:3:"r i";s:3:"229";s:3:"rk ";s:3:"230";s:3:" fa";s:3:"231";s:3:" si";s:3:"232";s:3:" th";s:3:"233";s:3:"ad ";s:3:"234";s:3:"e m";s:3:"235";s:3:"eac";s:3:"236";s:3:"m m";s:3:"237";s:3:"n w";s:3:"238";s:3:"nob";s:3:"239";s:3:"orl";s:3:"240";s:3:"out";s:3:"241";s:3:"own";s:3:"242";s:3:"r s";s:3:"243";s:3:"r w";s:3:"244";s:3:"rib";s:3:"245";s:3:"rld";s:3:"246";s:3:"s w";s:3:"247";s:3:"ure";s:3:"248";s:3:"wn ";s:3:"249";s:3:" ow";s:3:"250";s:3:"a d";s:3:"251";s:3:"bad";s:3:"252";s:3:"ch ";s:3:"253";s:3:"fre";s:3:"254";s:3:"gs ";s:3:"255";s:3:"m k";s:3:"256";s:3:"nce";s:3:"257";s:3:"ngs";s:3:"258";s:3:"o f";s:3:"259";s:3:"obo";s:3:"260";s:3:"rea";s:3:"261";s:3:"sur";s:3:"262";s:3:"y o";s:3:"263";s:3:" ab";s:3:"264";s:3:" un";s:3:"265";s:3:"abo";s:3:"266";s:3:"ach";s:3:"267";s:3:"bou";s:3:"268";s:3:"d m";s:3:"269";s:3:"dat";s:3:"270";s:3:"e p";s:3:"271";s:3:"g w";s:3:"272";s:3:"hol";s:3:"273";s:3:"i m";s:3:"274";s:3:"i r";s:3:"275";s:3:"m f";s:3:"276";s:3:"m o";s:3:"277";s:3:"n o";s:3:"278";s:3:"now";s:3:"279";s:3:"ry ";s:3:"280";s:3:"s a";s:3:"281";s:3:"t o";s:3:"282";s:3:"tay";s:3:"283";s:3:"wet";s:3:"284";s:3:" ag";s:3:"285";s:3:" bo";s:3:"286";s:3:" da";s:3:"287";s:3:" pr";s:3:"288";s:3:"arr";s:3:"289";s:3:"ati";s:3:"290";s:3:"d d";s:3:"291";s:3:"d p";s:3:"292";s:3:"i g";s:3:"293";s:3:"i t";s:3:"294";s:3:"liv";s:3:"295";s:3:"ly ";s:3:"296";s:3:"n a";s:3:"297";s:3:"od ";s:3:"298";s:3:"ok ";s:3:"299";}s:6:"polish";a:300:{s:3:"ie ";s:1:"0";s:3:"nie";s:1:"1";s:3:"em ";s:1:"2";s:3:" ni";s:1:"3";s:3:" po";s:1:"4";s:3:" pr";s:1:"5";s:3:"dzi";s:1:"6";s:3:" na";s:1:"7";s:4:"że ";s:1:"8";s:3:"rze";s:1:"9";s:3:"na ";s:2:"10";s:4:"Å‚em";s:2:"11";s:3:"wie";s:2:"12";s:3:" w ";s:2:"13";s:4:" że";s:2:"14";s:3:"go ";s:2:"15";s:3:" by";s:2:"16";s:3:"prz";s:2:"17";s:3:"owa";s:2:"18";s:4:"iÄ™ ";s:2:"19";s:3:" do";s:2:"20";s:3:" si";s:2:"21";s:3:"owi";s:2:"22";s:3:" pa";s:2:"23";s:3:" za";s:2:"24";s:3:"ch ";s:2:"25";s:3:"ego";s:2:"26";s:4:"aÅ‚ ";s:2:"27";s:4:"siÄ™";s:2:"28";s:3:"ej ";s:2:"29";s:4:"waÅ‚";s:2:"30";s:3:"ym ";s:2:"31";s:3:"ani";s:2:"32";s:4:"aÅ‚e";s:2:"33";s:3:"to ";s:2:"34";s:3:" i ";s:2:"35";s:3:" to";s:2:"36";s:3:" te";s:2:"37";s:3:"e p";s:2:"38";s:3:" je";s:2:"39";s:3:" z ";s:2:"40";s:3:"czy";s:2:"41";s:4:"byÅ‚";s:2:"42";s:3:"pan";s:2:"43";s:3:"sta";s:2:"44";s:3:"kie";s:2:"45";s:3:" ja";s:2:"46";s:3:"do ";s:2:"47";s:3:" ch";s:2:"48";s:3:" cz";s:2:"49";s:3:" wi";s:2:"50";s:4:"iaÅ‚";s:2:"51";s:3:"a p";s:2:"52";s:3:"pow";s:2:"53";s:3:" mi";s:2:"54";s:3:"li ";s:2:"55";s:3:"eni";s:2:"56";s:3:"zie";s:2:"57";s:3:" ta";s:2:"58";s:3:" wa";s:2:"59";s:4:"Å‚o ";s:2:"60";s:4:"ać ";s:2:"61";s:3:"dy ";s:2:"62";s:3:"ak ";s:2:"63";s:3:"e w";s:2:"64";s:3:" a ";s:2:"65";s:3:" od";s:2:"66";s:3:" st";s:2:"67";s:3:"nia";s:2:"68";s:3:"rzy";s:2:"69";s:3:"ied";s:2:"70";s:3:" kt";s:2:"71";s:3:"odz";s:2:"72";s:3:"cie";s:2:"73";s:3:"cze";s:2:"74";s:3:"ia ";s:2:"75";s:3:"iel";s:2:"76";s:4:"któ";s:2:"77";s:3:"o p";s:2:"78";s:4:"tór";s:2:"79";s:4:"Å›ci";s:2:"80";s:3:" sp";s:2:"81";s:3:" wy";s:2:"82";s:3:"jak";s:2:"83";s:3:"tak";s:2:"84";s:3:"zy ";s:2:"85";s:3:" mo";s:2:"86";s:5:"aÅ‚Ä™";s:2:"87";s:3:"pro";s:2:"88";s:3:"ski";s:2:"89";s:3:"tem";s:2:"90";s:5:"Å‚Ä™s";s:2:"91";s:3:" tr";s:2:"92";s:3:"e m";s:2:"93";s:3:"jes";s:2:"94";s:3:"my ";s:2:"95";s:3:" ro";s:2:"96";s:3:"edz";s:2:"97";s:3:"eli";s:2:"98";s:3:"iej";s:2:"99";s:3:" rz";s:3:"100";s:3:"a n";s:3:"101";s:3:"ale";s:3:"102";s:3:"an ";s:3:"103";s:3:"e s";s:3:"104";s:3:"est";s:3:"105";s:3:"le ";s:3:"106";s:3:"o s";s:3:"107";s:3:"i p";s:3:"108";s:3:"ki ";s:3:"109";s:3:" co";s:3:"110";s:3:"ada";s:3:"111";s:3:"czn";s:3:"112";s:3:"e t";s:3:"113";s:3:"e z";s:3:"114";s:3:"ent";s:3:"115";s:3:"ny ";s:3:"116";s:3:"pre";s:3:"117";s:4:"rzÄ…";s:3:"118";s:3:"y s";s:3:"119";s:3:" ko";s:3:"120";s:3:" o ";s:3:"121";s:3:"ach";s:3:"122";s:3:"am ";s:3:"123";s:3:"e n";s:3:"124";s:3:"o t";s:3:"125";s:3:"oli";s:3:"126";s:3:"pod";s:3:"127";s:3:"zia";s:3:"128";s:3:" go";s:3:"129";s:3:" ka";s:3:"130";s:3:"by ";s:3:"131";s:3:"ieg";s:3:"132";s:3:"ier";s:3:"133";s:4:"noÅ›";s:3:"134";s:3:"roz";s:3:"135";s:3:"spo";s:3:"136";s:3:"ych";s:3:"137";s:4:"zÄ…d";s:3:"138";s:3:" mn";s:3:"139";s:3:"acz";s:3:"140";s:3:"adz";s:3:"141";s:3:"bie";s:3:"142";s:3:"cho";s:3:"143";s:3:"mni";s:3:"144";s:3:"o n";s:3:"145";s:3:"ost";s:3:"146";s:3:"pra";s:3:"147";s:3:"ze ";s:3:"148";s:4:"Å‚a ";s:3:"149";s:3:" so";s:3:"150";s:3:"a m";s:3:"151";s:3:"cza";s:3:"152";s:3:"iem";s:3:"153";s:4:"ić ";s:3:"154";s:3:"obi";s:3:"155";s:4:"yÅ‚ ";s:3:"156";s:4:"yÅ‚o";s:3:"157";s:3:" mu";s:3:"158";s:4:" mó";s:3:"159";s:3:"a t";s:3:"160";s:3:"acj";s:3:"161";s:3:"ci ";s:3:"162";s:3:"e b";s:3:"163";s:3:"ich";s:3:"164";s:3:"kan";s:3:"165";s:3:"mi ";s:3:"166";s:3:"mie";s:3:"167";s:4:"oÅ›c";s:3:"168";s:3:"row";s:3:"169";s:3:"zen";s:3:"170";s:3:"zyd";s:3:"171";s:3:" al";s:3:"172";s:3:" re";s:3:"173";s:3:"a w";s:3:"174";s:3:"den";s:3:"175";s:3:"edy";s:3:"176";s:4:"iÅ‚ ";s:3:"177";s:3:"ko ";s:3:"178";s:3:"o w";s:3:"179";s:3:"rac";s:3:"180";s:4:"Å›my";s:3:"181";s:3:" ma";s:3:"182";s:3:" ra";s:3:"183";s:3:" sz";s:3:"184";s:3:" ty";s:3:"185";s:3:"e j";s:3:"186";s:3:"isk";s:3:"187";s:3:"ji ";s:3:"188";s:3:"ka ";s:3:"189";s:3:"m s";s:3:"190";s:3:"no ";s:3:"191";s:3:"o z";s:3:"192";s:3:"rez";s:3:"193";s:3:"wa ";s:3:"194";s:4:"ów ";s:3:"195";s:4:"Å‚ow";s:3:"196";s:5:"ść ";s:3:"197";s:3:" ob";s:3:"198";s:3:"ech";s:3:"199";s:3:"ecz";s:3:"200";s:3:"ezy";s:3:"201";s:3:"i w";s:3:"202";s:3:"ja ";s:3:"203";s:3:"kon";s:3:"204";s:4:"mów";s:3:"205";s:3:"ne ";s:3:"206";s:3:"ni ";s:3:"207";s:3:"now";s:3:"208";s:3:"nym";s:3:"209";s:3:"pol";s:3:"210";s:3:"pot";s:3:"211";s:3:"yde";s:3:"212";s:3:" dl";s:3:"213";s:3:" sy";s:3:"214";s:3:"a s";s:3:"215";s:3:"aki";s:3:"216";s:3:"ali";s:3:"217";s:3:"dla";s:3:"218";s:3:"icz";s:3:"219";s:3:"ku ";s:3:"220";s:3:"ocz";s:3:"221";s:3:"st ";s:3:"222";s:3:"str";s:3:"223";s:3:"szy";s:3:"224";s:3:"trz";s:3:"225";s:3:"wia";s:3:"226";s:3:"y p";s:3:"227";s:3:"za ";s:3:"228";s:3:" wt";s:3:"229";s:3:"chc";s:3:"230";s:3:"esz";s:3:"231";s:3:"iec";s:3:"232";s:3:"im ";s:3:"233";s:3:"la ";s:3:"234";s:3:"o m";s:3:"235";s:3:"sa ";s:3:"236";s:4:"wać";s:3:"237";s:3:"y n";s:3:"238";s:3:"zac";s:3:"239";s:3:"zec";s:3:"240";s:3:" gd";s:3:"241";s:3:"a z";s:3:"242";s:3:"ard";s:3:"243";s:3:"co ";s:3:"244";s:3:"dar";s:3:"245";s:3:"e r";s:3:"246";s:3:"ien";s:3:"247";s:3:"m n";s:3:"248";s:3:"m w";s:3:"249";s:3:"mia";s:3:"250";s:4:"moż";s:3:"251";s:3:"raw";s:3:"252";s:3:"rdz";s:3:"253";s:3:"tan";s:3:"254";s:3:"ted";s:3:"255";s:3:"teg";s:3:"256";s:4:"wiÅ‚";s:3:"257";s:3:"wte";s:3:"258";s:3:"y z";s:3:"259";s:3:"zna";s:3:"260";s:4:"zÅ‚o";s:3:"261";s:3:"a r";s:3:"262";s:3:"awi";s:3:"263";s:3:"bar";s:3:"264";s:3:"cji";s:3:"265";s:4:"czÄ…";s:3:"266";s:3:"dow";s:3:"267";s:4:"eż ";s:3:"268";s:3:"gdy";s:3:"269";s:3:"iek";s:3:"270";s:3:"je ";s:3:"271";s:3:"o d";s:3:"272";s:4:"taÅ‚";s:3:"273";s:3:"wal";s:3:"274";s:3:"wsz";s:3:"275";s:3:"zed";s:3:"276";s:4:"ówi";s:3:"277";s:4:"Ä™sa";s:3:"278";s:3:" ba";s:3:"279";s:3:" lu";s:3:"280";s:3:" wo";s:3:"281";s:3:"aln";s:3:"282";s:3:"arn";s:3:"283";s:3:"ba ";s:3:"284";s:3:"dzo";s:3:"285";s:3:"e c";s:3:"286";s:3:"hod";s:3:"287";s:3:"igi";s:3:"288";s:3:"lig";s:3:"289";s:3:"m p";s:3:"290";s:4:"myÅ›";s:3:"291";s:3:"o c";s:3:"292";s:3:"oni";s:3:"293";s:3:"rel";s:3:"294";s:3:"sku";s:3:"295";s:3:"ste";s:3:"296";s:3:"y w";s:3:"297";s:3:"yst";s:3:"298";s:3:"z w";s:3:"299";}s:10:"portuguese";a:300:{s:3:"de ";s:1:"0";s:3:" de";s:1:"1";s:3:"os ";s:1:"2";s:3:"as ";s:1:"3";s:3:"que";s:1:"4";s:3:" co";s:1:"5";s:4:"ão ";s:1:"6";s:3:"o d";s:1:"7";s:3:" qu";s:1:"8";s:3:"ue ";s:1:"9";s:3:" a ";s:2:"10";s:3:"do ";s:2:"11";s:3:"ent";s:2:"12";s:3:" se";s:2:"13";s:3:"a d";s:2:"14";s:3:"s d";s:2:"15";s:3:"e a";s:2:"16";s:3:"es ";s:2:"17";s:3:" pr";s:2:"18";s:3:"ra ";s:2:"19";s:3:"da ";s:2:"20";s:3:" es";s:2:"21";s:3:" pa";s:2:"22";s:3:"to ";s:2:"23";s:3:" o ";s:2:"24";s:3:"em ";s:2:"25";s:3:"con";s:2:"26";s:3:"o p";s:2:"27";s:3:" do";s:2:"28";s:3:"est";s:2:"29";s:3:"nte";s:2:"30";s:5:"ção";s:2:"31";s:3:" da";s:2:"32";s:3:" re";s:2:"33";s:3:"ma ";s:2:"34";s:3:"par";s:2:"35";s:3:" te";s:2:"36";s:3:"ara";s:2:"37";s:3:"ida";s:2:"38";s:3:" e ";s:2:"39";s:3:"ade";s:2:"40";s:3:"is ";s:2:"41";s:3:" um";s:2:"42";s:3:" po";s:2:"43";s:3:"a a";s:2:"44";s:3:"a p";s:2:"45";s:3:"dad";s:2:"46";s:3:"no ";s:2:"47";s:3:"te ";s:2:"48";s:3:" no";s:2:"49";s:5:"açã";s:2:"50";s:3:"pro";s:2:"51";s:3:"al ";s:2:"52";s:3:"com";s:2:"53";s:3:"e d";s:2:"54";s:3:"s a";s:2:"55";s:3:" as";s:2:"56";s:3:"a c";s:2:"57";s:3:"er ";s:2:"58";s:3:"men";s:2:"59";s:3:"s e";s:2:"60";s:3:"ais";s:2:"61";s:3:"nto";s:2:"62";s:3:"res";s:2:"63";s:3:"a s";s:2:"64";s:3:"ado";s:2:"65";s:3:"ist";s:2:"66";s:3:"s p";s:2:"67";s:3:"tem";s:2:"68";s:3:"e c";s:2:"69";s:3:"e s";s:2:"70";s:3:"ia ";s:2:"71";s:3:"o s";s:2:"72";s:3:"o a";s:2:"73";s:3:"o c";s:2:"74";s:3:"e p";s:2:"75";s:3:"sta";s:2:"76";s:3:"ta ";s:2:"77";s:3:"tra";s:2:"78";s:3:"ura";s:2:"79";s:3:" di";s:2:"80";s:3:" pe";s:2:"81";s:3:"ar ";s:2:"82";s:3:"e e";s:2:"83";s:3:"ser";s:2:"84";s:3:"uma";s:2:"85";s:3:"mos";s:2:"86";s:3:"se ";s:2:"87";s:3:" ca";s:2:"88";s:3:"o e";s:2:"89";s:3:" na";s:2:"90";s:3:"a e";s:2:"91";s:3:"des";s:2:"92";s:3:"ont";s:2:"93";s:3:"por";s:2:"94";s:3:" in";s:2:"95";s:3:" ma";s:2:"96";s:3:"ect";s:2:"97";s:3:"o q";s:2:"98";s:3:"ria";s:2:"99";s:3:"s c";s:3:"100";s:3:"ste";s:3:"101";s:3:"ver";s:3:"102";s:3:"cia";s:3:"103";s:3:"dos";s:3:"104";s:3:"ica";s:3:"105";s:3:"str";s:3:"106";s:3:" ao";s:3:"107";s:3:" em";s:3:"108";s:3:"das";s:3:"109";s:3:"e t";s:3:"110";s:3:"ito";s:3:"111";s:3:"iza";s:3:"112";s:3:"pre";s:3:"113";s:3:"tos";s:3:"114";s:4:" nã";s:3:"115";s:3:"ada";s:3:"116";s:4:"não";s:3:"117";s:3:"ess";s:3:"118";s:3:"eve";s:3:"119";s:3:"or ";s:3:"120";s:3:"ran";s:3:"121";s:3:"s n";s:3:"122";s:3:"s t";s:3:"123";s:3:"tur";s:3:"124";s:3:" ac";s:3:"125";s:3:" fa";s:3:"126";s:3:"a r";s:3:"127";s:3:"ens";s:3:"128";s:3:"eri";s:3:"129";s:3:"na ";s:3:"130";s:3:"sso";s:3:"131";s:3:" si";s:3:"132";s:4:" é ";s:3:"133";s:3:"bra";s:3:"134";s:3:"esp";s:3:"135";s:3:"mo ";s:3:"136";s:3:"nos";s:3:"137";s:3:"ro ";s:3:"138";s:3:"um ";s:3:"139";s:3:"a n";s:3:"140";s:3:"ao ";s:3:"141";s:3:"ico";s:3:"142";s:3:"liz";s:3:"143";s:3:"min";s:3:"144";s:3:"o n";s:3:"145";s:3:"ons";s:3:"146";s:3:"pri";s:3:"147";s:3:"ten";s:3:"148";s:3:"tic";s:3:"149";s:4:"ões";s:3:"150";s:3:" tr";s:3:"151";s:3:"a m";s:3:"152";s:3:"aga";s:3:"153";s:3:"e n";s:3:"154";s:3:"ili";s:3:"155";s:3:"ime";s:3:"156";s:3:"m a";s:3:"157";s:3:"nci";s:3:"158";s:3:"nha";s:3:"159";s:3:"nta";s:3:"160";s:3:"spe";s:3:"161";s:3:"tiv";s:3:"162";s:3:"am ";s:3:"163";s:3:"ano";s:3:"164";s:3:"arc";s:3:"165";s:3:"ass";s:3:"166";s:3:"cer";s:3:"167";s:3:"e o";s:3:"168";s:3:"ece";s:3:"169";s:3:"emo";s:3:"170";s:3:"ga ";s:3:"171";s:3:"o m";s:3:"172";s:3:"rag";s:3:"173";s:3:"so ";s:3:"174";s:4:"são";s:3:"175";s:3:" au";s:3:"176";s:3:" os";s:3:"177";s:3:" sa";s:3:"178";s:3:"ali";s:3:"179";s:3:"ca ";s:3:"180";s:3:"ema";s:3:"181";s:3:"emp";s:3:"182";s:3:"ici";s:3:"183";s:3:"ido";s:3:"184";s:3:"inh";s:3:"185";s:3:"iss";s:3:"186";s:3:"l d";s:3:"187";s:3:"la ";s:3:"188";s:3:"lic";s:3:"189";s:3:"m c";s:3:"190";s:3:"mai";s:3:"191";s:3:"onc";s:3:"192";s:3:"pec";s:3:"193";s:3:"ram";s:3:"194";s:3:"s q";s:3:"195";s:3:" ci";s:3:"196";s:3:" en";s:3:"197";s:3:" fo";s:3:"198";s:3:"a o";s:3:"199";s:3:"ame";s:3:"200";s:3:"car";s:3:"201";s:3:"co ";s:3:"202";s:3:"der";s:3:"203";s:3:"eir";s:3:"204";s:3:"ho ";s:3:"205";s:3:"io ";s:3:"206";s:3:"om ";s:3:"207";s:3:"ora";s:3:"208";s:3:"r a";s:3:"209";s:3:"sen";s:3:"210";s:3:"ter";s:3:"211";s:3:" br";s:3:"212";s:3:" ex";s:3:"213";s:3:"a u";s:3:"214";s:3:"cul";s:3:"215";s:3:"dev";s:3:"216";s:3:"e u";s:3:"217";s:3:"ha ";s:3:"218";s:3:"mpr";s:3:"219";s:3:"nce";s:3:"220";s:3:"oca";s:3:"221";s:3:"ove";s:3:"222";s:3:"rio";s:3:"223";s:3:"s o";s:3:"224";s:3:"sa ";s:3:"225";s:3:"sem";s:3:"226";s:3:"tes";s:3:"227";s:3:"uni";s:3:"228";s:3:"ven";s:3:"229";s:4:"zaç";s:3:"230";s:5:"çõe";s:3:"231";s:3:" ad";s:3:"232";s:3:" al";s:3:"233";s:3:" an";s:3:"234";s:3:" mi";s:3:"235";s:3:" mo";s:3:"236";s:3:" ve";s:3:"237";s:4:" à ";s:3:"238";s:3:"a i";s:3:"239";s:3:"a q";s:3:"240";s:3:"ala";s:3:"241";s:3:"amo";s:3:"242";s:3:"bli";s:3:"243";s:3:"cen";s:3:"244";s:3:"col";s:3:"245";s:3:"cos";s:3:"246";s:3:"cto";s:3:"247";s:3:"e m";s:3:"248";s:3:"e v";s:3:"249";s:3:"ede";s:3:"250";s:4:"gás";s:3:"251";s:3:"ias";s:3:"252";s:3:"ita";s:3:"253";s:3:"iva";s:3:"254";s:3:"ndo";s:3:"255";s:3:"o t";s:3:"256";s:3:"ore";s:3:"257";s:3:"r d";s:3:"258";s:3:"ral";s:3:"259";s:3:"rea";s:3:"260";s:3:"s f";s:3:"261";s:3:"sid";s:3:"262";s:3:"tro";s:3:"263";s:3:"vel";s:3:"264";s:3:"vid";s:3:"265";s:4:"ás ";s:3:"266";s:3:" ap";s:3:"267";s:3:" ar";s:3:"268";s:3:" ce";s:3:"269";s:3:" ou";s:3:"270";s:4:" pú";s:3:"271";s:3:" so";s:3:"272";s:3:" vi";s:3:"273";s:3:"a f";s:3:"274";s:3:"act";s:3:"275";s:3:"arr";s:3:"276";s:3:"bil";s:3:"277";s:3:"cam";s:3:"278";s:3:"e f";s:3:"279";s:3:"e i";s:3:"280";s:3:"el ";s:3:"281";s:3:"for";s:3:"282";s:3:"lem";s:3:"283";s:3:"lid";s:3:"284";s:3:"lo ";s:3:"285";s:3:"m d";s:3:"286";s:3:"mar";s:3:"287";s:3:"nde";s:3:"288";s:3:"o o";s:3:"289";s:3:"omo";s:3:"290";s:3:"ort";s:3:"291";s:3:"per";s:3:"292";s:4:"púb";s:3:"293";s:3:"r u";s:3:"294";s:3:"rei";s:3:"295";s:3:"rem";s:3:"296";s:3:"ros";s:3:"297";s:3:"rre";s:3:"298";s:3:"ssi";s:3:"299";}s:8:"romanian";a:300:{s:3:" de";s:1:"0";s:4:" în";s:1:"1";s:3:"de ";s:1:"2";s:3:" a ";s:1:"3";s:3:"ul ";s:1:"4";s:3:" co";s:1:"5";s:4:"în ";s:1:"6";s:3:"re ";s:1:"7";s:3:"e d";s:1:"8";s:3:"ea ";s:1:"9";s:3:" di";s:2:"10";s:3:" pr";s:2:"11";s:3:"le ";s:2:"12";s:4:"ÅŸi ";s:2:"13";s:3:"are";s:2:"14";s:3:"at ";s:2:"15";s:3:"con";s:2:"16";s:3:"ui ";s:2:"17";s:4:" ÅŸi";s:2:"18";s:3:"i d";s:2:"19";s:3:"ii ";s:2:"20";s:3:" cu";s:2:"21";s:3:"e a";s:2:"22";s:3:"lui";s:2:"23";s:3:"ern";s:2:"24";s:3:"te ";s:2:"25";s:3:"cu ";s:2:"26";s:3:" la";s:2:"27";s:3:"a c";s:2:"28";s:4:"că ";s:2:"29";s:3:"din";s:2:"30";s:3:"e c";s:2:"31";s:3:"or ";s:2:"32";s:3:"ulu";s:2:"33";s:3:"ne ";s:2:"34";s:3:"ter";s:2:"35";s:3:"la ";s:2:"36";s:4:"să ";s:2:"37";s:3:"tat";s:2:"38";s:3:"tre";s:2:"39";s:3:" ac";s:2:"40";s:4:" să";s:2:"41";s:3:"est";s:2:"42";s:3:"st ";s:2:"43";s:4:"tă ";s:2:"44";s:3:" ca";s:2:"45";s:3:" ma";s:2:"46";s:3:" pe";s:2:"47";s:3:"cur";s:2:"48";s:3:"ist";s:2:"49";s:4:"mân";s:2:"50";s:3:"a d";s:2:"51";s:3:"i c";s:2:"52";s:3:"nat";s:2:"53";s:3:" ce";s:2:"54";s:3:"i a";s:2:"55";s:3:"ia ";s:2:"56";s:3:"in ";s:2:"57";s:3:"scu";s:2:"58";s:3:" mi";s:2:"59";s:3:"ato";s:2:"60";s:4:"aÅ£i";s:2:"61";s:3:"ie ";s:2:"62";s:3:" re";s:2:"63";s:3:" se";s:2:"64";s:3:"a a";s:2:"65";s:3:"int";s:2:"66";s:3:"ntr";s:2:"67";s:3:"tru";s:2:"68";s:3:"uri";s:2:"69";s:4:"ă a";s:2:"70";s:3:" fo";s:2:"71";s:3:" pa";s:2:"72";s:3:"ate";s:2:"73";s:3:"ini";s:2:"74";s:3:"tul";s:2:"75";s:3:"ent";s:2:"76";s:3:"min";s:2:"77";s:3:"pre";s:2:"78";s:3:"pro";s:2:"79";s:3:"a p";s:2:"80";s:3:"e p";s:2:"81";s:3:"e s";s:2:"82";s:3:"ei ";s:2:"83";s:4:"nă ";s:2:"84";s:3:"par";s:2:"85";s:3:"rna";s:2:"86";s:3:"rul";s:2:"87";s:3:"tor";s:2:"88";s:3:" in";s:2:"89";s:3:" ro";s:2:"90";s:3:" tr";s:2:"91";s:3:" un";s:2:"92";s:3:"al ";s:2:"93";s:3:"ale";s:2:"94";s:3:"art";s:2:"95";s:3:"ce ";s:2:"96";s:3:"e e";s:2:"97";s:4:"e î";s:2:"98";s:3:"fos";s:2:"99";s:3:"ita";s:3:"100";s:3:"nte";s:3:"101";s:4:"omâ";s:3:"102";s:3:"ost";s:3:"103";s:3:"rom";s:3:"104";s:3:"ru ";s:3:"105";s:3:"str";s:3:"106";s:3:"ver";s:3:"107";s:3:" ex";s:3:"108";s:3:" na";s:3:"109";s:3:"a f";s:3:"110";s:3:"lor";s:3:"111";s:3:"nis";s:3:"112";s:3:"rea";s:3:"113";s:3:"rit";s:3:"114";s:3:" al";s:3:"115";s:3:" eu";s:3:"116";s:3:" no";s:3:"117";s:3:"ace";s:3:"118";s:3:"cer";s:3:"119";s:3:"ile";s:3:"120";s:3:"nal";s:3:"121";s:3:"pri";s:3:"122";s:3:"ri ";s:3:"123";s:3:"sta";s:3:"124";s:3:"ste";s:3:"125";s:4:"Å£ie";s:3:"126";s:3:" au";s:3:"127";s:3:" da";s:3:"128";s:3:" ju";s:3:"129";s:3:" po";s:3:"130";s:3:"ar ";s:3:"131";s:3:"au ";s:3:"132";s:3:"ele";s:3:"133";s:3:"ere";s:3:"134";s:3:"eri";s:3:"135";s:3:"ina";s:3:"136";s:3:"n a";s:3:"137";s:3:"n c";s:3:"138";s:3:"res";s:3:"139";s:3:"se ";s:3:"140";s:3:"t a";s:3:"141";s:3:"tea";s:3:"142";s:4:" că";s:3:"143";s:3:" do";s:3:"144";s:3:" fi";s:3:"145";s:3:"a s";s:3:"146";s:4:"ată";s:3:"147";s:3:"com";s:3:"148";s:4:"e ÅŸ";s:3:"149";s:3:"eur";s:3:"150";s:3:"guv";s:3:"151";s:3:"i s";s:3:"152";s:3:"ice";s:3:"153";s:3:"ili";s:3:"154";s:3:"na ";s:3:"155";s:3:"rec";s:3:"156";s:3:"rep";s:3:"157";s:3:"ril";s:3:"158";s:3:"rne";s:3:"159";s:3:"rti";s:3:"160";s:3:"uro";s:3:"161";s:3:"uve";s:3:"162";s:4:"ă p";s:3:"163";s:3:" ar";s:3:"164";s:3:" o ";s:3:"165";s:3:" su";s:3:"166";s:3:" vi";s:3:"167";s:3:"dec";s:3:"168";s:3:"dre";s:3:"169";s:3:"oar";s:3:"170";s:3:"ons";s:3:"171";s:3:"pe ";s:3:"172";s:3:"rii";s:3:"173";s:3:" ad";s:3:"174";s:3:" ge";s:3:"175";s:3:"a m";s:3:"176";s:3:"a r";s:3:"177";s:3:"ain";s:3:"178";s:3:"ali";s:3:"179";s:3:"car";s:3:"180";s:3:"cat";s:3:"181";s:3:"ecu";s:3:"182";s:3:"ene";s:3:"183";s:3:"ept";s:3:"184";s:3:"ext";s:3:"185";s:3:"ilo";s:3:"186";s:3:"iu ";s:3:"187";s:3:"n p";s:3:"188";s:3:"ori";s:3:"189";s:3:"sec";s:3:"190";s:3:"u p";s:3:"191";s:3:"une";s:3:"192";s:4:"ă c";s:3:"193";s:4:"ÅŸti";s:3:"194";s:4:"Å£ia";s:3:"195";s:3:" ch";s:3:"196";s:3:" gu";s:3:"197";s:3:"ai ";s:3:"198";s:3:"ani";s:3:"199";s:3:"cea";s:3:"200";s:3:"e f";s:3:"201";s:3:"isc";s:3:"202";s:3:"l a";s:3:"203";s:3:"lic";s:3:"204";s:3:"liu";s:3:"205";s:3:"mar";s:3:"206";s:3:"nic";s:3:"207";s:3:"nt ";s:3:"208";s:3:"nul";s:3:"209";s:3:"ris";s:3:"210";s:3:"t c";s:3:"211";s:3:"t p";s:3:"212";s:3:"tic";s:3:"213";s:3:"tid";s:3:"214";s:3:"u a";s:3:"215";s:3:"ucr";s:3:"216";s:3:" as";s:3:"217";s:3:" dr";s:3:"218";s:3:" fa";s:3:"219";s:3:" nu";s:3:"220";s:3:" pu";s:3:"221";s:3:" to";s:3:"222";s:3:"cra";s:3:"223";s:3:"dis";s:3:"224";s:4:"enÅ£";s:3:"225";s:3:"esc";s:3:"226";s:3:"gen";s:3:"227";s:3:"it ";s:3:"228";s:3:"ivi";s:3:"229";s:3:"l d";s:3:"230";s:3:"n d";s:3:"231";s:3:"nd ";s:3:"232";s:3:"nu ";s:3:"233";s:3:"ond";s:3:"234";s:3:"pen";s:3:"235";s:3:"ral";s:3:"236";s:3:"riv";s:3:"237";s:3:"rte";s:3:"238";s:3:"sti";s:3:"239";s:3:"t d";s:3:"240";s:3:"ta ";s:3:"241";s:3:"to ";s:3:"242";s:3:"uni";s:3:"243";s:3:"xte";s:3:"244";s:4:"ând";s:3:"245";s:4:"îns";s:3:"246";s:4:"ă s";s:3:"247";s:3:" bl";s:3:"248";s:3:" st";s:3:"249";s:3:" uc";s:3:"250";s:3:"a b";s:3:"251";s:3:"a i";s:3:"252";s:3:"a l";s:3:"253";s:3:"air";s:3:"254";s:3:"ast";s:3:"255";s:3:"bla";s:3:"256";s:3:"bri";s:3:"257";s:3:"che";s:3:"258";s:3:"duc";s:3:"259";s:3:"dul";s:3:"260";s:3:"e m";s:3:"261";s:3:"eas";s:3:"262";s:3:"edi";s:3:"263";s:3:"esp";s:3:"264";s:3:"i l";s:3:"265";s:3:"i p";s:3:"266";s:3:"ica";s:3:"267";s:4:"ică";s:3:"268";s:3:"ir ";s:3:"269";s:3:"iun";s:3:"270";s:3:"jud";s:3:"271";s:3:"lai";s:3:"272";s:3:"lul";s:3:"273";s:3:"mai";s:3:"274";s:3:"men";s:3:"275";s:3:"ni ";s:3:"276";s:3:"pus";s:3:"277";s:3:"put";s:3:"278";s:3:"ra ";s:3:"279";s:3:"rai";s:3:"280";s:3:"rop";s:3:"281";s:3:"sil";s:3:"282";s:3:"ti ";s:3:"283";s:3:"tra";s:3:"284";s:3:"u s";s:3:"285";s:3:"ua ";s:3:"286";s:3:"ude";s:3:"287";s:3:"urs";s:3:"288";s:4:"ân ";s:3:"289";s:4:"înt";s:3:"290";s:5:"ţă ";s:3:"291";s:3:" lu";s:3:"292";s:3:" mo";s:3:"293";s:3:" s ";s:3:"294";s:3:" sa";s:3:"295";s:3:" sc";s:3:"296";s:3:"a u";s:3:"297";s:3:"an ";s:3:"298";s:3:"atu";s:3:"299";}s:7:"russian";a:300:{s:5:" на";s:1:"0";s:5:" пр";s:1:"1";s:5:"то ";s:1:"2";s:5:" не";s:1:"3";s:5:"ли ";s:1:"4";s:5:" по";s:1:"5";s:5:"но ";s:1:"6";s:4:" в ";s:1:"7";s:5:"на ";s:1:"8";s:5:"Ñ‚ÑŒ ";s:1:"9";s:5:"не ";s:2:"10";s:4:" и ";s:2:"11";s:5:" ко";s:2:"12";s:5:"ом ";s:2:"13";s:6:"про";s:2:"14";s:5:" то";s:2:"15";s:5:"их ";s:2:"16";s:5:" ка";s:2:"17";s:6:"ать";s:2:"18";s:6:"ото";s:2:"19";s:5:" за";s:2:"20";s:5:"ие ";s:2:"21";s:6:"ова";s:2:"22";s:6:"тел";s:2:"23";s:6:"тор";s:2:"24";s:5:" де";s:2:"25";s:5:"ой ";s:2:"26";s:6:"Ñти";s:2:"27";s:5:" от";s:2:"28";s:5:"ах ";s:2:"29";s:5:"ми ";s:2:"30";s:6:"ÑÑ‚Ñ€";s:2:"31";s:5:" бе";s:2:"32";s:5:" во";s:2:"33";s:5:" ра";s:2:"34";s:5:"Ð°Ñ ";s:2:"35";s:6:"ват";s:2:"36";s:5:"ей ";s:2:"37";s:5:"ет ";s:2:"38";s:5:"же ";s:2:"39";s:6:"иче";s:2:"40";s:5:"Ð¸Ñ ";s:2:"41";s:5:"ов ";s:2:"42";s:6:"Ñто";s:2:"43";s:5:" об";s:2:"44";s:6:"вер";s:2:"45";s:5:"го ";s:2:"46";s:5:"и в";s:2:"47";s:5:"и п";s:2:"48";s:5:"и Ñ";s:2:"49";s:5:"ии ";s:2:"50";s:6:"иÑÑ‚";s:2:"51";s:5:"о в";s:2:"52";s:6:"оÑÑ‚";s:2:"53";s:6:"тра";s:2:"54";s:5:" те";s:2:"55";s:6:"ели";s:2:"56";s:6:"ере";s:2:"57";s:6:"кот";s:2:"58";s:6:"льн";s:2:"59";s:6:"ник";s:2:"60";s:6:"нти";s:2:"61";s:5:"о Ñ";s:2:"62";s:6:"рор";s:2:"63";s:6:"Ñтв";s:2:"64";s:6:"чеÑ";s:2:"65";s:5:" бо";s:2:"66";s:5:" ве";s:2:"67";s:5:" да";s:2:"68";s:5:" ин";s:2:"69";s:5:" но";s:2:"70";s:4:" Ñ ";s:2:"71";s:5:" Ñо";s:2:"72";s:5:" Ñп";s:2:"73";s:5:" ÑÑ‚";s:2:"74";s:5:" чт";s:2:"75";s:6:"али";s:2:"76";s:6:"ами";s:2:"77";s:6:"вид";s:2:"78";s:6:"дет";s:2:"79";s:5:"е н";s:2:"80";s:6:"ель";s:2:"81";s:6:"еÑк";s:2:"82";s:6:"еÑÑ‚";s:2:"83";s:6:"зал";s:2:"84";s:5:"и н";s:2:"85";s:6:"ива";s:2:"86";s:6:"кон";s:2:"87";s:6:"ого";s:2:"88";s:6:"одн";s:2:"89";s:6:"ожн";s:2:"90";s:6:"оль";s:2:"91";s:6:"ори";s:2:"92";s:6:"ров";s:2:"93";s:6:"Ñко";s:2:"94";s:5:"ÑÑ ";s:2:"95";s:6:"тер";s:2:"96";s:6:"что";s:2:"97";s:5:" мо";s:2:"98";s:5:" Ñа";s:2:"99";s:5:" ÑÑ‚";s:3:"100";s:6:"ант";s:3:"101";s:6:"вÑе";s:3:"102";s:6:"ерр";s:3:"103";s:6:"еÑл";s:3:"104";s:6:"иде";s:3:"105";s:6:"ина";s:3:"106";s:6:"ино";s:3:"107";s:6:"иро";s:3:"108";s:6:"ите";s:3:"109";s:5:"ка ";s:3:"110";s:5:"ко ";s:3:"111";s:6:"кол";s:3:"112";s:6:"ком";s:3:"113";s:5:"ла ";s:3:"114";s:6:"ниÑ";s:3:"115";s:5:"о Ñ‚";s:3:"116";s:6:"оло";s:3:"117";s:6:"ран";s:3:"118";s:6:"ред";s:3:"119";s:5:"ÑÑŒ ";s:3:"120";s:6:"тив";s:3:"121";s:6:"тич";s:3:"122";s:5:"Ñ‹Ñ… ";s:3:"123";s:5:" ви";s:3:"124";s:5:" вÑ";s:3:"125";s:5:" го";s:3:"126";s:5:" ма";s:3:"127";s:5:" Ñл";s:3:"128";s:6:"ако";s:3:"129";s:6:"ани";s:3:"130";s:6:"аÑÑ‚";s:3:"131";s:6:"без";s:3:"132";s:6:"дел";s:3:"133";s:5:"е д";s:3:"134";s:5:"е п";s:3:"135";s:5:"ем ";s:3:"136";s:6:"жно";s:3:"137";s:5:"и д";s:3:"138";s:6:"ика";s:3:"139";s:6:"каз";s:3:"140";s:6:"как";s:3:"141";s:5:"ки ";s:3:"142";s:6:"ноÑ";s:3:"143";s:5:"о н";s:3:"144";s:6:"опа";s:3:"145";s:6:"при";s:3:"146";s:6:"рро";s:3:"147";s:6:"Ñки";s:3:"148";s:5:"ти ";s:3:"149";s:6:"тов";s:3:"150";s:5:"ые ";s:3:"151";s:5:" вы";s:3:"152";s:5:" до";s:3:"153";s:5:" ме";s:3:"154";s:5:" ни";s:3:"155";s:5:" од";s:3:"156";s:5:" ро";s:3:"157";s:5:" Ñв";s:3:"158";s:5:" чи";s:3:"159";s:5:"а н";s:3:"160";s:6:"ает";s:3:"161";s:6:"аза";s:3:"162";s:6:"ате";s:3:"163";s:6:"беÑ";s:3:"164";s:5:"в п";s:3:"165";s:5:"ва ";s:3:"166";s:5:"е в";s:3:"167";s:5:"е м";s:3:"168";s:5:"е Ñ";s:3:"169";s:5:"ез ";s:3:"170";s:6:"ени";s:3:"171";s:5:"за ";s:3:"172";s:6:"зна";s:3:"173";s:6:"ини";s:3:"174";s:6:"кам";s:3:"175";s:6:"ках";s:3:"176";s:6:"кто";s:3:"177";s:6:"лов";s:3:"178";s:6:"мер";s:3:"179";s:6:"мож";s:3:"180";s:6:"нал";s:3:"181";s:6:"ниц";s:3:"182";s:5:"ны ";s:3:"183";s:6:"ным";s:3:"184";s:6:"ора";s:3:"185";s:6:"оро";s:3:"186";s:5:"от ";s:3:"187";s:6:"пор";s:3:"188";s:6:"рав";s:3:"189";s:6:"реÑ";s:3:"190";s:6:"риÑ";s:3:"191";s:6:"роÑ";s:3:"192";s:6:"Ñка";s:3:"193";s:5:"Ñ‚ н";s:3:"194";s:6:"том";s:3:"195";s:6:"чит";s:3:"196";s:6:"шко";s:3:"197";s:5:" бы";s:3:"198";s:4:" о ";s:3:"199";s:5:" Ñ‚Ñ€";s:3:"200";s:5:" уж";s:3:"201";s:5:" чу";s:3:"202";s:5:" шк";s:3:"203";s:5:"а б";s:3:"204";s:5:"а в";s:3:"205";s:5:"а Ñ€";s:3:"206";s:6:"аби";s:3:"207";s:6:"ала";s:3:"208";s:6:"ало";s:3:"209";s:6:"аль";s:3:"210";s:6:"анн";s:3:"211";s:6:"ати";s:3:"212";s:6:"бин";s:3:"213";s:6:"веÑ";s:3:"214";s:6:"вно";s:3:"215";s:5:"во ";s:3:"216";s:6:"вши";s:3:"217";s:6:"дал";s:3:"218";s:6:"дат";s:3:"219";s:6:"дно";s:3:"220";s:5:"е з";s:3:"221";s:6:"его";s:3:"222";s:6:"еле";s:3:"223";s:6:"енн";s:3:"224";s:6:"ент";s:3:"225";s:6:"ете";s:3:"226";s:5:"и о";s:3:"227";s:6:"или";s:3:"228";s:6:"иÑÑŒ";s:3:"229";s:5:"ит ";s:3:"230";s:6:"ици";s:3:"231";s:6:"ков";s:3:"232";s:6:"лен";s:3:"233";s:6:"льк";s:3:"234";s:6:"мен";s:3:"235";s:5:"мы ";s:3:"236";s:6:"нет";s:3:"237";s:5:"ни ";s:3:"238";s:6:"нны";s:3:"239";s:6:"ног";s:3:"240";s:6:"ной";s:3:"241";s:6:"ном";s:3:"242";s:5:"о п";s:3:"243";s:6:"обн";s:3:"244";s:6:"ове";s:3:"245";s:6:"овн";s:3:"246";s:6:"оры";s:3:"247";s:6:"пер";s:3:"248";s:5:"по ";s:3:"249";s:6:"пра";s:3:"250";s:6:"пре";s:3:"251";s:6:"раз";s:3:"252";s:6:"роп";s:3:"253";s:5:"ры ";s:3:"254";s:5:"Ñе ";s:3:"255";s:6:"Ñли";s:3:"256";s:6:"Ñов";s:3:"257";s:6:"тре";s:3:"258";s:6:"Ñ‚ÑÑ";s:3:"259";s:6:"уро";s:3:"260";s:6:"цел";s:3:"261";s:6:"чно";s:3:"262";s:5:"ÑŒ в";s:3:"263";s:6:"ько";s:3:"264";s:6:"ьно";s:3:"265";s:6:"Ñто";s:3:"266";s:5:"ÑŽÑ‚ ";s:3:"267";s:5:"Ñ Ð½";s:3:"268";s:5:" ан";s:3:"269";s:5:" еÑ";s:3:"270";s:5:" же";s:3:"271";s:5:" из";s:3:"272";s:5:" кт";s:3:"273";s:5:" ми";s:3:"274";s:5:" мы";s:3:"275";s:5:" пе";s:3:"276";s:5:" Ñе";s:3:"277";s:5:" це";s:3:"278";s:5:"а м";s:3:"279";s:5:"а п";s:3:"280";s:5:"а Ñ‚";s:3:"281";s:6:"авш";s:3:"282";s:6:"аже";s:3:"283";s:5:"ак ";s:3:"284";s:5:"ал ";s:3:"285";s:6:"але";s:3:"286";s:6:"ане";s:3:"287";s:6:"ачи";s:3:"288";s:6:"ают";s:3:"289";s:6:"бна";s:3:"290";s:6:"бол";s:3:"291";s:5:"бы ";s:3:"292";s:5:"в и";s:3:"293";s:5:"в Ñ";s:3:"294";s:6:"ван";s:3:"295";s:6:"гра";s:3:"296";s:6:"даж";s:3:"297";s:6:"ден";s:3:"298";s:5:"е к";s:3:"299";}s:7:"serbian";a:300:{s:5:" на";s:1:"0";s:5:" је";s:1:"1";s:5:" по";s:1:"2";s:5:"је ";s:1:"3";s:4:" и ";s:1:"4";s:5:" не";s:1:"5";s:5:" пр";s:1:"6";s:5:"га ";s:1:"7";s:5:" Ñв";s:1:"8";s:5:"ог ";s:1:"9";s:5:"а Ñ";s:2:"10";s:5:"их ";s:2:"11";s:5:"на ";s:2:"12";s:6:"кој";s:2:"13";s:6:"ога";s:2:"14";s:4:" у ";s:2:"15";s:5:"а п";s:2:"16";s:5:"не ";s:2:"17";s:5:"ни ";s:2:"18";s:5:"ти ";s:2:"19";s:5:" да";s:2:"20";s:5:"ом ";s:2:"21";s:5:" ве";s:2:"22";s:5:" ÑÑ€";s:2:"23";s:5:"и Ñ";s:2:"24";s:6:"Ñко";s:2:"25";s:5:" об";s:2:"26";s:5:"а н";s:2:"27";s:5:"да ";s:2:"28";s:5:"е н";s:2:"29";s:5:"но ";s:2:"30";s:6:"ног";s:2:"31";s:5:"о ј";s:2:"32";s:5:"ој ";s:2:"33";s:5:" за";s:2:"34";s:5:"ва ";s:2:"35";s:5:"е Ñ";s:2:"36";s:5:"и п";s:2:"37";s:5:"ма ";s:2:"38";s:6:"ник";s:2:"39";s:6:"обр";s:2:"40";s:6:"ова";s:2:"41";s:5:" ко";s:2:"42";s:5:"а и";s:2:"43";s:6:"диј";s:2:"44";s:5:"е п";s:2:"45";s:5:"ка ";s:2:"46";s:5:"ко ";s:2:"47";s:6:"ког";s:2:"48";s:6:"оÑÑ‚";s:2:"49";s:6:"Ñве";s:2:"50";s:6:"Ñтв";s:2:"51";s:6:"Ñти";s:2:"52";s:6:"тра";s:2:"53";s:6:"еди";s:2:"54";s:6:"има";s:2:"55";s:6:"пок";s:2:"56";s:6:"пра";s:2:"57";s:6:"раз";s:2:"58";s:5:"те ";s:2:"59";s:5:" бо";s:2:"60";s:5:" ви";s:2:"61";s:5:" Ñа";s:2:"62";s:6:"аво";s:2:"63";s:6:"бра";s:2:"64";s:6:"гоÑ";s:2:"65";s:5:"е и";s:2:"66";s:6:"ели";s:2:"67";s:6:"ени";s:2:"68";s:5:"за ";s:2:"69";s:6:"ики";s:2:"70";s:5:"ио ";s:2:"71";s:6:"пре";s:2:"72";s:6:"рав";s:2:"73";s:6:"рад";s:2:"74";s:5:"у Ñ";s:2:"75";s:5:"ју ";s:2:"76";s:5:"ња ";s:2:"77";s:5:" би";s:2:"78";s:5:" до";s:2:"79";s:5:" ÑÑ‚";s:2:"80";s:6:"аÑÑ‚";s:2:"81";s:6:"бој";s:2:"82";s:6:"ебо";s:2:"83";s:5:"и н";s:2:"84";s:5:"им ";s:2:"85";s:5:"ку ";s:2:"86";s:6:"лан";s:2:"87";s:6:"неб";s:2:"88";s:6:"ово";s:2:"89";s:6:"ого";s:2:"90";s:6:"оÑл";s:2:"91";s:6:"ојш";s:2:"92";s:6:"пед";s:2:"93";s:6:"ÑÑ‚Ñ€";s:2:"94";s:6:"чаÑ";s:2:"95";s:5:" го";s:2:"96";s:5:" кр";s:2:"97";s:5:" мо";s:2:"98";s:5:" чл";s:2:"99";s:5:"а м";s:3:"100";s:5:"а о";s:3:"101";s:6:"ако";s:3:"102";s:6:"ача";s:3:"103";s:6:"вел";s:3:"104";s:6:"вет";s:3:"105";s:6:"вог";s:3:"106";s:6:"еда";s:3:"107";s:6:"иÑÑ‚";s:3:"108";s:6:"ити";s:3:"109";s:6:"ије";s:3:"110";s:6:"око";s:3:"111";s:6:"Ñло";s:3:"112";s:6:"Ñрб";s:3:"113";s:6:"чла";s:3:"114";s:5:" бе";s:3:"115";s:5:" оÑ";s:3:"116";s:5:" от";s:3:"117";s:5:" ре";s:3:"118";s:5:" Ñе";s:3:"119";s:5:"а в";s:3:"120";s:5:"ан ";s:3:"121";s:6:"бог";s:3:"122";s:6:"бро";s:3:"123";s:6:"вен";s:3:"124";s:6:"гра";s:3:"125";s:5:"е о";s:3:"126";s:6:"ика";s:3:"127";s:6:"ија";s:3:"128";s:6:"ких";s:3:"129";s:6:"ком";s:3:"130";s:5:"ли ";s:3:"131";s:5:"ну ";s:3:"132";s:6:"ота";s:3:"133";s:6:"ојн";s:3:"134";s:6:"под";s:3:"135";s:6:"рбÑ";s:3:"136";s:6:"ред";s:3:"137";s:6:"рој";s:3:"138";s:5:"Ñа ";s:3:"139";s:6:"Ñни";s:3:"140";s:6:"тач";s:3:"141";s:6:"тва";s:3:"142";s:5:"ја ";s:3:"143";s:5:"ји ";s:3:"144";s:5:" ка";s:3:"145";s:5:" ов";s:3:"146";s:5:" Ñ‚Ñ€";s:3:"147";s:5:"а ј";s:3:"148";s:6:"ави";s:3:"149";s:5:"аз ";s:3:"150";s:6:"ано";s:3:"151";s:6:"био";s:3:"152";s:6:"вик";s:3:"153";s:5:"во ";s:3:"154";s:6:"гов";s:3:"155";s:6:"дни";s:3:"156";s:5:"е ч";s:3:"157";s:6:"его";s:3:"158";s:5:"и о";s:3:"159";s:6:"ива";s:3:"160";s:6:"иво";s:3:"161";s:5:"ик ";s:3:"162";s:6:"ине";s:3:"163";s:6:"ини";s:3:"164";s:6:"ипе";s:3:"165";s:6:"кип";s:3:"166";s:6:"лик";s:3:"167";s:5:"ло ";s:3:"168";s:6:"наш";s:3:"169";s:6:"ноÑ";s:3:"170";s:5:"о Ñ‚";s:3:"171";s:5:"од ";s:3:"172";s:6:"оди";s:3:"173";s:6:"она";s:3:"174";s:6:"оји";s:3:"175";s:6:"поч";s:3:"176";s:6:"про";s:3:"177";s:5:"ра ";s:3:"178";s:6:"риÑ";s:3:"179";s:6:"род";s:3:"180";s:6:"Ñ€ÑÑ‚";s:3:"181";s:5:"Ñе ";s:3:"182";s:6:"Ñпо";s:3:"183";s:6:"Ñта";s:3:"184";s:6:"тић";s:3:"185";s:5:"у д";s:3:"186";s:5:"у н";s:3:"187";s:5:"у о";s:3:"188";s:6:"чин";s:3:"189";s:5:"ша ";s:3:"190";s:6:"јед";s:3:"191";s:6:"јни";s:3:"192";s:5:"ће ";s:3:"193";s:4:" м ";s:3:"194";s:5:" ме";s:3:"195";s:5:" ни";s:3:"196";s:5:" он";s:3:"197";s:5:" па";s:3:"198";s:5:" Ñл";s:3:"199";s:5:" те";s:3:"200";s:5:"а у";s:3:"201";s:6:"ава";s:3:"202";s:6:"аве";s:3:"203";s:6:"авн";s:3:"204";s:6:"ана";s:3:"205";s:5:"ао ";s:3:"206";s:6:"ати";s:3:"207";s:6:"аци";s:3:"208";s:6:"ају";s:3:"209";s:6:"ања";s:3:"210";s:6:"бÑк";s:3:"211";s:6:"вор";s:3:"212";s:6:"воÑ";s:3:"213";s:6:"вÑк";s:3:"214";s:6:"дин";s:3:"215";s:5:"е у";s:3:"216";s:6:"едн";s:3:"217";s:6:"ези";s:3:"218";s:6:"ека";s:3:"219";s:6:"ено";s:3:"220";s:6:"ето";s:3:"221";s:6:"ења";s:3:"222";s:6:"жив";s:3:"223";s:5:"и г";s:3:"224";s:5:"и и";s:3:"225";s:5:"и к";s:3:"226";s:5:"и Ñ‚";s:3:"227";s:6:"ику";s:3:"228";s:6:"ичк";s:3:"229";s:5:"ки ";s:3:"230";s:6:"крÑ";s:3:"231";s:5:"ла ";s:3:"232";s:6:"лав";s:3:"233";s:6:"лит";s:3:"234";s:5:"ме ";s:3:"235";s:6:"мен";s:3:"236";s:6:"нац";s:3:"237";s:5:"о н";s:3:"238";s:5:"о п";s:3:"239";s:5:"о у";s:3:"240";s:6:"одн";s:3:"241";s:6:"оли";s:3:"242";s:6:"орн";s:3:"243";s:6:"оÑн";s:3:"244";s:6:"оÑп";s:3:"245";s:6:"оче";s:3:"246";s:6:"пÑк";s:3:"247";s:6:"реч";s:3:"248";s:6:"рпÑ";s:3:"249";s:6:"Ñво";s:3:"250";s:6:"Ñки";s:3:"251";s:6:"Ñла";s:3:"252";s:6:"Ñрп";s:3:"253";s:5:"Ñу ";s:3:"254";s:5:"та ";s:3:"255";s:6:"тав";s:3:"256";s:6:"тве";s:3:"257";s:5:"у б";s:3:"258";s:6:"јез";s:3:"259";s:5:"ћи ";s:3:"260";s:5:" ен";s:3:"261";s:5:" жи";s:3:"262";s:5:" им";s:3:"263";s:5:" му";s:3:"264";s:5:" од";s:3:"265";s:5:" Ñу";s:3:"266";s:5:" та";s:3:"267";s:5:" Ñ…Ñ€";s:3:"268";s:5:" ча";s:3:"269";s:5:" шт";s:3:"270";s:5:" ње";s:3:"271";s:5:"а д";s:3:"272";s:5:"а з";s:3:"273";s:5:"а к";s:3:"274";s:5:"а Ñ‚";s:3:"275";s:6:"аду";s:3:"276";s:6:"ало";s:3:"277";s:6:"ани";s:3:"278";s:6:"аÑо";s:3:"279";s:6:"ван";s:3:"280";s:6:"вач";s:3:"281";s:6:"вањ";s:3:"282";s:6:"вед";s:3:"283";s:5:"ви ";s:3:"284";s:6:"вно";s:3:"285";s:6:"вот";s:3:"286";s:6:"вој";s:3:"287";s:5:"ву ";s:3:"288";s:6:"доб";s:3:"289";s:6:"дру";s:3:"290";s:6:"дÑе";s:3:"291";s:5:"ду ";s:3:"292";s:5:"е б";s:3:"293";s:5:"е д";s:3:"294";s:5:"е м";s:3:"295";s:5:"ем ";s:3:"296";s:6:"ема";s:3:"297";s:6:"ент";s:3:"298";s:6:"енц";s:3:"299";}s:6:"slovak";a:300:{s:3:" pr";s:1:"0";s:3:" po";s:1:"1";s:3:" ne";s:1:"2";s:3:" a ";s:1:"3";s:3:"ch ";s:1:"4";s:3:" na";s:1:"5";s:3:" je";s:1:"6";s:4:"ní ";s:1:"7";s:3:"je ";s:1:"8";s:3:" do";s:1:"9";s:3:"na ";s:2:"10";s:3:"ova";s:2:"11";s:3:" v ";s:2:"12";s:3:"to ";s:2:"13";s:3:"ho ";s:2:"14";s:3:"ou ";s:2:"15";s:3:" to";s:2:"16";s:3:"ick";s:2:"17";s:3:"ter";s:2:"18";s:4:"že ";s:2:"19";s:3:" st";s:2:"20";s:3:" za";s:2:"21";s:3:"ost";s:2:"22";s:4:"ých";s:2:"23";s:3:" se";s:2:"24";s:3:"pro";s:2:"25";s:3:" te";s:2:"26";s:3:"e s";s:2:"27";s:4:" že";s:2:"28";s:3:"a p";s:2:"29";s:3:" kt";s:2:"30";s:3:"pre";s:2:"31";s:3:" by";s:2:"32";s:3:" o ";s:2:"33";s:3:"se ";s:2:"34";s:3:"kon";s:2:"35";s:4:" pÅ™";s:2:"36";s:3:"a s";s:2:"37";s:4:"né ";s:2:"38";s:4:"nÄ› ";s:2:"39";s:3:"sti";s:2:"40";s:3:"ako";s:2:"41";s:3:"ist";s:2:"42";s:3:"mu ";s:2:"43";s:3:"ame";s:2:"44";s:3:"ent";s:2:"45";s:3:"ky ";s:2:"46";s:3:"la ";s:2:"47";s:3:"pod";s:2:"48";s:3:" ve";s:2:"49";s:3:" ob";s:2:"50";s:3:"om ";s:2:"51";s:3:"vat";s:2:"52";s:3:" ko";s:2:"53";s:3:"sta";s:2:"54";s:3:"em ";s:2:"55";s:3:"le ";s:2:"56";s:3:"a v";s:2:"57";s:3:"by ";s:2:"58";s:3:"e p";s:2:"59";s:3:"ko ";s:2:"60";s:3:"eri";s:2:"61";s:3:"kte";s:2:"62";s:3:"sa ";s:2:"63";s:4:"ého";s:2:"64";s:3:"e v";s:2:"65";s:3:"mer";s:2:"66";s:3:"tel";s:2:"67";s:3:" ak";s:2:"68";s:3:" sv";s:2:"69";s:4:" zá";s:2:"70";s:3:"hla";s:2:"71";s:3:"las";s:2:"72";s:3:"lo ";s:2:"73";s:3:" ta";s:2:"74";s:3:"a n";s:2:"75";s:3:"ej ";s:2:"76";s:3:"li ";s:2:"77";s:3:"ne ";s:2:"78";s:3:" sa";s:2:"79";s:3:"ak ";s:2:"80";s:3:"ani";s:2:"81";s:3:"ate";s:2:"82";s:3:"ia ";s:2:"83";s:3:"sou";s:2:"84";s:3:" so";s:2:"85";s:4:"ení";s:2:"86";s:3:"ie ";s:2:"87";s:3:" re";s:2:"88";s:3:"ce ";s:2:"89";s:3:"e n";s:2:"90";s:3:"ori";s:2:"91";s:3:"tic";s:2:"92";s:3:" vy";s:2:"93";s:3:"a t";s:2:"94";s:4:"ké ";s:2:"95";s:3:"nos";s:2:"96";s:3:"o s";s:2:"97";s:3:"str";s:2:"98";s:3:"ti ";s:2:"99";s:3:"uje";s:3:"100";s:3:" sp";s:3:"101";s:3:"lov";s:3:"102";s:3:"o p";s:3:"103";s:3:"oli";s:3:"104";s:4:"ová";s:3:"105";s:4:" ná";s:3:"106";s:3:"ale";s:3:"107";s:3:"den";s:3:"108";s:3:"e o";s:3:"109";s:3:"ku ";s:3:"110";s:3:"val";s:3:"111";s:3:" am";s:3:"112";s:3:" ro";s:3:"113";s:3:" si";s:3:"114";s:3:"nie";s:3:"115";s:3:"pol";s:3:"116";s:3:"tra";s:3:"117";s:3:" al";s:3:"118";s:3:"ali";s:3:"119";s:3:"o v";s:3:"120";s:3:"tor";s:3:"121";s:3:" mo";s:3:"122";s:3:" ni";s:3:"123";s:3:"ci ";s:3:"124";s:3:"o n";s:3:"125";s:4:"ím ";s:3:"126";s:3:" le";s:3:"127";s:3:" pa";s:3:"128";s:3:" s ";s:3:"129";s:3:"al ";s:3:"130";s:3:"ati";s:3:"131";s:3:"ero";s:3:"132";s:3:"ove";s:3:"133";s:3:"rov";s:3:"134";s:4:"ván";s:3:"135";s:4:"ích";s:3:"136";s:3:" ja";s:3:"137";s:3:" z ";s:3:"138";s:4:"cké";s:3:"139";s:3:"e z";s:3:"140";s:3:" od";s:3:"141";s:3:"byl";s:3:"142";s:3:"de ";s:3:"143";s:3:"dob";s:3:"144";s:3:"nep";s:3:"145";s:3:"pra";s:3:"146";s:3:"ric";s:3:"147";s:3:"spo";s:3:"148";s:3:"tak";s:3:"149";s:4:" vÅ¡";s:3:"150";s:3:"a a";s:3:"151";s:3:"e t";s:3:"152";s:3:"lit";s:3:"153";s:3:"me ";s:3:"154";s:3:"nej";s:3:"155";s:3:"no ";s:3:"156";s:4:"nýc";s:3:"157";s:3:"o t";s:3:"158";s:3:"a j";s:3:"159";s:3:"e a";s:3:"160";s:3:"en ";s:3:"161";s:3:"est";s:3:"162";s:4:"jí ";s:3:"163";s:3:"mi ";s:3:"164";s:3:"slo";s:3:"165";s:4:"stá";s:3:"166";s:3:"u v";s:3:"167";s:3:"for";s:3:"168";s:3:"nou";s:3:"169";s:3:"pos";s:3:"170";s:4:"pÅ™e";s:3:"171";s:3:"si ";s:3:"172";s:3:"tom";s:3:"173";s:3:" vl";s:3:"174";s:3:"a z";s:3:"175";s:3:"ly ";s:3:"176";s:3:"orm";s:3:"177";s:3:"ris";s:3:"178";s:3:"za ";s:3:"179";s:4:"zák";s:3:"180";s:3:" k ";s:3:"181";s:3:"at ";s:3:"182";s:4:"cký";s:3:"183";s:3:"dno";s:3:"184";s:3:"dos";s:3:"185";s:3:"dy ";s:3:"186";s:3:"jak";s:3:"187";s:3:"kov";s:3:"188";s:3:"ny ";s:3:"189";s:3:"res";s:3:"190";s:3:"ror";s:3:"191";s:3:"sto";s:3:"192";s:3:"van";s:3:"193";s:3:" op";s:3:"194";s:3:"da ";s:3:"195";s:3:"do ";s:3:"196";s:3:"e j";s:3:"197";s:3:"hod";s:3:"198";s:3:"len";s:3:"199";s:4:"ný ";s:3:"200";s:3:"o z";s:3:"201";s:3:"poz";s:3:"202";s:3:"pri";s:3:"203";s:3:"ran";s:3:"204";s:3:"u s";s:3:"205";s:3:" ab";s:3:"206";s:3:"aj ";s:3:"207";s:3:"ast";s:3:"208";s:3:"it ";s:3:"209";s:3:"kto";s:3:"210";s:3:"o o";s:3:"211";s:3:"oby";s:3:"212";s:3:"odo";s:3:"213";s:3:"u p";s:3:"214";s:3:"va ";s:3:"215";s:5:"ání";s:3:"216";s:4:"í p";s:3:"217";s:4:"ým ";s:3:"218";s:3:" in";s:3:"219";s:3:" mi";s:3:"220";s:4:"aÅ¥ ";s:3:"221";s:3:"dov";s:3:"222";s:3:"ka ";s:3:"223";s:3:"nsk";s:3:"224";s:4:"áln";s:3:"225";s:3:" an";s:3:"226";s:3:" bu";s:3:"227";s:3:" sl";s:3:"228";s:3:" tr";s:3:"229";s:3:"e m";s:3:"230";s:3:"ech";s:3:"231";s:3:"edn";s:3:"232";s:3:"i n";s:3:"233";s:4:"kýc";s:3:"234";s:4:"níc";s:3:"235";s:3:"ov ";s:3:"236";s:5:"pří";s:3:"237";s:4:"í a";s:3:"238";s:3:" aj";s:3:"239";s:3:" bo";s:3:"240";s:3:"a d";s:3:"241";s:3:"ide";s:3:"242";s:3:"o a";s:3:"243";s:3:"o d";s:3:"244";s:3:"och";s:3:"245";s:3:"pov";s:3:"246";s:3:"svo";s:3:"247";s:4:"é s";s:3:"248";s:3:" kd";s:3:"249";s:3:" vo";s:3:"250";s:4:" vý";s:3:"251";s:3:"bud";s:3:"252";s:3:"ich";s:3:"253";s:3:"il ";s:3:"254";s:3:"ili";s:3:"255";s:3:"ni ";s:3:"256";s:4:"ním";s:3:"257";s:3:"od ";s:3:"258";s:3:"osl";s:3:"259";s:3:"ouh";s:3:"260";s:3:"rav";s:3:"261";s:3:"roz";s:3:"262";s:3:"st ";s:3:"263";s:3:"stv";s:3:"264";s:3:"tu ";s:3:"265";s:3:"u a";s:3:"266";s:4:"vál";s:3:"267";s:3:"y s";s:3:"268";s:4:"í s";s:3:"269";s:4:"í v";s:3:"270";s:3:" hl";s:3:"271";s:3:" li";s:3:"272";s:3:" me";s:3:"273";s:3:"a m";s:3:"274";s:3:"e b";s:3:"275";s:3:"h s";s:3:"276";s:3:"i p";s:3:"277";s:3:"i s";s:3:"278";s:3:"iti";s:3:"279";s:4:"lád";s:3:"280";s:3:"nem";s:3:"281";s:3:"nov";s:3:"282";s:3:"opo";s:3:"283";s:3:"uhl";s:3:"284";s:3:"eno";s:3:"285";s:3:"ens";s:3:"286";s:3:"men";s:3:"287";s:3:"nes";s:3:"288";s:3:"obo";s:3:"289";s:3:"te ";s:3:"290";s:3:"ved";s:3:"291";s:4:"vlá";s:3:"292";s:3:"y n";s:3:"293";s:3:" ma";s:3:"294";s:3:" mu";s:3:"295";s:4:" vá";s:3:"296";s:3:"bez";s:3:"297";s:3:"byv";s:3:"298";s:3:"cho";s:3:"299";}s:7:"slovene";a:300:{s:3:"je ";s:1:"0";s:3:" pr";s:1:"1";s:3:" po";s:1:"2";s:3:" je";s:1:"3";s:3:" v ";s:1:"4";s:3:" za";s:1:"5";s:3:" na";s:1:"6";s:3:"pre";s:1:"7";s:3:"da ";s:1:"8";s:3:" da";s:1:"9";s:3:"ki ";s:2:"10";s:3:"ti ";s:2:"11";s:3:"ja ";s:2:"12";s:3:"ne ";s:2:"13";s:3:" in";s:2:"14";s:3:"in ";s:2:"15";s:3:"li ";s:2:"16";s:3:"no ";s:2:"17";s:3:"na ";s:2:"18";s:3:"ni ";s:2:"19";s:3:" bi";s:2:"20";s:3:"jo ";s:2:"21";s:3:" ne";s:2:"22";s:3:"nje";s:2:"23";s:3:"e p";s:2:"24";s:3:"i p";s:2:"25";s:3:"pri";s:2:"26";s:3:"o p";s:2:"27";s:3:"red";s:2:"28";s:3:" do";s:2:"29";s:3:"anj";s:2:"30";s:3:"em ";s:2:"31";s:3:"ih ";s:2:"32";s:3:" bo";s:2:"33";s:3:" ki";s:2:"34";s:3:" iz";s:2:"35";s:3:" se";s:2:"36";s:3:" so";s:2:"37";s:3:"al ";s:2:"38";s:3:" de";s:2:"39";s:3:"e v";s:2:"40";s:3:"i s";s:2:"41";s:3:"ko ";s:2:"42";s:3:"bil";s:2:"43";s:3:"ira";s:2:"44";s:3:"ove";s:2:"45";s:3:" br";s:2:"46";s:3:" ob";s:2:"47";s:3:"e b";s:2:"48";s:3:"i n";s:2:"49";s:3:"ova";s:2:"50";s:3:"se ";s:2:"51";s:3:"za ";s:2:"52";s:3:"la ";s:2:"53";s:3:" ja";s:2:"54";s:3:"ati";s:2:"55";s:3:"so ";s:2:"56";s:3:"ter";s:2:"57";s:3:" ta";s:2:"58";s:3:"a s";s:2:"59";s:3:"del";s:2:"60";s:3:"e d";s:2:"61";s:3:" dr";s:2:"62";s:3:" od";s:2:"63";s:3:"a n";s:2:"64";s:3:"ar ";s:2:"65";s:3:"jal";s:2:"66";s:3:"ji ";s:2:"67";s:3:"rit";s:2:"68";s:3:" ka";s:2:"69";s:3:" ko";s:2:"70";s:3:" pa";s:2:"71";s:3:"a b";s:2:"72";s:3:"ani";s:2:"73";s:3:"e s";s:2:"74";s:3:"er ";s:2:"75";s:3:"ili";s:2:"76";s:3:"lov";s:2:"77";s:3:"o v";s:2:"78";s:3:"tov";s:2:"79";s:3:" ir";s:2:"80";s:3:" ni";s:2:"81";s:3:" vo";s:2:"82";s:3:"a j";s:2:"83";s:3:"bi ";s:2:"84";s:3:"bri";s:2:"85";s:3:"iti";s:2:"86";s:3:"let";s:2:"87";s:3:"o n";s:2:"88";s:3:"tan";s:2:"89";s:4:"Å¡e ";s:2:"90";s:3:" le";s:2:"91";s:3:" te";s:2:"92";s:3:"eni";s:2:"93";s:3:"eri";s:2:"94";s:3:"ita";s:2:"95";s:3:"kat";s:2:"96";s:3:"por";s:2:"97";s:3:"pro";s:2:"98";s:3:"ali";s:2:"99";s:3:"ke ";s:3:"100";s:3:"oli";s:3:"101";s:3:"ov ";s:3:"102";s:3:"pra";s:3:"103";s:3:"ri ";s:3:"104";s:3:"uar";s:3:"105";s:3:"ve ";s:3:"106";s:3:" to";s:3:"107";s:3:"a i";s:3:"108";s:3:"a v";s:3:"109";s:3:"ako";s:3:"110";s:3:"arj";s:3:"111";s:3:"ate";s:3:"112";s:3:"di ";s:3:"113";s:3:"do ";s:3:"114";s:3:"ga ";s:3:"115";s:3:"le ";s:3:"116";s:3:"lo ";s:3:"117";s:3:"mer";s:3:"118";s:3:"o s";s:3:"119";s:3:"oda";s:3:"120";s:3:"oro";s:3:"121";s:3:"pod";s:3:"122";s:3:" ma";s:3:"123";s:3:" mo";s:3:"124";s:3:" si";s:3:"125";s:3:"a p";s:3:"126";s:3:"bod";s:3:"127";s:3:"e n";s:3:"128";s:3:"ega";s:3:"129";s:3:"ju ";s:3:"130";s:3:"ka ";s:3:"131";s:3:"lje";s:3:"132";s:3:"rav";s:3:"133";s:3:"ta ";s:3:"134";s:3:"a o";s:3:"135";s:3:"e t";s:3:"136";s:3:"e z";s:3:"137";s:3:"i d";s:3:"138";s:3:"i v";s:3:"139";s:3:"ila";s:3:"140";s:3:"lit";s:3:"141";s:3:"nih";s:3:"142";s:3:"odo";s:3:"143";s:3:"sti";s:3:"144";s:3:"to ";s:3:"145";s:3:"var";s:3:"146";s:3:"ved";s:3:"147";s:3:"vol";s:3:"148";s:3:" la";s:3:"149";s:3:" no";s:3:"150";s:3:" vs";s:3:"151";s:3:"a d";s:3:"152";s:3:"agu";s:3:"153";s:3:"aja";s:3:"154";s:3:"dej";s:3:"155";s:3:"dnj";s:3:"156";s:3:"eda";s:3:"157";s:3:"gov";s:3:"158";s:3:"gua";s:3:"159";s:3:"jag";s:3:"160";s:3:"jem";s:3:"161";s:3:"kon";s:3:"162";s:3:"ku ";s:3:"163";s:3:"nij";s:3:"164";s:3:"omo";s:3:"165";s:4:"oÄi";s:3:"166";s:3:"pov";s:3:"167";s:3:"rak";s:3:"168";s:3:"rja";s:3:"169";s:3:"sta";s:3:"170";s:3:"tev";s:3:"171";s:3:"a t";s:3:"172";s:3:"aj ";s:3:"173";s:3:"ed ";s:3:"174";s:3:"eja";s:3:"175";s:3:"ent";s:3:"176";s:3:"ev ";s:3:"177";s:3:"i i";s:3:"178";s:3:"i o";s:3:"179";s:3:"ijo";s:3:"180";s:3:"ist";s:3:"181";s:3:"ost";s:3:"182";s:3:"ske";s:3:"183";s:3:"str";s:3:"184";s:3:" ra";s:3:"185";s:3:" s ";s:3:"186";s:3:" tr";s:3:"187";s:4:" Å¡e";s:3:"188";s:3:"arn";s:3:"189";s:3:"bo ";s:3:"190";s:4:"drž";s:3:"191";s:3:"i j";s:3:"192";s:3:"ilo";s:3:"193";s:3:"izv";s:3:"194";s:3:"jen";s:3:"195";s:3:"lja";s:3:"196";s:3:"nsk";s:3:"197";s:3:"o d";s:3:"198";s:3:"o i";s:3:"199";s:3:"om ";s:3:"200";s:3:"ora";s:3:"201";s:3:"ovo";s:3:"202";s:3:"raz";s:3:"203";s:4:"rža";s:3:"204";s:3:"tak";s:3:"205";s:3:"va ";s:3:"206";s:3:"ven";s:3:"207";s:4:"žav";s:3:"208";s:3:" me";s:3:"209";s:4:" Äe";s:3:"210";s:3:"ame";s:3:"211";s:3:"avi";s:3:"212";s:3:"e i";s:3:"213";s:3:"e o";s:3:"214";s:3:"eka";s:3:"215";s:3:"gre";s:3:"216";s:3:"i t";s:3:"217";s:3:"ija";s:3:"218";s:3:"il ";s:3:"219";s:3:"ite";s:3:"220";s:3:"kra";s:3:"221";s:3:"lju";s:3:"222";s:3:"mor";s:3:"223";s:3:"nik";s:3:"224";s:3:"o t";s:3:"225";s:3:"obi";s:3:"226";s:3:"odn";s:3:"227";s:3:"ran";s:3:"228";s:3:"re ";s:3:"229";s:3:"sto";s:3:"230";s:3:"stv";s:3:"231";s:3:"udi";s:3:"232";s:3:"v i";s:3:"233";s:3:"van";s:3:"234";s:3:" am";s:3:"235";s:3:" sp";s:3:"236";s:3:" st";s:3:"237";s:3:" tu";s:3:"238";s:3:" ve";s:3:"239";s:4:" že";s:3:"240";s:3:"ajo";s:3:"241";s:3:"ale";s:3:"242";s:3:"apo";s:3:"243";s:3:"dal";s:3:"244";s:3:"dru";s:3:"245";s:3:"e j";s:3:"246";s:3:"edn";s:3:"247";s:3:"ejo";s:3:"248";s:3:"elo";s:3:"249";s:3:"est";s:3:"250";s:3:"etj";s:3:"251";s:3:"eva";s:3:"252";s:3:"iji";s:3:"253";s:3:"ik ";s:3:"254";s:3:"im ";s:3:"255";s:3:"itv";s:3:"256";s:3:"mob";s:3:"257";s:3:"nap";s:3:"258";s:3:"nek";s:3:"259";s:3:"pol";s:3:"260";s:3:"pos";s:3:"261";s:3:"rat";s:3:"262";s:3:"ski";s:3:"263";s:4:"tiÄ";s:3:"264";s:3:"tom";s:3:"265";s:3:"ton";s:3:"266";s:3:"tra";s:3:"267";s:3:"tud";s:3:"268";s:3:"tve";s:3:"269";s:3:"v b";s:3:"270";s:3:"vil";s:3:"271";s:3:"vse";s:3:"272";s:4:"Äit";s:3:"273";s:3:" av";s:3:"274";s:3:" gr";s:3:"275";s:3:"a z";s:3:"276";s:3:"ans";s:3:"277";s:3:"ast";s:3:"278";s:3:"avt";s:3:"279";s:3:"dan";s:3:"280";s:3:"e m";s:3:"281";s:3:"eds";s:3:"282";s:3:"for";s:3:"283";s:3:"i z";s:3:"284";s:3:"kot";s:3:"285";s:3:"mi ";s:3:"286";s:3:"nim";s:3:"287";s:3:"o b";s:3:"288";s:3:"o o";s:3:"289";s:3:"od ";s:3:"290";s:3:"odl";s:3:"291";s:3:"oiz";s:3:"292";s:3:"ot ";s:3:"293";s:3:"par";s:3:"294";s:3:"pot";s:3:"295";s:3:"rje";s:3:"296";s:3:"roi";s:3:"297";s:3:"tem";s:3:"298";s:3:"val";s:3:"299";}s:6:"somali";a:300:{s:3:"ka ";s:1:"0";s:3:"ay ";s:1:"1";s:3:"da ";s:1:"2";s:3:" ay";s:1:"3";s:3:"aal";s:1:"4";s:3:"oo ";s:1:"5";s:3:"aan";s:1:"6";s:3:" ka";s:1:"7";s:3:"an ";s:1:"8";s:3:"in ";s:1:"9";s:3:" in";s:2:"10";s:3:"ada";s:2:"11";s:3:"maa";s:2:"12";s:3:"aba";s:2:"13";s:3:" so";s:2:"14";s:3:"ali";s:2:"15";s:3:"bad";s:2:"16";s:3:"add";s:2:"17";s:3:"soo";s:2:"18";s:3:" na";s:2:"19";s:3:"aha";s:2:"20";s:3:"ku ";s:2:"21";s:3:"ta ";s:2:"22";s:3:" wa";s:2:"23";s:3:"yo ";s:2:"24";s:3:"a s";s:2:"25";s:3:"oma";s:2:"26";s:3:"yaa";s:2:"27";s:3:" ba";s:2:"28";s:3:" ku";s:2:"29";s:3:" la";s:2:"30";s:3:" oo";s:2:"31";s:3:"iya";s:2:"32";s:3:"sha";s:2:"33";s:3:"a a";s:2:"34";s:3:"dda";s:2:"35";s:3:"nab";s:2:"36";s:3:"nta";s:2:"37";s:3:" da";s:2:"38";s:3:" ma";s:2:"39";s:3:"nka";s:2:"40";s:3:"uu ";s:2:"41";s:3:"y i";s:2:"42";s:3:"aya";s:2:"43";s:3:"ha ";s:2:"44";s:3:"raa";s:2:"45";s:3:" dh";s:2:"46";s:3:" qa";s:2:"47";s:3:"a k";s:2:"48";s:3:"ala";s:2:"49";s:3:"baa";s:2:"50";s:3:"doo";s:2:"51";s:3:"had";s:2:"52";s:3:"liy";s:2:"53";s:3:"oom";s:2:"54";s:3:" ha";s:2:"55";s:3:" sh";s:2:"56";s:3:"a d";s:2:"57";s:3:"a i";s:2:"58";s:3:"a n";s:2:"59";s:3:"aar";s:2:"60";s:3:"ee ";s:2:"61";s:3:"ey ";s:2:"62";s:3:"y k";s:2:"63";s:3:"ya ";s:2:"64";s:3:" ee";s:2:"65";s:3:" iy";s:2:"66";s:3:"aa ";s:2:"67";s:3:"aaq";s:2:"68";s:3:"gaa";s:2:"69";s:3:"lam";s:2:"70";s:3:" bu";s:2:"71";s:3:"a b";s:2:"72";s:3:"a m";s:2:"73";s:3:"ad ";s:2:"74";s:3:"aga";s:2:"75";s:3:"ama";s:2:"76";s:3:"iyo";s:2:"77";s:3:"la ";s:2:"78";s:3:"a c";s:2:"79";s:3:"a l";s:2:"80";s:3:"een";s:2:"81";s:3:"int";s:2:"82";s:3:"she";s:2:"83";s:3:"wax";s:2:"84";s:3:"yee";s:2:"85";s:3:" si";s:2:"86";s:3:" uu";s:2:"87";s:3:"a h";s:2:"88";s:3:"aas";s:2:"89";s:3:"alk";s:2:"90";s:3:"dha";s:2:"91";s:3:"gu ";s:2:"92";s:3:"hee";s:2:"93";s:3:"ii ";s:2:"94";s:3:"ira";s:2:"95";s:3:"mad";s:2:"96";s:3:"o a";s:2:"97";s:3:"o k";s:2:"98";s:3:"qay";s:2:"99";s:3:" ah";s:3:"100";s:3:" ca";s:3:"101";s:3:" wu";s:3:"102";s:3:"ank";s:3:"103";s:3:"ash";s:3:"104";s:3:"axa";s:3:"105";s:3:"eed";s:3:"106";s:3:"en ";s:3:"107";s:3:"ga ";s:3:"108";s:3:"haa";s:3:"109";s:3:"n a";s:3:"110";s:3:"n s";s:3:"111";s:3:"naa";s:3:"112";s:3:"nay";s:3:"113";s:3:"o d";s:3:"114";s:3:"taa";s:3:"115";s:3:"u b";s:3:"116";s:3:"uxu";s:3:"117";s:3:"wux";s:3:"118";s:3:"xuu";s:3:"119";s:3:" ci";s:3:"120";s:3:" do";s:3:"121";s:3:" ho";s:3:"122";s:3:" ta";s:3:"123";s:3:"a g";s:3:"124";s:3:"a u";s:3:"125";s:3:"ana";s:3:"126";s:3:"ayo";s:3:"127";s:3:"dhi";s:3:"128";s:3:"iin";s:3:"129";s:3:"lag";s:3:"130";s:3:"lin";s:3:"131";s:3:"lka";s:3:"132";s:3:"o i";s:3:"133";s:3:"san";s:3:"134";s:3:"u s";s:3:"135";s:3:"una";s:3:"136";s:3:"uun";s:3:"137";s:3:" ga";s:3:"138";s:3:" xa";s:3:"139";s:3:" xu";s:3:"140";s:3:"aab";s:3:"141";s:3:"abt";s:3:"142";s:3:"aq ";s:3:"143";s:3:"aqa";s:3:"144";s:3:"ara";s:3:"145";s:3:"arl";s:3:"146";s:3:"caa";s:3:"147";s:3:"cir";s:3:"148";s:3:"eeg";s:3:"149";s:3:"eel";s:3:"150";s:3:"isa";s:3:"151";s:3:"kal";s:3:"152";s:3:"lah";s:3:"153";s:3:"ney";s:3:"154";s:3:"qaa";s:3:"155";s:3:"rla";s:3:"156";s:3:"sad";s:3:"157";s:3:"sii";s:3:"158";s:3:"u d";s:3:"159";s:3:"wad";s:3:"160";s:3:" ad";s:3:"161";s:3:" ar";s:3:"162";s:3:" di";s:3:"163";s:3:" jo";s:3:"164";s:3:" ra";s:3:"165";s:3:" sa";s:3:"166";s:3:" u ";s:3:"167";s:3:" yi";s:3:"168";s:3:"a j";s:3:"169";s:3:"a q";s:3:"170";s:3:"aad";s:3:"171";s:3:"aat";s:3:"172";s:3:"aay";s:3:"173";s:3:"ah ";s:3:"174";s:3:"ale";s:3:"175";s:3:"amk";s:3:"176";s:3:"ari";s:3:"177";s:3:"as ";s:3:"178";s:3:"aye";s:3:"179";s:3:"bus";s:3:"180";s:3:"dal";s:3:"181";s:3:"ddu";s:3:"182";s:3:"dii";s:3:"183";s:3:"du ";s:3:"184";s:3:"duu";s:3:"185";s:3:"ed ";s:3:"186";s:3:"ege";s:3:"187";s:3:"gey";s:3:"188";s:3:"hay";s:3:"189";s:3:"hii";s:3:"190";s:3:"ida";s:3:"191";s:3:"ine";s:3:"192";s:3:"joo";s:3:"193";s:3:"laa";s:3:"194";s:3:"lay";s:3:"195";s:3:"mar";s:3:"196";s:3:"mee";s:3:"197";s:3:"n b";s:3:"198";s:3:"n d";s:3:"199";s:3:"n m";s:3:"200";s:3:"no ";s:3:"201";s:3:"o b";s:3:"202";s:3:"o l";s:3:"203";s:3:"oog";s:3:"204";s:3:"oon";s:3:"205";s:3:"rga";s:3:"206";s:3:"sh ";s:3:"207";s:3:"sid";s:3:"208";s:3:"u q";s:3:"209";s:3:"unk";s:3:"210";s:3:"ush";s:3:"211";s:3:"xa ";s:3:"212";s:3:"y d";s:3:"213";s:3:" bi";s:3:"214";s:3:" gu";s:3:"215";s:3:" is";s:3:"216";s:3:" ke";s:3:"217";s:3:" lo";s:3:"218";s:3:" me";s:3:"219";s:3:" mu";s:3:"220";s:3:" qo";s:3:"221";s:3:" ug";s:3:"222";s:3:"a e";s:3:"223";s:3:"a o";s:3:"224";s:3:"a w";s:3:"225";s:3:"adi";s:3:"226";s:3:"ado";s:3:"227";s:3:"agu";s:3:"228";s:3:"al ";s:3:"229";s:3:"ant";s:3:"230";s:3:"ark";s:3:"231";s:3:"asa";s:3:"232";s:3:"awi";s:3:"233";s:3:"bta";s:3:"234";s:3:"bul";s:3:"235";s:3:"d a";s:3:"236";s:3:"dag";s:3:"237";s:3:"dan";s:3:"238";s:3:"do ";s:3:"239";s:3:"e s";s:3:"240";s:3:"gal";s:3:"241";s:3:"gay";s:3:"242";s:3:"guu";s:3:"243";s:3:"h e";s:3:"244";s:3:"hal";s:3:"245";s:3:"iga";s:3:"246";s:3:"ihi";s:3:"247";s:3:"iri";s:3:"248";s:3:"iye";s:3:"249";s:3:"ken";s:3:"250";s:3:"lad";s:3:"251";s:3:"lid";s:3:"252";s:3:"lsh";s:3:"253";s:3:"mag";s:3:"254";s:3:"mun";s:3:"255";s:3:"n h";s:3:"256";s:3:"n i";s:3:"257";s:3:"na ";s:3:"258";s:3:"o n";s:3:"259";s:3:"o w";s:3:"260";s:3:"ood";s:3:"261";s:3:"oor";s:3:"262";s:3:"ora";s:3:"263";s:3:"qab";s:3:"264";s:3:"qor";s:3:"265";s:3:"rab";s:3:"266";s:3:"rit";s:3:"267";s:3:"rta";s:3:"268";s:3:"s o";s:3:"269";s:3:"sab";s:3:"270";s:3:"ska";s:3:"271";s:3:"to ";s:3:"272";s:3:"u a";s:3:"273";s:3:"u h";s:3:"274";s:3:"u u";s:3:"275";s:3:"ud ";s:3:"276";s:3:"ugu";s:3:"277";s:3:"uls";s:3:"278";s:3:"uud";s:3:"279";s:3:"waa";s:3:"280";s:3:"xus";s:3:"281";s:3:"y b";s:3:"282";s:3:"y q";s:3:"283";s:3:"y s";s:3:"284";s:3:"yad";s:3:"285";s:3:"yay";s:3:"286";s:3:"yih";s:3:"287";s:3:" aa";s:3:"288";s:3:" bo";s:3:"289";s:3:" br";s:3:"290";s:3:" go";s:3:"291";s:3:" ji";s:3:"292";s:3:" mi";s:3:"293";s:3:" of";s:3:"294";s:3:" ti";s:3:"295";s:3:" um";s:3:"296";s:3:" wi";s:3:"297";s:3:" xo";s:3:"298";s:3:"a x";s:3:"299";}s:7:"spanish";a:300:{s:3:" de";s:1:"0";s:3:"de ";s:1:"1";s:3:" la";s:1:"2";s:3:"os ";s:1:"3";s:3:"la ";s:1:"4";s:3:"el ";s:1:"5";s:3:"es ";s:1:"6";s:3:" qu";s:1:"7";s:3:" co";s:1:"8";s:3:"e l";s:1:"9";s:3:"as ";s:2:"10";s:3:"que";s:2:"11";s:3:" el";s:2:"12";s:3:"ue ";s:2:"13";s:3:"en ";s:2:"14";s:3:"ent";s:2:"15";s:3:" en";s:2:"16";s:3:" se";s:2:"17";s:3:"nte";s:2:"18";s:3:"res";s:2:"19";s:3:"con";s:2:"20";s:3:"est";s:2:"21";s:3:" es";s:2:"22";s:3:"s d";s:2:"23";s:3:" lo";s:2:"24";s:3:" pr";s:2:"25";s:3:"los";s:2:"26";s:3:" y ";s:2:"27";s:3:"do ";s:2:"28";s:4:"ón ";s:2:"29";s:4:"ión";s:2:"30";s:3:" un";s:2:"31";s:4:"ció";s:2:"32";s:3:"del";s:2:"33";s:3:"o d";s:2:"34";s:3:" po";s:2:"35";s:3:"a d";s:2:"36";s:3:"aci";s:2:"37";s:3:"sta";s:2:"38";s:3:"te ";s:2:"39";s:3:"ado";s:2:"40";s:3:"pre";s:2:"41";s:3:"to ";s:2:"42";s:3:"par";s:2:"43";s:3:"a e";s:2:"44";s:3:"a l";s:2:"45";s:3:"ra ";s:2:"46";s:3:"al ";s:2:"47";s:3:"e e";s:2:"48";s:3:"se ";s:2:"49";s:3:"pro";s:2:"50";s:3:"ar ";s:2:"51";s:3:"ia ";s:2:"52";s:3:"o e";s:2:"53";s:3:" re";s:2:"54";s:3:"ida";s:2:"55";s:3:"dad";s:2:"56";s:3:"tra";s:2:"57";s:3:"por";s:2:"58";s:3:"s p";s:2:"59";s:3:" a ";s:2:"60";s:3:"a p";s:2:"61";s:3:"ara";s:2:"62";s:3:"cia";s:2:"63";s:3:" pa";s:2:"64";s:3:"com";s:2:"65";s:3:"no ";s:2:"66";s:3:" di";s:2:"67";s:3:" in";s:2:"68";s:3:"ien";s:2:"69";s:3:"n l";s:2:"70";s:3:"ad ";s:2:"71";s:3:"ant";s:2:"72";s:3:"e s";s:2:"73";s:3:"men";s:2:"74";s:3:"a c";s:2:"75";s:3:"on ";s:2:"76";s:3:"un ";s:2:"77";s:3:"las";s:2:"78";s:3:"nci";s:2:"79";s:3:" tr";s:2:"80";s:3:"cio";s:2:"81";s:3:"ier";s:2:"82";s:3:"nto";s:2:"83";s:3:"tiv";s:2:"84";s:3:"n d";s:2:"85";s:3:"n e";s:2:"86";s:3:"or ";s:2:"87";s:3:"s c";s:2:"88";s:3:"enc";s:2:"89";s:3:"ern";s:2:"90";s:3:"io ";s:2:"91";s:3:"a s";s:2:"92";s:3:"ici";s:2:"93";s:3:"s e";s:2:"94";s:3:" ma";s:2:"95";s:3:"dos";s:2:"96";s:3:"e a";s:2:"97";s:3:"e c";s:2:"98";s:3:"emp";s:2:"99";s:3:"ica";s:3:"100";s:3:"ivo";s:3:"101";s:3:"l p";s:3:"102";s:3:"n c";s:3:"103";s:3:"r e";s:3:"104";s:3:"ta ";s:3:"105";s:3:"ter";s:3:"106";s:3:"e d";s:3:"107";s:3:"esa";s:3:"108";s:3:"ez ";s:3:"109";s:3:"mpr";s:3:"110";s:3:"o a";s:3:"111";s:3:"s a";s:3:"112";s:3:" ca";s:3:"113";s:3:" su";s:3:"114";s:3:"ion";s:3:"115";s:3:" cu";s:3:"116";s:3:" ju";s:3:"117";s:3:"an ";s:3:"118";s:3:"da ";s:3:"119";s:3:"ene";s:3:"120";s:3:"ero";s:3:"121";s:3:"na ";s:3:"122";s:3:"rec";s:3:"123";s:3:"ro ";s:3:"124";s:3:"tar";s:3:"125";s:3:" al";s:3:"126";s:3:" an";s:3:"127";s:3:"bie";s:3:"128";s:3:"e p";s:3:"129";s:3:"er ";s:3:"130";s:3:"l c";s:3:"131";s:3:"n p";s:3:"132";s:3:"omp";s:3:"133";s:3:"ten";s:3:"134";s:3:" em";s:3:"135";s:3:"ist";s:3:"136";s:3:"nes";s:3:"137";s:3:"nta";s:3:"138";s:3:"o c";s:3:"139";s:3:"so ";s:3:"140";s:3:"tes";s:3:"141";s:3:"era";s:3:"142";s:3:"l d";s:3:"143";s:3:"l m";s:3:"144";s:3:"les";s:3:"145";s:3:"ntr";s:3:"146";s:3:"o s";s:3:"147";s:3:"ore";s:3:"148";s:4:"rá ";s:3:"149";s:3:"s q";s:3:"150";s:3:"s y";s:3:"151";s:3:"sto";s:3:"152";s:3:"a a";s:3:"153";s:3:"a r";s:3:"154";s:3:"ari";s:3:"155";s:3:"des";s:3:"156";s:3:"e q";s:3:"157";s:3:"ivi";s:3:"158";s:3:"lic";s:3:"159";s:3:"lo ";s:3:"160";s:3:"n a";s:3:"161";s:3:"one";s:3:"162";s:3:"ora";s:3:"163";s:3:"per";s:3:"164";s:3:"pue";s:3:"165";s:3:"r l";s:3:"166";s:3:"re ";s:3:"167";s:3:"ren";s:3:"168";s:3:"una";s:3:"169";s:4:"ía ";s:3:"170";s:3:"ada";s:3:"171";s:3:"cas";s:3:"172";s:3:"ere";s:3:"173";s:3:"ide";s:3:"174";s:3:"min";s:3:"175";s:3:"n s";s:3:"176";s:3:"ndo";s:3:"177";s:3:"ran";s:3:"178";s:3:"rno";s:3:"179";s:3:" ac";s:3:"180";s:3:" ex";s:3:"181";s:3:" go";s:3:"182";s:3:" no";s:3:"183";s:3:"a t";s:3:"184";s:3:"aba";s:3:"185";s:3:"ble";s:3:"186";s:3:"ece";s:3:"187";s:3:"ect";s:3:"188";s:3:"l a";s:3:"189";s:3:"l g";s:3:"190";s:3:"lid";s:3:"191";s:3:"nsi";s:3:"192";s:3:"ons";s:3:"193";s:3:"rac";s:3:"194";s:3:"rio";s:3:"195";s:3:"str";s:3:"196";s:3:"uer";s:3:"197";s:3:"ust";s:3:"198";s:3:" ha";s:3:"199";s:3:" le";s:3:"200";s:3:" mi";s:3:"201";s:3:" mu";s:3:"202";s:3:" ob";s:3:"203";s:3:" pe";s:3:"204";s:3:" pu";s:3:"205";s:3:" so";s:3:"206";s:3:"a i";s:3:"207";s:3:"ale";s:3:"208";s:3:"ca ";s:3:"209";s:3:"cto";s:3:"210";s:3:"e i";s:3:"211";s:3:"e u";s:3:"212";s:3:"eso";s:3:"213";s:3:"fer";s:3:"214";s:3:"fic";s:3:"215";s:3:"gob";s:3:"216";s:3:"jo ";s:3:"217";s:3:"ma ";s:3:"218";s:3:"mpl";s:3:"219";s:3:"o p";s:3:"220";s:3:"obi";s:3:"221";s:3:"s m";s:3:"222";s:3:"sa ";s:3:"223";s:3:"sep";s:3:"224";s:3:"ste";s:3:"225";s:3:"sti";s:3:"226";s:3:"tad";s:3:"227";s:3:"tod";s:3:"228";s:3:"y s";s:3:"229";s:3:" ci";s:3:"230";s:3:"and";s:3:"231";s:3:"ces";s:3:"232";s:4:"có ";s:3:"233";s:3:"dor";s:3:"234";s:3:"e m";s:3:"235";s:3:"eci";s:3:"236";s:3:"eco";s:3:"237";s:3:"esi";s:3:"238";s:3:"int";s:3:"239";s:3:"iza";s:3:"240";s:3:"l e";s:3:"241";s:3:"lar";s:3:"242";s:3:"mie";s:3:"243";s:3:"ner";s:3:"244";s:3:"orc";s:3:"245";s:3:"rci";s:3:"246";s:3:"ria";s:3:"247";s:3:"tic";s:3:"248";s:3:"tor";s:3:"249";s:3:" as";s:3:"250";s:3:" si";s:3:"251";s:3:"ce ";s:3:"252";s:3:"den";s:3:"253";s:3:"e r";s:3:"254";s:3:"e t";s:3:"255";s:3:"end";s:3:"256";s:3:"eri";s:3:"257";s:3:"esp";s:3:"258";s:3:"ial";s:3:"259";s:3:"ido";s:3:"260";s:3:"ina";s:3:"261";s:3:"inc";s:3:"262";s:3:"mit";s:3:"263";s:3:"o l";s:3:"264";s:3:"ome";s:3:"265";s:3:"pli";s:3:"266";s:3:"ras";s:3:"267";s:3:"s t";s:3:"268";s:3:"sid";s:3:"269";s:3:"sup";s:3:"270";s:3:"tab";s:3:"271";s:3:"uen";s:3:"272";s:3:"ues";s:3:"273";s:3:"ura";s:3:"274";s:3:"vo ";s:3:"275";s:3:"vor";s:3:"276";s:3:" sa";s:3:"277";s:3:" ti";s:3:"278";s:3:"abl";s:3:"279";s:3:"ali";s:3:"280";s:3:"aso";s:3:"281";s:3:"ast";s:3:"282";s:3:"cor";s:3:"283";s:3:"cti";s:3:"284";s:3:"cue";s:3:"285";s:3:"div";s:3:"286";s:3:"duc";s:3:"287";s:3:"ens";s:3:"288";s:3:"eti";s:3:"289";s:3:"imi";s:3:"290";s:3:"ini";s:3:"291";s:3:"lec";s:3:"292";s:3:"o q";s:3:"293";s:3:"oce";s:3:"294";s:3:"ort";s:3:"295";s:3:"ral";s:3:"296";s:3:"rma";s:3:"297";s:3:"roc";s:3:"298";s:3:"rod";s:3:"299";}s:7:"swahili";a:300:{s:3:" wa";s:1:"0";s:3:"wa ";s:1:"1";s:3:"a k";s:1:"2";s:3:"a m";s:1:"3";s:3:" ku";s:1:"4";s:3:" ya";s:1:"5";s:3:"a w";s:1:"6";s:3:"ya ";s:1:"7";s:3:"ni ";s:1:"8";s:3:" ma";s:1:"9";s:3:"ka ";s:2:"10";s:3:"a u";s:2:"11";s:3:"na ";s:2:"12";s:3:"za ";s:2:"13";s:3:"ia ";s:2:"14";s:3:" na";s:2:"15";s:3:"ika";s:2:"16";s:3:"ma ";s:2:"17";s:3:"ali";s:2:"18";s:3:"a n";s:2:"19";s:3:" am";s:2:"20";s:3:"ili";s:2:"21";s:3:"kwa";s:2:"22";s:3:" kw";s:2:"23";s:3:"ini";s:2:"24";s:3:" ha";s:2:"25";s:3:"ame";s:2:"26";s:3:"ana";s:2:"27";s:3:"i n";s:2:"28";s:3:" za";s:2:"29";s:3:"a h";s:2:"30";s:3:"ema";s:2:"31";s:3:"i m";s:2:"32";s:3:"i y";s:2:"33";s:3:"kuw";s:2:"34";s:3:"la ";s:2:"35";s:3:"o w";s:2:"36";s:3:"a y";s:2:"37";s:3:"ata";s:2:"38";s:3:"sem";s:2:"39";s:3:" la";s:2:"40";s:3:"ati";s:2:"41";s:3:"chi";s:2:"42";s:3:"i w";s:2:"43";s:3:"uwa";s:2:"44";s:3:"aki";s:2:"45";s:3:"li ";s:2:"46";s:3:"eka";s:2:"47";s:3:"ira";s:2:"48";s:3:" nc";s:2:"49";s:3:"a s";s:2:"50";s:3:"iki";s:2:"51";s:3:"kat";s:2:"52";s:3:"nch";s:2:"53";s:3:" ka";s:2:"54";s:3:" ki";s:2:"55";s:3:"a b";s:2:"56";s:3:"aji";s:2:"57";s:3:"amb";s:2:"58";s:3:"ra ";s:2:"59";s:3:"ri ";s:2:"60";s:3:"rik";s:2:"61";s:3:"ada";s:2:"62";s:3:"mat";s:2:"63";s:3:"mba";s:2:"64";s:3:"mes";s:2:"65";s:3:"yo ";s:2:"66";s:3:"zi ";s:2:"67";s:3:"da ";s:2:"68";s:3:"hi ";s:2:"69";s:3:"i k";s:2:"70";s:3:"ja ";s:2:"71";s:3:"kut";s:2:"72";s:3:"tek";s:2:"73";s:3:"wan";s:2:"74";s:3:" bi";s:2:"75";s:3:"a a";s:2:"76";s:3:"aka";s:2:"77";s:3:"ao ";s:2:"78";s:3:"asi";s:2:"79";s:3:"cha";s:2:"80";s:3:"ese";s:2:"81";s:3:"eza";s:2:"82";s:3:"ke ";s:2:"83";s:3:"moj";s:2:"84";s:3:"oja";s:2:"85";s:3:" hi";s:2:"86";s:3:"a z";s:2:"87";s:3:"end";s:2:"88";s:3:"ha ";s:2:"89";s:3:"ji ";s:2:"90";s:3:"mu ";s:2:"91";s:3:"shi";s:2:"92";s:3:"wat";s:2:"93";s:3:" bw";s:2:"94";s:3:"ake";s:2:"95";s:3:"ara";s:2:"96";s:3:"bw ";s:2:"97";s:3:"i h";s:2:"98";s:3:"imb";s:2:"99";s:3:"tik";s:3:"100";s:3:"wak";s:3:"101";s:3:"wal";s:3:"102";s:3:" hu";s:3:"103";s:3:" mi";s:3:"104";s:3:" mk";s:3:"105";s:3:" ni";s:3:"106";s:3:" ra";s:3:"107";s:3:" um";s:3:"108";s:3:"a l";s:3:"109";s:3:"ate";s:3:"110";s:3:"esh";s:3:"111";s:3:"ina";s:3:"112";s:3:"ish";s:3:"113";s:3:"kim";s:3:"114";s:3:"o k";s:3:"115";s:3:" ir";s:3:"116";s:3:"a i";s:3:"117";s:3:"ala";s:3:"118";s:3:"ani";s:3:"119";s:3:"aq ";s:3:"120";s:3:"azi";s:3:"121";s:3:"hin";s:3:"122";s:3:"i a";s:3:"123";s:3:"idi";s:3:"124";s:3:"ima";s:3:"125";s:3:"ita";s:3:"126";s:3:"rai";s:3:"127";s:3:"raq";s:3:"128";s:3:"sha";s:3:"129";s:3:" ms";s:3:"130";s:3:" se";s:3:"131";s:3:"afr";s:3:"132";s:3:"ama";s:3:"133";s:3:"ano";s:3:"134";s:3:"ea ";s:3:"135";s:3:"ele";s:3:"136";s:3:"fri";s:3:"137";s:3:"go ";s:3:"138";s:3:"i i";s:3:"139";s:3:"ifa";s:3:"140";s:3:"iwa";s:3:"141";s:3:"iyo";s:3:"142";s:3:"kus";s:3:"143";s:3:"lia";s:3:"144";s:3:"lio";s:3:"145";s:3:"maj";s:3:"146";s:3:"mku";s:3:"147";s:3:"no ";s:3:"148";s:3:"tan";s:3:"149";s:3:"uli";s:3:"150";s:3:"uta";s:3:"151";s:3:"wen";s:3:"152";s:3:" al";s:3:"153";s:3:"a j";s:3:"154";s:3:"aad";s:3:"155";s:3:"aid";s:3:"156";s:3:"ari";s:3:"157";s:3:"awa";s:3:"158";s:3:"ba ";s:3:"159";s:3:"fa ";s:3:"160";s:3:"nde";s:3:"161";s:3:"nge";s:3:"162";s:3:"nya";s:3:"163";s:3:"o y";s:3:"164";s:3:"u w";s:3:"165";s:3:"ua ";s:3:"166";s:3:"umo";s:3:"167";s:3:"waz";s:3:"168";s:3:"ye ";s:3:"169";s:3:" ut";s:3:"170";s:3:" vi";s:3:"171";s:3:"a d";s:3:"172";s:3:"a t";s:3:"173";s:3:"aif";s:3:"174";s:3:"di ";s:3:"175";s:3:"ere";s:3:"176";s:3:"ing";s:3:"177";s:3:"kin";s:3:"178";s:3:"nda";s:3:"179";s:3:"o n";s:3:"180";s:3:"oa ";s:3:"181";s:3:"tai";s:3:"182";s:3:"toa";s:3:"183";s:3:"usa";s:3:"184";s:3:"uto";s:3:"185";s:3:"was";s:3:"186";s:3:"yak";s:3:"187";s:3:"zo ";s:3:"188";s:3:" ji";s:3:"189";s:3:" mw";s:3:"190";s:3:"a p";s:3:"191";s:3:"aia";s:3:"192";s:3:"amu";s:3:"193";s:3:"ang";s:3:"194";s:3:"bik";s:3:"195";s:3:"bo ";s:3:"196";s:3:"del";s:3:"197";s:3:"e w";s:3:"198";s:3:"ene";s:3:"199";s:3:"eng";s:3:"200";s:3:"ich";s:3:"201";s:3:"iri";s:3:"202";s:3:"iti";s:3:"203";s:3:"ito";s:3:"204";s:3:"ki ";s:3:"205";s:3:"kir";s:3:"206";s:3:"ko ";s:3:"207";s:3:"kuu";s:3:"208";s:3:"mar";s:3:"209";s:3:"mbo";s:3:"210";s:3:"mil";s:3:"211";s:3:"ngi";s:3:"212";s:3:"ngo";s:3:"213";s:3:"o l";s:3:"214";s:3:"ong";s:3:"215";s:3:"si ";s:3:"216";s:3:"ta ";s:3:"217";s:3:"tak";s:3:"218";s:3:"u y";s:3:"219";s:3:"umu";s:3:"220";s:3:"usi";s:3:"221";s:3:"uu ";s:3:"222";s:3:"wam";s:3:"223";s:3:" af";s:3:"224";s:3:" ba";s:3:"225";s:3:" li";s:3:"226";s:3:" si";s:3:"227";s:3:" zi";s:3:"228";s:3:"a v";s:3:"229";s:3:"ami";s:3:"230";s:3:"atu";s:3:"231";s:3:"awi";s:3:"232";s:3:"eri";s:3:"233";s:3:"fan";s:3:"234";s:3:"fur";s:3:"235";s:3:"ger";s:3:"236";s:3:"i z";s:3:"237";s:3:"isi";s:3:"238";s:3:"izo";s:3:"239";s:3:"lea";s:3:"240";s:3:"mbi";s:3:"241";s:3:"mwa";s:3:"242";s:3:"nye";s:3:"243";s:3:"o h";s:3:"244";s:3:"o m";s:3:"245";s:3:"oni";s:3:"246";s:3:"rez";s:3:"247";s:3:"saa";s:3:"248";s:3:"ser";s:3:"249";s:3:"sin";s:3:"250";s:3:"tat";s:3:"251";s:3:"tis";s:3:"252";s:3:"tu ";s:3:"253";s:3:"uin";s:3:"254";s:3:"uki";s:3:"255";s:3:"ur ";s:3:"256";s:3:"wi ";s:3:"257";s:3:"yar";s:3:"258";s:3:" da";s:3:"259";s:3:" en";s:3:"260";s:3:" mp";s:3:"261";s:3:" ny";s:3:"262";s:3:" ta";s:3:"263";s:3:" ul";s:3:"264";s:3:" we";s:3:"265";s:3:"a c";s:3:"266";s:3:"a f";s:3:"267";s:3:"ais";s:3:"268";s:3:"apo";s:3:"269";s:3:"ayo";s:3:"270";s:3:"bar";s:3:"271";s:3:"dhi";s:3:"272";s:3:"e a";s:3:"273";s:3:"eke";s:3:"274";s:3:"eny";s:3:"275";s:3:"eon";s:3:"276";s:3:"hai";s:3:"277";s:3:"han";s:3:"278";s:3:"hiy";s:3:"279";s:3:"hur";s:3:"280";s:3:"i s";s:3:"281";s:3:"imw";s:3:"282";s:3:"kal";s:3:"283";s:3:"kwe";s:3:"284";s:3:"lak";s:3:"285";s:3:"lam";s:3:"286";s:3:"mak";s:3:"287";s:3:"msa";s:3:"288";s:3:"ne ";s:3:"289";s:3:"ngu";s:3:"290";s:3:"ru ";s:3:"291";s:3:"sal";s:3:"292";s:3:"swa";s:3:"293";s:3:"te ";s:3:"294";s:3:"ti ";s:3:"295";s:3:"uku";s:3:"296";s:3:"uma";s:3:"297";s:3:"una";s:3:"298";s:3:"uru";s:3:"299";}s:7:"swedish";a:300:{s:3:"en ";s:1:"0";s:3:" de";s:1:"1";s:3:"et ";s:1:"2";s:3:"er ";s:1:"3";s:3:"tt ";s:1:"4";s:3:"om ";s:1:"5";s:4:"för";s:1:"6";s:3:"ar ";s:1:"7";s:3:"de ";s:1:"8";s:3:"att";s:1:"9";s:4:" fö";s:2:"10";s:3:"ing";s:2:"11";s:3:" in";s:2:"12";s:3:" at";s:2:"13";s:3:" i ";s:2:"14";s:3:"det";s:2:"15";s:3:"ch ";s:2:"16";s:3:"an ";s:2:"17";s:3:"gen";s:2:"18";s:3:" an";s:2:"19";s:3:"t s";s:2:"20";s:3:"som";s:2:"21";s:3:"te ";s:2:"22";s:3:" oc";s:2:"23";s:3:"ter";s:2:"24";s:3:" ha";s:2:"25";s:3:"lle";s:2:"26";s:3:"och";s:2:"27";s:3:" sk";s:2:"28";s:3:" so";s:2:"29";s:3:"ra ";s:2:"30";s:3:"r a";s:2:"31";s:3:" me";s:2:"32";s:3:"var";s:2:"33";s:3:"nde";s:2:"34";s:4:"är ";s:2:"35";s:3:" ko";s:2:"36";s:3:"on ";s:2:"37";s:3:"ans";s:2:"38";s:3:"int";s:2:"39";s:3:"n s";s:2:"40";s:3:"na ";s:2:"41";s:3:" en";s:2:"42";s:3:" fr";s:2:"43";s:4:" pÃ¥";s:2:"44";s:3:" st";s:2:"45";s:3:" va";s:2:"46";s:3:"and";s:2:"47";s:3:"nte";s:2:"48";s:4:"pÃ¥ ";s:2:"49";s:3:"ska";s:2:"50";s:3:"ta ";s:2:"51";s:3:" vi";s:2:"52";s:3:"der";s:2:"53";s:4:"äll";s:2:"54";s:4:"örs";s:2:"55";s:3:" om";s:2:"56";s:3:"da ";s:2:"57";s:3:"kri";s:2:"58";s:3:"ka ";s:2:"59";s:3:"nst";s:2:"60";s:3:" ho";s:2:"61";s:3:"as ";s:2:"62";s:4:"stä";s:2:"63";s:3:"r d";s:2:"64";s:3:"t f";s:2:"65";s:3:"upp";s:2:"66";s:3:" be";s:2:"67";s:3:"nge";s:2:"68";s:3:"r s";s:2:"69";s:3:"tal";s:2:"70";s:4:"täl";s:2:"71";s:4:"ör ";s:2:"72";s:3:" av";s:2:"73";s:3:"ger";s:2:"74";s:3:"ill";s:2:"75";s:3:"ng ";s:2:"76";s:3:"e s";s:2:"77";s:3:"ekt";s:2:"78";s:3:"ade";s:2:"79";s:3:"era";s:2:"80";s:3:"ers";s:2:"81";s:3:"har";s:2:"82";s:3:"ll ";s:2:"83";s:3:"lld";s:2:"84";s:3:"rin";s:2:"85";s:3:"rna";s:2:"86";s:4:"säk";s:2:"87";s:3:"und";s:2:"88";s:3:"inn";s:2:"89";s:3:"lig";s:2:"90";s:3:"ns ";s:2:"91";s:3:" ma";s:2:"92";s:3:" pr";s:2:"93";s:3:" up";s:2:"94";s:3:"age";s:2:"95";s:3:"av ";s:2:"96";s:3:"iva";s:2:"97";s:3:"kti";s:2:"98";s:3:"lda";s:2:"99";s:3:"orn";s:3:"100";s:3:"son";s:3:"101";s:3:"ts ";s:3:"102";s:3:"tta";s:3:"103";s:4:"äkr";s:3:"104";s:3:" sj";s:3:"105";s:3:" ti";s:3:"106";s:3:"avt";s:3:"107";s:3:"ber";s:3:"108";s:3:"els";s:3:"109";s:3:"eta";s:3:"110";s:3:"kol";s:3:"111";s:3:"men";s:3:"112";s:3:"n d";s:3:"113";s:3:"t k";s:3:"114";s:3:"vta";s:3:"115";s:4:"Ã¥r ";s:3:"116";s:3:"juk";s:3:"117";s:3:"man";s:3:"118";s:3:"n f";s:3:"119";s:3:"nin";s:3:"120";s:3:"r i";s:3:"121";s:4:"rsä";s:3:"122";s:3:"sju";s:3:"123";s:3:"sso";s:3:"124";s:4:" är";s:3:"125";s:3:"a s";s:3:"126";s:3:"ach";s:3:"127";s:3:"ag ";s:3:"128";s:3:"bac";s:3:"129";s:3:"den";s:3:"130";s:3:"ett";s:3:"131";s:3:"fte";s:3:"132";s:3:"hor";s:3:"133";s:3:"nba";s:3:"134";s:3:"oll";s:3:"135";s:3:"rnb";s:3:"136";s:3:"ste";s:3:"137";s:3:"til";s:3:"138";s:3:" ef";s:3:"139";s:3:" si";s:3:"140";s:3:"a a";s:3:"141";s:3:"e h";s:3:"142";s:3:"ed ";s:3:"143";s:3:"eft";s:3:"144";s:3:"ga ";s:3:"145";s:3:"ig ";s:3:"146";s:3:"it ";s:3:"147";s:3:"ler";s:3:"148";s:3:"med";s:3:"149";s:3:"n i";s:3:"150";s:3:"nd ";s:3:"151";s:4:"sÃ¥ ";s:3:"152";s:3:"tiv";s:3:"153";s:3:" bl";s:3:"154";s:3:" et";s:3:"155";s:3:" fi";s:3:"156";s:4:" sä";s:3:"157";s:3:"at ";s:3:"158";s:3:"des";s:3:"159";s:3:"e a";s:3:"160";s:3:"gar";s:3:"161";s:3:"get";s:3:"162";s:3:"lan";s:3:"163";s:3:"lss";s:3:"164";s:3:"ost";s:3:"165";s:3:"r b";s:3:"166";s:3:"r e";s:3:"167";s:3:"re ";s:3:"168";s:3:"ret";s:3:"169";s:3:"sta";s:3:"170";s:3:"t i";s:3:"171";s:3:" ge";s:3:"172";s:3:" he";s:3:"173";s:3:" re";s:3:"174";s:3:"a f";s:3:"175";s:3:"all";s:3:"176";s:3:"bos";s:3:"177";s:3:"ets";s:3:"178";s:3:"lek";s:3:"179";s:3:"let";s:3:"180";s:3:"ner";s:3:"181";s:3:"nna";s:3:"182";s:3:"nne";s:3:"183";s:3:"r f";s:3:"184";s:3:"rit";s:3:"185";s:3:"s s";s:3:"186";s:3:"sen";s:3:"187";s:3:"sto";s:3:"188";s:3:"tor";s:3:"189";s:3:"vav";s:3:"190";s:3:"ygg";s:3:"191";s:3:" ka";s:3:"192";s:4:" sÃ¥";s:3:"193";s:3:" tr";s:3:"194";s:3:" ut";s:3:"195";s:3:"ad ";s:3:"196";s:3:"al ";s:3:"197";s:3:"are";s:3:"198";s:3:"e o";s:3:"199";s:3:"gon";s:3:"200";s:3:"kom";s:3:"201";s:3:"n a";s:3:"202";s:3:"n h";s:3:"203";s:3:"nga";s:3:"204";s:3:"r h";s:3:"205";s:3:"ren";s:3:"206";s:3:"t d";s:3:"207";s:3:"tag";s:3:"208";s:3:"tar";s:3:"209";s:3:"tre";s:3:"210";s:4:"ätt";s:3:"211";s:4:" fÃ¥";s:3:"212";s:4:" hä";s:3:"213";s:3:" se";s:3:"214";s:3:"a d";s:3:"215";s:3:"a i";s:3:"216";s:3:"a p";s:3:"217";s:3:"ale";s:3:"218";s:3:"ann";s:3:"219";s:3:"ara";s:3:"220";s:3:"byg";s:3:"221";s:3:"gt ";s:3:"222";s:3:"han";s:3:"223";s:3:"igt";s:3:"224";s:3:"kan";s:3:"225";s:3:"la ";s:3:"226";s:3:"n o";s:3:"227";s:3:"nom";s:3:"228";s:3:"nsk";s:3:"229";s:3:"omm";s:3:"230";s:3:"r k";s:3:"231";s:3:"r p";s:3:"232";s:3:"r v";s:3:"233";s:3:"s f";s:3:"234";s:3:"s k";s:3:"235";s:3:"t a";s:3:"236";s:3:"t p";s:3:"237";s:3:"ver";s:3:"238";s:3:" bo";s:3:"239";s:3:" br";s:3:"240";s:3:" ku";s:3:"241";s:4:" nÃ¥";s:3:"242";s:3:"a b";s:3:"243";s:3:"a e";s:3:"244";s:3:"del";s:3:"245";s:3:"ens";s:3:"246";s:3:"es ";s:3:"247";s:3:"fin";s:3:"248";s:3:"ige";s:3:"249";s:3:"m s";s:3:"250";s:3:"n p";s:3:"251";s:4:"nÃ¥g";s:3:"252";s:3:"or ";s:3:"253";s:3:"r o";s:3:"254";s:3:"rbe";s:3:"255";s:3:"rs ";s:3:"256";s:3:"rt ";s:3:"257";s:3:"s a";s:3:"258";s:3:"s n";s:3:"259";s:3:"skr";s:3:"260";s:3:"t o";s:3:"261";s:3:"ten";s:3:"262";s:3:"tio";s:3:"263";s:3:"ven";s:3:"264";s:3:" al";s:3:"265";s:3:" ja";s:3:"266";s:3:" p ";s:3:"267";s:3:" r ";s:3:"268";s:3:" sa";s:3:"269";s:3:"a h";s:3:"270";s:3:"bet";s:3:"271";s:3:"cke";s:3:"272";s:3:"dra";s:3:"273";s:3:"e f";s:3:"274";s:3:"e i";s:3:"275";s:3:"eda";s:3:"276";s:3:"eno";s:3:"277";s:4:"erä";s:3:"278";s:3:"ess";s:3:"279";s:3:"ion";s:3:"280";s:3:"jag";s:3:"281";s:3:"m f";s:3:"282";s:3:"ne ";s:3:"283";s:3:"nns";s:3:"284";s:3:"pro";s:3:"285";s:3:"r t";s:3:"286";s:3:"rar";s:3:"287";s:3:"riv";s:3:"288";s:4:"rät";s:3:"289";s:3:"t e";s:3:"290";s:3:"t t";s:3:"291";s:3:"ust";s:3:"292";s:3:"vad";s:3:"293";s:4:"öre";s:3:"294";s:3:" ar";s:3:"295";s:3:" by";s:3:"296";s:3:" kr";s:3:"297";s:3:" mi";s:3:"298";s:3:"arb";s:3:"299";}s:7:"tagalog";a:300:{s:3:"ng ";s:1:"0";s:3:"ang";s:1:"1";s:3:" na";s:1:"2";s:3:" sa";s:1:"3";s:3:"an ";s:1:"4";s:3:"nan";s:1:"5";s:3:"sa ";s:1:"6";s:3:"na ";s:1:"7";s:3:" ma";s:1:"8";s:3:" ca";s:1:"9";s:3:"ay ";s:2:"10";s:3:"n g";s:2:"11";s:3:" an";s:2:"12";s:3:"ong";s:2:"13";s:3:" ga";s:2:"14";s:3:"at ";s:2:"15";s:3:" pa";s:2:"16";s:3:"ala";s:2:"17";s:3:" si";s:2:"18";s:3:"a n";s:2:"19";s:3:"ga ";s:2:"20";s:3:"g n";s:2:"21";s:3:"g m";s:2:"22";s:3:"ito";s:2:"23";s:3:"g c";s:2:"24";s:3:"man";s:2:"25";s:3:"san";s:2:"26";s:3:"g s";s:2:"27";s:3:"ing";s:2:"28";s:3:"to ";s:2:"29";s:3:"ila";s:2:"30";s:3:"ina";s:2:"31";s:3:" di";s:2:"32";s:3:" ta";s:2:"33";s:3:"aga";s:2:"34";s:3:"iya";s:2:"35";s:3:"aca";s:2:"36";s:3:"g t";s:2:"37";s:3:" at";s:2:"38";s:3:"aya";s:2:"39";s:3:"ama";s:2:"40";s:3:"lan";s:2:"41";s:3:"a a";s:2:"42";s:3:"qui";s:2:"43";s:3:"a c";s:2:"44";s:3:"a s";s:2:"45";s:3:"nag";s:2:"46";s:3:" ba";s:2:"47";s:3:"g i";s:2:"48";s:3:"tan";s:2:"49";s:3:"'t ";s:2:"50";s:3:" cu";s:2:"51";s:3:"aua";s:2:"52";s:3:"g p";s:2:"53";s:3:" ni";s:2:"54";s:3:"os ";s:2:"55";s:3:"'y ";s:2:"56";s:3:"a m";s:2:"57";s:3:" n ";s:2:"58";s:3:"la ";s:2:"59";s:3:" la";s:2:"60";s:3:"o n";s:2:"61";s:3:"yan";s:2:"62";s:3:" ay";s:2:"63";s:3:"usa";s:2:"64";s:3:"cay";s:2:"65";s:3:"on ";s:2:"66";s:3:"ya ";s:2:"67";s:3:" it";s:2:"68";s:3:"al ";s:2:"69";s:3:"apa";s:2:"70";s:3:"ata";s:2:"71";s:3:"t n";s:2:"72";s:3:"uan";s:2:"73";s:3:"aha";s:2:"74";s:3:"asa";s:2:"75";s:3:"pag";s:2:"76";s:3:" gu";s:2:"77";s:3:"g l";s:2:"78";s:3:"di ";s:2:"79";s:3:"mag";s:2:"80";s:3:"aba";s:2:"81";s:3:"g a";s:2:"82";s:3:"ara";s:2:"83";s:3:"a p";s:2:"84";s:3:"in ";s:2:"85";s:3:"ana";s:2:"86";s:3:"it ";s:2:"87";s:3:"si ";s:2:"88";s:3:"cus";s:2:"89";s:3:"g b";s:2:"90";s:3:"uin";s:2:"91";s:3:"a t";s:2:"92";s:3:"as ";s:2:"93";s:3:"n n";s:2:"94";s:3:"hin";s:2:"95";s:3:" hi";s:2:"96";s:3:"a't";s:2:"97";s:3:"ali";s:2:"98";s:3:" bu";s:2:"99";s:3:"gan";s:3:"100";s:3:"uma";s:3:"101";s:3:"a d";s:3:"102";s:3:"agc";s:3:"103";s:3:"aqu";s:3:"104";s:3:"g d";s:3:"105";s:3:" tu";s:3:"106";s:3:"aon";s:3:"107";s:3:"ari";s:3:"108";s:3:"cas";s:3:"109";s:3:"i n";s:3:"110";s:3:"niy";s:3:"111";s:3:"pin";s:3:"112";s:3:"a i";s:3:"113";s:3:"gca";s:3:"114";s:3:"siy";s:3:"115";s:3:"a'y";s:3:"116";s:3:"yao";s:3:"117";s:3:"ag ";s:3:"118";s:3:"ca ";s:3:"119";s:3:"han";s:3:"120";s:3:"ili";s:3:"121";s:3:"pan";s:3:"122";s:3:"sin";s:3:"123";s:3:"ual";s:3:"124";s:3:"n s";s:3:"125";s:3:"nam";s:3:"126";s:3:" lu";s:3:"127";s:3:"can";s:3:"128";s:3:"dit";s:3:"129";s:3:"gui";s:3:"130";s:3:"y n";s:3:"131";s:3:"gal";s:3:"132";s:3:"hat";s:3:"133";s:3:"nal";s:3:"134";s:3:" is";s:3:"135";s:3:"bag";s:3:"136";s:3:"fra";s:3:"137";s:3:" fr";s:3:"138";s:3:" su";s:3:"139";s:3:"a l";s:3:"140";s:3:" co";s:3:"141";s:3:"ani";s:3:"142";s:3:" bi";s:3:"143";s:3:" da";s:3:"144";s:3:"alo";s:3:"145";s:3:"isa";s:3:"146";s:3:"ita";s:3:"147";s:3:"may";s:3:"148";s:3:"o s";s:3:"149";s:3:"sil";s:3:"150";s:3:"una";s:3:"151";s:3:" in";s:3:"152";s:3:" pi";s:3:"153";s:3:"l n";s:3:"154";s:3:"nil";s:3:"155";s:3:"o a";s:3:"156";s:3:"pat";s:3:"157";s:3:"sac";s:3:"158";s:3:"t s";s:3:"159";s:3:" ua";s:3:"160";s:3:"agu";s:3:"161";s:3:"ail";s:3:"162";s:3:"bin";s:3:"163";s:3:"dal";s:3:"164";s:3:"g h";s:3:"165";s:3:"ndi";s:3:"166";s:3:"oon";s:3:"167";s:3:"ua ";s:3:"168";s:3:" ha";s:3:"169";s:3:"ind";s:3:"170";s:3:"ran";s:3:"171";s:3:"s n";s:3:"172";s:3:"tin";s:3:"173";s:3:"ulo";s:3:"174";s:3:"eng";s:3:"175";s:3:"g f";s:3:"176";s:3:"ini";s:3:"177";s:3:"lah";s:3:"178";s:3:"lo ";s:3:"179";s:3:"rai";s:3:"180";s:3:"rin";s:3:"181";s:3:"ton";s:3:"182";s:3:"g u";s:3:"183";s:3:"inu";s:3:"184";s:3:"lon";s:3:"185";s:3:"o'y";s:3:"186";s:3:"t a";s:3:"187";s:3:" ar";s:3:"188";s:3:"a b";s:3:"189";s:3:"ad ";s:3:"190";s:3:"bay";s:3:"191";s:3:"cal";s:3:"192";s:3:"gya";s:3:"193";s:3:"ile";s:3:"194";s:3:"mat";s:3:"195";s:3:"n a";s:3:"196";s:3:"pau";s:3:"197";s:3:"ra ";s:3:"198";s:3:"tay";s:3:"199";s:3:"y m";s:3:"200";s:3:"ant";s:3:"201";s:3:"ban";s:3:"202";s:3:"i m";s:3:"203";s:3:"nas";s:3:"204";s:3:"nay";s:3:"205";s:3:"no ";s:3:"206";s:3:"sti";s:3:"207";s:3:" ti";s:3:"208";s:3:"ags";s:3:"209";s:3:"g g";s:3:"210";s:3:"ta ";s:3:"211";s:3:"uit";s:3:"212";s:3:"uno";s:3:"213";s:3:" ib";s:3:"214";s:3:" ya";s:3:"215";s:3:"a u";s:3:"216";s:3:"abi";s:3:"217";s:3:"ati";s:3:"218";s:3:"cap";s:3:"219";s:3:"ig ";s:3:"220";s:3:"is ";s:3:"221";s:3:"la'";s:3:"222";s:3:" do";s:3:"223";s:3:" pu";s:3:"224";s:3:"api";s:3:"225";s:3:"ayo";s:3:"226";s:3:"gos";s:3:"227";s:3:"gul";s:3:"228";s:3:"lal";s:3:"229";s:3:"tag";s:3:"230";s:3:"til";s:3:"231";s:3:"tun";s:3:"232";s:3:"y c";s:3:"233";s:3:"y s";s:3:"234";s:3:"yon";s:3:"235";s:3:"ano";s:3:"236";s:3:"bur";s:3:"237";s:3:"iba";s:3:"238";s:3:"isi";s:3:"239";s:3:"lam";s:3:"240";s:3:"nac";s:3:"241";s:3:"nat";s:3:"242";s:3:"ni ";s:3:"243";s:3:"nto";s:3:"244";s:3:"od ";s:3:"245";s:3:"pa ";s:3:"246";s:3:"rgo";s:3:"247";s:3:"urg";s:3:"248";s:3:" m ";s:3:"249";s:3:"adr";s:3:"250";s:3:"ast";s:3:"251";s:3:"cag";s:3:"252";s:3:"gay";s:3:"253";s:3:"gsi";s:3:"254";s:3:"i p";s:3:"255";s:3:"ino";s:3:"256";s:3:"len";s:3:"257";s:3:"lin";s:3:"258";s:3:"m g";s:3:"259";s:3:"mar";s:3:"260";s:3:"nah";s:3:"261";s:3:"to'";s:3:"262";s:3:" de";s:3:"263";s:3:"a h";s:3:"264";s:3:"cat";s:3:"265";s:3:"cau";s:3:"266";s:3:"con";s:3:"267";s:3:"iqu";s:3:"268";s:3:"lac";s:3:"269";s:3:"mab";s:3:"270";s:3:"min";s:3:"271";s:3:"og ";s:3:"272";s:3:"par";s:3:"273";s:3:"sal";s:3:"274";s:3:" za";s:3:"275";s:3:"ao ";s:3:"276";s:3:"doo";s:3:"277";s:3:"ipi";s:3:"278";s:3:"nod";s:3:"279";s:3:"nte";s:3:"280";s:3:"uha";s:3:"281";s:3:"ula";s:3:"282";s:3:" re";s:3:"283";s:3:"ill";s:3:"284";s:3:"lit";s:3:"285";s:3:"mac";s:3:"286";s:3:"nit";s:3:"287";s:3:"o't";s:3:"288";s:3:"or ";s:3:"289";s:3:"ora";s:3:"290";s:3:"sum";s:3:"291";s:3:"y p";s:3:"292";s:3:" al";s:3:"293";s:3:" mi";s:3:"294";s:3:" um";s:3:"295";s:3:"aco";s:3:"296";s:3:"ada";s:3:"297";s:3:"agd";s:3:"298";s:3:"cab";s:3:"299";}s:7:"turkish";a:300:{s:3:"lar";s:1:"0";s:3:"en ";s:1:"1";s:3:"ler";s:1:"2";s:3:"an ";s:1:"3";s:3:"in ";s:1:"4";s:3:" bi";s:1:"5";s:3:" ya";s:1:"6";s:3:"eri";s:1:"7";s:3:"de ";s:1:"8";s:3:" ka";s:1:"9";s:3:"ir ";s:2:"10";s:4:"arı";s:2:"11";s:3:" ba";s:2:"12";s:3:" de";s:2:"13";s:3:" ha";s:2:"14";s:4:"ın ";s:2:"15";s:3:"ara";s:2:"16";s:3:"bir";s:2:"17";s:3:" ve";s:2:"18";s:3:" sa";s:2:"19";s:3:"ile";s:2:"20";s:3:"le ";s:2:"21";s:3:"nde";s:2:"22";s:3:"da ";s:2:"23";s:3:" bu";s:2:"24";s:3:"ana";s:2:"25";s:3:"ini";s:2:"26";s:5:"ını";s:2:"27";s:3:"er ";s:2:"28";s:3:"ve ";s:2:"29";s:4:" yı";s:2:"30";s:3:"lma";s:2:"31";s:4:"yıl";s:2:"32";s:3:" ol";s:2:"33";s:3:"ar ";s:2:"34";s:3:"n b";s:2:"35";s:3:"nda";s:2:"36";s:3:"aya";s:2:"37";s:3:"li ";s:2:"38";s:4:"ası";s:2:"39";s:3:" ge";s:2:"40";s:3:"ind";s:2:"41";s:3:"n k";s:2:"42";s:3:"esi";s:2:"43";s:3:"lan";s:2:"44";s:3:"nla";s:2:"45";s:3:"ak ";s:2:"46";s:4:"anı";s:2:"47";s:3:"eni";s:2:"48";s:3:"ni ";s:2:"49";s:4:"nı ";s:2:"50";s:4:"rın";s:2:"51";s:3:"san";s:2:"52";s:3:" ko";s:2:"53";s:3:" ye";s:2:"54";s:3:"maz";s:2:"55";s:4:"baÅŸ";s:2:"56";s:3:"ili";s:2:"57";s:3:"rin";s:2:"58";s:4:"alı";s:2:"59";s:3:"az ";s:2:"60";s:3:"hal";s:2:"61";s:4:"ınd";s:2:"62";s:3:" da";s:2:"63";s:4:" gü";s:2:"64";s:3:"ele";s:2:"65";s:4:"ılm";s:2:"66";s:6:"ığı";s:2:"67";s:3:"eki";s:2:"68";s:4:"gün";s:2:"69";s:3:"i b";s:2:"70";s:4:"içi";s:2:"71";s:3:"den";s:2:"72";s:3:"kar";s:2:"73";s:3:"si ";s:2:"74";s:3:" il";s:2:"75";s:3:"e y";s:2:"76";s:3:"na ";s:2:"77";s:3:"yor";s:2:"78";s:3:"ek ";s:2:"79";s:3:"n s";s:2:"80";s:4:" iç";s:2:"81";s:3:"bu ";s:2:"82";s:3:"e b";s:2:"83";s:3:"im ";s:2:"84";s:3:"ki ";s:2:"85";s:3:"len";s:2:"86";s:3:"ri ";s:2:"87";s:4:"sın";s:2:"88";s:3:" so";s:2:"89";s:4:"ün ";s:2:"90";s:3:" ta";s:2:"91";s:3:"nin";s:2:"92";s:4:"iÄŸi";s:2:"93";s:3:"tan";s:2:"94";s:3:"yan";s:2:"95";s:3:" si";s:2:"96";s:3:"nat";s:2:"97";s:4:"nın";s:2:"98";s:3:"kan";s:2:"99";s:4:"rı ";s:3:"100";s:4:"çin";s:3:"101";s:5:"ğı ";s:3:"102";s:3:"eli";s:3:"103";s:3:"n a";s:3:"104";s:4:"ır ";s:3:"105";s:3:" an";s:3:"106";s:3:"ine";s:3:"107";s:3:"n y";s:3:"108";s:3:"ola";s:3:"109";s:3:" ar";s:3:"110";s:3:"al ";s:3:"111";s:3:"e s";s:3:"112";s:3:"lik";s:3:"113";s:3:"n d";s:3:"114";s:3:"sin";s:3:"115";s:3:" al";s:3:"116";s:4:" dü";s:3:"117";s:3:"anl";s:3:"118";s:3:"ne ";s:3:"119";s:3:"ya ";s:3:"120";s:4:"ım ";s:3:"121";s:4:"ına";s:3:"122";s:3:" be";s:3:"123";s:3:"ada";s:3:"124";s:3:"ala";s:3:"125";s:3:"ama";s:3:"126";s:3:"ilm";s:3:"127";s:3:"or ";s:3:"128";s:4:"sı ";s:3:"129";s:3:"yen";s:3:"130";s:3:" me";s:3:"131";s:4:"atı";s:3:"132";s:3:"di ";s:3:"133";s:3:"eti";s:3:"134";s:3:"ken";s:3:"135";s:3:"la ";s:3:"136";s:4:"lı ";s:3:"137";s:3:"oru";s:3:"138";s:4:" gö";s:3:"139";s:3:" in";s:3:"140";s:3:"and";s:3:"141";s:3:"e d";s:3:"142";s:3:"men";s:3:"143";s:3:"un ";s:3:"144";s:4:"öne";s:3:"145";s:3:"a d";s:3:"146";s:3:"at ";s:3:"147";s:3:"e a";s:3:"148";s:3:"e g";s:3:"149";s:3:"yar";s:3:"150";s:3:" ku";s:3:"151";s:4:"ayı";s:3:"152";s:3:"dan";s:3:"153";s:3:"edi";s:3:"154";s:3:"iri";s:3:"155";s:5:"ünü";s:3:"156";s:4:"ÄŸi ";s:3:"157";s:5:"ılı";s:3:"158";s:3:"eme";s:3:"159";s:4:"eÄŸi";s:3:"160";s:3:"i k";s:3:"161";s:3:"i y";s:3:"162";s:4:"ıla";s:3:"163";s:4:" ça";s:3:"164";s:3:"a y";s:3:"165";s:3:"alk";s:3:"166";s:4:"dı ";s:3:"167";s:3:"ede";s:3:"168";s:3:"el ";s:3:"169";s:4:"ndı";s:3:"170";s:3:"ra ";s:3:"171";s:4:"üne";s:3:"172";s:4:" sü";s:3:"173";s:4:"dır";s:3:"174";s:3:"e k";s:3:"175";s:3:"ere";s:3:"176";s:3:"ik ";s:3:"177";s:3:"imi";s:3:"178";s:4:"iÅŸi";s:3:"179";s:3:"mas";s:3:"180";s:3:"n h";s:3:"181";s:4:"sür";s:3:"182";s:3:"yle";s:3:"183";s:3:" ad";s:3:"184";s:3:" fi";s:3:"185";s:3:" gi";s:3:"186";s:3:" se";s:3:"187";s:3:"a k";s:3:"188";s:3:"arl";s:3:"189";s:5:"aşı";s:3:"190";s:3:"iyo";s:3:"191";s:3:"kla";s:3:"192";s:5:"lığ";s:3:"193";s:3:"nem";s:3:"194";s:3:"ney";s:3:"195";s:3:"rme";s:3:"196";s:3:"ste";s:3:"197";s:4:"tı ";s:3:"198";s:3:"unl";s:3:"199";s:3:"ver";s:3:"200";s:4:" sı";s:3:"201";s:3:" te";s:3:"202";s:3:" to";s:3:"203";s:3:"a s";s:3:"204";s:4:"aÅŸk";s:3:"205";s:3:"ekl";s:3:"206";s:3:"end";s:3:"207";s:3:"kal";s:3:"208";s:4:"liÄŸ";s:3:"209";s:3:"min";s:3:"210";s:4:"tır";s:3:"211";s:3:"ulu";s:3:"212";s:3:"unu";s:3:"213";s:3:"yap";s:3:"214";s:3:"ye ";s:3:"215";s:4:"ı i";s:3:"216";s:4:"ÅŸka";s:3:"217";s:5:"ÅŸtı";s:3:"218";s:4:" bü";s:3:"219";s:3:" ke";s:3:"220";s:3:" ki";s:3:"221";s:3:"ard";s:3:"222";s:3:"art";s:3:"223";s:4:"aÅŸa";s:3:"224";s:3:"n i";s:3:"225";s:3:"ndi";s:3:"226";s:3:"ti ";s:3:"227";s:3:"top";s:3:"228";s:4:"ı b";s:3:"229";s:3:" va";s:3:"230";s:4:" ön";s:3:"231";s:3:"aki";s:3:"232";s:3:"cak";s:3:"233";s:3:"ey ";s:3:"234";s:3:"fil";s:3:"235";s:3:"isi";s:3:"236";s:3:"kle";s:3:"237";s:3:"kur";s:3:"238";s:3:"man";s:3:"239";s:3:"nce";s:3:"240";s:3:"nle";s:3:"241";s:3:"nun";s:3:"242";s:3:"rak";s:3:"243";s:4:"ık ";s:3:"244";s:3:" en";s:3:"245";s:3:" yo";s:3:"246";s:3:"a g";s:3:"247";s:3:"lis";s:3:"248";s:3:"mak";s:3:"249";s:3:"n g";s:3:"250";s:3:"tir";s:3:"251";s:3:"yas";s:3:"252";s:4:" iÅŸ";s:3:"253";s:4:" yö";s:3:"254";s:3:"ale";s:3:"255";s:3:"bil";s:3:"256";s:3:"bul";s:3:"257";s:3:"et ";s:3:"258";s:3:"i d";s:3:"259";s:3:"iye";s:3:"260";s:3:"kil";s:3:"261";s:3:"ma ";s:3:"262";s:3:"n e";s:3:"263";s:3:"n t";s:3:"264";s:3:"nu ";s:3:"265";s:3:"olu";s:3:"266";s:3:"rla";s:3:"267";s:3:"te ";s:3:"268";s:4:"yön";s:3:"269";s:5:"çık";s:3:"270";s:3:" ay";s:3:"271";s:4:" mü";s:3:"272";s:4:" ço";s:3:"273";s:5:" çı";s:3:"274";s:3:"a a";s:3:"275";s:3:"a b";s:3:"276";s:3:"ata";s:3:"277";s:3:"der";s:3:"278";s:3:"gel";s:3:"279";s:3:"i g";s:3:"280";s:3:"i i";s:3:"281";s:3:"ill";s:3:"282";s:3:"ist";s:3:"283";s:4:"ldı";s:3:"284";s:3:"lu ";s:3:"285";s:3:"mek";s:3:"286";s:3:"mle";s:3:"287";s:4:"n ç";s:3:"288";s:3:"onu";s:3:"289";s:3:"opl";s:3:"290";s:3:"ran";s:3:"291";s:3:"rat";s:3:"292";s:4:"rdı";s:3:"293";s:3:"rke";s:3:"294";s:3:"siy";s:3:"295";s:3:"son";s:3:"296";s:3:"ta ";s:3:"297";s:5:"tçı";s:3:"298";s:4:"tın";s:3:"299";}s:9:"ukrainian";a:300:{s:5:" на";s:1:"0";s:5:" за";s:1:"1";s:6:"ннÑ";s:1:"2";s:5:"Ð½Ñ ";s:1:"3";s:5:"на ";s:1:"4";s:5:" пр";s:1:"5";s:6:"ого";s:1:"6";s:5:"го ";s:1:"7";s:6:"Ñьк";s:1:"8";s:5:" по";s:1:"9";s:4:" у ";s:2:"10";s:6:"від";s:2:"11";s:6:"ере";s:2:"12";s:5:" мі";s:2:"13";s:5:" не";s:2:"14";s:5:"их ";s:2:"15";s:5:"Ñ‚ÑŒ ";s:2:"16";s:6:"пер";s:2:"17";s:5:" ві";s:2:"18";s:5:"ів ";s:2:"19";s:5:" пе";s:2:"20";s:5:" що";s:2:"21";s:6:"льн";s:2:"22";s:5:"ми ";s:2:"23";s:5:"ні ";s:2:"24";s:5:"не ";s:2:"25";s:5:"ти ";s:2:"26";s:6:"ати";s:2:"27";s:6:"енн";s:2:"28";s:6:"міÑ";s:2:"29";s:6:"пра";s:2:"30";s:6:"ува";s:2:"31";s:6:"ник";s:2:"32";s:6:"про";s:2:"33";s:6:"рав";s:2:"34";s:6:"івн";s:2:"35";s:5:" та";s:2:"36";s:6:"буд";s:2:"37";s:6:"влі";s:2:"38";s:6:"рів";s:2:"39";s:5:" ко";s:2:"40";s:5:" рі";s:2:"41";s:6:"аль";s:2:"42";s:5:"но ";s:2:"43";s:6:"ому";s:2:"44";s:5:"що ";s:2:"45";s:5:" ви";s:2:"46";s:5:"му ";s:2:"47";s:6:"рев";s:2:"48";s:5:"ÑÑ ";s:2:"49";s:6:"інн";s:2:"50";s:5:" до";s:2:"51";s:5:" уп";s:2:"52";s:6:"авл";s:2:"53";s:6:"анн";s:2:"54";s:6:"ком";s:2:"55";s:5:"ли ";s:2:"56";s:6:"лін";s:2:"57";s:6:"ног";s:2:"58";s:6:"упр";s:2:"59";s:5:" бу";s:2:"60";s:4:" з ";s:2:"61";s:5:" ро";s:2:"62";s:5:"за ";s:2:"63";s:5:"и н";s:2:"64";s:6:"нов";s:2:"65";s:6:"оро";s:2:"66";s:6:"оÑÑ‚";s:2:"67";s:6:"Ñта";s:2:"68";s:5:"Ñ‚Ñ– ";s:2:"69";s:6:"ÑŽÑ‚ÑŒ";s:2:"70";s:5:" мо";s:2:"71";s:5:" ні";s:2:"72";s:5:" Ñк";s:2:"73";s:6:"бор";s:2:"74";s:5:"ва ";s:2:"75";s:6:"ван";s:2:"76";s:6:"ень";s:2:"77";s:5:"и п";s:2:"78";s:5:"нь ";s:2:"79";s:6:"ові";s:2:"80";s:6:"рон";s:2:"81";s:6:"ÑÑ‚Ñ–";s:2:"82";s:5:"та ";s:2:"83";s:5:"у в";s:2:"84";s:6:"ько";s:2:"85";s:6:"Ñ–ÑÑ‚";s:2:"86";s:4:" в ";s:2:"87";s:5:" ре";s:2:"88";s:5:"до ";s:2:"89";s:5:"е п";s:2:"90";s:6:"заб";s:2:"91";s:5:"ий ";s:2:"92";s:6:"нÑÑŒ";s:2:"93";s:5:"о в";s:2:"94";s:5:"о п";s:2:"95";s:6:"при";s:2:"96";s:5:"Ñ– п";s:2:"97";s:5:" ку";s:2:"98";s:5:" пі";s:2:"99";s:5:" Ñп";s:3:"100";s:5:"а п";s:3:"101";s:6:"або";s:3:"102";s:6:"анÑ";s:3:"103";s:6:"аці";s:3:"104";s:6:"ват";s:3:"105";s:6:"вни";s:3:"106";s:5:"и в";s:3:"107";s:6:"ими";s:3:"108";s:5:"ка ";s:3:"109";s:6:"нен";s:3:"110";s:6:"ніч";s:3:"111";s:6:"она";s:3:"112";s:5:"ої ";s:3:"113";s:6:"пов";s:3:"114";s:6:"ьки";s:3:"115";s:6:"ьно";s:3:"116";s:6:"ізн";s:3:"117";s:6:"ічн";s:3:"118";s:5:" ав";s:3:"119";s:5:" ма";s:3:"120";s:5:" ор";s:3:"121";s:5:" Ñу";s:3:"122";s:5:" чи";s:3:"123";s:5:" ін";s:3:"124";s:5:"а з";s:3:"125";s:5:"ам ";s:3:"126";s:5:"ає ";s:3:"127";s:6:"вне";s:3:"128";s:6:"вто";s:3:"129";s:6:"дом";s:3:"130";s:6:"ент";s:3:"131";s:6:"жит";s:3:"132";s:6:"зни";s:3:"133";s:5:"им ";s:3:"134";s:6:"итл";s:3:"135";s:5:"ла ";s:3:"136";s:6:"них";s:3:"137";s:6:"ниц";s:3:"138";s:6:"ова";s:3:"139";s:6:"ови";s:3:"140";s:5:"ом ";s:3:"141";s:6:"пор";s:3:"142";s:6:"Ñ‚ÑŒÑ";s:3:"143";s:5:"у Ñ€";s:3:"144";s:6:"ÑŒÑÑ";s:3:"145";s:6:"ідо";s:3:"146";s:6:"іль";s:3:"147";s:6:"Ñ–ÑÑŒ";s:3:"148";s:5:" ва";s:3:"149";s:5:" ді";s:3:"150";s:5:" жи";s:3:"151";s:5:" че";s:3:"152";s:4:" Ñ– ";s:3:"153";s:5:"а в";s:3:"154";s:5:"а н";s:3:"155";s:6:"али";s:3:"156";s:6:"вез";s:3:"157";s:6:"вно";s:3:"158";s:6:"еве";s:3:"159";s:6:"езе";s:3:"160";s:6:"зен";s:3:"161";s:6:"ицт";s:3:"162";s:5:"ки ";s:3:"163";s:6:"ких";s:3:"164";s:6:"кон";s:3:"165";s:5:"ку ";s:3:"166";s:6:"лаÑ";s:3:"167";s:5:"Ð»Ñ ";s:3:"168";s:6:"мож";s:3:"169";s:6:"нач";s:3:"170";s:6:"ним";s:3:"171";s:6:"ної";s:3:"172";s:5:"о б";s:3:"173";s:6:"ову";s:3:"174";s:6:"оди";s:3:"175";s:5:"ою ";s:3:"176";s:5:"ро ";s:3:"177";s:6:"рок";s:3:"178";s:6:"Ñно";s:3:"179";s:6:"Ñпо";s:3:"180";s:6:"так";s:3:"181";s:6:"тва";s:3:"182";s:5:"ту ";s:3:"183";s:5:"у п";s:3:"184";s:6:"цтв";s:3:"185";s:6:"ьни";s:3:"186";s:5:"Ñ Ð·";s:3:"187";s:5:"Ñ– м";s:3:"188";s:5:"Ñ–Ñ— ";s:3:"189";s:5:" вÑ";s:3:"190";s:5:" гр";s:3:"191";s:5:" де";s:3:"192";s:5:" но";s:3:"193";s:5:" па";s:3:"194";s:5:" Ñе";s:3:"195";s:5:" ук";s:3:"196";s:5:" Ñ—Ñ…";s:3:"197";s:5:"а о";s:3:"198";s:6:"авт";s:3:"199";s:6:"аÑÑ‚";s:3:"200";s:6:"ают";s:3:"201";s:6:"вар";s:3:"202";s:6:"ден";s:3:"203";s:5:"ди ";s:3:"204";s:5:"ду ";s:3:"205";s:6:"зна";s:3:"206";s:5:"и з";s:3:"207";s:6:"ико";s:3:"208";s:6:"иÑÑ";s:3:"209";s:6:"ити";s:3:"210";s:6:"ког";s:3:"211";s:6:"мен";s:3:"212";s:6:"ном";s:3:"213";s:5:"ну ";s:3:"214";s:5:"о н";s:3:"215";s:5:"о Ñ";s:3:"216";s:6:"обу";s:3:"217";s:6:"ово";s:3:"218";s:6:"пла";s:3:"219";s:6:"ран";s:3:"220";s:6:"рив";s:3:"221";s:6:"роб";s:3:"222";s:6:"Ñка";s:3:"223";s:6:"тан";s:3:"224";s:6:"тим";s:3:"225";s:6:"тиÑ";s:3:"226";s:5:"то ";s:3:"227";s:6:"тра";s:3:"228";s:6:"удо";s:3:"229";s:6:"чин";s:3:"230";s:6:"чни";s:3:"231";s:5:"Ñ– в";s:3:"232";s:5:"Ñ–ÑŽ ";s:3:"233";s:4:" а ";s:3:"234";s:5:" во";s:3:"235";s:5:" да";s:3:"236";s:5:" кв";s:3:"237";s:5:" ме";s:3:"238";s:5:" об";s:3:"239";s:5:" Ñк";s:3:"240";s:5:" ти";s:3:"241";s:5:" Ñ„Ñ–";s:3:"242";s:4:" Ñ” ";s:3:"243";s:5:"а Ñ€";s:3:"244";s:5:"а Ñ";s:3:"245";s:5:"а у";s:3:"246";s:5:"ак ";s:3:"247";s:6:"ані";s:3:"248";s:6:"арт";s:3:"249";s:6:"аÑн";s:3:"250";s:5:"в у";s:3:"251";s:6:"вик";s:3:"252";s:6:"віз";s:3:"253";s:6:"дов";s:3:"254";s:6:"дпо";s:3:"255";s:6:"дів";s:3:"256";s:6:"еві";s:3:"257";s:6:"енÑ";s:3:"258";s:5:"же ";s:3:"259";s:5:"и м";s:3:"260";s:5:"и Ñ";s:3:"261";s:6:"ика";s:3:"262";s:6:"ичн";s:3:"263";s:5:"кі ";s:3:"264";s:6:"ків";s:3:"265";s:6:"між";s:3:"266";s:6:"нан";s:3:"267";s:6:"ноÑ";s:3:"268";s:5:"о у";s:3:"269";s:6:"обл";s:3:"270";s:6:"одн";s:3:"271";s:5:"ок ";s:3:"272";s:6:"оло";s:3:"273";s:6:"отр";s:3:"274";s:6:"рен";s:3:"275";s:6:"рим";s:3:"276";s:6:"роз";s:3:"277";s:5:"ÑÑŒ ";s:3:"278";s:5:"ÑÑ– ";s:3:"279";s:6:"тла";s:3:"280";s:6:"тів";s:3:"281";s:5:"у з";s:3:"282";s:6:"уго";s:3:"283";s:6:"уді";s:3:"284";s:5:"чи ";s:3:"285";s:5:"ше ";s:3:"286";s:5:"Ñ Ð½";s:3:"287";s:5:"Ñ Ñƒ";s:3:"288";s:6:"ідп";s:3:"289";s:5:"ій ";s:3:"290";s:6:"іна";s:3:"291";s:5:"Ñ–Ñ ";s:3:"292";s:5:" ка";s:3:"293";s:5:" ни";s:3:"294";s:5:" оÑ";s:3:"295";s:5:" Ñи";s:3:"296";s:5:" то";s:3:"297";s:5:" Ñ‚Ñ€";s:3:"298";s:5:" уг";s:3:"299";}s:4:"urdu";a:300:{s:5:"یں ";s:1:"0";s:5:" Ú©ÛŒ";s:1:"1";s:5:"Ú©Û’ ";s:1:"2";s:5:" Ú©Û’";s:1:"3";s:5:"Ù†Û’ ";s:1:"4";s:5:" Ú©Û";s:1:"5";s:5:"Û’ Ú©";s:1:"6";s:5:"Ú©ÛŒ ";s:1:"7";s:6:"میں";s:1:"8";s:5:" Ù…ÛŒ";s:1:"9";s:5:"ÛÛ’ ";s:2:"10";s:5:"ÙˆÚº ";s:2:"11";s:5:"Ú©Û ";s:2:"12";s:5:" ÛÛ’";s:2:"13";s:5:"ان ";s:2:"14";s:6:"Ûیں";s:2:"15";s:5:"ور ";s:2:"16";s:5:" Ú©Ùˆ";s:2:"17";s:5:"یا ";s:2:"18";s:5:" ان";s:2:"19";s:5:" Ù†Û’";s:2:"20";s:5:"سے ";s:2:"21";s:5:" سے";s:2:"22";s:5:" کر";s:2:"23";s:6:"ستا";s:2:"24";s:5:" او";s:2:"25";s:6:"اور";s:2:"26";s:6:"تان";s:2:"27";s:5:"ر Ú©";s:2:"28";s:5:"ÛŒ Ú©";s:2:"29";s:5:" اس";s:2:"30";s:5:"Û’ ا";s:2:"31";s:5:" پا";s:2:"32";s:5:" ÛÙˆ";s:2:"33";s:5:" پر";s:2:"34";s:5:"ر٠";s:2:"35";s:5:" کا";s:2:"36";s:5:"ا Ú©";s:2:"37";s:5:"ÛŒ ا";s:2:"38";s:5:" ÛÛŒ";s:2:"39";s:5:"در ";s:2:"40";s:5:"Ú©Ùˆ ";s:2:"41";s:5:" ای";s:2:"42";s:5:"Úº Ú©";s:2:"43";s:5:" مش";s:2:"44";s:5:" مل";s:2:"45";s:5:"ات ";s:2:"46";s:6:"صدر";s:2:"47";s:6:"اکس";s:2:"48";s:6:"شرÙ";s:2:"49";s:6:"مشر";s:2:"50";s:6:"پاک";s:2:"51";s:6:"کست";s:2:"52";s:5:"ÛŒ Ù…";s:2:"53";s:5:" دی";s:2:"54";s:5:" صد";s:2:"55";s:5:" ÛŒÛ";s:2:"56";s:5:"ا Û";s:2:"57";s:5:"Ù† Ú©";s:2:"58";s:6:"وال";s:2:"59";s:5:"ÛŒÛ ";s:2:"60";s:5:"Û’ Ùˆ";s:2:"61";s:5:" بھ";s:2:"62";s:5:" دو";s:2:"63";s:5:"اس ";s:2:"64";s:5:"ر ا";s:2:"65";s:6:"Ù†ÛÛŒ";s:2:"66";s:5:"کا ";s:2:"67";s:5:"Û’ س";s:2:"68";s:5:"ئی ";s:2:"69";s:5:"Û Ø§";s:2:"70";s:5:"یت ";s:2:"71";s:5:"Û’ Û";s:2:"72";s:5:"ت Ú©";s:2:"73";s:5:" سا";s:2:"74";s:5:"Ù„Û’ ";s:2:"75";s:5:"Ûا ";s:2:"76";s:5:"Û’ ب";s:2:"77";s:5:" وا";s:2:"78";s:5:"ار ";s:2:"79";s:5:"Ù†ÛŒ ";s:2:"80";s:6:"Ú©Ûا";s:2:"81";s:5:"ÛŒ Û";s:2:"82";s:5:"Û’ Ù…";s:2:"83";s:5:" سی";s:2:"84";s:5:" Ù„ÛŒ";s:2:"85";s:6:"انÛ";s:2:"86";s:6:"انی";s:2:"87";s:5:"ر Ù…";s:2:"88";s:5:"ر Ù¾";s:2:"89";s:6:"ریت";s:2:"90";s:5:"Ù† Ù…";s:2:"91";s:5:"ھا ";s:2:"92";s:5:"یر ";s:2:"93";s:5:" جا";s:2:"94";s:5:" جن";s:2:"95";s:5:"ئے ";s:2:"96";s:5:"پر ";s:2:"97";s:5:"Úº Ù†";s:2:"98";s:5:"Û Ú©";s:2:"99";s:5:"ÛŒ Ùˆ";s:3:"100";s:5:"Û’ د";s:3:"101";s:5:" تو";s:3:"102";s:5:" تھ";s:3:"103";s:5:" Ú¯ÛŒ";s:3:"104";s:6:"ایک";s:3:"105";s:5:"Ù„ Ú©";s:3:"106";s:5:"نا ";s:3:"107";s:5:"کر ";s:3:"108";s:5:"Úº Ù…";s:3:"109";s:5:"یک ";s:3:"110";s:5:" با";s:3:"111";s:5:"ا ت";s:3:"112";s:5:"دی ";s:3:"113";s:5:"Ù† س";s:3:"114";s:6:"کیا";s:3:"115";s:6:"یوں";s:3:"116";s:5:"Û’ ج";s:3:"117";s:5:"ال ";s:3:"118";s:5:"تو ";s:3:"119";s:5:"Úº ا";s:3:"120";s:5:"Û’ Ù¾";s:3:"121";s:5:" چا";s:3:"122";s:5:"ام ";s:3:"123";s:6:"بھی";s:3:"124";s:5:"تی ";s:3:"125";s:5:"تے ";s:3:"126";s:6:"دوس";s:3:"127";s:5:"س Ú©";s:3:"128";s:6:"ملک";s:3:"129";s:5:"Ù† ا";s:3:"130";s:6:"Ûور";s:3:"131";s:5:"یے ";s:3:"132";s:5:" مو";s:3:"133";s:5:" ÙˆÚ©";s:3:"134";s:6:"ائی";s:3:"135";s:6:"ارت";s:3:"136";s:6:"الے";s:3:"137";s:6:"بھا";s:3:"138";s:6:"ردی";s:3:"139";s:5:"ری ";s:3:"140";s:5:"ÙˆÛ ";s:3:"141";s:6:"ویز";s:3:"142";s:5:"Úº د";s:3:"143";s:5:"Ú¾ÛŒ ";s:3:"144";s:5:"ÛŒ س";s:3:"145";s:5:" رÛ";s:3:"146";s:5:" من";s:3:"147";s:5:" Ù†Û";s:3:"148";s:5:" ور";s:3:"149";s:5:" ÙˆÛ";s:3:"150";s:5:" ÛÙ†";s:3:"151";s:5:"ا ا";s:3:"152";s:6:"است";s:3:"153";s:5:"ت ا";s:3:"154";s:5:"ت Ù¾";s:3:"155";s:5:"د Ú©";s:3:"156";s:5:"ز Ù…";s:3:"157";s:5:"ند ";s:3:"158";s:6:"ورد";s:3:"159";s:6:"ÙˆÚ©Ù„";s:3:"160";s:5:"Ú¯ÛŒ ";s:3:"161";s:6:"گیا";s:3:"162";s:5:"Û Ù¾";s:3:"163";s:5:"یز ";s:3:"164";s:5:"Û’ ت";s:3:"165";s:5:" اع";s:3:"166";s:5:" اپ";s:3:"167";s:5:" جس";s:3:"168";s:5:" جم";s:3:"169";s:5:" جو";s:3:"170";s:5:" سر";s:3:"171";s:6:"اپن";s:3:"172";s:6:"اکث";s:3:"173";s:6:"تھا";s:3:"174";s:6:"ثری";s:3:"175";s:6:"دیا";s:3:"176";s:5:"ر د";s:3:"177";s:5:"رت ";s:3:"178";s:6:"روی";s:3:"179";s:5:"سی ";s:3:"180";s:6:"ملا";s:3:"181";s:6:"ندو";s:3:"182";s:6:"وست";s:3:"183";s:6:"پرو";s:3:"184";s:6:"چاÛ";s:3:"185";s:6:"کثر";s:3:"186";s:6:"کلا";s:3:"187";s:5:"Û Û";s:3:"188";s:6:"Ûند";s:3:"189";s:5:"ÛÙˆ ";s:3:"190";s:5:"Û’ Ù„";s:3:"191";s:5:" اک";s:3:"192";s:5:" دا";s:3:"193";s:5:" سن";s:3:"194";s:5:" وز";s:3:"195";s:5:" Ù¾ÛŒ";s:3:"196";s:5:"ا Ú†";s:3:"197";s:5:"اء ";s:3:"198";s:6:"اتھ";s:3:"199";s:6:"اقا";s:3:"200";s:5:"Ø§Û ";s:3:"201";s:5:"تھ ";s:3:"202";s:5:"دو ";s:3:"203";s:5:"ر ب";s:3:"204";s:6:"روا";s:3:"205";s:5:"رے ";s:3:"206";s:6:"سات";s:3:"207";s:5:"Ù Ú©";s:3:"208";s:6:"قات";s:3:"209";s:5:"لا ";s:3:"210";s:6:"لاء";s:3:"211";s:5:"Ù… Ù…";s:3:"212";s:5:"Ù… Ú©";s:3:"213";s:5:"من ";s:3:"214";s:6:"نوں";s:3:"215";s:5:"Ùˆ ا";s:3:"216";s:6:"کرن";s:3:"217";s:5:"Úº Û";s:3:"218";s:6:"ھار";s:3:"219";s:6:"Ûوئ";s:3:"220";s:5:"ÛÛŒ ";s:3:"221";s:5:"یش ";s:3:"222";s:5:" ام";s:3:"223";s:5:" لا";s:3:"224";s:5:" مس";s:3:"225";s:5:" پو";s:3:"226";s:5:" Ù¾Û";s:3:"227";s:6:"انے";s:3:"228";s:5:"ت Ù…";s:3:"229";s:5:"ت Û";s:3:"230";s:5:"ج Ú©";s:3:"231";s:6:"دون";s:3:"232";s:6:"زیر";s:3:"233";s:5:"س س";s:3:"234";s:5:"Ø´ Ú©";s:3:"235";s:5:"Ù Ù†";s:3:"236";s:5:"Ù„ Û";s:3:"237";s:6:"لاق";s:3:"238";s:5:"Ù„ÛŒ ";s:3:"239";s:6:"وری";s:3:"240";s:6:"وزی";s:3:"241";s:6:"ونو";s:3:"242";s:6:"Ú©Ú¾Ù†";s:3:"243";s:5:"گا ";s:3:"244";s:5:"Úº س";s:3:"245";s:5:"Úº Ú¯";s:3:"246";s:6:"Ú¾Ù†Û’";s:3:"247";s:5:"Ú¾Û’ ";s:3:"248";s:5:"Û Ø¨";s:3:"249";s:5:"Û Ø¬";s:3:"250";s:5:"Ûر ";s:3:"251";s:5:"ÛŒ Ø¢";s:3:"252";s:5:"ÛŒ Ù¾";s:3:"253";s:5:" حا";s:3:"254";s:5:" ÙˆÙ";s:3:"255";s:5:" گا";s:3:"256";s:5:"ا ج";s:3:"257";s:5:"ا Ú¯";s:3:"258";s:5:"اد ";s:3:"259";s:6:"ادی";s:3:"260";s:6:"اعظ";s:3:"261";s:6:"اÛت";s:3:"262";s:5:"جس ";s:3:"263";s:6:"جمÛ";s:3:"264";s:5:"جو ";s:3:"265";s:5:"ر س";s:3:"266";s:5:"ر Û";s:3:"267";s:6:"رنے";s:3:"268";s:5:"س Ù…";s:3:"269";s:5:"سا ";s:3:"270";s:6:"سند";s:3:"271";s:6:"سنگ";s:3:"272";s:5:"ظم ";s:3:"273";s:6:"عظم";s:3:"274";s:5:"Ù„ Ù…";s:3:"275";s:6:"لیے";s:3:"276";s:5:"مل ";s:3:"277";s:6:"موÛ";s:3:"278";s:6:"Ù…ÛÙˆ";s:3:"279";s:6:"Ù†Ú¯Ú¾";s:3:"280";s:5:"Ùˆ ص";s:3:"281";s:6:"ورٹ";s:3:"282";s:6:"ÙˆÛÙ†";s:3:"283";s:5:"Ú©Ù† ";s:3:"284";s:5:"Ú¯Ú¾ ";s:3:"285";s:5:"Ú¯Û’ ";s:3:"286";s:5:"Úº ج";s:3:"287";s:5:"Úº Ùˆ";s:3:"288";s:5:"Úº ÛŒ";s:3:"289";s:5:"Û Ø¯";s:3:"290";s:5:"ÛÙ† ";s:3:"291";s:6:"ÛÙˆÚº";s:3:"292";s:5:"Û’ Ø­";s:3:"293";s:5:"Û’ Ú¯";s:3:"294";s:5:"Û’ ÛŒ";s:3:"295";s:5:" اگ";s:3:"296";s:5:" بع";s:3:"297";s:5:" رو";s:3:"298";s:5:" شا";s:3:"299";}s:5:"uzbek";a:300:{s:5:"ан ";s:1:"0";s:6:"ган";s:1:"1";s:6:"лар";s:1:"2";s:5:"га ";s:1:"3";s:5:"нг ";s:1:"4";s:6:"инг";s:1:"5";s:6:"нин";s:1:"6";s:5:"да ";s:1:"7";s:5:"ни ";s:1:"8";s:6:"ида";s:1:"9";s:6:"ари";s:2:"10";s:6:"ига";s:2:"11";s:6:"ини";s:2:"12";s:5:"ар ";s:2:"13";s:5:"ди ";s:2:"14";s:5:" би";s:2:"15";s:6:"ани";s:2:"16";s:5:" бо";s:2:"17";s:6:"дан";s:2:"18";s:6:"лга";s:2:"19";s:5:" ҳа";s:2:"20";s:5:" ва";s:2:"21";s:5:" Ñа";s:2:"22";s:5:"ги ";s:2:"23";s:6:"ила";s:2:"24";s:5:"н б";s:2:"25";s:5:"и б";s:2:"26";s:5:" кў";s:2:"27";s:5:" та";s:2:"28";s:5:"ир ";s:2:"29";s:5:" ма";s:2:"30";s:6:"ага";s:2:"31";s:6:"ала";s:2:"32";s:6:"бир";s:2:"33";s:5:"ри ";s:2:"34";s:6:"тга";s:2:"35";s:6:"лан";s:2:"36";s:6:"лик";s:2:"37";s:5:"а к";s:2:"38";s:6:"аги";s:2:"39";s:6:"ати";s:2:"40";s:5:"та ";s:2:"41";s:6:"ади";s:2:"42";s:6:"даг";s:2:"43";s:6:"рга";s:2:"44";s:5:" йи";s:2:"45";s:5:" ми";s:2:"46";s:5:" па";s:2:"47";s:5:" бў";s:2:"48";s:5:" қа";s:2:"49";s:5:" қи";s:2:"50";s:5:"а б";s:2:"51";s:6:"илл";s:2:"52";s:5:"ли ";s:2:"53";s:6:"аÑи";s:2:"54";s:5:"и Ñ‚";s:2:"55";s:5:"ик ";s:2:"56";s:6:"или";s:2:"57";s:6:"лла";s:2:"58";s:6:"ард";s:2:"59";s:6:"вчи";s:2:"60";s:5:"ва ";s:2:"61";s:5:"иб ";s:2:"62";s:6:"ири";s:2:"63";s:6:"лиг";s:2:"64";s:6:"нга";s:2:"65";s:6:"ран";s:2:"66";s:5:" ке";s:2:"67";s:5:" ўз";s:2:"68";s:5:"а Ñ";s:2:"69";s:6:"ахт";s:2:"70";s:6:"бўл";s:2:"71";s:6:"иги";s:2:"72";s:6:"кўр";s:2:"73";s:6:"рда";s:2:"74";s:6:"рни";s:2:"75";s:5:"Ñа ";s:2:"76";s:5:" бе";s:2:"77";s:5:" бу";s:2:"78";s:5:" да";s:2:"79";s:5:" жа";s:2:"80";s:5:"а Ñ‚";s:2:"81";s:6:"ази";s:2:"82";s:6:"ери";s:2:"83";s:5:"и а";s:2:"84";s:6:"илг";s:2:"85";s:6:"йил";s:2:"86";s:6:"ман";s:2:"87";s:6:"пах";s:2:"88";s:6:"рид";s:2:"89";s:5:"ти ";s:2:"90";s:6:"увч";s:2:"91";s:6:"хта";s:2:"92";s:5:" не";s:2:"93";s:5:" Ñо";s:2:"94";s:5:" уч";s:2:"95";s:6:"айт";s:2:"96";s:6:"лли";s:2:"97";s:6:"тла";s:2:"98";s:5:" ай";s:2:"99";s:5:" Ñ„Ñ€";s:3:"100";s:5:" ÑÑ‚";s:3:"101";s:5:" ҳо";s:3:"102";s:5:"а Ò›";s:3:"103";s:6:"али";s:3:"104";s:6:"аро";s:3:"105";s:6:"бер";s:3:"106";s:6:"бил";s:3:"107";s:6:"бор";s:3:"108";s:6:"ими";s:3:"109";s:6:"иÑÑ‚";s:3:"110";s:5:"он ";s:3:"111";s:6:"рин";s:3:"112";s:6:"тер";s:3:"113";s:6:"тил";s:3:"114";s:5:"ун ";s:3:"115";s:6:"фра";s:3:"116";s:6:"қил";s:3:"117";s:5:" ба";s:3:"118";s:5:" ол";s:3:"119";s:6:"анÑ";s:3:"120";s:6:"ефт";s:3:"121";s:6:"зир";s:3:"122";s:6:"кат";s:3:"123";s:6:"мил";s:3:"124";s:6:"неф";s:3:"125";s:6:"Ñаг";s:3:"126";s:5:"чи ";s:3:"127";s:6:"ўра";s:3:"128";s:5:" на";s:3:"129";s:5:" те";s:3:"130";s:5:" Ñн";s:3:"131";s:5:"а Ñ";s:3:"132";s:5:"ам ";s:3:"133";s:6:"арн";s:3:"134";s:5:"ат ";s:3:"135";s:5:"иш ";s:3:"136";s:5:"ма ";s:3:"137";s:6:"нла";s:3:"138";s:6:"рли";s:3:"139";s:6:"чил";s:3:"140";s:6:"шга";s:3:"141";s:5:" иш";s:3:"142";s:5:" му";s:3:"143";s:5:" ÑžÒ›";s:3:"144";s:6:"ара";s:3:"145";s:6:"ваз";s:3:"146";s:5:"и у";s:3:"147";s:5:"иқ ";s:3:"148";s:6:"моқ";s:3:"149";s:6:"рим";s:3:"150";s:6:"учу";s:3:"151";s:6:"чун";s:3:"152";s:5:"ши ";s:3:"153";s:6:"Ñнг";s:3:"154";s:6:"қув";s:3:"155";s:6:"ҳам";s:3:"156";s:5:" ÑÑž";s:3:"157";s:5:" ши";s:3:"158";s:6:"бар";s:3:"159";s:6:"бек";s:3:"160";s:6:"дам";s:3:"161";s:5:"и Ò³";s:3:"162";s:6:"иши";s:3:"163";s:6:"лад";s:3:"164";s:6:"оли";s:3:"165";s:6:"олл";s:3:"166";s:6:"ори";s:3:"167";s:6:"оқд";s:3:"168";s:5:"Ñ€ б";s:3:"169";s:5:"ра ";s:3:"170";s:6:"рла";s:3:"171";s:6:"уни";s:3:"172";s:5:"Ñ„Ñ‚ ";s:3:"173";s:6:"ўлг";s:3:"174";s:6:"ўқу";s:3:"175";s:5:" де";s:3:"176";s:5:" ка";s:3:"177";s:5:" қў";s:3:"178";s:5:"а Ñž";s:3:"179";s:6:"аба";s:3:"180";s:6:"амм";s:3:"181";s:6:"атл";s:3:"182";s:5:"б к";s:3:"183";s:6:"бош";s:3:"184";s:6:"збе";s:3:"185";s:5:"и в";s:3:"186";s:5:"им ";s:3:"187";s:5:"ин ";s:3:"188";s:6:"ишл";s:3:"189";s:6:"лаб";s:3:"190";s:6:"лей";s:3:"191";s:6:"мин";s:3:"192";s:5:"н д";s:3:"193";s:6:"нда";s:3:"194";s:5:"оқ ";s:3:"195";s:5:"Ñ€ м";s:3:"196";s:6:"рил";s:3:"197";s:6:"Ñид";s:3:"198";s:6:"тал";s:3:"199";s:6:"тан";s:3:"200";s:6:"тид";s:3:"201";s:6:"тон";s:3:"202";s:6:"ўзб";s:3:"203";s:5:" ам";s:3:"204";s:5:" ки";s:3:"205";s:5:"а Ò³";s:3:"206";s:6:"анг";s:3:"207";s:6:"анд";s:3:"208";s:6:"арт";s:3:"209";s:6:"аёт";s:3:"210";s:6:"дир";s:3:"211";s:6:"ент";s:3:"212";s:5:"и д";s:3:"213";s:5:"и м";s:3:"214";s:5:"и о";s:3:"215";s:5:"и Ñ";s:3:"216";s:6:"иро";s:3:"217";s:6:"йти";s:3:"218";s:6:"нÑу";s:3:"219";s:6:"оди";s:3:"220";s:5:"ор ";s:3:"221";s:5:"Ñи ";s:3:"222";s:6:"тиш";s:3:"223";s:6:"тоб";s:3:"224";s:6:"Ñти";s:3:"225";s:6:"қар";s:3:"226";s:6:"қда";s:3:"227";s:5:" бл";s:3:"228";s:5:" ге";s:3:"229";s:5:" до";s:3:"230";s:5:" ду";s:3:"231";s:5:" но";s:3:"232";s:5:" пр";s:3:"233";s:5:" ра";s:3:"234";s:5:" фо";s:3:"235";s:5:" қо";s:3:"236";s:5:"а м";s:3:"237";s:5:"а о";s:3:"238";s:6:"айд";s:3:"239";s:6:"ало";s:3:"240";s:6:"ама";s:3:"241";s:6:"бле";s:3:"242";s:5:"г н";s:3:"243";s:6:"дол";s:3:"244";s:6:"ейр";s:3:"245";s:5:"ек ";s:3:"246";s:6:"ерг";s:3:"247";s:6:"жар";s:3:"248";s:6:"зид";s:3:"249";s:5:"и к";s:3:"250";s:5:"и Ñ„";s:3:"251";s:5:"ий ";s:3:"252";s:6:"ило";s:3:"253";s:6:"лди";s:3:"254";s:6:"либ";s:3:"255";s:6:"лин";s:3:"256";s:5:"ми ";s:3:"257";s:6:"мма";s:3:"258";s:5:"н в";s:3:"259";s:5:"н к";s:3:"260";s:5:"н Ñž";s:3:"261";s:5:"н Ò³";s:3:"262";s:6:"ози";s:3:"263";s:6:"ора";s:3:"264";s:6:"оÑи";s:3:"265";s:6:"раÑ";s:3:"266";s:6:"риш";s:3:"267";s:6:"рка";s:3:"268";s:6:"роқ";s:3:"269";s:6:"Ñто";s:3:"270";s:6:"тин";s:3:"271";s:6:"хат";s:3:"272";s:6:"шир";s:3:"273";s:5:" ав";s:3:"274";s:5:" рў";s:3:"275";s:5:" ту";s:3:"276";s:5:" ўт";s:3:"277";s:5:"а п";s:3:"278";s:6:"авт";s:3:"279";s:6:"ада";s:3:"280";s:6:"аза";s:3:"281";s:6:"анл";s:3:"282";s:5:"б б";s:3:"283";s:6:"бой";s:3:"284";s:5:"бу ";s:3:"285";s:6:"вто";s:3:"286";s:5:"г Ñ";s:3:"287";s:6:"гин";s:3:"288";s:6:"дар";s:3:"289";s:6:"ден";s:3:"290";s:6:"дун";s:3:"291";s:6:"иде";s:3:"292";s:6:"ион";s:3:"293";s:6:"ирл";s:3:"294";s:6:"ишг";s:3:"295";s:6:"йха";s:3:"296";s:6:"кел";s:3:"297";s:6:"кўп";s:3:"298";s:6:"лио";s:3:"299";}s:10:"vietnamese";a:300:{s:3:"ng ";s:1:"0";s:3:" th";s:1:"1";s:3:" ch";s:1:"2";s:3:"g t";s:1:"3";s:3:" nh";s:1:"4";s:4:"ông";s:1:"5";s:3:" kh";s:1:"6";s:3:" tr";s:1:"7";s:3:"nh ";s:1:"8";s:4:" cô";s:1:"9";s:4:"côn";s:2:"10";s:3:" ty";s:2:"11";s:3:"ty ";s:2:"12";s:3:"i t";s:2:"13";s:3:"n t";s:2:"14";s:3:" ng";s:2:"15";s:5:"ại ";s:2:"16";s:3:" ti";s:2:"17";s:3:"ch ";s:2:"18";s:3:"y l";s:2:"19";s:5:"á»n ";s:2:"20";s:5:" Ä‘Æ°";s:2:"21";s:3:"hi ";s:2:"22";s:5:" gở";s:2:"23";s:5:"gởi";s:2:"24";s:5:"iá»n";s:2:"25";s:5:"tiá»";s:2:"26";s:5:"ởi ";s:2:"27";s:3:" gi";s:2:"28";s:3:" le";s:2:"29";s:3:" vi";s:2:"30";s:3:"cho";s:2:"31";s:3:"ho ";s:2:"32";s:4:"khá";s:2:"33";s:4:" và";s:2:"34";s:4:"hác";s:2:"35";s:3:" ph";s:2:"36";s:3:"am ";s:2:"37";s:4:"hàn";s:2:"38";s:4:"ách";s:2:"39";s:4:"ôi ";s:2:"40";s:3:"i n";s:2:"41";s:6:"ược";s:2:"42";s:5:"ợc ";s:2:"43";s:4:" tô";s:2:"44";s:4:"chú";s:2:"45";s:5:"iệt";s:2:"46";s:4:"tôi";s:2:"47";s:4:"ên ";s:2:"48";s:4:"úng";s:2:"49";s:5:"ệt ";s:2:"50";s:4:" có";s:2:"51";s:3:"c t";s:2:"52";s:4:"có ";s:2:"53";s:4:"hún";s:2:"54";s:5:"việ";s:2:"55";s:7:"đượ";s:2:"56";s:3:" na";s:2:"57";s:3:"g c";s:2:"58";s:3:"i c";s:2:"59";s:3:"n c";s:2:"60";s:3:"n n";s:2:"61";s:3:"t n";s:2:"62";s:4:"và ";s:2:"63";s:3:"n l";s:2:"64";s:4:"n Ä‘";s:2:"65";s:4:"àng";s:2:"66";s:4:"ác ";s:2:"67";s:5:"ất ";s:2:"68";s:3:"h l";s:2:"69";s:3:"nam";s:2:"70";s:4:"ân ";s:2:"71";s:4:"ăm ";s:2:"72";s:4:" hà";s:2:"73";s:4:" là";s:2:"74";s:4:" nă";s:2:"75";s:3:" qu";s:2:"76";s:5:" tạ";s:2:"77";s:3:"g m";s:2:"78";s:4:"năm";s:2:"79";s:5:"tại";s:2:"80";s:5:"á»›i ";s:2:"81";s:5:" lẹ";s:2:"82";s:3:"ay ";s:2:"83";s:3:"e g";s:2:"84";s:3:"h h";s:2:"85";s:3:"i v";s:2:"86";s:4:"i Ä‘";s:2:"87";s:3:"le ";s:2:"88";s:5:"lẹ ";s:2:"89";s:5:"á»u ";s:2:"90";s:5:"á»i ";s:2:"91";s:4:"hân";s:2:"92";s:3:"nhi";s:2:"93";s:3:"t t";s:2:"94";s:5:" củ";s:2:"95";s:5:" má»™";s:2:"96";s:5:" vá»";s:2:"97";s:4:" Ä‘i";s:2:"98";s:3:"an ";s:2:"99";s:5:"của";s:3:"100";s:4:"là ";s:3:"101";s:5:"má»™t";s:3:"102";s:5:"vá» ";s:3:"103";s:4:"ành";s:3:"104";s:5:"ết ";s:3:"105";s:5:"á»™t ";s:3:"106";s:5:"ủa ";s:3:"107";s:3:" bi";s:3:"108";s:4:" cá";s:3:"109";s:3:"a c";s:3:"110";s:3:"anh";s:3:"111";s:4:"các";s:3:"112";s:3:"h c";s:3:"113";s:5:"iá»u";s:3:"114";s:3:"m t";s:3:"115";s:5:"ện ";s:3:"116";s:3:" ho";s:3:"117";s:3:"'s ";s:3:"118";s:3:"ave";s:3:"119";s:3:"e's";s:3:"120";s:3:"el ";s:3:"121";s:3:"g n";s:3:"122";s:3:"le'";s:3:"123";s:3:"n v";s:3:"124";s:3:"o c";s:3:"125";s:3:"rav";s:3:"126";s:3:"s t";s:3:"127";s:3:"thi";s:3:"128";s:3:"tra";s:3:"129";s:3:"vel";s:3:"130";s:5:"ận ";s:3:"131";s:5:"ến ";s:3:"132";s:3:" ba";s:3:"133";s:3:" cu";s:3:"134";s:3:" sa";s:3:"135";s:5:" đó";s:3:"136";s:6:" đế";s:3:"137";s:3:"c c";s:3:"138";s:3:"chu";s:3:"139";s:5:"hiá»";s:3:"140";s:3:"huy";s:3:"141";s:3:"khi";s:3:"142";s:4:"nhâ";s:3:"143";s:4:"nhÆ°";s:3:"144";s:3:"ong";s:3:"145";s:3:"ron";s:3:"146";s:3:"thu";s:3:"147";s:4:"thÆ°";s:3:"148";s:3:"tro";s:3:"149";s:3:"y c";s:3:"150";s:4:"ày ";s:3:"151";s:6:"đến";s:3:"152";s:6:"Æ°á»i";s:3:"153";s:6:"Æ°á»n";s:3:"154";s:5:"á» v";s:3:"155";s:5:"á»ng";s:3:"156";s:5:" vá»›";s:3:"157";s:5:"cuá»™";s:3:"158";s:4:"g Ä‘";s:3:"159";s:5:"iết";s:3:"160";s:5:"iện";s:3:"161";s:4:"ngà";s:3:"162";s:3:"o t";s:3:"163";s:3:"u c";s:3:"164";s:5:"uá»™c";s:3:"165";s:5:"vá»›i";s:3:"166";s:4:"à c";s:3:"167";s:4:"ài ";s:3:"168";s:4:"Æ¡ng";s:3:"169";s:5:"Æ°Æ¡n";s:3:"170";s:5:"ải ";s:3:"171";s:5:"á»™c ";s:3:"172";s:5:"ức ";s:3:"173";s:3:" an";s:3:"174";s:5:" lậ";s:3:"175";s:3:" ra";s:3:"176";s:5:" sẽ";s:3:"177";s:5:" số";s:3:"178";s:5:" tổ";s:3:"179";s:3:"a k";s:3:"180";s:5:"biế";s:3:"181";s:3:"c n";s:3:"182";s:4:"c Ä‘";s:3:"183";s:5:"chứ";s:3:"184";s:3:"g v";s:3:"185";s:3:"gia";s:3:"186";s:4:"gày";s:3:"187";s:4:"hán";s:3:"188";s:4:"hôn";s:3:"189";s:4:"hÆ° ";s:3:"190";s:5:"hức";s:3:"191";s:3:"i g";s:3:"192";s:3:"i h";s:3:"193";s:3:"i k";s:3:"194";s:3:"i p";s:3:"195";s:4:"iên";s:3:"196";s:4:"khô";s:3:"197";s:5:"lập";s:3:"198";s:3:"n k";s:3:"199";s:3:"ra ";s:3:"200";s:4:"rên";s:3:"201";s:5:"sẽ ";s:3:"202";s:3:"t c";s:3:"203";s:4:"thà";s:3:"204";s:4:"trê";s:3:"205";s:5:"tổ ";s:3:"206";s:3:"u n";s:3:"207";s:3:"y t";s:3:"208";s:4:"ình";s:3:"209";s:5:"ấy ";s:3:"210";s:5:"ập ";s:3:"211";s:5:"ổ c";s:3:"212";s:4:" má";s:3:"213";s:6:" để";s:3:"214";s:3:"ai ";s:3:"215";s:3:"c s";s:3:"216";s:6:"gÆ°á»";s:3:"217";s:3:"h v";s:3:"218";s:3:"hoa";s:3:"219";s:5:"hoạ";s:3:"220";s:3:"inh";s:3:"221";s:3:"m n";s:3:"222";s:4:"máy";s:3:"223";s:3:"n g";s:3:"224";s:4:"ngÆ°";s:3:"225";s:5:"nhậ";s:3:"226";s:3:"o n";s:3:"227";s:3:"oa ";s:3:"228";s:4:"oàn";s:3:"229";s:3:"p c";s:3:"230";s:5:"số ";s:3:"231";s:4:"t Ä‘";s:3:"232";s:3:"y v";s:3:"233";s:4:"ào ";s:3:"234";s:4:"áy ";s:3:"235";s:4:"ăn ";s:3:"236";s:5:"đó ";s:3:"237";s:6:"để ";s:3:"238";s:6:"Æ°á»›c";s:3:"239";s:5:"ần ";s:3:"240";s:5:"ển ";s:3:"241";s:5:"á»›c ";s:3:"242";s:4:" bá";s:3:"243";s:4:" cÆ¡";s:3:"244";s:5:" cả";s:3:"245";s:5:" cầ";s:3:"246";s:5:" há»";s:3:"247";s:5:" kỳ";s:3:"248";s:3:" li";s:3:"249";s:5:" mạ";s:3:"250";s:5:" sở";s:3:"251";s:5:" tặ";s:3:"252";s:4:" vé";s:3:"253";s:5:" vụ";s:3:"254";s:6:" đạ";s:3:"255";s:4:"a Ä‘";s:3:"256";s:3:"bay";s:3:"257";s:4:"cÆ¡ ";s:3:"258";s:3:"g s";s:3:"259";s:3:"han";s:3:"260";s:5:"hÆ°Æ¡";s:3:"261";s:3:"i s";s:3:"262";s:5:"kỳ ";s:3:"263";s:3:"m c";s:3:"264";s:3:"n m";s:3:"265";s:3:"n p";s:3:"266";s:3:"o b";s:3:"267";s:5:"oại";s:3:"268";s:3:"qua";s:3:"269";s:5:"sở ";s:3:"270";s:3:"tha";s:3:"271";s:4:"thá";s:3:"272";s:5:"tặn";s:3:"273";s:4:"vào";s:3:"274";s:4:"vé ";s:3:"275";s:5:"vụ ";s:3:"276";s:3:"y b";s:3:"277";s:4:"àn ";s:3:"278";s:4:"áng";s:3:"279";s:4:"Æ¡ s";s:3:"280";s:5:"ầu ";s:3:"281";s:5:"ật ";s:3:"282";s:5:"ặng";s:3:"283";s:5:"á»c ";s:3:"284";s:5:"ở t";s:3:"285";s:5:"ững";s:3:"286";s:3:" du";s:3:"287";s:3:" lu";s:3:"288";s:3:" ta";s:3:"289";s:3:" to";s:3:"290";s:5:" từ";s:3:"291";s:5:" ở ";s:3:"292";s:3:"a v";s:3:"293";s:3:"ao ";s:3:"294";s:3:"c v";s:3:"295";s:5:"cả ";s:3:"296";s:3:"du ";s:3:"297";s:3:"g l";s:3:"298";s:5:"giả";s:3:"299";}s:5:"welsh";a:300:{s:3:"yn ";s:1:"0";s:3:"dd ";s:1:"1";s:3:" yn";s:1:"2";s:3:" y ";s:1:"3";s:3:"ydd";s:1:"4";s:3:"eth";s:1:"5";s:3:"th ";s:1:"6";s:3:" i ";s:1:"7";s:3:"aet";s:1:"8";s:3:"d y";s:1:"9";s:3:"ch ";s:2:"10";s:3:"od ";s:2:"11";s:3:"ol ";s:2:"12";s:3:"edd";s:2:"13";s:3:" ga";s:2:"14";s:3:" gw";s:2:"15";s:3:"'r ";s:2:"16";s:3:"au ";s:2:"17";s:3:"ddi";s:2:"18";s:3:"ad ";s:2:"19";s:3:" cy";s:2:"20";s:3:" gy";s:2:"21";s:3:" ei";s:2:"22";s:3:" o ";s:2:"23";s:3:"iad";s:2:"24";s:3:"yr ";s:2:"25";s:3:"an ";s:2:"26";s:3:"bod";s:2:"27";s:3:"wed";s:2:"28";s:3:" bo";s:2:"29";s:3:" dd";s:2:"30";s:3:"el ";s:2:"31";s:3:"n y";s:2:"32";s:3:" am";s:2:"33";s:3:"di ";s:2:"34";s:3:"edi";s:2:"35";s:3:"on ";s:2:"36";s:3:" we";s:2:"37";s:3:" ym";s:2:"38";s:3:" ar";s:2:"39";s:3:" rh";s:2:"40";s:3:"odd";s:2:"41";s:3:" ca";s:2:"42";s:3:" ma";s:2:"43";s:3:"ael";s:2:"44";s:3:"oed";s:2:"45";s:3:"dae";s:2:"46";s:3:"n a";s:2:"47";s:3:"dda";s:2:"48";s:3:"er ";s:2:"49";s:3:"h y";s:2:"50";s:3:"all";s:2:"51";s:3:"ei ";s:2:"52";s:3:" ll";s:2:"53";s:3:"am ";s:2:"54";s:3:"eu ";s:2:"55";s:3:"fod";s:2:"56";s:3:"fyd";s:2:"57";s:3:"l y";s:2:"58";s:3:"n g";s:2:"59";s:3:"wyn";s:2:"60";s:3:"d a";s:2:"61";s:3:"i g";s:2:"62";s:3:"mae";s:2:"63";s:3:"neu";s:2:"64";s:3:"os ";s:2:"65";s:3:" ne";s:2:"66";s:3:"d i";s:2:"67";s:3:"dod";s:2:"68";s:3:"dol";s:2:"69";s:3:"n c";s:2:"70";s:3:"r h";s:2:"71";s:3:"wyd";s:2:"72";s:3:"wyr";s:2:"73";s:3:"ai ";s:2:"74";s:3:"ar ";s:2:"75";s:3:"in ";s:2:"76";s:3:"rth";s:2:"77";s:3:" fy";s:2:"78";s:3:" he";s:2:"79";s:3:" me";s:2:"80";s:3:" yr";s:2:"81";s:3:"'n ";s:2:"82";s:3:"dia";s:2:"83";s:3:"est";s:2:"84";s:3:"h c";s:2:"85";s:3:"hai";s:2:"86";s:3:"i d";s:2:"87";s:3:"id ";s:2:"88";s:3:"r y";s:2:"89";s:3:"y b";s:2:"90";s:3:" dy";s:2:"91";s:3:" ha";s:2:"92";s:3:"ada";s:2:"93";s:3:"i b";s:2:"94";s:3:"n i";s:2:"95";s:3:"ote";s:2:"96";s:3:"rot";s:2:"97";s:3:"tes";s:2:"98";s:3:"y g";s:2:"99";s:3:"yd ";s:3:"100";s:3:" ad";s:3:"101";s:3:" mr";s:3:"102";s:3:" un";s:3:"103";s:3:"cyn";s:3:"104";s:3:"dau";s:3:"105";s:3:"ddy";s:3:"106";s:3:"edo";s:3:"107";s:3:"i c";s:3:"108";s:3:"i w";s:3:"109";s:3:"ith";s:3:"110";s:3:"lae";s:3:"111";s:3:"lla";s:3:"112";s:3:"nd ";s:3:"113";s:3:"oda";s:3:"114";s:3:"ryd";s:3:"115";s:3:"tho";s:3:"116";s:3:" a ";s:3:"117";s:3:" dr";s:3:"118";s:3:"aid";s:3:"119";s:3:"ain";s:3:"120";s:3:"ddo";s:3:"121";s:3:"dyd";s:3:"122";s:3:"fyn";s:3:"123";s:3:"gyn";s:3:"124";s:3:"hol";s:3:"125";s:3:"io ";s:3:"126";s:3:"o a";s:3:"127";s:3:"wch";s:3:"128";s:3:"wyb";s:3:"129";s:3:"ybo";s:3:"130";s:3:"ych";s:3:"131";s:3:" br";s:3:"132";s:3:" by";s:3:"133";s:3:" di";s:3:"134";s:3:" fe";s:3:"135";s:3:" na";s:3:"136";s:3:" o'";s:3:"137";s:3:" pe";s:3:"138";s:3:"art";s:3:"139";s:3:"byd";s:3:"140";s:3:"dro";s:3:"141";s:3:"gal";s:3:"142";s:3:"l e";s:3:"143";s:3:"lai";s:3:"144";s:3:"mr ";s:3:"145";s:3:"n n";s:3:"146";s:3:"r a";s:3:"147";s:3:"rhy";s:3:"148";s:3:"wn ";s:3:"149";s:3:"ynn";s:3:"150";s:3:" on";s:3:"151";s:3:" r ";s:3:"152";s:3:"cae";s:3:"153";s:3:"d g";s:3:"154";s:3:"d o";s:3:"155";s:3:"d w";s:3:"156";s:3:"gan";s:3:"157";s:3:"gwy";s:3:"158";s:3:"n d";s:3:"159";s:3:"n f";s:3:"160";s:3:"n o";s:3:"161";s:3:"ned";s:3:"162";s:3:"ni ";s:3:"163";s:3:"o'r";s:3:"164";s:3:"r d";s:3:"165";s:3:"ud ";s:3:"166";s:3:"wei";s:3:"167";s:3:"wrt";s:3:"168";s:3:" an";s:3:"169";s:3:" cw";s:3:"170";s:3:" da";s:3:"171";s:3:" ni";s:3:"172";s:3:" pa";s:3:"173";s:3:" pr";s:3:"174";s:3:" wy";s:3:"175";s:3:"d e";s:3:"176";s:3:"dai";s:3:"177";s:3:"dim";s:3:"178";s:3:"eud";s:3:"179";s:3:"gwa";s:3:"180";s:3:"idd";s:3:"181";s:3:"im ";s:3:"182";s:3:"iri";s:3:"183";s:3:"lwy";s:3:"184";s:3:"n b";s:3:"185";s:3:"nol";s:3:"186";s:3:"r o";s:3:"187";s:3:"rwy";s:3:"188";s:3:" ch";s:3:"189";s:3:" er";s:3:"190";s:3:" fo";s:3:"191";s:3:" ge";s:3:"192";s:3:" hy";s:3:"193";s:3:" i'";s:3:"194";s:3:" ro";s:3:"195";s:3:" sa";s:3:"196";s:3:" tr";s:3:"197";s:3:"bob";s:3:"198";s:3:"cwy";s:3:"199";s:3:"cyf";s:3:"200";s:3:"dio";s:3:"201";s:3:"dyn";s:3:"202";s:3:"eit";s:3:"203";s:3:"hel";s:3:"204";s:3:"hyn";s:3:"205";s:3:"ich";s:3:"206";s:3:"ll ";s:3:"207";s:3:"mdd";s:3:"208";s:3:"n r";s:3:"209";s:3:"ond";s:3:"210";s:3:"pro";s:3:"211";s:3:"r c";s:3:"212";s:3:"r g";s:3:"213";s:3:"red";s:3:"214";s:3:"rha";s:3:"215";s:3:"u a";s:3:"216";s:3:"u c";s:3:"217";s:3:"u y";s:3:"218";s:3:"y c";s:3:"219";s:3:"ymd";s:3:"220";s:3:"ymr";s:3:"221";s:3:"yw ";s:3:"222";s:3:" ac";s:3:"223";s:3:" be";s:3:"224";s:3:" bl";s:3:"225";s:3:" co";s:3:"226";s:3:" os";s:3:"227";s:3:"adw";s:3:"228";s:3:"ae ";s:3:"229";s:3:"af ";s:3:"230";s:3:"d p";s:3:"231";s:3:"efn";s:3:"232";s:3:"eic";s:3:"233";s:3:"en ";s:3:"234";s:3:"eol";s:3:"235";s:3:"es ";s:3:"236";s:3:"fer";s:3:"237";s:3:"gel";s:3:"238";s:3:"h g";s:3:"239";s:3:"hod";s:3:"240";s:3:"ied";s:3:"241";s:3:"ir ";s:3:"242";s:3:"laf";s:3:"243";s:3:"n h";s:3:"244";s:3:"na ";s:3:"245";s:3:"nyd";s:3:"246";s:3:"odo";s:3:"247";s:3:"ofy";s:3:"248";s:3:"rdd";s:3:"249";s:3:"rie";s:3:"250";s:3:"ros";s:3:"251";s:3:"stw";s:3:"252";s:3:"twy";s:3:"253";s:3:"yda";s:3:"254";s:3:"yng";s:3:"255";s:3:" at";s:3:"256";s:3:" de";s:3:"257";s:3:" go";s:3:"258";s:3:" id";s:3:"259";s:3:" oe";s:3:"260";s:4:" â ";s:3:"261";s:3:"'ch";s:3:"262";s:3:"ac ";s:3:"263";s:3:"ach";s:3:"264";s:3:"ae'";s:3:"265";s:3:"al ";s:3:"266";s:3:"bl ";s:3:"267";s:3:"d c";s:3:"268";s:3:"d l";s:3:"269";s:3:"dan";s:3:"270";s:3:"dde";s:3:"271";s:3:"ddw";s:3:"272";s:3:"dir";s:3:"273";s:3:"dla";s:3:"274";s:3:"ed ";s:3:"275";s:3:"ela";s:3:"276";s:3:"ell";s:3:"277";s:3:"ene";s:3:"278";s:3:"ewn";s:3:"279";s:3:"gyd";s:3:"280";s:3:"hau";s:3:"281";s:3:"hyw";s:3:"282";s:3:"i a";s:3:"283";s:3:"i f";s:3:"284";s:3:"iol";s:3:"285";s:3:"ion";s:3:"286";s:3:"l a";s:3:"287";s:3:"l i";s:3:"288";s:3:"lia";s:3:"289";s:3:"med";s:3:"290";s:3:"mon";s:3:"291";s:3:"n s";s:3:"292";s:3:"no ";s:3:"293";s:3:"obl";s:3:"294";s:3:"ola";s:3:"295";s:3:"ref";s:3:"296";s:3:"rn ";s:3:"297";s:3:"thi";s:3:"298";s:3:"un ";s:3:"299";}}s:18:"trigram-unicodemap";a:13:{s:11:"Basic Latin";a:38:{s:8:"albanian";i:661;s:5:"azeri";i:653;s:7:"bengali";i:1;s:7:"cebuano";i:750;s:8:"croatian";i:733;s:5:"czech";i:652;s:6:"danish";i:734;s:5:"dutch";i:741;s:7:"english";i:723;s:8:"estonian";i:739;s:7:"finnish";i:743;s:6:"french";i:733;s:6:"german";i:750;s:5:"hausa";i:752;s:8:"hawaiian";i:751;s:9:"hungarian";i:693;s:9:"icelandic";i:662;s:10:"indonesian";i:776;s:7:"italian";i:741;s:5:"latin";i:764;s:7:"latvian";i:693;s:10:"lithuanian";i:738;s:9:"mongolian";i:19;s:9:"norwegian";i:742;s:6:"pidgin";i:702;s:6:"polish";i:701;s:10:"portuguese";i:726;s:8:"romanian";i:714;s:6:"slovak";i:677;s:7:"slovene";i:740;s:6:"somali";i:755;s:7:"spanish";i:749;s:7:"swahili";i:770;s:7:"swedish";i:717;s:7:"tagalog";i:767;s:7:"turkish";i:673;s:10:"vietnamese";i:503;s:5:"welsh";i:728;}s:18:"Latin-1 Supplement";a:21:{s:8:"albanian";i:68;s:5:"azeri";i:10;s:5:"czech";i:51;s:6:"danish";i:13;s:8:"estonian";i:19;s:7:"finnish";i:39;s:6:"french";i:21;s:6:"german";i:8;s:9:"hungarian";i:72;s:9:"icelandic";i:80;s:7:"italian";i:3;s:9:"norwegian";i:5;s:6:"polish";i:6;s:10:"portuguese";i:18;s:8:"romanian";i:9;s:6:"slovak";i:37;s:7:"spanish";i:6;s:7:"swedish";i:26;s:7:"turkish";i:25;s:10:"vietnamese";i:56;s:5:"welsh";i:1;}s:14:"[Malformatted]";a:42:{s:8:"albanian";i:68;s:6:"arabic";i:724;s:5:"azeri";i:109;s:7:"bengali";i:1472;s:9:"bulgarian";i:750;s:8:"croatian";i:10;s:5:"czech";i:78;s:6:"danish";i:13;s:8:"estonian";i:19;s:5:"farsi";i:706;s:7:"finnish";i:39;s:6:"french";i:21;s:6:"german";i:8;s:5:"hausa";i:8;s:5:"hindi";i:1386;s:9:"hungarian";i:74;s:9:"icelandic";i:80;s:7:"italian";i:3;s:6:"kazakh";i:767;s:6:"kyrgyz";i:767;s:7:"latvian";i:56;s:10:"lithuanian";i:30;s:10:"macedonian";i:755;s:9:"mongolian";i:743;s:6:"nepali";i:1514;s:9:"norwegian";i:5;s:6:"pashto";i:677;s:6:"polish";i:45;s:10:"portuguese";i:18;s:8:"romanian";i:31;s:7:"russian";i:759;s:7:"serbian";i:757;s:6:"slovak";i:45;s:7:"slovene";i:10;s:7:"spanish";i:6;s:7:"swedish";i:26;s:7:"turkish";i:87;s:9:"ukrainian";i:748;s:4:"urdu";i:682;s:5:"uzbek";i:773;s:10:"vietnamese";i:289;s:5:"welsh";i:1;}s:6:"Arabic";a:4:{s:6:"arabic";i:724;s:5:"farsi";i:706;s:6:"pashto";i:677;s:4:"urdu";i:682;}s:16:"Latin Extended-B";a:3:{s:5:"azeri";i:73;s:5:"hausa";i:8;s:10:"vietnamese";i:19;}s:16:"Latin Extended-A";a:12:{s:5:"azeri";i:25;s:8:"croatian";i:10;s:5:"czech";i:27;s:9:"hungarian";i:2;s:7:"latvian";i:56;s:10:"lithuanian";i:30;s:6:"polish";i:39;s:8:"romanian";i:22;s:6:"slovak";i:8;s:7:"slovene";i:10;s:7:"turkish";i:62;s:10:"vietnamese";i:20;}s:27:"Combining Diacritical Marks";a:1:{s:5:"azeri";i:1;}s:7:"Bengali";a:1:{s:7:"bengali";i:714;}s:8:"Gujarati";a:1:{s:7:"bengali";i:16;}s:8:"Gurmukhi";a:1:{s:7:"bengali";i:6;}s:8:"Cyrillic";a:9:{s:9:"bulgarian";i:750;s:6:"kazakh";i:767;s:6:"kyrgyz";i:767;s:10:"macedonian";i:755;s:9:"mongolian";i:743;s:7:"russian";i:759;s:7:"serbian";i:757;s:9:"ukrainian";i:748;s:5:"uzbek";i:773;}s:10:"Devanagari";a:2:{s:5:"hindi";i:693;s:6:"nepali";i:757;}s:25:"Latin Extended Additional";a:1:{s:10:"vietnamese";i:97;}}} \ No newline at end of file
diff --git a/library/langdet/data/unicode_blocks.dat b/library/langdet/data/unicode_blocks.dat
new file mode 100644
index 000000000..3b24cd2c1
--- /dev/null
+++ b/library/langdet/data/unicode_blocks.dat
@@ -0,0 +1 @@
+a:145:{i:0;a:3:{i:0;s:6:"0x0000";i:1;s:6:"0x007F";i:2;s:11:"Basic Latin";}i:1;a:3:{i:0;s:6:"0x0080";i:1;s:6:"0x00FF";i:2;s:18:"Latin-1 Supplement";}i:2;a:3:{i:0;s:6:"0x0100";i:1;s:6:"0x017F";i:2;s:16:"Latin Extended-A";}i:3;a:3:{i:0;s:6:"0x0180";i:1;s:6:"0x024F";i:2;s:16:"Latin Extended-B";}i:4;a:3:{i:0;s:6:"0x0250";i:1;s:6:"0x02AF";i:2;s:14:"IPA Extensions";}i:5;a:3:{i:0;s:6:"0x02B0";i:1;s:6:"0x02FF";i:2;s:24:"Spacing Modifier Letters";}i:6;a:3:{i:0;s:6:"0x0300";i:1;s:6:"0x036F";i:2;s:27:"Combining Diacritical Marks";}i:7;a:3:{i:0;s:6:"0x0370";i:1;s:6:"0x03FF";i:2;s:16:"Greek and Coptic";}i:8;a:3:{i:0;s:6:"0x0400";i:1;s:6:"0x04FF";i:2;s:8:"Cyrillic";}i:9;a:3:{i:0;s:6:"0x0500";i:1;s:6:"0x052F";i:2;s:19:"Cyrillic Supplement";}i:10;a:3:{i:0;s:6:"0x0530";i:1;s:6:"0x058F";i:2;s:8:"Armenian";}i:11;a:3:{i:0;s:6:"0x0590";i:1;s:6:"0x05FF";i:2;s:6:"Hebrew";}i:12;a:3:{i:0;s:6:"0x0600";i:1;s:6:"0x06FF";i:2;s:6:"Arabic";}i:13;a:3:{i:0;s:6:"0x0700";i:1;s:6:"0x074F";i:2;s:6:"Syriac";}i:14;a:3:{i:0;s:6:"0x0750";i:1;s:6:"0x077F";i:2;s:17:"Arabic Supplement";}i:15;a:3:{i:0;s:6:"0x0780";i:1;s:6:"0x07BF";i:2;s:6:"Thaana";}i:16;a:3:{i:0;s:6:"0x0900";i:1;s:6:"0x097F";i:2;s:10:"Devanagari";}i:17;a:3:{i:0;s:6:"0x0980";i:1;s:6:"0x09FF";i:2;s:7:"Bengali";}i:18;a:3:{i:0;s:6:"0x0A00";i:1;s:6:"0x0A7F";i:2;s:8:"Gurmukhi";}i:19;a:3:{i:0;s:6:"0x0A80";i:1;s:6:"0x0AFF";i:2;s:8:"Gujarati";}i:20;a:3:{i:0;s:6:"0x0B00";i:1;s:6:"0x0B7F";i:2;s:5:"Oriya";}i:21;a:3:{i:0;s:6:"0x0B80";i:1;s:6:"0x0BFF";i:2;s:5:"Tamil";}i:22;a:3:{i:0;s:6:"0x0C00";i:1;s:6:"0x0C7F";i:2;s:6:"Telugu";}i:23;a:3:{i:0;s:6:"0x0C80";i:1;s:6:"0x0CFF";i:2;s:7:"Kannada";}i:24;a:3:{i:0;s:6:"0x0D00";i:1;s:6:"0x0D7F";i:2;s:9:"Malayalam";}i:25;a:3:{i:0;s:6:"0x0D80";i:1;s:6:"0x0DFF";i:2;s:7:"Sinhala";}i:26;a:3:{i:0;s:6:"0x0E00";i:1;s:6:"0x0E7F";i:2;s:4:"Thai";}i:27;a:3:{i:0;s:6:"0x0E80";i:1;s:6:"0x0EFF";i:2;s:3:"Lao";}i:28;a:3:{i:0;s:6:"0x0F00";i:1;s:6:"0x0FFF";i:2;s:7:"Tibetan";}i:29;a:3:{i:0;s:6:"0x1000";i:1;s:6:"0x109F";i:2;s:7:"Myanmar";}i:30;a:3:{i:0;s:6:"0x10A0";i:1;s:6:"0x10FF";i:2;s:8:"Georgian";}i:31;a:3:{i:0;s:6:"0x1100";i:1;s:6:"0x11FF";i:2;s:11:"Hangul Jamo";}i:32;a:3:{i:0;s:6:"0x1200";i:1;s:6:"0x137F";i:2;s:8:"Ethiopic";}i:33;a:3:{i:0;s:6:"0x1380";i:1;s:6:"0x139F";i:2;s:19:"Ethiopic Supplement";}i:34;a:3:{i:0;s:6:"0x13A0";i:1;s:6:"0x13FF";i:2;s:8:"Cherokee";}i:35;a:3:{i:0;s:6:"0x1400";i:1;s:6:"0x167F";i:2;s:37:"Unified Canadian Aboriginal Syllabics";}i:36;a:3:{i:0;s:6:"0x1680";i:1;s:6:"0x169F";i:2;s:5:"Ogham";}i:37;a:3:{i:0;s:6:"0x16A0";i:1;s:6:"0x16FF";i:2;s:5:"Runic";}i:38;a:3:{i:0;s:6:"0x1700";i:1;s:6:"0x171F";i:2;s:7:"Tagalog";}i:39;a:3:{i:0;s:6:"0x1720";i:1;s:6:"0x173F";i:2;s:7:"Hanunoo";}i:40;a:3:{i:0;s:6:"0x1740";i:1;s:6:"0x175F";i:2;s:5:"Buhid";}i:41;a:3:{i:0;s:6:"0x1760";i:1;s:6:"0x177F";i:2;s:8:"Tagbanwa";}i:42;a:3:{i:0;s:6:"0x1780";i:1;s:6:"0x17FF";i:2;s:5:"Khmer";}i:43;a:3:{i:0;s:6:"0x1800";i:1;s:6:"0x18AF";i:2;s:9:"Mongolian";}i:44;a:3:{i:0;s:6:"0x1900";i:1;s:6:"0x194F";i:2;s:5:"Limbu";}i:45;a:3:{i:0;s:6:"0x1950";i:1;s:6:"0x197F";i:2;s:6:"Tai Le";}i:46;a:3:{i:0;s:6:"0x1980";i:1;s:6:"0x19DF";i:2;s:11:"New Tai Lue";}i:47;a:3:{i:0;s:6:"0x19E0";i:1;s:6:"0x19FF";i:2;s:13:"Khmer Symbols";}i:48;a:3:{i:0;s:6:"0x1A00";i:1;s:6:"0x1A1F";i:2;s:8:"Buginese";}i:49;a:3:{i:0;s:6:"0x1D00";i:1;s:6:"0x1D7F";i:2;s:19:"Phonetic Extensions";}i:50;a:3:{i:0;s:6:"0x1D80";i:1;s:6:"0x1DBF";i:2;s:30:"Phonetic Extensions Supplement";}i:51;a:3:{i:0;s:6:"0x1DC0";i:1;s:6:"0x1DFF";i:2;s:38:"Combining Diacritical Marks Supplement";}i:52;a:3:{i:0;s:6:"0x1E00";i:1;s:6:"0x1EFF";i:2;s:25:"Latin Extended Additional";}i:53;a:3:{i:0;s:6:"0x1F00";i:1;s:6:"0x1FFF";i:2;s:14:"Greek Extended";}i:54;a:3:{i:0;s:6:"0x2000";i:1;s:6:"0x206F";i:2;s:19:"General Punctuation";}i:55;a:3:{i:0;s:6:"0x2070";i:1;s:6:"0x209F";i:2;s:27:"Superscripts and Subscripts";}i:56;a:3:{i:0;s:6:"0x20A0";i:1;s:6:"0x20CF";i:2;s:16:"Currency Symbols";}i:57;a:3:{i:0;s:6:"0x20D0";i:1;s:6:"0x20FF";i:2;s:39:"Combining Diacritical Marks for Symbols";}i:58;a:3:{i:0;s:6:"0x2100";i:1;s:6:"0x214F";i:2;s:18:"Letterlike Symbols";}i:59;a:3:{i:0;s:6:"0x2150";i:1;s:6:"0x218F";i:2;s:12:"Number Forms";}i:60;a:3:{i:0;s:6:"0x2190";i:1;s:6:"0x21FF";i:2;s:6:"Arrows";}i:61;a:3:{i:0;s:6:"0x2200";i:1;s:6:"0x22FF";i:2;s:22:"Mathematical Operators";}i:62;a:3:{i:0;s:6:"0x2300";i:1;s:6:"0x23FF";i:2;s:23:"Miscellaneous Technical";}i:63;a:3:{i:0;s:6:"0x2400";i:1;s:6:"0x243F";i:2;s:16:"Control Pictures";}i:64;a:3:{i:0;s:6:"0x2440";i:1;s:6:"0x245F";i:2;s:29:"Optical Character Recognition";}i:65;a:3:{i:0;s:6:"0x2460";i:1;s:6:"0x24FF";i:2;s:22:"Enclosed Alphanumerics";}i:66;a:3:{i:0;s:6:"0x2500";i:1;s:6:"0x257F";i:2;s:11:"Box Drawing";}i:67;a:3:{i:0;s:6:"0x2580";i:1;s:6:"0x259F";i:2;s:14:"Block Elements";}i:68;a:3:{i:0;s:6:"0x25A0";i:1;s:6:"0x25FF";i:2;s:16:"Geometric Shapes";}i:69;a:3:{i:0;s:6:"0x2600";i:1;s:6:"0x26FF";i:2;s:21:"Miscellaneous Symbols";}i:70;a:3:{i:0;s:6:"0x2700";i:1;s:6:"0x27BF";i:2;s:8:"Dingbats";}i:71;a:3:{i:0;s:6:"0x27C0";i:1;s:6:"0x27EF";i:2;s:36:"Miscellaneous Mathematical Symbols-A";}i:72;a:3:{i:0;s:6:"0x27F0";i:1;s:6:"0x27FF";i:2;s:21:"Supplemental Arrows-A";}i:73;a:3:{i:0;s:6:"0x2800";i:1;s:6:"0x28FF";i:2;s:16:"Braille Patterns";}i:74;a:3:{i:0;s:6:"0x2900";i:1;s:6:"0x297F";i:2;s:21:"Supplemental Arrows-B";}i:75;a:3:{i:0;s:6:"0x2980";i:1;s:6:"0x29FF";i:2;s:36:"Miscellaneous Mathematical Symbols-B";}i:76;a:3:{i:0;s:6:"0x2A00";i:1;s:6:"0x2AFF";i:2;s:35:"Supplemental Mathematical Operators";}i:77;a:3:{i:0;s:6:"0x2B00";i:1;s:6:"0x2BFF";i:2;s:32:"Miscellaneous Symbols and Arrows";}i:78;a:3:{i:0;s:6:"0x2C00";i:1;s:6:"0x2C5F";i:2;s:10:"Glagolitic";}i:79;a:3:{i:0;s:6:"0x2C80";i:1;s:6:"0x2CFF";i:2;s:6:"Coptic";}i:80;a:3:{i:0;s:6:"0x2D00";i:1;s:6:"0x2D2F";i:2;s:19:"Georgian Supplement";}i:81;a:3:{i:0;s:6:"0x2D30";i:1;s:6:"0x2D7F";i:2;s:8:"Tifinagh";}i:82;a:3:{i:0;s:6:"0x2D80";i:1;s:6:"0x2DDF";i:2;s:17:"Ethiopic Extended";}i:83;a:3:{i:0;s:6:"0x2E00";i:1;s:6:"0x2E7F";i:2;s:24:"Supplemental Punctuation";}i:84;a:3:{i:0;s:6:"0x2E80";i:1;s:6:"0x2EFF";i:2;s:23:"CJK Radicals Supplement";}i:85;a:3:{i:0;s:6:"0x2F00";i:1;s:6:"0x2FDF";i:2;s:15:"Kangxi Radicals";}i:86;a:3:{i:0;s:6:"0x2FF0";i:1;s:6:"0x2FFF";i:2;s:34:"Ideographic Description Characters";}i:87;a:3:{i:0;s:6:"0x3000";i:1;s:6:"0x303F";i:2;s:27:"CJK Symbols and Punctuation";}i:88;a:3:{i:0;s:6:"0x3040";i:1;s:6:"0x309F";i:2;s:8:"Hiragana";}i:89;a:3:{i:0;s:6:"0x30A0";i:1;s:6:"0x30FF";i:2;s:8:"Katakana";}i:90;a:3:{i:0;s:6:"0x3100";i:1;s:6:"0x312F";i:2;s:8:"Bopomofo";}i:91;a:3:{i:0;s:6:"0x3130";i:1;s:6:"0x318F";i:2;s:25:"Hangul Compatibility Jamo";}i:92;a:3:{i:0;s:6:"0x3190";i:1;s:6:"0x319F";i:2;s:6:"Kanbun";}i:93;a:3:{i:0;s:6:"0x31A0";i:1;s:6:"0x31BF";i:2;s:17:"Bopomofo Extended";}i:94;a:3:{i:0;s:6:"0x31C0";i:1;s:6:"0x31EF";i:2;s:11:"CJK Strokes";}i:95;a:3:{i:0;s:6:"0x31F0";i:1;s:6:"0x31FF";i:2;s:28:"Katakana Phonetic Extensions";}i:96;a:3:{i:0;s:6:"0x3200";i:1;s:6:"0x32FF";i:2;s:31:"Enclosed CJK Letters and Months";}i:97;a:3:{i:0;s:6:"0x3300";i:1;s:6:"0x33FF";i:2;s:17:"CJK Compatibility";}i:98;a:3:{i:0;s:6:"0x3400";i:1;s:6:"0x4DBF";i:2;s:34:"CJK Unified Ideographs Extension A";}i:99;a:3:{i:0;s:6:"0x4DC0";i:1;s:6:"0x4DFF";i:2;s:23:"Yijing Hexagram Symbols";}i:100;a:3:{i:0;s:6:"0x4E00";i:1;s:6:"0x9FFF";i:2;s:22:"CJK Unified Ideographs";}i:101;a:3:{i:0;s:6:"0xA000";i:1;s:6:"0xA48F";i:2;s:12:"Yi Syllables";}i:102;a:3:{i:0;s:6:"0xA490";i:1;s:6:"0xA4CF";i:2;s:11:"Yi Radicals";}i:103;a:3:{i:0;s:6:"0xA700";i:1;s:6:"0xA71F";i:2;s:21:"Modifier Tone Letters";}i:104;a:3:{i:0;s:6:"0xA800";i:1;s:6:"0xA82F";i:2;s:12:"Syloti Nagri";}i:105;a:3:{i:0;s:6:"0xAC00";i:1;s:6:"0xD7AF";i:2;s:16:"Hangul Syllables";}i:106;a:3:{i:0;s:6:"0xD800";i:1;s:6:"0xDB7F";i:2;s:15:"High Surrogates";}i:107;a:3:{i:0;s:6:"0xDB80";i:1;s:6:"0xDBFF";i:2;s:27:"High Private Use Surrogates";}i:108;a:3:{i:0;s:6:"0xDC00";i:1;s:6:"0xDFFF";i:2;s:14:"Low Surrogates";}i:109;a:3:{i:0;s:6:"0xE000";i:1;s:6:"0xF8FF";i:2;s:16:"Private Use Area";}i:110;a:3:{i:0;s:6:"0xF900";i:1;s:6:"0xFAFF";i:2;s:28:"CJK Compatibility Ideographs";}i:111;a:3:{i:0;s:6:"0xFB00";i:1;s:6:"0xFB4F";i:2;s:29:"Alphabetic Presentation Forms";}i:112;a:3:{i:0;s:6:"0xFB50";i:1;s:6:"0xFDFF";i:2;s:27:"Arabic Presentation Forms-A";}i:113;a:3:{i:0;s:6:"0xFE00";i:1;s:6:"0xFE0F";i:2;s:19:"Variation Selectors";}i:114;a:3:{i:0;s:6:"0xFE10";i:1;s:6:"0xFE1F";i:2;s:14:"Vertical Forms";}i:115;a:3:{i:0;s:6:"0xFE20";i:1;s:6:"0xFE2F";i:2;s:20:"Combining Half Marks";}i:116;a:3:{i:0;s:6:"0xFE30";i:1;s:6:"0xFE4F";i:2;s:23:"CJK Compatibility Forms";}i:117;a:3:{i:0;s:6:"0xFE50";i:1;s:6:"0xFE6F";i:2;s:19:"Small Form Variants";}i:118;a:3:{i:0;s:6:"0xFE70";i:1;s:6:"0xFEFF";i:2;s:27:"Arabic Presentation Forms-B";}i:119;a:3:{i:0;s:6:"0xFF00";i:1;s:6:"0xFFEF";i:2;s:29:"Halfwidth and Fullwidth Forms";}i:120;a:3:{i:0;s:6:"0xFFF0";i:1;s:6:"0xFFFF";i:2;s:8:"Specials";}i:121;a:3:{i:0;s:7:"0x10000";i:1;s:7:"0x1007F";i:2;s:18:"Linear B Syllabary";}i:122;a:3:{i:0;s:7:"0x10080";i:1;s:7:"0x100FF";i:2;s:18:"Linear B Ideograms";}i:123;a:3:{i:0;s:7:"0x10100";i:1;s:7:"0x1013F";i:2;s:14:"Aegean Numbers";}i:124;a:3:{i:0;s:7:"0x10140";i:1;s:7:"0x1018F";i:2;s:21:"Ancient Greek Numbers";}i:125;a:3:{i:0;s:7:"0x10300";i:1;s:7:"0x1032F";i:2;s:10:"Old Italic";}i:126;a:3:{i:0;s:7:"0x10330";i:1;s:7:"0x1034F";i:2;s:6:"Gothic";}i:127;a:3:{i:0;s:7:"0x10380";i:1;s:7:"0x1039F";i:2;s:8:"Ugaritic";}i:128;a:3:{i:0;s:7:"0x103A0";i:1;s:7:"0x103DF";i:2;s:11:"Old Persian";}i:129;a:3:{i:0;s:7:"0x10400";i:1;s:7:"0x1044F";i:2;s:7:"Deseret";}i:130;a:3:{i:0;s:7:"0x10450";i:1;s:7:"0x1047F";i:2;s:7:"Shavian";}i:131;a:3:{i:0;s:7:"0x10480";i:1;s:7:"0x104AF";i:2;s:7:"Osmanya";}i:132;a:3:{i:0;s:7:"0x10800";i:1;s:7:"0x1083F";i:2;s:17:"Cypriot Syllabary";}i:133;a:3:{i:0;s:7:"0x10A00";i:1;s:7:"0x10A5F";i:2;s:10:"Kharoshthi";}i:134;a:3:{i:0;s:7:"0x1D000";i:1;s:7:"0x1D0FF";i:2;s:25:"Byzantine Musical Symbols";}i:135;a:3:{i:0;s:7:"0x1D100";i:1;s:7:"0x1D1FF";i:2;s:15:"Musical Symbols";}i:136;a:3:{i:0;s:7:"0x1D200";i:1;s:7:"0x1D24F";i:2;s:30:"Ancient Greek Musical Notation";}i:137;a:3:{i:0;s:7:"0x1D300";i:1;s:7:"0x1D35F";i:2;s:21:"Tai Xuan Jing Symbols";}i:138;a:3:{i:0;s:7:"0x1D400";i:1;s:7:"0x1D7FF";i:2;s:33:"Mathematical Alphanumeric Symbols";}i:139;a:3:{i:0;s:7:"0x20000";i:1;s:7:"0x2A6DF";i:2;s:34:"CJK Unified Ideographs Extension B";}i:140;a:3:{i:0;s:7:"0x2F800";i:1;s:7:"0x2FA1F";i:2;s:39:"CJK Compatibility Ideographs Supplement";}i:141;a:3:{i:0;s:7:"0xE0000";i:1;s:7:"0xE007F";i:2;s:4:"Tags";}i:142;a:3:{i:0;s:7:"0xE0100";i:1;s:7:"0xE01EF";i:2;s:30:"Variation Selectors Supplement";}i:143;a:3:{i:0;s:7:"0xF0000";i:1;s:7:"0xFFFFF";i:2;s:32:"Supplementary Private Use Area-A";}i:144;a:3:{i:0;s:8:"0x100000";i:1;s:8:"0x10FFFF";i:2;s:32:"Supplementary Private Use Area-B";}} \ No newline at end of file
diff --git a/library/langdet/docs/example_clui.php b/library/langdet/docs/example_clui.php
new file mode 100644
index 000000000..8e7d8577d
--- /dev/null
+++ b/library/langdet/docs/example_clui.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * example usage (CLI)
+ *
+ * @package Text_LanguageDetect
+ * @version CVS: $Id: example_clui.php 322305 2012-01-15 00:04:17Z clockwerx $
+ */
+
+require_once 'Text/LanguageDetect.php';
+
+$l = new Text_LanguageDetect;
+
+$stdin = fopen('php://stdin', 'r');
+
+echo "Supported languages:\n";
+$langs = $l->getLanguages();
+sort($langs);
+echo join(', ', $langs);
+
+echo "\ntotal ", count($langs), "\n\n";
+
+while ($line = fgets($stdin)) {
+ $result = $l->detect($line, 4);
+ print_r($result);
+ $blocks = $l->detectUnicodeBlocks($line, true);
+ print_r($blocks);
+}
+
+fclose($stdin);
+unset($l);
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+?>
diff --git a/library/langdet/docs/example_web.php b/library/langdet/docs/example_web.php
new file mode 100644
index 000000000..1e155fef2
--- /dev/null
+++ b/library/langdet/docs/example_web.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * example usage (web)
+ *
+ * @package Text_LanguageDetect
+ * @version CVS: $Id: example_web.php 205493 2006-01-18 00:26:57Z taak $
+ */
+
+// browsers will encode multi-byte characters wrong unless they think the page is utf8-encoded
+header('Content-type: text/html; charset=utf-8', true);
+
+require_once 'Text/LanguageDetect.php';
+
+$l = new Text_LanguageDetect;
+if (isset($_REQUEST['q'])) {
+ $q = stripslashes($_REQUEST['q']);
+}
+
+?>
+<html>
+<head>
+<title>Text_LanguageDetect demonstration</title>
+</head>
+<body>
+<h2>Text_LanguageDetect</h2>
+<?
+echo "<small>Supported languages:\n";
+$langs = $l->getLanguages();
+sort($langs);
+foreach ($langs as $lang) {
+ echo ucfirst($lang), ', ';
+ $i++;
+}
+
+echo "<br />total $i</small><br /><br />";
+
+?>
+<form method="post">
+Enter text to identify language (at least a couple of sentences):<br />
+<textarea name="q" wrap="virtual" cols="80" rows="8"><?= $q ?></textarea>
+<br />
+<input type="submit" value="Submit" />
+</form>
+<?
+if (isset($q) && strlen($q)) {
+ $len = $l->utf8strlen($q);
+ if ($len < 20) { // this value picked somewhat arbitrarily
+ echo "Warning: string not very long ($len chars)<br />\n";
+ }
+
+ $result = $l->detectConfidence($q);
+
+ if ($result == null) {
+ echo "Text_LanguageDetect cannot identify this piece of text. <br /><br />\n";
+ } else {
+ echo "Text_LanguageDetect thinks this text is written in <b>{$result['language']}</b> ({$result['similarity']}, {$result['confidence']})<br /><br />\n";
+ }
+
+ $result = $l->detectUnicodeBlocks($q, false);
+ if (!empty($result)) {
+ arsort($result);
+ echo "Unicode blocks present: ", join(', ', array_keys($result)), "\n<br /><br />";
+ }
+}
+
+unset($l);
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+?>
+</body></html>
diff --git a/library/langdet/docs/iso.php b/library/langdet/docs/iso.php
new file mode 100644
index 000000000..6d7ec1d2e
--- /dev/null
+++ b/library/langdet/docs/iso.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Demonstrates how to use ISO language codes.
+ *
+ * The "name mode" changes the way languages are accepted and returned.
+ */
+require_once 'Text/LanguageDetect.php';
+$l = new Text_LanguageDetect();
+
+
+//will output the ISO 639-1 two-letter language code
+// "de"
+$l->setNameMode(2);
+echo $l->detectSimple('Das ist ein kleiner Text') . "\n";
+
+//will output the ISO 639-2 three-letter language code
+// "deu"
+$l->setNameMode(3);
+echo $l->detectSimple('Das ist ein kleiner Text') . "\n";
+
+?> \ No newline at end of file
diff --git a/library/langdet/tests/Text_LanguageDetectTest.php b/library/langdet/tests/Text_LanguageDetectTest.php
new file mode 100644
index 000000000..bbf4dd779
--- /dev/null
+++ b/library/langdet/tests/Text_LanguageDetectTest.php
@@ -0,0 +1,2056 @@
+<?php
+
+/**
+ * @package Text_LanguageDetect
+ * @version CVS: $Id: Text_LanguageDetectTest.php 322353 2012-01-16 08:41:43Z cweiske $
+ */
+set_include_path(
+ __DIR__ . '/../' . PATH_SEPARATOR . get_include_path()
+);
+error_reporting(E_ALL|E_STRICT);
+
+require_once 'Text/LanguageDetect.php';
+require_once 'PHPUnit/Framework/TestCase.php';
+
+class Text_LanguageDetectTest extends PHPUnit_Framework_TestCase {
+
+ function setup ()
+ {
+ ini_set('magic_quotes_runtime', 0);
+ $this->x = new Text_LanguageDetect();
+ }
+
+ function tearDown ()
+ {
+ unset($this->x);
+ }
+
+ function test_get_data_locAbsolute()
+ {
+ $this->assertEquals(
+ '/path/to/file',
+ $this->x->_get_data_loc('/path/to/file')
+ );
+ }
+
+ function test_get_data_locPearPath()
+ {
+ $this->x->_data_dir = '/path/to/pear/data';
+ $this->assertEquals(
+ '/path/to/pear/data/Text_LanguageDetect/file',
+ $this->x->_get_data_loc('file')
+ );
+ }
+
+ /**
+ * @expectedException Text_LanguageDetect_Exception
+ * @expectedExceptionMessage Language database does not exist:
+ */
+ function test_readdbNonexistingFile()
+ {
+ $this->x->_readdb('thisfiledoesnotexist');
+ }
+
+ /**
+ * @expectedException Text_LanguageDetect_Exception
+ * @expectedExceptionMessage Language database is not readable:
+ */
+ function test_readdbUnreadableFile()
+ {
+ $name = tempnam(sys_get_temp_dir(), 'unittest-Text_LanguageDetect-');
+ chmod($name, 0000);
+ $this->x->_readdb($name);
+ }
+
+ /**
+ * @expectedException Text_LanguageDetect_Exception
+ * @expectedExceptionMessage Language database has no elements.
+ */
+ function test_checkTrigramEmpty()
+ {
+ $this->x->_checkTrigram(array());
+ }
+
+ /**
+ * @expectedException Text_LanguageDetect_Exception
+ * @expectedExceptionMessage Language database is not an array
+ */
+ function test_checkTrigramNoArray()
+ {
+ $this->x->_checkTrigram('foo');
+ }
+
+ /**
+ * @expectedException Text_LanguageDetect_Exception
+ * @expectedExceptionMessage Error loading database. Try turning magic_quotes_runtime off
+ */
+ function test_checkTrigramNoArrayMagicQuotes()
+ {
+ if (version_compare(PHP_VERSION, '5.4.0-dev') >= 0) {
+ $this->markTestSkipped('5.4.0 has no magic quotes anymore');
+ }
+ ini_set('magic_quotes_runtime', 1);
+ $this->x->_checkTrigram('foo');
+ }
+
+ function test_splitter ()
+ {
+ $str = 'hello';
+
+ $result = $this->x->_trigram($str);
+
+ $this->assertEquals(array(' he' => 1, 'hel' => 1, 'ell' => 1, 'llo' => 1, 'lo ' => 1), $result);
+
+ $str = 'aa aa whatever';
+
+ $result = $this->x->_trigram($str);
+ $this->assertEquals(2, $result[' aa']);
+ $this->assertEquals(2, $result['aa ']);
+ $this->assertEquals(1, $result['a a']);
+
+ $str = 'aa aa';
+ $result = $this->x->_trigram($str);
+ $this->assertArrayNotHasKey(' a', $result, ' a');
+ $this->assertArrayNotHasKey('a ', $result, 'a ');
+ }
+
+ function test_splitter2 ()
+ {
+ $str = 'resumé';
+
+ $result = $this->x->_trigram($str);
+
+ $this->assertTrue(isset($result['mé ']), 'mé ');
+ $this->assertTrue(isset($result['umé']), 'umé');
+ $this->assertTrue(!isset($result['é ']), 'é');
+
+ // tests lower-casing accented characters
+ $str = 'resumÉ';
+
+ $result = $this->x->_trigram($str);
+
+ $this->assertTrue(isset($result['mé ']),'mé ');
+ $this->assertTrue(isset($result['umé']),'umé');
+ $this->assertTrue(!isset($result['é ']),'é');
+ }
+
+ function test_sort ()
+ {
+ $arr = array('a' => 1, 'b' => 2, 'c' => 2);
+ $this->x->_bub_sort($arr);
+
+ $final_arr = array('b' => 2, 'c' => 2, 'a' => 1);
+
+ $this->assertEquals($final_arr, $arr);
+ }
+
+ function test_error ()
+ {
+ // this test passes the object a series of bad strings to see how it handles them
+
+ $result = $this->x->detectSimple("");
+
+ $this->assertTrue(!$result);
+
+ $result = $this->x->detectSimple("\n");
+
+ $this->assertTrue(!$result);
+
+ // should fail on extremely short strings
+ $result = $this->x->detectSimple("a");
+
+ $this->assertTrue(!$result);
+
+ $result = $this->x->detectSimple("aa");
+
+ $this->assertTrue(!$result);
+
+ $result = $this->x->detectSimple('xxxxxxxxxxxxxxxxxxx');
+
+ $this->assertEquals(null, $result);
+ }
+
+ function testOmitLanguages()
+ {
+ $str = 'This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.';
+
+ $myobj = new Text_LanguageDetect;
+
+ $myobj->_use_unicode_narrowing = false;
+
+ $count = $myobj->getLanguageCount();
+ $returnval = $myobj->omitLanguages('english');
+ $newcount = $myobj->getLanguageCount();
+
+ $this->assertEquals(1, $returnval);
+ $this->assertEquals(1, $count - $newcount);
+
+ $result = strtolower($myobj->detectSimple($str));
+
+ $this->assertTrue($result != 'english', $result);
+
+ $myobj = new Text_LanguageDetect;
+
+ $count = $myobj->getLanguageCount();
+ $returnval = $myobj->omitLanguages(array('danish', 'italian'), true);
+ $newcount = $myobj->getLanguageCount();
+
+ $this->assertEquals($count - $newcount, $returnval);
+ $this->assertEquals($count - $returnval, $newcount);
+
+ $result = strtolower($myobj->detectSimple($str));
+
+ $this->assertTrue($result == 'danish' || $result == 'italian', $result);
+
+ $result = $myobj->detect($str);
+
+ $this->assertEquals(2, count($result));
+ $this->assertTrue(isset($result['danish']));
+ $this->assertTrue(isset($result['italian']));
+
+ unset($myobj);
+ }
+
+ function testOmitLanguagesNameMode2()
+ {
+ $this->x->setNameMode(2);
+ $this->assertEquals(1, $this->x->omitLanguages('en'));
+ }
+
+ function testOmitLanguagesIncludeString()
+ {
+ $this->assertGreaterThan(1, $this->x->omitLanguages('english', true));
+ $langs = $this->x->getLanguages();
+ $this->assertEquals(1, count($langs));
+ $this->assertContains('english', $langs);
+ }
+
+ function testOmitLanguagesClearsClusterCache()
+ {
+ $this->x->omitLanguages(array('english', 'german'), true);
+ $this->assertNull($this->x->_clusters);
+ $this->x->clusterLanguages();
+ $this->assertNotNull($this->x->_clusters);
+ $this->x->omitLanguages('german');
+ $this->assertNull($this->x->_clusters, 'cluster cache be empty now');
+ }
+
+ function test_perl_compatibility()
+ {
+ // if this test fails, then many of the others will
+
+ $myobj = new Text_LanguageDetect;
+ $myobj->setPerlCompatible(true);
+
+ $testtext = "hello";
+
+ $result = $myobj->_trigram($testtext);
+
+ $this->assertTrue(!isset($result[' he']));
+ }
+
+ function test_french_db ()
+ {
+
+ $safe_model = array(
+ "es " => 0, " de" => 1, "de " => 2, " le" => 3, "ent" => 4,
+ "le " => 5, "nt " => 6, "la " => 7, "s d" => 8, " la" => 9,
+ "ion" => 10, "on " => 11, "re " => 12, " pa" => 13, "e l" => 14,
+ "e d" => 15, " l'" => 16, "e p" => 17, " co" => 18, " pr" => 19,
+ "tio" => 20, "ns " => 21, " en" => 22, "ne " => 23, "que" => 24,
+ "r l" => 25, "les" => 26, "ur " => 27, "en " => 28, "ati" => 29,
+ "ue " => 30, " po" => 31, " d'" => 32, "par" => 33, " a " => 34,
+ "et " => 35, "it " => 36, " qu" => 37, "men" => 38, "ons" => 39,
+ "te " => 40, " et" => 41, "t d" => 42, " re" => 43, "des" => 44,
+ " un" => 45, "ie " => 46, "s l" => 47, " su" => 48, "pou" => 49,
+ " au" => 50, " à " => 51, "con" => 52, "er " => 53, " no" => 54,
+ "ait" => 55, "e c" => 56, "se " => 57, "té " => 58, "du " => 59,
+ " du" => 60, " dé" => 61, "ce " => 62, "e e" => 63, "is " => 64,
+ "n d" => 65, "s a" => 66, " so" => 67, "e r" => 68, "e s" => 69,
+ "our" => 70, "res" => 71, "ssi" => 72, "eur" => 73, " se" => 74,
+ "eme" => 75, "est" => 76, "us " => 77, "sur" => 78, "ant" => 79,
+ "iqu" => 80, "s p" => 81, "une" => 82, "uss" => 83, "l'a" => 84,
+ "pro" => 85, "ter" => 86, "tre" => 87, "end" => 88, "rs " => 89,
+ " ce" => 90, "e a" => 91, "t p" => 92, "un " => 93, " ma" => 94,
+ " ru" => 95, " ré" => 96, "ous" => 97, "ris" => 98, "rus" => 99,
+ "sse" => 100, "ans" => 101, "ar " => 102, "com" => 103, "e m" => 104,
+ "ire" => 105, "nce" => 106, "nte" => 107, "t l" => 108, " av" => 109,
+ " mo" => 110, " te" => 111, "il " => 112, "me " => 113, "ont" => 114,
+ "ten" => 115, "a p" => 116, "dan" => 117, "pas" => 118, "qui" => 119,
+ "s e" => 120, "s s" => 121, " in" => 122, "ist" => 123, "lle" => 124,
+ "nou" => 125, "pré" => 126, "'un" => 127, "air" => 128, "d'a" => 129,
+ "ir " => 130, "n e" => 131, "rop" => 132, "ts " => 133, " da" => 134,
+ "a s" => 135, "as " => 136, "au " => 137, "den" => 138, "mai" => 139,
+ "mis" => 140, "ori" => 141, "out" => 142, "rme" => 143, "sio" => 144,
+ "tte" => 145, "ux " => 146, "a d" => 147, "ien" => 148, "n a" => 149,
+ "ntr" => 150, "omm" => 151, "ort" => 152, "ouv" => 153, "s c" => 154,
+ "son" => 155, "tes" => 156, "ver" => 157, "ère" => 158, " il" => 159,
+ " m " => 160, " sa" => 161, " ve" => 162, "a r" => 163, "ais" => 164,
+ "ava" => 165, "di " => 166, "n p" => 167, "sti" => 168, "ven" => 169,
+ " mi" => 170, "ain" => 171, "enc" => 172, "for" => 173, "ité" => 174,
+ "lar" => 175, "oir" => 176, "rem" => 177, "ren" => 178, "rro" => 179,
+ "rés" => 180, "sie" => 181, "t a" => 182, "tur" => 183, " pe" => 184,
+ " to" => 185, "d'u" => 186, "ell" => 187, "err" => 188, "ers" => 189,
+ "ide" => 190, "ine" => 191, "iss" => 192, "mes" => 193, "por" => 194,
+ "ran" => 195, "sit" => 196, "st " => 197, "t r" => 198, "uti" => 199,
+ "vai" => 200, "é l" => 201, "ési" => 202, " di" => 203, " n'" => 204,
+ " ét" => 205, "a c" => 206, "ass" => 207, "e t" => 208, "in " => 209,
+ "nde" => 210, "pre" => 211, "rat" => 212, "s m" => 213, "ste" => 214,
+ "tai" => 215, "tch" => 216, "ui " => 217, "uro" => 218, "ès " => 219,
+ " es" => 220, " fo" => 221, " tr" => 222, "'ad" => 223, "app" => 224,
+ "aux" => 225, "e à" => 226, "ett" => 227, "iti" => 228, "lit" => 229,
+ "nal" => 230, "opé" => 231, "r d" => 232, "ra " => 233, "rai" => 234,
+ "ror" => 235, "s r" => 236, "tat" => 237, "uté" => 238, "à l" => 239,
+ " af" => 240, "anc" => 241, "ara" => 242, "art" => 243, "bre" => 244,
+ "ché" => 245, "dre" => 246, "e f" => 247, "ens" => 248, "lem" => 249,
+ "n r" => 250, "n t" => 251, "ndr" => 252, "nne" => 253, "onn" => 254,
+ "pos" => 255, "s t" => 256, "tiq" => 257, "ure" => 258, " tu" => 259,
+ "ale" => 260, "and" => 261, "ave" => 262, "cla" => 263, "cou" => 264,
+ "e n" => 265, "emb" => 266, "ins" => 267, "jou" => 268, "mme" => 269,
+ "rie" => 270, "rès" => 271, "sem" => 272, "str" => 273, "t i" => 274,
+ "ues" => 275, "uni" => 276, "uve" => 277, "é d" => 278, "ée " => 279,
+ " ch" => 280, " do" => 281, " eu" => 282, " fa" => 283, " lo" => 284,
+ " ne" => 285, " ra" => 286, "arl" => 287, "att" => 288, "ec " => 289,
+ "ica" => 290, "l a" => 291, "l'o" => 292, "l'é" => 293, "mmi" => 294,
+ "nta" => 295, "orm" => 296, "ou " => 297, "r u" => 298, "rle" => 299
+ );
+
+
+ $my_arr = $this->x->_lang_db['french'];
+
+ foreach ($safe_model as $key => $value) {
+ $this->assertTrue(isset($my_arr[$key]),$key);
+ if (isset($my_arr[$key])) {
+ $this->assertEquals($value, $my_arr[$key], $key);
+ }
+ }
+ }
+
+ function test_english_db ()
+ {
+
+ $realdb = array(
+ " th" => 0, "the" => 1, "he " => 2, "ed " => 3, " to" => 4,
+ " in" => 5, "er " => 6, "ing" => 7, "ng " => 8, " an" => 9,
+ "nd " => 10, " of" => 11, "and" => 12, "to " => 13, "of " => 14,
+ " co" => 15, "at " => 16, "on " => 17, "in " => 18, " a " => 19,
+ "d t" => 20, " he" => 21, "e t" => 22, "ion" => 23, "es " => 24,
+ " re" => 25, "re " => 26, "hat" => 27, " sa" => 28, " st" => 29,
+ " ha" => 30, "her" => 31, "tha" => 32, "tio" => 33, "or " => 34,
+ " ''" => 35, "en " => 36, " wh" => 37, "e s" => 38, "ent" => 39,
+ "n t" => 40, "s a" => 41, "as " => 42, "for" => 43, "is " => 44,
+ "t t" => 45, " be" => 46, "ld " => 47, "e a" => 48, "rs " => 49,
+ " wa" => 50, "ut " => 51, "ve " => 52, "ll " => 53, "al " => 54,
+ " ma" => 55, "e i" => 56, " fo" => 57, "'s " => 58, "an " => 59,
+ "est" => 60, " hi" => 61, " mo" => 62, " se" => 63, " pr" => 64,
+ "s t" => 65, "ate" => 66, "st " => 67, "ter" => 68, "ere" => 69,
+ "ted" => 70, "nt " => 71, "ver" => 72, "d a" => 73, " wi" => 74,
+ "se " => 75, "e c" => 76, "ect" => 77, "ns " => 78, " on" => 79,
+ "ly " => 80, "tol" => 81, "ey " => 82, "r t" => 83, " ca" => 84,
+ "ati" => 85, "ts " => 86, "all" => 87, " no" => 88, "his" => 89,
+ "s o" => 90, "ers" => 91, "con" => 92, "e o" => 93, "ear" => 94,
+ "f t" => 95, "e w" => 96, "was" => 97, "ons" => 98, "sta" => 99,
+ "'' " => 100, "sti" => 101, "n a" => 102, "sto" => 103, "t h" => 104,
+ " we" => 105, "id " => 106, "th " => 107, " it" => 108, "ce " => 109,
+ " di" => 110, "ave" => 111, "d h" => 112, "cou" => 113, "pro" => 114,
+ "ad " => 115, "oll" => 116, "ry " => 117, "d s" => 118, "e m" => 119,
+ " so" => 120, "ill" => 121, "cti" => 122, "te " => 123, "tor" => 124,
+ "eve" => 125, "g t" => 126, "it " => 127, " ch" => 128, " de" => 129,
+ "hav" => 130, "oul" => 131, "ty " => 132, "uld" => 133, "use" => 134,
+ " al" => 135, "are" => 136, "ch " => 137, "me " => 138, "out" => 139,
+ "ove" => 140, "wit" => 141, "ys " => 142, "chi" => 143, "t a" => 144,
+ "ith" => 145, "oth" => 146, " ab" => 147, " te" => 148, " wo" => 149,
+ "s s" => 150, "res" => 151, "t w" => 152, "tin" => 153, "e b" => 154,
+ "e h" => 155, "nce" => 156, "t s" => 157, "y t" => 158, "e p" => 159,
+ "ele" => 160, "hin" => 161, "s i" => 162, "nte" => 163, " li" => 164,
+ "le " => 165, " do" => 166, "aid" => 167, "hey" => 168, "ne " => 169,
+ "s w" => 170, " as" => 171, " fr" => 172, " tr" => 173, "end" => 174,
+ "sai" => 175, " el" => 176, " ne" => 177, " su" => 178, "'t " => 179,
+ "ay " => 180, "hou" => 181, "ive" => 182, "lec" => 183, "n't" => 184,
+ " ye" => 185, "but" => 186, "d o" => 187, "o t" => 188, "y o" => 189,
+ " ho" => 190, " me" => 191, "be " => 192, "cal" => 193, "e e" => 194,
+ "had" => 195, "ple" => 196, " at" => 197, " bu" => 198, " la" => 199,
+ "d b" => 200, "s h" => 201, "say" => 202, "t i" => 203, " ar" => 204,
+ "e f" => 205, "ght" => 206, "hil" => 207, "igh" => 208, "int" => 209,
+ "not" => 210, "ren" => 211, " is" => 212, " pa" => 213, " sh" => 214,
+ "ays" => 215, "com" => 216, "n s" => 217, "r a" => 218, "rin" => 219,
+ "y a" => 220, " un" => 221, "n c" => 222, "om " => 223, "thi" => 224,
+ " mi" => 225, "by " => 226, "d i" => 227, "e d" => 228, "e n" => 229,
+ "t o" => 230, " by" => 231, "e r" => 232, "eri" => 233, "old" => 234,
+ "ome" => 235, "whe" => 236, "yea" => 237, " gr" => 238, "ar " => 239,
+ "ity" => 240, "mpl" => 241, "oun" => 242, "one" => 243, "ow " => 244,
+ "r s" => 245, "s f" => 246, "tat" => 247, " ba" => 248, " vo" => 249,
+ "bou" => 250, "sam" => 251, "tim" => 252, "vot" => 253, "abo" => 254,
+ "ant" => 255, "ds " => 256, "ial" => 257, "ine" => 258, "man" => 259,
+ "men" => 260, " or" => 261, " po" => 262, "amp" => 263, "can" => 264,
+ "der" => 265, "e l" => 266, "les" => 267, "ny " => 268, "ot " => 269,
+ "rec" => 270, "tes" => 271, "tho" => 272, "ica" => 273, "ild" => 274,
+ "ir " => 275, "nde" => 276, "ose" => 277, "ous" => 278, "pre" => 279,
+ "ste" => 280, "era" => 281, "per" => 282, "r o" => 283, "red" => 284,
+ "rie" => 285, " bo" => 286, " le" => 287, "ali" => 288, "ars" => 289,
+ "ore" => 290, "ric" => 291, "s m" => 292, "str" => 293, " fa" => 294,
+ "ess" => 295, "ie " => 296, "ist" => 297, "lat" => 298, "uri" => 299,
+ );
+
+ $mod = $this->x->_lang_db['english'];
+
+ foreach ($realdb as $key => $value) {
+ $this->assertTrue(isset($mod[$key]), $key);
+ if (isset($mod[$key])) {
+ $this->assertEquals($value, $mod[$key], $key);
+ }
+ }
+
+ foreach ($mod as $key => $value) {
+ $this->assertTrue(isset($realdb[$key]));
+ if (isset($realdb[$key])) {
+ $this->assertEquals($value, $realdb[$key], $key);
+ }
+ }
+ }
+
+ function test_confidence ()
+ {
+ $str = 'The next thing to notice is the Content-length header. The Content-length header notifies the server of the size of the data that you intend to send. This prevents unexpected end-of-data errors from the server when dealing with binary data, because the server will read the specified number of bytes from the data stream regardless of any spurious end-of-data characters.';
+
+ $result = $this->x->detectConfidence($str);
+
+ $this->assertEquals(3, count($result));
+ $this->assertTrue(isset($result['language']), 'language');
+ $this->assertTrue(isset($result['similarity']), 'similarity');
+ $this->assertTrue(isset($result['confidence']), 'confidence');
+ $this->assertEquals('english', $result['language']);
+ $this->assertTrue($result['similarity'] <= 300 && $result['similarity'] >= 0, $result['similarity']);
+ $this->assertTrue($result['confidence'] <= 1 && $result['confidence'] >= 0, $result['confidence']);
+
+ // todo: tests for Danish and Norwegian should have lower confidence
+ }
+
+ function test_long_example ()
+ {
+ // an example that is more than 300 trigrams long
+ $str = 'The Italian Renaissance began the opening phase of the Renaissance, a period of great cultural change and achievement from the 14th to the 16th century. The word renaissance means "rebirth," and the era is best known for the renewed interest in the culture of classical antiquity. The Italian Renaissance began in northern Italy, centering in Florence. It then spread south, having an especially significant impact on Rome, which was largely rebuilt by the Renaissance popes. The Italian Renaissance is best known for its cultural achievements. This includes works of literature by such figures as Petrarch, Castiglione, and Machiavelli; artists such as Michaelangelo and Leonardo da Vinci, and great works of architecture such as The Duomo in Florence and St. Peter\'s Basilica in Rome. At the same time, present-day historians also see the era as one of economic regression and of little progress in science. Furthermore, some historians argue that the lot of the peasants and urban poor, the majority of the population, worsened during this period.';
+
+ $this->x->setPerlCompatible();
+ $tri = $this->x->_trigram($str);
+
+ $exp_tri = array(
+ ' th',
+ 'the',
+ 'he ',
+ ' an',
+ ' re',
+ ' of',
+ 'ce ',
+ 'nce',
+ 'of ',
+ 'ren',
+ ' in',
+ 'and',
+ 'nd ',
+ 'an ',
+ 'san',
+ ' it',
+ 'ais',
+ 'anc',
+ 'ena',
+ 'in ',
+ 'iss',
+ 'nai',
+ 'ssa',
+ 'tur',
+ ' pe',
+ 'as ',
+ 'ch ',
+ 'ent',
+ 'ian',
+ 'me ',
+ 'n r',
+ 'res',
+ ' as',
+ ' be',
+ ' wo',
+ 'at ',
+ 'chi',
+ 'e i',
+ 'e o',
+ 'e p',
+ 'gre',
+ 'his',
+ 'ing',
+ 'is ',
+ 'ita',
+ 'n f',
+ 'ng ',
+ 're ',
+ 's a',
+ 'st ',
+ 'tal',
+ 'ter',
+ 'th ',
+ 'ts ',
+ 'ure',
+ 'wor',
+ ' ar',
+ ' cu',
+ ' po',
+ ' su',
+ 'ach',
+ 'al ',
+ 'ali',
+ 'ans',
+ 'ant',
+ 'cul',
+ 'e b',
+ 'e r',
+ 'e t',
+ 'enc',
+ 'era',
+ 'eri',
+ 'es ',
+ 'est',
+ 'f t',
+ 'ica',
+ 'ion',
+ 'ist',
+ 'lia',
+ 'ltu',
+ 'ly ',
+ 'ns ',
+ 'nt ',
+ 'ome',
+ 'on ',
+ 'or ',
+ 'ore',
+ 'ori',
+ 'rea',
+ 'rom',
+ 'rth',
+ 's b',
+ 's o',
+ 'suc',
+ 't t',
+ 'uch',
+ 'ult',
+ ' ac',
+ ' by',
+ ' ce',
+ ' da',
+ ' du',
+ ' er',
+ ' fl',
+ ' fo',
+ ' gr',
+ ' hi',
+ ' is',
+ ' kn',
+ ' li',
+ ' ma',
+ ' on',
+ ' pr',
+ ' ro',
+ ' so',
+ 'a i',
+ 'ang',
+ 'arc',
+ 'arg',
+ 'beg',
+ 'bes',
+ 'by ',
+ 'cen',
+ 'cha',
+ 'd o',
+ 'd s',
+ 'e a',
+ 'e e',
+ 'e m',
+ 'e s',
+ 'eat',
+ 'ed ',
+ 'ega',
+ 'eme',
+ 'ene',
+ 'ess',
+ 'eve',
+ 'f l',
+ 'flo',
+ 'for',
+ 'gan',
+ 'gel',
+ 'h a',
+ 'her',
+ 'hie',
+ 'ich',
+ 'iev',
+ 'inc',
+ 'iod',
+ 'ite',
+ 'ity',
+ 'kno',
+ 'ks ',
+ 'l a',
+ 'lit',
+ 'lor',
+ 'men',
+ 'mic',
+ 'n i',
+ 'n s',
+ 'n t',
+ 'ne ',
+ 'nge',
+ 'now',
+ 'nte',
+ 'nts',
+ 'od ',
+ 'one',
+ 'ope',
+ 'ork',
+ 'own',
+ 'per',
+ 'pet',
+ 'pop',
+ 'pre',
+ 'ra ',
+ 'ral',
+ 'rch',
+ 'reb',
+ 'ria',
+ 'rin',
+ 'rio',
+ 'rks',
+ 's i',
+ 's p',
+ 'sen',
+ 'ssi',
+ 'sto',
+ 't i',
+ 't k',
+ 't o',
+ 'thi',
+ 'tor',
+ 'ty ',
+ 'ura',
+ 'vem',
+ 'vin',
+ 'wn ',
+ 'y s',
+ ' a ',
+ ' al',
+ ' at',
+ ' ba',
+ ' ca',
+ ' ch',
+ ' cl',
+ ' ec',
+ ' es',
+ ' fi',
+ ' fr',
+ ' fu',
+ ' ha',
+ ' im',
+ ' la',
+ ' le',
+ ' lo',
+ ' me',
+ ' mi',
+ ' no',
+ ' op',
+ ' ph',
+ ' sa',
+ ' sc',
+ ' se',
+ ' si',
+ ' sp',
+ ' st',
+ ' ti',
+ ' to',
+ ' ur',
+ ' vi',
+ ' wa',
+ ' wh',
+ '\'s ',
+ 'a a',
+ 'a p',
+ 'a v',
+ 'act',
+ 'ad ',
+ 'ael',
+ 'ajo',
+ 'all',
+ 'als',
+ 'aly',
+ 'ame',
+ 'ard',
+ 'art',
+ 'asa',
+ 'ase',
+ 'asi',
+ 'ass',
+ 'ast',
+ 'ati',
+ 'atu',
+ 'ave',
+ 'avi',
+ 'ay ',
+ 'ban',
+ 'bas',
+ 'bir',
+ 'bui',
+ 'c r',
+ 'ca ',
+ 'cal',
+ 'can',
+ 'cas',
+ 'ci ',
+ 'cia',
+ 'cie',
+ 'cla',
+ 'clu',
+ 'con',
+ 'ct ',
+ 'ctu',
+ 'd a',
+ 'd d',
+ 'd g',
+ 'd i',
+ 'd l',
+ 'd m',
+ 'd r',
+ 'd t',
+ 'd u',
+ 'da ',
+ 'day',
+ 'des',
+ 'do ',
+ 'duo',
+ 'dur',
+ 'e c',
+ 'e d',
+ 'e h',
+ 'e l',
+ 'e w',
+ 'ead',
+ 'ean',
+ 'eas',
+ 'ebi',
+ 'ebu',
+ 'eci',
+ 'eco',
+ 'ect',
+ 'ee ',
+ 'egr',
+ 'ela',
+ 'ell',
+ 'elo',
+ 'ely',
+ 'en ',
+ 'eni',
+ 'eon',
+ 'er\'',
+ 'ere',
+ 'erm',
+ 'ern',
+ 'ese',
+ 'esp',
+ 'ete',
+ 'etr',
+ 'ewe',
+ 'f a',
+ 'f c',
+ 'f e',
+ 'f g',
+ 'fic',
+ 'fig',
+ 'fro',
+ 'fur',
+ 'g a',
+ 'g i',
+ 'g p',
+ 'g t',
+ 'ge ',
+ 'gli',
+ 'gni',
+ 'gue',
+ 'gur',
+ 'h c',
+ 'h f',
+ 'h t',
+ 'h w',
+ 'hae',
+ 'han',
+ 'has',
+ 'hat',
+ 'hav',
+ 'hen',
+ 'hia',
+ 'hic',
+ 'hit',
+ 'ial',
+ 'iav',
+ 'ic ',
+ 'ien',
+ 'ifi',
+ 'igl',
+ 'ign',
+ 'igu',
+ 'ili',
+ 'ilt',
+ 'ime',
+ 'imp',
+ 'int',
+ 'iqu',
+ 'irt',
+ 'it ',
+ 'its',
+ 'itt',
+ 'jor',
+ 'l c',
+ 'lan',
+ 'lar',
+ 'las',
+ 'lat',
+ 'le ',
+ 'leo',
+ 'li ',
+ 'lic',
+ 'lio',
+ 'lli',
+ 'lly',
+ 'lo ',
+ 'lot',
+ 'lso',
+ 'lt ',
+ 'lud',
+ 'm t',
+ 'mac',
+ 'maj',
+ 'mea',
+ 'mo ',
+ 'mor',
+ 'mpa',
+ 'n a',
+ 'n e',
+ 'n n',
+ 'n p',
+ 'nar',
+ 'nci',
+ 'ncl',
+ 'ned',
+ 'new',
+ 'nif',
+ 'nin',
+ 'nom',
+ 'nor',
+ 'nti',
+ 'ntu',
+ 'o a',
+ 'o d',
+ 'o i',
+ 'o s',
+ 'o t',
+ 'ogr',
+ 'om ',
+ 'omi',
+ 'omo',
+ 'ona',
+ 'ono',
+ 'oor',
+ 'opu',
+ 'ord',
+ 'ors',
+ 'ort',
+ 'ot ',
+ 'out',
+ 'pac',
+ 'pea',
+ 'pec',
+ 'pen',
+ 'pes',
+ 'pha',
+ 'poo',
+ 'pro',
+ 'pul',
+ 'qui',
+ 'r i',
+ 'r t',
+ 'r\'s',
+ 'rar',
+ 'rat',
+ 'rba',
+ 'rd ',
+ 'rdo',
+ 'reg',
+ 'rge',
+ 'rgu',
+ 'rit',
+ 'rmo',
+ 'rn ',
+ 'rog',
+ 'rse',
+ 'rti',
+ 'ry ',
+ 's c',
+ 's l',
+ 's m',
+ 's s',
+ 's t',
+ 's w',
+ 'sam',
+ 'sci',
+ 'se ',
+ 'see',
+ 'sic',
+ 'sig',
+ 'sil',
+ 'sio',
+ 'so ',
+ 'som',
+ 'sou',
+ 'spe',
+ 'spr',
+ 'ss ',
+ 'sti',
+ 'sts',
+ 't b',
+ 't c',
+ 't d',
+ 't f',
+ 't w',
+ 'tec',
+ 'tha',
+ 'tig',
+ 'tim',
+ 'tio',
+ 'tiq',
+ 'tis',
+ 'tle',
+ 'to ',
+ 'tra',
+ 'ttl',
+ 'ude',
+ 'ue ',
+ 'uil',
+ 'uit',
+ 'ula',
+ 'uom',
+ 'urb',
+ 'uri',
+ 'urt',
+ 'ury',
+ 'uth',
+ 'vel',
+ 'was',
+ 'wed',
+ 'whi',
+ 'y h',
+ 'y o',
+ 'y r',
+ 'y t'
+ );
+
+ $differences = array_diff(array_keys($tri), $exp_tri);
+ $this->assertEquals(0, count($differences));
+ $this->assertEquals(0, count(array_diff($exp_tri, array_keys($tri))));
+ $this->assertEquals(count($exp_tri), count($tri));
+ //print_r(array_diff($exp_tri, array_keys($tri)));
+ //print_r(array_diff(array_keys($tri), $exp_tri));
+
+ // tests the bubble sort mechanism
+ $this->x->_bub_sort($tri);
+ $this->assertEquals($exp_tri, array_keys($tri));
+
+ $true_differences = array(
+ "cas" => array('change' => 300, 'baserank' => 265, 'refrank' => null), "s i" => array('change' => 21, 'baserank' => 183, 'refrank' => 162),
+ "e b" => array('change' => 88, 'baserank' => 66, 'refrank' => 154), "ent" => array('change' => 12, 'baserank' => 27, 'refrank' => 39),
+ "ome" => array('change' => 152, 'baserank' => 83, 'refrank' => 235), "ral" => array('change' => 300, 'baserank' => 176, 'refrank' => null),
+ "ita" => array('change' => 300, 'baserank' => 44, 'refrank' => null), "bas" => array('change' => 300, 'baserank' => 258, 'refrank' => null),
+ " ar" => array('change' => 148, 'baserank' => 56, 'refrank' => 204), " in" => array('change' => 5, 'baserank' => 10, 'refrank' => 5),
+ " ti" => array('change' => 300, 'baserank' => 227, 'refrank' => null), "ty " => array('change' => 61, 'baserank' => 193, 'refrank' => 132),
+ "tur" => array('change' => 300, 'baserank' => 23, 'refrank' => null), "iss" => array('change' => 300, 'baserank' => 20, 'refrank' => null),
+ "ria" => array('change' => 300, 'baserank' => 179, 'refrank' => null), " me" => array('change' => 25, 'baserank' => 216, 'refrank' => 191),
+ "t k" => array('change' => 300, 'baserank' => 189, 'refrank' => null), " es" => array('change' => 300, 'baserank' => 207, 'refrank' => null),
+ "ren" => array('change' => 202, 'baserank' => 9, 'refrank' => 211), "in " => array('change' => 1, 'baserank' => 19, 'refrank' => 18),
+ "ly " => array('change' => 0, 'baserank' => 80, 'refrank' => 80), "st " => array('change' => 18, 'baserank' => 49, 'refrank' => 67),
+ "ne " => array('change' => 8, 'baserank' => 161, 'refrank' => 169), "all" => array('change' => 154, 'baserank' => 241, 'refrank' => 87),
+ "vin" => array('change' => 300, 'baserank' => 196, 'refrank' => null), " op" => array('change' => 300, 'baserank' => 219, 'refrank' => null),
+ "chi" => array('change' => 107, 'baserank' => 36, 'refrank' => 143), "e w" => array('change' => 197, 'baserank' => 293, 'refrank' => 96),
+ " ro" => array('change' => 300, 'baserank' => 113, 'refrank' => null), "act" => array('change' => 300, 'baserank' => 237, 'refrank' => null),
+ "d r" => array('change' => 300, 'baserank' => 280, 'refrank' => null), "nt " => array('change' => 11, 'baserank' => 82, 'refrank' => 71),
+ "can" => array('change' => 0, 'baserank' => 264, 'refrank' => 264), "rea" => array('change' => 300, 'baserank' => 88, 'refrank' => null),
+ "ssa" => array('change' => 300, 'baserank' => 22, 'refrank' => null), " fo" => array('change' => 47, 'baserank' => 104, 'refrank' => 57),
+ "eas" => array('change' => 300, 'baserank' => 296, 'refrank' => null), "mic" => array('change' => 300, 'baserank' => 157, 'refrank' => null),
+ "cul" => array('change' => 300, 'baserank' => 65, 'refrank' => null), " an" => array('change' => 6, 'baserank' => 3, 'refrank' => 9),
+ "n t" => array('change' => 120, 'baserank' => 160, 'refrank' => 40), "arg" => array('change' => 300, 'baserank' => 118, 'refrank' => null),
+ " it" => array('change' => 93, 'baserank' => 15, 'refrank' => 108), "ebi" => array('change' => 300, 'baserank' => 297, 'refrank' => null),
+ " re" => array('change' => 21, 'baserank' => 4, 'refrank' => 25), "res" => array('change' => 120, 'baserank' => 31, 'refrank' => 151),
+ " be" => array('change' => 13, 'baserank' => 33, 'refrank' => 46), "rom" => array('change' => 300, 'baserank' => 89, 'refrank' => null),
+ "'s " => array('change' => 175, 'baserank' => 233, 'refrank' => 58), "arc" => array('change' => 300, 'baserank' => 117, 'refrank' => null),
+ " su" => array('change' => 119, 'baserank' => 59, 'refrank' => 178), "s p" => array('change' => 300, 'baserank' => 184, 'refrank' => null),
+ "ich" => array('change' => 300, 'baserank' => 145, 'refrank' => null), "d d" => array('change' => 300, 'baserank' => 275, 'refrank' => null),
+ "cal" => array('change' => 70, 'baserank' => 263, 'refrank' => 193), "ci " => array('change' => 300, 'baserank' => 266, 'refrank' => null),
+ "ssi" => array('change' => 300, 'baserank' => 186, 'refrank' => null), "bes" => array('change' => 300, 'baserank' => 120, 'refrank' => null),
+ "des" => array('change' => 300, 'baserank' => 285, 'refrank' => null), "e s" => array('change' => 91, 'baserank' => 129, 'refrank' => 38),
+ "ch " => array('change' => 111, 'baserank' => 26, 'refrank' => 137), "san" => array('change' => 300, 'baserank' => 14, 'refrank' => null),
+ "asi" => array('change' => 300, 'baserank' => 249, 'refrank' => null), "ajo" => array('change' => 300, 'baserank' => 240, 'refrank' => null),
+ "ase" => array('change' => 300, 'baserank' => 248, 'refrank' => null), " wa" => array('change' => 181, 'baserank' => 231, 'refrank' => 50),
+ "vem" => array('change' => 300, 'baserank' => 195, 'refrank' => null), "ed " => array('change' => 128, 'baserank' => 131, 'refrank' => 3),
+ "ant" => array('change' => 191, 'baserank' => 64, 'refrank' => 255), "a p" => array('change' => 300, 'baserank' => 235, 'refrank' => null),
+ "lor" => array('change' => 300, 'baserank' => 155, 'refrank' => null), "kno" => array('change' => 300, 'baserank' => 151, 'refrank' => null),
+ "ais" => array('change' => 300, 'baserank' => 16, 'refrank' => null), " pe" => array('change' => 300, 'baserank' => 24, 'refrank' => null),
+ "or " => array('change' => 51, 'baserank' => 85, 'refrank' => 34), "e i" => array('change' => 19, 'baserank' => 37, 'refrank' => 56),
+ " sp" => array('change' => 300, 'baserank' => 225, 'refrank' => null), "ad " => array('change' => 123, 'baserank' => 238, 'refrank' => 115),
+ " kn" => array('change' => 300, 'baserank' => 108, 'refrank' => null), "ega" => array('change' => 300, 'baserank' => 132, 'refrank' => null),
+ " ba" => array('change' => 46, 'baserank' => 202, 'refrank' => 248), "d t" => array('change' => 261, 'baserank' => 281, 'refrank' => 20),
+ "ork" => array('change' => 300, 'baserank' => 169, 'refrank' => null), "lia" => array('change' => 300, 'baserank' => 78, 'refrank' => null),
+ "ard" => array('change' => 300, 'baserank' => 245, 'refrank' => null), "iev" => array('change' => 300, 'baserank' => 146, 'refrank' => null),
+ "of " => array('change' => 6, 'baserank' => 8, 'refrank' => 14), " cu" => array('change' => 300, 'baserank' => 57, 'refrank' => null),
+ "day" => array('change' => 300, 'baserank' => 284, 'refrank' => null), "cen" => array('change' => 300, 'baserank' => 122, 'refrank' => null),
+ "re " => array('change' => 21, 'baserank' => 47, 'refrank' => 26), "ist" => array('change' => 220, 'baserank' => 77, 'refrank' => 297),
+ " fl" => array('change' => 300, 'baserank' => 103, 'refrank' => null), "anc" => array('change' => 300, 'baserank' => 17, 'refrank' => null),
+ "at " => array('change' => 19, 'baserank' => 35, 'refrank' => 16), "rch" => array('change' => 300, 'baserank' => 177, 'refrank' => null),
+ "ang" => array('change' => 300, 'baserank' => 116, 'refrank' => null), " mi" => array('change' => 8, 'baserank' => 217, 'refrank' => 225),
+ "y s" => array('change' => 300, 'baserank' => 198, 'refrank' => null), "ca " => array('change' => 300, 'baserank' => 262, 'refrank' => null),
+ " ma" => array('change' => 55, 'baserank' => 110, 'refrank' => 55), " lo" => array('change' => 300, 'baserank' => 215, 'refrank' => null),
+ "rin" => array('change' => 39, 'baserank' => 180, 'refrank' => 219), " im" => array('change' => 300, 'baserank' => 212, 'refrank' => null),
+ " er" => array('change' => 300, 'baserank' => 102, 'refrank' => null), "ce " => array('change' => 103, 'baserank' => 6, 'refrank' => 109),
+ "bui" => array('change' => 300, 'baserank' => 260, 'refrank' => null), "lit" => array('change' => 300, 'baserank' => 154, 'refrank' => null),
+ "iod" => array('change' => 300, 'baserank' => 148, 'refrank' => null), "ame" => array('change' => 300, 'baserank' => 244, 'refrank' => null),
+ "ter" => array('change' => 17, 'baserank' => 51, 'refrank' => 68), "e a" => array('change' => 78, 'baserank' => 126, 'refrank' => 48),
+ "f l" => array('change' => 300, 'baserank' => 137, 'refrank' => null), "eri" => array('change' => 162, 'baserank' => 71, 'refrank' => 233),
+ "ra " => array('change' => 300, 'baserank' => 175, 'refrank' => null), "ng " => array('change' => 38, 'baserank' => 46, 'refrank' => 8),
+ "d i" => array('change' => 50, 'baserank' => 277, 'refrank' => 227), "asa" => array('change' => 300, 'baserank' => 247, 'refrank' => null),
+ "wn " => array('change' => 300, 'baserank' => 197, 'refrank' => null), " at" => array('change' => 4, 'baserank' => 201, 'refrank' => 197),
+ "now" => array('change' => 300, 'baserank' => 163, 'refrank' => null), " by" => array('change' => 133, 'baserank' => 98, 'refrank' => 231),
+ "n s" => array('change' => 58, 'baserank' => 159, 'refrank' => 217), " li" => array('change' => 55, 'baserank' => 109, 'refrank' => 164),
+ "l a" => array('change' => 300, 'baserank' => 153, 'refrank' => null), "da " => array('change' => 300, 'baserank' => 283, 'refrank' => null),
+ "ean" => array('change' => 300, 'baserank' => 295, 'refrank' => null), "tal" => array('change' => 300, 'baserank' => 50, 'refrank' => null),
+ "d a" => array('change' => 201, 'baserank' => 274, 'refrank' => 73), "ct " => array('change' => 300, 'baserank' => 272, 'refrank' => null),
+ "ali" => array('change' => 226, 'baserank' => 62, 'refrank' => 288), "ian" => array('change' => 300, 'baserank' => 28, 'refrank' => null),
+ " sa" => array('change' => 193, 'baserank' => 221, 'refrank' => 28), "do " => array('change' => 300, 'baserank' => 286, 'refrank' => null),
+ "t o" => array('change' => 40, 'baserank' => 190, 'refrank' => 230), "ure" => array('change' => 300, 'baserank' => 54, 'refrank' => null),
+ "e c" => array('change' => 213, 'baserank' => 289, 'refrank' => 76), "ing" => array('change' => 35, 'baserank' => 42, 'refrank' => 7),
+ "d o" => array('change' => 63, 'baserank' => 124, 'refrank' => 187), " ha" => array('change' => 181, 'baserank' => 211, 'refrank' => 30),
+ "ts " => array('change' => 33, 'baserank' => 53, 'refrank' => 86), "rth" => array('change' => 300, 'baserank' => 90, 'refrank' => null),
+ "cla" => array('change' => 300, 'baserank' => 269, 'refrank' => null), " ac" => array('change' => 300, 'baserank' => 97, 'refrank' => null),
+ "th " => array('change' => 55, 'baserank' => 52, 'refrank' => 107), "rio" => array('change' => 300, 'baserank' => 181, 'refrank' => null),
+ "al " => array('change' => 7, 'baserank' => 61, 'refrank' => 54), "sto" => array('change' => 84, 'baserank' => 187, 'refrank' => 103),
+ "e o" => array('change' => 55, 'baserank' => 38, 'refrank' => 93), "bir" => array('change' => 300, 'baserank' => 259, 'refrank' => null),
+ " pr" => array('change' => 48, 'baserank' => 112, 'refrank' => 64), " le" => array('change' => 73, 'baserank' => 214, 'refrank' => 287),
+ "nai" => array('change' => 300, 'baserank' => 21, 'refrank' => null), "t i" => array('change' => 15, 'baserank' => 188, 'refrank' => 203),
+ " po" => array('change' => 204, 'baserank' => 58, 'refrank' => 262), "f t" => array('change' => 21, 'baserank' => 74, 'refrank' => 95),
+ "ban" => array('change' => 300, 'baserank' => 257, 'refrank' => null), "an " => array('change' => 46, 'baserank' => 13, 'refrank' => 59),
+ "wor" => array('change' => 300, 'baserank' => 55, 'refrank' => null), "pet" => array('change' => 300, 'baserank' => 172, 'refrank' => null),
+ "ael" => array('change' => 300, 'baserank' => 239, 'refrank' => null), "ura" => array('change' => 300, 'baserank' => 194, 'refrank' => null),
+ "eve" => array('change' => 11, 'baserank' => 136, 'refrank' => 125), "ion" => array('change' => 53, 'baserank' => 76, 'refrank' => 23),
+ "nge" => array('change' => 300, 'baserank' => 162, 'refrank' => null), "cha" => array('change' => 300, 'baserank' => 123, 'refrank' => null),
+ "ity" => array('change' => 90, 'baserank' => 150, 'refrank' => 240), " se" => array('change' => 160, 'baserank' => 223, 'refrank' => 63),
+ " on" => array('change' => 32, 'baserank' => 111, 'refrank' => 79), "s b" => array('change' => 300, 'baserank' => 91, 'refrank' => null),
+ "ans" => array('change' => 300, 'baserank' => 63, 'refrank' => null), "own" => array('change' => 300, 'baserank' => 170, 'refrank' => null),
+ " si" => array('change' => 300, 'baserank' => 224, 'refrank' => null), "e r" => array('change' => 165, 'baserank' => 67, 'refrank' => 232),
+ "est" => array('change' => 13, 'baserank' => 73, 'refrank' => 60), "hie" => array('change' => 300, 'baserank' => 144, 'refrank' => null),
+ "aly" => array('change' => 300, 'baserank' => 243, 'refrank' => null), "and" => array('change' => 1, 'baserank' => 11, 'refrank' => 12),
+ "beg" => array('change' => 300, 'baserank' => 119, 'refrank' => null), "dur" => array('change' => 300, 'baserank' => 288, 'refrank' => null),
+ "reb" => array('change' => 300, 'baserank' => 178, 'refrank' => null), "e e" => array('change' => 67, 'baserank' => 127, 'refrank' => 194),
+ "men" => array('change' => 104, 'baserank' => 156, 'refrank' => 260), " la" => array('change' => 14, 'baserank' => 213, 'refrank' => 199),
+ "con" => array('change' => 179, 'baserank' => 271, 'refrank' => 92), " fu" => array('change' => 300, 'baserank' => 210, 'refrank' => null),
+ "e l" => array('change' => 26, 'baserank' => 292, 'refrank' => 266), "s a" => array('change' => 7, 'baserank' => 48, 'refrank' => 41),
+ "art" => array('change' => 300, 'baserank' => 246, 'refrank' => null), "ltu" => array('change' => 300, 'baserank' => 79, 'refrank' => null),
+ "a i" => array('change' => 300, 'baserank' => 115, 'refrank' => null), "ctu" => array('change' => 300, 'baserank' => 273, 'refrank' => null),
+ "tor" => array('change' => 68, 'baserank' => 192, 'refrank' => 124), "ach" => array('change' => 300, 'baserank' => 60, 'refrank' => null),
+ "d g" => array('change' => 300, 'baserank' => 276, 'refrank' => null), "od " => array('change' => 300, 'baserank' => 166, 'refrank' => null),
+ "nte" => array('change' => 1, 'baserank' => 164, 'refrank' => 163), "ena" => array('change' => 300, 'baserank' => 18, 'refrank' => null),
+ "d l" => array('change' => 300, 'baserank' => 278, 'refrank' => null), "ene" => array('change' => 300, 'baserank' => 134, 'refrank' => null),
+ "e h" => array('change' => 136, 'baserank' => 291, 'refrank' => 155), "era" => array('change' => 211, 'baserank' => 70, 'refrank' => 281),
+ "on " => array('change' => 67, 'baserank' => 84, 'refrank' => 17), " ce" => array('change' => 300, 'baserank' => 99, 'refrank' => null),
+ "ay " => array('change' => 76, 'baserank' => 256, 'refrank' => 180), " da" => array('change' => 300, 'baserank' => 100, 'refrank' => null),
+ "ori" => array('change' => 300, 'baserank' => 87, 'refrank' => null), "atu" => array('change' => 300, 'baserank' => 253, 'refrank' => null),
+ "ave" => array('change' => 143, 'baserank' => 254, 'refrank' => 111), "rks" => array('change' => 300, 'baserank' => 182, 'refrank' => null),
+ "e d" => array('change' => 62, 'baserank' => 290, 'refrank' => 228), "ns " => array('change' => 3, 'baserank' => 81, 'refrank' => 78),
+ " ca" => array('change' => 119, 'baserank' => 203, 'refrank' => 84), "d s" => array('change' => 7, 'baserank' => 125, 'refrank' => 118),
+ "uch" => array('change' => 300, 'baserank' => 95, 'refrank' => null), "a v" => array('change' => 300, 'baserank' => 236, 'refrank' => null),
+ "nce" => array('change' => 149, 'baserank' => 7, 'refrank' => 156), "his" => array('change' => 48, 'baserank' => 41, 'refrank' => 89),
+ "flo" => array('change' => 300, 'baserank' => 138, 'refrank' => null), "ead" => array('change' => 300, 'baserank' => 294, 'refrank' => null),
+ " vi" => array('change' => 300, 'baserank' => 230, 'refrank' => null), "me " => array('change' => 109, 'baserank' => 29, 'refrank' => 138),
+ "suc" => array('change' => 300, 'baserank' => 93, 'refrank' => null), "e p" => array('change' => 120, 'baserank' => 39, 'refrank' => 159),
+ "eci" => array('change' => 300, 'baserank' => 299, 'refrank' => null), "eme" => array('change' => 300, 'baserank' => 133, 'refrank' => null),
+ "sen" => array('change' => 300, 'baserank' => 185, 'refrank' => null), "ks " => array('change' => 300, 'baserank' => 152, 'refrank' => null),
+ " to" => array('change' => 224, 'baserank' => 228, 'refrank' => 4), " gr" => array('change' => 133, 'baserank' => 105, 'refrank' => 238),
+ " ch" => array('change' => 76, 'baserank' => 204, 'refrank' => 128), "ati" => array('change' => 167, 'baserank' => 252, 'refrank' => 85),
+ " th" => array('change' => 0, 'baserank' => 0, 'refrank' => 0), " ec" => array('change' => 300, 'baserank' => 206, 'refrank' => null),
+ " wo" => array('change' => 115, 'baserank' => 34, 'refrank' => 149), "ope" => array('change' => 300, 'baserank' => 168, 'refrank' => null),
+ " a " => array('change' => 180, 'baserank' => 199, 'refrank' => 19), "one" => array('change' => 76, 'baserank' => 167, 'refrank' => 243),
+ "n f" => array('change' => 300, 'baserank' => 45, 'refrank' => null), "eat" => array('change' => 300, 'baserank' => 130, 'refrank' => null),
+ "ica" => array('change' => 198, 'baserank' => 75, 'refrank' => 273), "inc" => array('change' => 300, 'baserank' => 147, 'refrank' => null),
+ "enc" => array('change' => 300, 'baserank' => 69, 'refrank' => null), "ore" => array('change' => 204, 'baserank' => 86, 'refrank' => 290),
+ "is " => array('change' => 1, 'baserank' => 43, 'refrank' => 44), " as" => array('change' => 139, 'baserank' => 32, 'refrank' => 171),
+ "nts" => array('change' => 300, 'baserank' => 165, 'refrank' => null), "d m" => array('change' => 300, 'baserank' => 279, 'refrank' => null),
+ "her" => array('change' => 112, 'baserank' => 143, 'refrank' => 31), " al" => array('change' => 65, 'baserank' => 200, 'refrank' => 135),
+ " is" => array('change' => 105, 'baserank' => 107, 'refrank' => 212), "e t" => array('change' => 46, 'baserank' => 68, 'refrank' => 22),
+ "c r" => array('change' => 300, 'baserank' => 261, 'refrank' => null), " hi" => array('change' => 45, 'baserank' => 106, 'refrank' => 61),
+ "cia" => array('change' => 300, 'baserank' => 267, 'refrank' => null), " fr" => array('change' => 37, 'baserank' => 209, 'refrank' => 172),
+ "ult" => array('change' => 300, 'baserank' => 96, 'refrank' => null), "e m" => array('change' => 9, 'baserank' => 128, 'refrank' => 119),
+ "ass" => array('change' => 300, 'baserank' => 250, 'refrank' => null), "s o" => array('change' => 2, 'baserank' => 92, 'refrank' => 90),
+ "pop" => array('change' => 300, 'baserank' => 173, 'refrank' => null), "nd " => array('change' => 2, 'baserank' => 12, 'refrank' => 10),
+ "the" => array('change' => 0, 'baserank' => 1, 'refrank' => 1), " st" => array('change' => 197, 'baserank' => 226, 'refrank' => 29),
+ " no" => array('change' => 130, 'baserank' => 218, 'refrank' => 88), "ast" => array('change' => 300, 'baserank' => 251, 'refrank' => null),
+ " fi" => array('change' => 300, 'baserank' => 208, 'refrank' => null), "ess" => array('change' => 160, 'baserank' => 135, 'refrank' => 295),
+ "gre" => array('change' => 300, 'baserank' => 40, 'refrank' => null), "h a" => array('change' => 300, 'baserank' => 142, 'refrank' => null),
+ "duo" => array('change' => 300, 'baserank' => 287, 'refrank' => null), " so" => array('change' => 6, 'baserank' => 114, 'refrank' => 120),
+ "es " => array('change' => 48, 'baserank' => 72, 'refrank' => 24), "for" => array('change' => 96, 'baserank' => 139, 'refrank' => 43),
+ "gan" => array('change' => 300, 'baserank' => 140, 'refrank' => null), "per" => array('change' => 111, 'baserank' => 171, 'refrank' => 282),
+ "thi" => array('change' => 33, 'baserank' => 191, 'refrank' => 224), " of" => array('change' => 6, 'baserank' => 5, 'refrank' => 11),
+ " cl" => array('change' => 300, 'baserank' => 205, 'refrank' => null), " sc" => array('change' => 300, 'baserank' => 222, 'refrank' => null),
+ "t t" => array('change' => 49, 'baserank' => 94, 'refrank' => 45), "als" => array('change' => 300, 'baserank' => 242, 'refrank' => null),
+ "avi" => array('change' => 300, 'baserank' => 255, 'refrank' => null), "cie" => array('change' => 300, 'baserank' => 268, 'refrank' => null),
+ " du" => array('change' => 300, 'baserank' => 101, 'refrank' => null), "pre" => array('change' => 105, 'baserank' => 174, 'refrank' => 279),
+ "as " => array('change' => 17, 'baserank' => 25, 'refrank' => 42), "a a" => array('change' => 300, 'baserank' => 234, 'refrank' => null),
+ "gel" => array('change' => 300, 'baserank' => 141, 'refrank' => null), "ite" => array('change' => 300, 'baserank' => 149, 'refrank' => null),
+ "n r" => array('change' => 300, 'baserank' => 30, 'refrank' => null), "by " => array('change' => 105, 'baserank' => 121, 'refrank' => 226),
+ "d u" => array('change' => 300, 'baserank' => 282, 'refrank' => null), "clu" => array('change' => 300, 'baserank' => 270, 'refrank' => null),
+ " ur" => array('change' => 300, 'baserank' => 229, 'refrank' => null), "ebu" => array('change' => 300, 'baserank' => 298, 'refrank' => null),
+ "n i" => array('change' => 300, 'baserank' => 158, 'refrank' => null), "he " => array('change' => 0, 'baserank' => 2, 'refrank' => 2),
+ " wh" => array('change' => 195, 'baserank' => 232, 'refrank' => 37), " ph" => array('change' => 300, 'baserank' => 220, 'refrank' => null),
+ );
+
+ $ranked = $this->x->_arr_rank($this->x->_trigram($str));
+ $results = $this->x->detect($str);
+
+ $count = count($ranked);
+ $sum = 0;
+
+ //foreach ($this->x->_lang_db['english'] as $key => $value) {
+ foreach ($ranked as $key => $value) {
+ if (isset($ranked[$key]) && isset($this->x->_lang_db['english'][$key])) {
+ $difference = abs($this->x->_lang_db['english'][$key] - $ranked[$key]);
+ } else {
+ $difference = 300;
+ }
+
+ $this->assertTrue(isset($true_differences[$key]), "'$key'");
+ if (isset($true_differences[$key])) {
+ $this->assertEquals($true_differences[$key]['change'], $difference, "'$key'");
+ }
+ $sum += $difference;
+ }
+
+ $this->assertEquals(300, $count);
+ $this->assertEquals(59490, $sum);
+
+ $this->assertEquals('english', key($results));
+ $this->assertEquals(198, floor(current($results)));
+ next($results);
+ $this->assertEquals('italian', key($results));
+ $this->assertEquals(228, floor(current($results)));
+ }
+
+ function test_french ()
+ {
+ $this->x->setPerlCompatible();
+ $str = "Verifions que le détecteur de langues marche";
+
+ $trigrams = $this->x->_trigram($str);
+ $this->assertEquals(42, count($trigrams));
+ // verified in Language::Guess
+
+ $ranked = $this->x->_arr_rank($trigrams);
+ $this->assertEquals(0, $ranked['e l']);
+
+ $correct_ranks = array(
+ ' de' => 1,
+ "éte" => 41,
+ "dét" => 12,
+ 'fio' => 18,
+ 'de ' => 11,
+ 'ons' => 28,
+ 'ect' => 14,
+ 'le ' => 24,
+ 'arc' => 8,
+ 'lan' => 23,
+ 'es ' => 16,
+ 'mar' => 25,
+ " dé" => 2,
+ 'ifi' => 21,
+ 'gue' => 19,
+ 'ur ' => 39,
+ 'rch' => 31,
+ 'ang' => 7,
+ 'que' => 29,
+ 'ngu' => 26,
+ 'e d' => 13,
+ 'rif' => 32,
+ ' ma' => 5,
+ 'tec' => 35,
+ 'ns ' => 27,
+ ' la' => 3,
+ ' le' => 4,
+ 'r d' => 30,
+ 'e l' => 0,
+ 'che' => 9,
+ 's m' => 33,
+ 'ue ' => 37,
+ 'ver' => 40,
+ 'teu' => 36,
+ 'eri' => 15,
+ 'cte' => 10,
+ 'ues' => 38,
+ 's q' => 34,
+ 'eur' => 17,
+ ' qu' => 6,
+ 'he ' => 20,
+ 'ion' => 22
+ );
+
+
+ $this->assertEquals(count($correct_ranks), count($ranked), "different number of trigrams found");
+
+ $distances = array(
+ ' de' => array('change' => 0, 'baserank' => 1, 'refrank' => 1),
+ 'éte' => array('change' => 300, 'baserank' => 41, 'refrank' => null),
+ 'dét' => array('change' => 300, 'baserank' => 12, 'refrank' => null),
+ 'fio' => array('change' => 300, 'baserank' => 18, 'refrank' => null),
+ 'de ' => array('change' => 9, 'baserank' => 11, 'refrank' => 2),
+ 'ons' => array('change' => 11, 'baserank' => 28, 'refrank' => 39),
+ 'ect' => array('change' => 300, 'baserank' => 14, 'refrank' => null),
+ 'le ' => array('change' => 19, 'baserank' => 24, 'refrank' => 5),
+ 'arc' => array('change' => 300, 'baserank' => 8, 'refrank' => null),
+ 'lan' => array('change' => 300, 'baserank' => 23, 'refrank' => null),
+ 'es ' => array('change' => 16, 'baserank' => 16, 'refrank' => 0),
+ 'mar' => array('change' => 300, 'baserank' => 25, 'refrank' => null),
+ ' dé' => array('change' => 59, 'baserank' => 2, 'refrank' => 61),
+ 'ifi' => array('change' => 300, 'baserank' => 21, 'refrank' => null),
+ 'gue' => array('change' => 300, 'baserank' => 19, 'refrank' => null),
+ 'ur ' => array('change' => 12, 'baserank' => 39, 'refrank' => 27),
+ 'rch' => array('change' => 300, 'baserank' => 31, 'refrank' => null),
+ 'ang' => array('change' => 300, 'baserank' => 7, 'refrank' => null),
+ 'que' => array('change' => 5, 'baserank' => 29, 'refrank' => 24),
+ 'ngu' => array('change' => 300, 'baserank' => 26, 'refrank' => null),
+ 'e d' => array('change' => 2, 'baserank' => 13, 'refrank' => 15),
+ 'rif' => array('change' => 300, 'baserank' => 32, 'refrank' => null),
+ ' ma' => array('change' => 89, 'baserank' => 5, 'refrank' => 94),
+ 'tec' => array('change' => 300, 'baserank' => 35, 'refrank' => null),
+ 'ns ' => array('change' => 6, 'baserank' => 27, 'refrank' => 21),
+ ' la' => array('change' => 6, 'baserank' => 3, 'refrank' => 9),
+ ' le' => array('change' => 1, 'baserank' => 4, 'refrank' => 3),
+ 'r d' => array('change' => 202, 'baserank' => 30, 'refrank' => 232),
+ 'e l' => array('change' => 14, 'baserank' => 0, 'refrank' => 14),
+ 'che' => array('change' => 300, 'baserank' => 9, 'refrank' => null),
+ 's m' => array('change' => 180, 'baserank' => 33, 'refrank' => 213),
+ 'ue ' => array('change' => 7, 'baserank' => 37, 'refrank' => 30),
+ 'ver' => array('change' => 117, 'baserank' => 40, 'refrank' => 157),
+ 'teu' => array('change' => 300, 'baserank' => 36, 'refrank' => null),
+ 'eri' => array('change' => 300, 'baserank' => 15, 'refrank' => null),
+ 'cte' => array('change' => 300, 'baserank' => 10, 'refrank' => null),
+ 'ues' => array('change' => 237, 'baserank' => 38, 'refrank' => 275),
+ 's q' => array('change' => 300, 'baserank' => 34, 'refrank' => null),
+ 'eur' => array('change' => 56, 'baserank' => 17, 'refrank' => 73),
+ ' qu' => array('change' => 31, 'baserank' => 6, 'refrank' => 37),
+ 'he ' => array('change' => 300, 'baserank' => 20, 'refrank' => null),
+ 'ion' => array('change' => 12, 'baserank' => 22, 'refrank' => 10),
+ );
+
+
+
+ $french_ranks = $this->x->_lang_db['french'];
+
+ $sumchange = 0;
+ foreach ($ranked as $key => $value) {
+ if (isset($french_ranks[$key])) {
+ $difference = abs($french_ranks[$key] - $ranked[$key]);
+ } else {
+ $difference = 300;
+ }
+ $this->assertTrue(isset($distances[$key]), $key);
+ if (isset($distances[$key])) {
+ $this->assertEquals($distances[$key]['baserank'], $ranked[$key], "baserank for $key");
+ if ($distances[$key]['refrank'] === null) {
+ $this->assertArrayNotHasKey($key, $french_ranks);
+ } else {
+ $this->assertEquals($distances[$key]['refrank'], $french_ranks[$key], "refrank for $key");
+ }
+ $this->assertEquals($distances[$key]['change'], $difference, "difference for $key");
+ }
+
+ $sumchange += $difference;
+ }
+
+ $actual_result = $this->x->_distance($french_ranks, $ranked);
+ $this->assertEquals($sumchange, $actual_result);
+ $this->assertEquals(7091, $actual_result);
+ $this->assertEquals(168, floor($sumchange/count($trigrams)));
+
+ $final_result = $this->x->detect($str);
+ $this->assertEquals(168, floor($final_result['french']));
+ $this->assertEquals(211, $final_result['spanish']);
+ }
+
+ function test_russian ()
+ {
+ $str = 'авай проверить узнает ли наш угадатель руÑÑки Ñзык';
+
+ $this->x->setPerlCompatible();
+ $trigrams = $this->x->_trigram($str);
+ $ranked = $this->x->_arr_rank($trigrams);
+
+ $correct_ranks = array(
+ ' ру' => array('change' => 300, 'baserank' => 3, 'refrank' => null),
+ 'ай ' => array('change' => 300, 'baserank' => 10, 'refrank' => null),
+ 'ада' => array('change' => 300, 'baserank' => 8, 'refrank' => null),
+ ' пр' => array('change' => 1, 'baserank' => 2, 'refrank' => 1),
+ ' Ñз' => array('change' => 300, 'baserank' => 6, 'refrank' => null),
+ 'ить' => array('change' => 300, 'baserank' => 24, 'refrank' => null),
+ ' на' => array('change' => 1, 'baserank' => 1, 'refrank' => 0),
+ 'зна' => array('change' => 153, 'baserank' => 20, 'refrank' => 173),
+ 'вай' => array('change' => 300, 'baserank' => 13, 'refrank' => null),
+ 'ш у' => array('change' => 300, 'baserank' => 44, 'refrank' => null),
+ 'ль ' => array('change' => 300, 'baserank' => 28, 'refrank' => null),
+ ' ли' => array('change' => 300, 'baserank' => 0, 'refrank' => null),
+ 'ÑÑк' => array('change' => 300, 'baserank' => 37, 'refrank' => null),
+ 'ть ' => array('change' => 31, 'baserank' => 40, 'refrank' => 9),
+ 'ава' => array('change' => 300, 'baserank' => 7, 'refrank' => null),
+ 'про' => array('change' => 18, 'baserank' => 32, 'refrank' => 14),
+ 'гад' => array('change' => 300, 'baserank' => 15, 'refrank' => null),
+ 'уÑÑ' => array('change' => 300, 'baserank' => 43, 'refrank' => null),
+ 'ык ' => array('change' => 300, 'baserank' => 45, 'refrank' => null),
+ 'ель' => array('change' => 64, 'baserank' => 17, 'refrank' => 81),
+ 'Ñзы' => array('change' => 300, 'baserank' => 47, 'refrank' => null),
+ ' уг' => array('change' => 300, 'baserank' => 4, 'refrank' => null),
+ 'ате' => array('change' => 152, 'baserank' => 11, 'refrank' => 163),
+ 'и н' => array('change' => 63, 'baserank' => 22, 'refrank' => 85),
+ 'и Ñ' => array('change' => 300, 'baserank' => 23, 'refrank' => null),
+ 'ает' => array('change' => 152, 'baserank' => 9, 'refrank' => 161),
+ 'узн' => array('change' => 300, 'baserank' => 42, 'refrank' => null),
+ 'ери' => array('change' => 300, 'baserank' => 18, 'refrank' => null),
+ 'ли ' => array('change' => 23, 'baserank' => 27, 'refrank' => 4),
+ 'т л' => array('change' => 300, 'baserank' => 38, 'refrank' => null),
+ ' уз' => array('change' => 300, 'baserank' => 5, 'refrank' => null),
+ 'дат' => array('change' => 203, 'baserank' => 16, 'refrank' => 219),
+ 'зык' => array('change' => 300, 'baserank' => 21, 'refrank' => null),
+ 'ров' => array('change' => 59, 'baserank' => 34, 'refrank' => 93),
+ 'рит' => array('change' => 300, 'baserank' => 33, 'refrank' => null),
+ 'ь р' => array('change' => 300, 'baserank' => 46, 'refrank' => null),
+ 'ет ' => array('change' => 19, 'baserank' => 19, 'refrank' => 38),
+ 'ки ' => array('change' => 116, 'baserank' => 26, 'refrank' => 142),
+ 'руÑ' => array('change' => 300, 'baserank' => 35, 'refrank' => null),
+ 'тел' => array('change' => 16, 'baserank' => 39, 'refrank' => 23),
+ 'нае' => array('change' => 300, 'baserank' => 29, 'refrank' => null),
+ 'й п' => array('change' => 300, 'baserank' => 25, 'refrank' => null),
+ 'наш' => array('change' => 300, 'baserank' => 30, 'refrank' => null),
+ 'уга' => array('change' => 300, 'baserank' => 41, 'refrank' => null),
+ 'ове' => array('change' => 214, 'baserank' => 31, 'refrank' => 245),
+ 'Ñки' => array('change' => 112, 'baserank' => 36, 'refrank' => 148),
+ 'вер' => array('change' => 31, 'baserank' => 14, 'refrank' => 45),
+ 'аш ' => array('change' => 300, 'baserank' => 12, 'refrank' => null),
+ );
+
+ $this->assertEquals(48, count($ranked));
+
+
+ $russian = $this->x->_lang_db['russian'];
+
+ $sumchange = 0;
+ foreach ($ranked as $key => $value) {
+ if (isset($russian[$key])) {
+ $difference = abs($russian[$key] - $ranked[$key]);
+ } else {
+ $difference = 300;
+ }
+ $this->assertTrue(isset($correct_ranks[$key], $key));
+ if (isset($correct_ranks[$key])) {
+ $this->assertEquals($correct_ranks[$key]['baserank'], $ranked[$key], "baserank for $key");
+ if ($correct_ranks[$key]['refrank'] === null) {
+ $this->assertArrayNotHasKey($key, $russian);
+ } else {
+ $this->assertEquals($correct_ranks[$key]['refrank'], $russian[$key], "refrank for $key");
+ }
+ $this->assertEquals($correct_ranks[$key]['change'], $difference, "difference for $key");
+ }
+
+ $sumchange += $difference;
+ }
+
+ $actual_result = $this->x->_distance($russian, $ranked);
+ $this->assertEquals($sumchange, $actual_result);
+ $this->assertEquals(10428, $actual_result);
+ $this->assertEquals(217, floor($sumchange/count($trigrams)));
+
+ $final_result = $this->x->detect($str);
+ $this->assertEquals(217,floor($final_result['russian']));
+ }
+
+ function test_ranker ()
+ {
+ $str = 'is it s i';
+
+ $result = $this->x->_arr_rank($this->x->_trigram($str));
+
+ $this->assertEquals(0, $result['s i']);
+ }
+
+
+ function test_count ()
+ {
+ $langs = $this->x->getLanguages();
+
+ $count = $this->x->getLanguageCount();
+
+ $this->assertEquals(count($langs), $count);
+
+ foreach ($langs as $lang) {
+ $this->assertTrue($this->x->languageExists($lang), $lang);
+ }
+ }
+
+ function testLanguageExistsNameMode2()
+ {
+ $this->x->setNameMode(2);
+ $this->assertTrue($this->x->languageExists('en'));
+ $this->assertFalse($this->x->languageExists('english'));
+ }
+
+ function testLanguageExistsArrayNameMode2()
+ {
+ $this->x->setNameMode(2);
+ $this->assertTrue($this->x->languageExists(array('en', 'de')));
+ $this->assertFalse($this->x->languageExists(array('en', 'doesnotexist')));
+ }
+
+ /**
+ * @expectedException Text_LanguageDetect_Exception
+ * @expectedExceptionMessage Unsupported parameter type passed to languageExists()
+ */
+ function testLanguageExistsUnsupportedType()
+ {
+ $this->x->languageExists(1.23);
+ }
+
+ function testGetLanguages()
+ {
+ $langs = $this->x->getLanguages();
+ $this->assertContains('english', $langs);
+ $this->assertContains('swedish', $langs);
+ }
+
+ function testGetLanguagesNameMode2()
+ {
+ $this->x->setNameMode(2);
+ $langs = $this->x->getLanguages();
+ $this->assertContains('en', $langs);
+ $this->assertContains('sv', $langs);
+ }
+
+ function testDetect()
+ {
+ $scores = $this->x->detect('Das ist ein kleiner Text für euch alle');
+ $this->assertInternalType('array', $scores);
+ $this->assertGreaterThan(5, count($scores));
+
+ list($key, $value) = each($scores);
+ $this->assertEquals('german', $key, 'text is german');
+ }
+
+ function testDetectNameMode2()
+ {
+ $this->x->setNameMode(2);
+ $scores = $this->x->detect('Das ist ein kleiner Text für euch alle');
+ list($key, $value) = each($scores);
+ $this->assertEquals('de', $key, 'text is german');
+ }
+
+ function testDetectNameMode2Limit()
+ {
+ $this->x->setNameMode(2);
+ $scores = $this->x->detect('Das ist ein kleiner Text für euch alle', 1);
+ list($key, $value) = each($scores);
+ $this->assertEquals('de', $key, 'text is german');
+ }
+
+ function testDetectSimple()
+ {
+ $lang = $this->x->detectSimple('Das ist ein kleiner Text für euch alle');
+ $this->assertInternalType('string', $lang);
+ $this->assertEquals('german', $lang, 'text is german');
+ }
+
+ function testDetectSimpleNameMode2()
+ {
+ $this->x->setNameMode(2);
+ $lang = $this->x->detectSimple('Das ist ein kleiner Text für euch alle');
+ $this->assertInternalType('string', $lang);
+ $this->assertEquals('de', $lang, 'text is german');
+ }
+
+ function testDetectSimpleNoLanguages()
+ {
+ $this->x->omitLanguages('english', true);
+ $this->x->omitLanguages('english', false);
+ $this->assertNull(
+ $this->x->detectSimple('Das ist ein kleiner Text für euch alle')
+ );
+ }
+
+ function testLanguageSimilarity()
+ {
+ $this->x->setPerlCompatible(true);
+ $eng_dan = $this->x->languageSimilarity('english', 'danish');
+ $nor_dan = $this->x->languageSimilarity('norwegian', 'danish');
+ $swe_dan = $this->x->languageSimilarity('swedish', 'danish');
+
+ // remember, lower means more similar
+ $this->assertTrue($eng_dan > $nor_dan); // english is less similar to danish than norwegian is
+ $this->assertTrue($eng_dan > $swe_dan); // english is less similar to danish than swedish is
+ $this->assertTrue($nor_dan < $swe_dan); // norwegian is more similar to danish than swedish
+
+ // test the range of the results
+ $this->assertTrue($eng_dan <= 300, $eng_dan);
+ $this->assertTrue($eng_dan >= 0, $eng_dan);
+
+ // test it in perl compatible mode
+ $this->x->setPerlCompatible(false);
+
+ $eng_dan = $this->x->languageSimilarity('english', 'danish');
+ $nor_dan = $this->x->languageSimilarity('norwegian', 'danish');
+ $swe_dan = $this->x->languageSimilarity('swedish', 'danish');
+
+ // now higher is more similar
+ $this->assertTrue($eng_dan < $nor_dan);
+ $this->assertTrue($eng_dan < $swe_dan);
+ $this->assertTrue($nor_dan > $swe_dan);
+
+ $this->assertTrue($eng_dan <= 1, $eng_dan);
+ $this->assertTrue($eng_dan >= 0, $eng_dan);
+
+ $this->x->setPerlCompatible(true);
+
+ $eng_all = $this->x->languageSimilarity('english');
+ $this->assertEquals($this->x->getLanguageCount() - 1, count($eng_all));
+ $this->assertTrue(!isset($eng_all['english']));
+
+ $this->assertTrue($eng_all['italian'] < $eng_all['turkish']);
+ $this->assertTrue($eng_all['french'] < $eng_all['kyrgyz']);
+
+ $all = $this->x->languageSimilarity();
+ $this->assertTrue(!isset($all['english']['english']));
+ $this->assertTrue($all['french']['spanish'] < $all['french']['mongolian']);
+ $this->assertTrue($all['spanish']['latin'] < $all['hindi']['finnish']);
+ $this->assertTrue($all['russian']['uzbek'] < $all['russian']['english']);
+ }
+
+
+ function testLanguageSimilarityNameMode2()
+ {
+ $this->x->setNameMode(2);
+ $this->x->setPerlCompatible(true);
+ $eng_dan = $this->x->languageSimilarity('en', 'dk');
+ $nor_dan = $this->x->languageSimilarity('no', 'dk');
+
+ // remember, lower means more similar
+ $this->assertTrue($eng_dan > $nor_dan); // english is less similar to danish than norwegian is
+ }
+
+ function testLanguageSimilarityUnknownLanguage()
+ {
+ $this->assertNull($this->x->languageSimilarity('doesnotexist'));
+ }
+
+ function testLanguageSimilarityUnknownLanguage2()
+ {
+ $this->assertNull($this->x->languageSimilarity('english', 'doesnotexist'));
+ }
+
+ function test_compatibility ()
+ {
+ $str = "I am the very model of a modern major general.";
+
+
+ $this->x->setPerlCompatible(false);
+ $result = $this->x->detectConfidence($str);
+
+ $this->assertTrue(!is_null($result));
+ $this->assertTrue(is_array($result));
+ extract($result);
+ $this->assertEquals('english', $language);
+ $this->assertTrue($similarity <= 1 && $similarity >= 0, $similarity);
+ $this->assertTrue($confidence <= 1 && $confidence >= 0, $confidence);
+
+ $this->x->setPerlCompatible(true);
+ $result = $this->x->detectConfidence($str);
+ extract($result, EXTR_OVERWRITE);
+
+ $this->assertEquals('english', $language);
+
+ // technically the lowest possible score is 0 but it's extremely unlikely to hit that
+ $this->assertTrue($similarity <= 300 && $similarity >= 1, $similarity);
+ $this->assertTrue($confidence <= 1 && $confidence >= 0, $confidence);
+
+ }
+
+ function testDetectConfidenceNoText()
+ {
+ $this->assertNull($this->x->detectConfidence(''));
+ }
+
+ function test_omit_error ()
+ {
+ $str = 'On January 29, 1737, Thomas Paine was born in Thetford, England. His father, a corseter, had grand visions for his son, but by the age of 12, Thomas had failed out of school. The young Paine began apprenticing for his father, but again, he failed.';
+
+ $myobj = new Text_LanguageDetect;
+
+ $result = $myobj->detectSimple($str);
+ $this->assertEquals('english', $result);
+
+ // omit all languages and you should get an error
+ $myobj->omitLanguages($myobj->getLanguages());
+
+ $result = $myobj->detectSimple($str);
+
+ $this->assertNull($result, gettype($result));
+ }
+
+ function test_cyrillic ()
+ {
+ // tests whether the cyrillic lower-casing works
+
+ $uppercased = 'РБ В Г Д Е Ж З И Й К Л М РО П'
+ . 'Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я';
+
+ $lowercased = 'а б в г д е ж з и й к л м н о п'
+ . 'Ñ€ Ñ Ñ‚ у Ñ„ Ñ… ц ч ш щ ÑŠ Ñ‹ ÑŒ Ñ ÑŽ Ñ';
+
+ $this->assertEquals(strlen($uppercased), strlen($lowercased));
+
+ $i = 0;
+ $j = 0;
+ $new_u = '';
+ while ($i < strlen($uppercased)) {
+ $u = Text_LanguageDetect::_next_char($uppercased, $i, true);
+ $l = Text_LanguageDetect::_next_char($lowercased, $j, true);
+ $this->assertEquals($u, $l);
+
+ $new_u .= $u;
+ }
+
+ $this->assertEquals($i, $j);
+ $this->assertEquals($i, strlen($lowercased));
+ if (function_exists('mb_strtolower')) {
+ $this->assertEquals($new_u, mb_strtolower($uppercased, 'UTF-8'));
+ }
+ }
+
+ function test_block_detection()
+ {
+ $exp_output = <<<EOF
+Array
+(
+ [Basic Latin] => 37
+ [CJK Unified Ideographs] => 2
+ [Hiragana] => 1
+ [Latin-1 Supplement] => 4
+)
+EOF;
+ $teststr = 'lsdkfj ゠葉 å¶ slskdfj s Ã…j;sdklf ÿjs;kdjÃ¥f î';
+ $result = $this->x->detectUnicodeBlocks($teststr, false);
+
+ ksort($result);
+ ob_start();
+ print_r($result);
+ $str_result = ob_get_contents();
+ ob_end_clean();
+ $this->assertEquals(trim($exp_output), trim($str_result));
+
+ // test whether skipping the spaces reduces the basic latin count
+ $result2 = $this->x->detectUnicodeBlocks($teststr, true);
+ $this->assertTrue($result2['Basic Latin'] < $result['Basic Latin']);
+
+ $result3 = $this->x->unicodeBlockName('и');
+ $this->assertEquals('Cyrillic', $result3);
+
+ $this->assertEquals('Basic Latin', $this->x->unicodeBlockName('A'));
+
+ // see what happens when you try an unassigned range
+ $utf8 = $this->code2utf(0x0800);
+
+ $this->assertEquals(false, $this->x->unicodeBlockName($utf8));
+
+ // try unicode vals in several different ranges
+ $unicode['Supplementary Private Use Area-A'] = 0xF0001;
+ $unicode['Supplementary Private Use Area-B'] = 0x100001;
+ $unicode['CJK Unified Ideographs Extension B'] = 0x20001;
+ $unicode['Ugaritic'] = 0x10381;
+ $unicode['Gothic'] = 0x10331;
+ $unicode['Low Surrogates'] = 0xDC01;
+ $unicode['CJK Unified Ideographs'] = 0x4E00;
+ $unicode['Glagolitic'] = 0x2C00;
+ $unicode['Latin Extended Additional'] = 0x1EFF;
+ $unicode['Devanagari'] = 0x0900;
+ $unicode['Hebrew'] = 0x0590;
+ $unicode['Latin Extended-B'] = 0x024F;
+ $unicode['Latin-1 Supplement'] = 0x00FF;
+ $unicode['Basic Latin'] = 0x007F;
+
+ foreach ($unicode as $range => $codepoint) {
+ $result = $this->x->unicodeBlockName($this->code2utf($codepoint));
+ $this->assertEquals($range, $result, $codepoint);
+ }
+ }
+
+ /**
+ * @expectedException Text_LanguageDetect_Exception
+ * @expectedExceptionMessage Pass a single char only to this method
+ */
+ function testUnicodeBlockNameParamString()
+ {
+ $this->x->unicodeBlockName('foo bar baz');
+ }
+
+ /**
+ * @expectedException Text_LanguageDetect_Exception
+ * @expectedExceptionMessage Input must be of type string or int
+ */
+ function testUnicodeBlockNameUnsupportedParamType()
+ {
+ $this->x->unicodeBlockName(1.23);
+ }
+
+
+ // utility function
+ // found in http://www.php.net/manual/en/function.utf8-encode.php#49336
+ function code2utf($num)
+ {
+ if ($num < 128) {
+ return chr($num);
+
+ } elseif ($num < 2048) {
+ return chr(($num >> 6) + 192) . chr(($num & 63) + 128);
+
+ } elseif ($num < 65536) {
+ return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
+
+ } elseif ($num < 2097152) {
+ return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
+ } else {
+ return '';
+ }
+ }
+
+ function test_utf8len()
+ {
+ $str = 'Iñtërnâtiônàlizætiøn';
+ $this->assertEquals(20, $this->x->utf8strlen($str), utf8_decode($str));
+
+ $str = '時期日';
+ $this->assertEquals(3, $this->x->utf8strlen($str), utf8_decode($str));
+ }
+
+ function test_unicode()
+ {
+ // test whether it can get the right unicode values for utf8 chars
+
+ $chars['ת'] = 0x5EA;
+
+ $chars['ç'] = 0x00E7;
+
+ $chars['a'] = 0x0061;
+
+ $chars['Φ'] = 0x03A6;
+
+ $chars['И'] = 0x0418;
+
+ $chars['Ú°'] = 0x6B0;
+
+ $chars['Ụ'] = 0x1EE4;
+
+ $chars['놔'] = 0xB194;
+
+ $chars['é®'] = 0x906E;
+
+ $chars['怀'] = 0x6000;
+
+ $chars['ฤ'] = 0x0E24;
+
+ $chars['Я'] = 0x042F;
+
+ $chars['ü'] = 0x00FC;
+
+ $chars['Ä'] = 0x0110;
+
+ $chars['×'] = 0x05D0;
+
+
+ foreach ($chars as $utf8 => $unicode) {
+ $this->assertEquals($unicode, $this->x->_utf8char2unicode($utf8), $utf8);
+ }
+ }
+
+ function test_unicode_off()
+ {
+
+ // see what happens when you turn the unicode setting off
+
+ $myobj = new Text_LanguageDetect;
+
+ $str = 'This is a delightful sample of English text';
+
+ $myobj->useUnicodeBlocks(true);
+ $result1 = $myobj->detectConfidence($str);
+
+ $myobj->useUnicodeBlocks(false);
+ $result2 = $myobj->detectConfidence($str);
+
+ $this->assertEquals($result1, $result2);
+
+ // note this test doesn't tell if unicode narrowing was actually used or not
+ }
+
+
+ function test_detection()
+ {
+
+ // WARNING: the below lines may make your terminal go ape! be warned
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ // test strings from the test module used by perl's Language::Guess
+
+ $testarr = array(
+ "english" => "This is a test of the language checker",
+ "french" => "Verifions que le détecteur de langues marche",
+ "polish" => "Sprawdźmy, czy odgadywacz języków pracuje",
+ "russian" => "Давай проверим узнает ли нашь угадыватель руÑÑкий Ñзык",
+ "spanish" => "La respuesta de los acreedores a la oferta argentina para salir del default no ha sido muy positiv",
+ "romanian" => "în acest sens aparţinînd Adunării Generale a organizaţiei, în ciuda faptului că mai multe dintre solicitările organizaţiei privind organizarea scrutinului nu au fost soluţionate",
+ "albanian" => "kaluan ditën e fundit të fushatës në shtetet kryesore për të siguruar sa më shumë votues.",
+ "danish" => "På denne side bringer vi billeder fra de mange forskellige forberedelser til arrangementet, efterhånden som vi får dem ",
+ "swedish" => "Vi säger att Frälsningen är en gåva till alla, fritt och för intet. Men som vi nämnt så finns det två villkor som måste",
+ "norwegian" => "Nominasjonskomiteen i Akershus KrF har skviset ut Einar Holstad fra stortingslisten. Ytre Enebakk-mannen har plass p Stortinget s lenge Valgerd Svarstad Haugland sitter i",
+ "finnish" => "on julkishallinnon verkkopalveluiden yhteinen osoite. Kansalaisten arkielämää helpottavaa tietoa on koottu eri aihealueisiin",
+ "estonian" => "Ennetamaks reisil ebameeldivaid vahejuhtumeid vii end kurssi reisidokumentide ja viisade reeglitega ning muu praktilise informatsiooniga",
+ "hungarian" => "Hiába jön létre az önkéntes magyar haderő, hiába nem lesz többé bevonulás, változatlanul fennmarad a hadkötelezettség intézménye",
+ "uzbek" => "Ð¼Ð¸Ð»Ð¸Ñ†Ð¸Ñ Ð²Ð° уч Ñолиқ идораÑи ходимлари Ñраланган. Шаҳарда хавфÑизлик чоралари кучайтирилган.",
+
+
+ "czech" => "Francouzský ministr financí zmírnil výhrady vůÄi nízkým firemním daním v nových Älenských státech EU",
+ "dutch" => "Die kritiek was volgens hem bitter hard nodig, omdat Nederland binnen een paar jaar in een soort Belfast zou dreigen te nderen",
+
+ "croatian" => "biće priliÄno izjednaÄena, sugeriÅ¡u najnovije ankete. Oba kandidata tvrde da su sposobni da dobiju rat protiv terorizma",
+
+ "romanian" => "în acest sens aparţinînd Adunării Generale a organizaţiei, în ciuda faptului că mai multe dintre solicitările organizaţiei ivind organizarea scrutinului nu au fost soluţionate",
+
+ "turkish" => "yakın tarihin en çekişmeli başkanlık seçiminde oy verme işlemi sürerken, katılımda rekor bekleniyor.",
+
+ "kyrgyz" => "көрбөгөндөй Ñлдик толкундоо болуп, Кокон шаарынын көчөлөрүндө бир нече миң киши нааразылык билдирди.",
+
+
+ "albanian" => "kaluan ditën e fundit të fushatës në shtetet kryesore për të siguruar sa më shumë votues.",
+
+
+ "azeri" => "Daxil olan xəbərlərdə deyilir ki, 6 nəfər Bağdadın mərkəzində yerləşən Təhsil Nazirliyinin binası yaxınlığında baş vermiş partlayış zamanı həlak olub.",
+
+
+ "macedonian" => "на јавното миÑлење покажуваат дека трката е толку теÑна, што Ñе очекува двајцата Ñоперници да ја прекршат традицијата и да Ñе појават и на Ñамиот изборен ден.",
+
+
+
+ "kazakh" => "Сайлау нәтижеÑінде дауыÑтардың баÑым бөлігін ел премьер миниÑтрі Виктор Янукович пен оның қарÑылаÑÑ‹, Ð¾Ð¿Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð¶ÐµÑ‚ÐµÐºÑˆÑ–ÑÑ– Виктор Ющенко алды.",
+
+
+ "bulgarian" => " е готов да даде гаранции, че нÑма да прави Ñдрено оръжие, ако му Ñе разреши мирна атомна програма",
+
+
+ "arabic" => " ملايين الناخبين الأمريكيين يدلون بأصواتهم وسط إقبال قياسي على انتخابات هي الأشد تناÙسا منذ عقود",
+
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ // should be safe at this point
+
+
+ $languages = $this->x->getLanguages();
+ foreach (array_keys($testarr) as $key) {
+ $this->assertTrue(in_array($key, $languages), "$key was not in known languages");
+ }
+
+ foreach ($testarr as $key=>$value) {
+ $this->assertEquals($key, $this->x->detectSimple($value));
+ }
+ }
+
+
+ public function test_convertFromNameMode0()
+ {
+ $this->assertEquals(
+ 'english',
+ $this->x->_convertFromNameMode('english')
+ );
+ }
+
+ public function test_convertFromNameMode2String()
+ {
+ $this->x->setNameMode(2);
+ $this->assertEquals(
+ 'english',
+ $this->x->_convertFromNameMode('en')
+ );
+ }
+
+ public function test_convertFromNameMode3String()
+ {
+ $this->x->setNameMode(3);
+ $this->assertEquals(
+ 'english',
+ $this->x->_convertFromNameMode('eng')
+ );
+ }
+
+ public function test_convertFromNameMode2ArrayVal()
+ {
+ $this->x->setNameMode(2);
+ $this->assertEquals(
+ array('english', 'german'),
+ $this->x->_convertFromNameMode(array('en', 'de'))
+ );
+ }
+
+ public function test_convertFromNameMode2ArrayKey()
+ {
+ $this->x->setNameMode(2);
+ $this->assertEquals(
+ array('english' => 'foo', 'german' => 'test'),
+ $this->x->_convertFromNameMode(
+ array('en' => 'foo', 'de' => 'test'),
+ true
+ )
+ );
+ }
+
+ public function test_convertFromNameMode3ArrayVal()
+ {
+ $this->x->setNameMode(3);
+ $this->assertEquals(
+ array('english', 'german'),
+ $this->x->_convertFromNameMode(array('eng', 'deu'))
+ );
+ }
+
+ public function test_convertFromNameMode3ArrayKey()
+ {
+ $this->x->setNameMode(3);
+ $this->assertEquals(
+ array('english' => 'foo', 'german' => 'test'),
+ $this->x->_convertFromNameMode(
+ array('eng' => 'foo', 'deu' => 'test'),
+ true
+ )
+ );
+ }
+
+ public function test_convertToNameMode0()
+ {
+ $this->assertEquals(
+ 'english',
+ $this->x->_convertToNameMode('english')
+ );
+ }
+
+ public function test_convertToNameMode2String()
+ {
+ $this->x->setNameMode(2);
+ $this->assertEquals(
+ 'en',
+ $this->x->_convertToNameMode('english')
+ );
+ }
+
+ public function test_convertToNameMode3String()
+ {
+ $this->x->setNameMode(3);
+ $this->assertEquals(
+ 'eng',
+ $this->x->_convertToNameMode('english')
+ );
+ }
+
+ public function test_convertToNameMode2ArrayVal()
+ {
+ $this->x->setNameMode(2);
+ $this->assertEquals(
+ array('en', 'de'),
+ $this->x->_convertToNameMode(array('english', 'german'))
+ );
+ }
+
+ public function test_convertToNameMode2ArrayKey()
+ {
+ $this->x->setNameMode(2);
+ $this->assertEquals(
+ array('en' => 'foo', 'de' => 'test'),
+ $this->x->_convertToNameMode(
+ array('english' => 'foo', 'german' => 'test'),
+ true
+ )
+ );
+ }
+
+ public function test_convertToNameMode3ArrayVal()
+ {
+ $this->x->setNameMode(3);
+ $this->assertEquals(
+ array('eng', 'deu'),
+ $this->x->_convertToNameMode(array('english', 'german'))
+ );
+ }
+
+ public function test_convertToNameMode3ArrayKey()
+ {
+ $this->x->setNameMode(3);
+ $this->assertEquals(
+ array('eng' => 'foo', 'deu' => 'test'),
+ $this->x->_convertToNameMode(
+ array('english' => 'foo', 'german' => 'test'),
+ true
+ )
+ );
+ }
+}
diff --git a/library/langdet/tests/Text_LanguageDetect_ISO639Test.php b/library/langdet/tests/Text_LanguageDetect_ISO639Test.php
new file mode 100644
index 000000000..e01d715e1
--- /dev/null
+++ b/library/langdet/tests/Text_LanguageDetect_ISO639Test.php
@@ -0,0 +1,72 @@
+<?php
+set_include_path(
+ __DIR__ . '/../' . PATH_SEPARATOR . get_include_path()
+);
+
+require_once 'Text/LanguageDetect/ISO639.php';
+
+class Text_LanguageDetect_ISO639Test extends PHPUnit_Framework_TestCase
+{
+ public function testNameToCode2()
+ {
+ $this->assertEquals(
+ 'de',
+ Text_LanguageDetect_ISO639::nameToCode2('german')
+ );
+ }
+
+ public function testNameToCode2Fail()
+ {
+ $this->assertNull(
+ Text_LanguageDetect_ISO639::nameToCode2('doesnotexist')
+ );
+ }
+
+ public function testNameToCode3()
+ {
+ $this->assertEquals(
+ 'fra',
+ Text_LanguageDetect_ISO639::nameToCode3('french')
+ );
+ }
+
+ public function testNameToCode3Fail()
+ {
+ $this->assertNull(
+ Text_LanguageDetect_ISO639::nameToCode3('doesnotexist')
+ );
+ }
+
+ public function testCode2ToName()
+ {
+ $this->assertEquals(
+ 'english',
+ Text_LanguageDetect_ISO639::code2ToName('en')
+ );
+ }
+
+ public function testCode2ToNameFail()
+ {
+ $this->assertNull(
+ Text_LanguageDetect_ISO639::code2ToName('nx')
+ );
+ }
+
+ public function testCode3ToName()
+ {
+ $this->assertEquals(
+ 'romanian',
+ Text_LanguageDetect_ISO639::code3ToName('rom')
+ );
+ }
+
+ public function testCode3ToNameFail()
+ {
+ $this->assertNull(
+ Text_LanguageDetect_ISO639::code3ToName('nxx')
+ );
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/library/tinymce/changelog.txt b/library/tinymce/changelog.txt
index ec712077a..7285b7424 100644
--- a/library/tinymce/changelog.txt
+++ b/library/tinymce/changelog.txt
@@ -1,1528 +1,1562 @@
-Version 3.5b2 (2012-03-15)
- Rewrote the enter key logic to normalize browser behavior.
- Fixed so enter within PRE elements produces a BR and shift+enter breaks/end the PRE. Can be disabled using the br_in_pre option.
- Fixed bug where the selection wouldn't be correct after applying formatting and having the caret at the end of the new format node.
- Fixed bug where the noneditable plugin would process contents on raw input calls for example on undo/redo calls.
- Fixed bug where WebKit could produce an exception when a bookmark was requested when there wasn't a proper selection.
- Fixed bug where WebKit would fail to open the image dialog since it would be returning false for a class name instead of a string.
- Fixed so alignment and indentation works properly when forced_root_blocks is set to false. It will produce a DIV by default.
-Version 3.5b1 (2012-03-08)
- Added new event class that is faster and enables support for faking events.
- Added new self_closing_elements, short_ended_elements, boolean_attributes, non_empty_elements and block_elements options to control the HTML Schema.
- Added new schema option and support for the HTML5 schema.
- Added new visualblocks plugin that shows html5 blocks with visual borders.
- Added new types and selector options to make it easier to create editor instances with different configs.
- Added new preview of formatting options in various listboxes.
- Added new preview_styles option that enables control over what gets previewed.
- Fixed bug where content css would be loaded twice into iframe.
- Fixed bug where start elements with only whitespace in the attribute part wouldn't be correctly parsed.
- Fixed bug where the advlink dialog would produce an error about the addSelectAccessibility function not being defined.
- Fixed bug where the caret would be placed at an incorrect position if span was removed by the invalid_elements setting.
- Fixed bug where elements inside a white space preserve element like pre didn't inherit the behavior while parsing.
-Version 3.4.9.x (2012-02-xx)
- Improved behaviour of backspacing into a table to be consistant across browsers and disable backspace when cursor immediately follows a table.
- Improved edit CSS style plugin for single and multiple block selection and provide option to apply style to only selected text.
- Fixed bug in Chrome where moving caret down in table and pasting throws errors.
- Corrected reference to TinyMCE trim function.
- Fixed bug where Ignore All in IE did not remove the underline from the selected word.
- Fixed bug in html source editor word wrap option not wrapping text in Webkit browsers.
- Fixed bug where it was possible to insert an invalid colour in the color pop-up dialog.
- Fixed bug in Webkit where if anchor is on last line by itself caret can not be placed after it.
-Version 3.4.9 (2012-02-23)
- Added settings to wordcount plugin to configure update rate and checking wordcount on backspace and delete using wordcount_update_rate and wordcount_update_on_delete.
- Fixed bug in Webkit and IE where deleting empty paragraphs would remove entire editor contents.
- Fixed bug where pressing enter on end of list item with a heading would create a new item with heading.
- Fixed edit css style dialog text-decoration none checkbox so it disables other text-decoration options when enabled.
- Fixed bug in Gecko where undo wasn't added when focus was lost.
- Fixed bug in Gecko where shift-enter in table cell ending with BR doesn't move caret to new line.
- Fixed bug where right-click on formatted text in IE selected the entire line.
- Fixed bug where text ending with space could not be unformatted in IE.
- Fixed bug where caret formatting would be removed when moving the caret when a selector expression was used.
- Fixed bug where formatting would be applied to the body element when all contents where selected and format had both inline and selector parts.
- Fixed bug where the media plugin would throw errors if you had iframe set as an invalid element in config.
- Fixed bug where the caret would be placed at the top of the document if you inserted a table and undo:ed that operation. Patch contributed by Wesley Walser.
- Fixed bug where content css files where loaded twice into the iframe.
- Fixed so elements with comments would be trated as non empty elements. Patch contributed by Arjan Scherpenisse.
-Version 3.4.8 (2012-02-02)
- Fixed bug in IE where selected text ending with space cannot be formatted then formatted again to get original text.
- Fixed bug in IE where images larger than editor area were being deselected when toolbar buttons are clicked.
- Fixed bug where wrong text align buttons are active when multiple block elements are selected.
- Fixed bug where selected link not showing in target field of link dialog in some selection cases.
- Use settings for remove_trailing_br so this can be turned off instead of hard coding the value.
- Fixed bug in IE where the media plugin displayed null text when some values aren't filled in.
- Added API method 'onSetAttrib' that fires when the attribute value on a node changes.
- Fix font size dropdown value not being updated when text already has a font size in the advanced template.
- Fixed bug in IE where IE doesn't use ARIA attributes properly on options - causing labels to be read out 2 times.
- Fixed bug where caret cannot be placed after table if table is at end of document in IE.
- Fixed bug where adding range isn't always successful so we need to check range count otherwise an exception can occur.
- Added spacebar onclick handler to toolbar buttons to ensure that the accessibility behaviour works correctly.
- Fixed bug where a stranded bullet point would get created in WebKit.
- Fixed bug where selecting text in a blockquote and pressing backspace toggles the style.
- Fixed bug where pressing enter from a heading in IE, the resulting P tag below it shares the style property.
- Fix white space in between spans from being deleted.
- Fixed bug where scrollbars where visible in the character map dialog on Gecko.
- Fixed issue with missing translation for one of the emoticons.
- Fixed bug where dots in id:s where causing problems. Patch provided by Abhishek Dev.
- Fixed bug where urls with an at sign in the path wouldn't be parsed correctly. Patch contributed by Jason Grout.
- Fixed bug where Opera would remove the first character of a inline formatted word if you pressed backspace.
- Fixed bugs with the autoresize plugin on various browsers and removed the need for the throbber.
- Fixed performance issue where the contextmenu plugin would try to remove the menu even if it was removed. Patch contributed by mhu.
-Version 3.4.7 (2011-11-03)
- Modified the caret formatting behavior to word similar to common desktop wordprocessors like Word or Libre Office.
- Fixed bug in Webkit - Cursor positioning does not work vertically within a table cell with multiple lines of text.
- Fixed bug in IE where Inserting a table in IE8 places cursor in the second cell of the first row.
- Fixed bug in IE where editor in a frame doesn't give focus to the toolbar using ALT-F10.
- Fix for webkit and gecko so that deleting bullet from start of list outdents inner list items and moves first item into paragraph.
- Fix new list items in IE8 not displayed on a new line when list contains nested list items.
- Clear formatting in table cell breaks the cell.
- Made media type list localisable.
- Fix out of memory error when using prototype in media dialog.
- Fixed bug where could not add a space in the middle of a th cell.
- Fixed bug where adding a bullet between two existing bullets adds an extra one
- Fixed bug where trying to insert a new entry midway through a bulleted list fails dismally when the next entry is tabbed in.
- Fixed bug where pressing enter on an empty list item does not outdent properly in FF
- Fixed bug where adding a heading after a list item in a table cell changes all styles in that cell
- Fixed bug where hitting enter to exit from a bullet list moves cursor to the top of the page in Firefox.
- Fixed bug where pressing backspace would not delete HRs in Firefox and IE when next to an empty paragraph.
- Fixed bug where deleting part of the link text can cause a link with no destination to be saved.
- Fixed bug where css style border widths wasn't handled correctly in table dialog.
- Fixed bug where parsing invalid html contents on IE or WebKit could produce an infinite loop.
- Fixed bug where scripts with custom script types wasn't properly passed though the editor.
- Fixed issue where some Japanese kanji characters wasn't properly entity encoded when numeric entity mode was enabled.
- Made emoticons dialog use the keyboard naviation.
- Added navigation instructions to the symbols dialog.
- Added ability to set default values for the media plugin.
- Added new font_size_legacy_values option for converting old font element sizes to span with font-size properties.
- Fixed bug where the symbols dialog was not accessible.
- Added quirk for IE ensuring that the body of the document containing tinyMCE has a role="application" for accessibility.
- Fixed bug where the advanced color picker wasn't working properly on FF 7.
- Fixed issue where the advanced color picker was producing uppercase hex codes.
- Fixed bug where IE 8 could throw exceptions if the contents contained resizable content elements.
- Fixed bug where caret formatting wouldn't be correctly applied to previous sibling on WebKit.
- Fixed bug where the select boxes for font size/family would loose it's value on WebKit due to recent iOS fixes.
-Version 3.4.6 (2011-09-29)
- Fixed bug where list items were being created for empty divs.
- Added support in Media plugin for audio media using the embed tag
- Fixed accessibility bugs in WebKit and IE8 where toolbar items were not being read.
- Added new use_accessible_selects option to ensure accessible list boxes are used in all browsers (custom widget in firefox native on other browsers)
- Fixed bug where classid attribute was not being checked from embed objects.
- Fixed bug in jsrobot tests with intermittently failing.
- Fixed bug where anchors wasn't updated properly if you edited them using IE 8.
- Fixed bug where input method on WebKit on Mac OS X would fail to initialize when sometimes focusing the editor.
- Fixed bug where it wasn't possible to select HR elements on WebKit by simply clicking on them.
- Fixed bug where the media plugin wouldn't work on IE9 when not using the inlinepopups plugin.
- Fixed bug where hspace,vspace,align and bgcolor would be removed from object elements in the media plugin.
- Fixed bug where the new youtube format wouldn't be properly parsed by the media plugin.
- Fixed bug where the style attribute of layers wasn't properly updated on IE and Gecko.
- Fixed bug where editing contents in a layer would fail on Gecko since contentEditable doesn't inherit properly.
- Fixed bug where IE 6/7 would produce JS errors when serializing contents containing layers.
-Version 3.4.5 (2011-09-06)
- Fixed accessibility bug in WebKit where the right and left arrow keys would update native list boxes.
- Added new whitespace_elements option to enable users to specify specific elements where the whitespace is preserved.
- Added new merge_siblings option to formats. This option makes it possible to disable the auto merging of siblings when applying formats.
- Fixed bug in IE where trailing comma in paste plugin would cause plugin to not run correctly.
- Fixed bug in WebKit where console messages would be logged when deleting an empty document.
- Fixed bug in IE8 where caret positioned is on list item instead of paragraph when outdent splits the list
- Fixed bug with image dialogs not inserting an image if id was omitted from valid_elements.
- Fixed bug where the selection normalization logic wouldn't properly handle image elements in specific config cases.
- Fixed bug where the map elements coords attribute would be messed up by IE when serializing the DOM.
- Fixed bug where IE wouldn't properly handle custom elements when the contents was serialized.
- Fixed bug where you couldn't move the caret in Gecko if you focused the editor using the API or a UI control.
- Fixed bug where adjacent links would get merged on IE due to bugs in their link command.
- Fixed bug where the color split buttons would loose the selection on IE if the editor was placed in a frame/iframe.
- Fixed bug where floated images in WebKit wouldn't get properly linked.
- Fixed bug where the fullscreen mode in a separate window wasn't forced into IE9+ standards mode.
- Fixed bug where pressing enter in an empty editor on WebKit could produce DIV elements instead of P.
- Fixed bug where spans would get removed incorrectly when merging two blocks on backspace/delete on WebKit.
- Fixed bug where the editor contents wouldn't be completely removed on backspace/delete on WebKit.
- Fixed bug where the fullpage plugin wouldn't properly render style elements in the head on IE 6/7.
- Fixed bug where the nonbreaking_force_tab option in the nonbreaking plugin wouldn't work on Gecko/WebKit.
- Fixed bug where the isDirty state would become true on non IE browsers if there was an table at the end of the contents.
- Fixed bug where entities wasn't properly encoded on WebKit when pasting text as plain text.
- Fixed bug where empty editors would produce an exception of valid_elements didn't include body and forced_root_blocks where disabled.
- Fixed bug where the fullscreen mode wouldn't retain the header/footer in the fullpage plugin.
- Fixed issue where the plaintext_mode and plaintext_mode_sticky language keys where swapped.
-Version 3.4.4 (2011-08-04)
- Added new html5 audio support. Patch contributed by Ronald M. Clifford.
- Added mute option for video elements and preload options for video/audio patch contributed by Dmitry Kalinkin.
- Fixed selection to match visual selection before applying formatting changes.
- Fixed browser specific bugs in lists for WebKit and IE.
- Fixed bug where IE would scroll the window if you closed an inline dialog that was larger than the viewport. Patch by Laurence Keijmel.
- Fixed bug where pasting contents near a span element could remove parts of that span. Patch contributed by Wesley Walser.
- Fixed bug where formatting change would be lost after pressing enter.
- Fixed bug in WebKit where deleting across blocks would add extra styles.
- Fixed bug where moving cursor vertically in tables in WebKit wasn't working.
- Fixed bug in IE where deleting would cause error in console.
- Fixed bug where the formatter was not applying formats across list elements.
- Fixed bug where the wordcount plugin would try and update the wordcount if tinymce had been destroyed.
- Fixed bug where tabfocus plugin would attempt to focus elements not displayed when their parent element was hidden.
- Fixed bug where the contentEditable state would sometimes be removed if you deleted contents in Gecko.
- Fixed bug where inserting contents using mceInsertContent would fail if "span" was disabled in valid_elements.
- Fixed bug where initialization might fail if some resource on gecko wouldn't load properly and fire the onload event.
- Fixed bug where ctrl+7/8/9 keys wouldn't properly add the specific formats associated with them.
- Fixed bug where the HTML tags wasn't properly closed in the style plugins properties dialog.
- Fixed bug where the list plugin would produce an exception if the user tried to delete an element at the very first location.
-Version 3.4.3.2 (2011-06-30)
- Fixed bug where deleting all of a paragraph inside a table cell would behave badly in webkit.
- Fixed bugs in tests in firefox5 and WebKit.
- Fixed bug where selection of table cells would produce an exception on Gecko.
- Fixed bug where the caret wasn't properly rendered on Gecko when the editor was hidden.
- Fixed bug where pasting plain text into WebKit would produce a pre element it will now produce more semantic markup.
- Fixed bug where selecting list type formats using the advlist plugin on IE8 would loose editor selection.
- Fixed bug where forced root blocks logic wouldn't properly pad elements created if they contained data attributes.
- Fixed bug where it would remove all contents of the editor if you inserted an image when not having a caret in the document.
- Fixed bug where the YUI compressor wouldn't properly encode strings with only a quote in them.
- Fixed bug where WebKit on iOS5 wouldn't call nodeChanged when the selection was changed.
- Fixed bug where mceFocus command wouldn't work properly on Gecko since it didn't focus the body element.
- Fixed performance issue with the noneditable plugin where it would enable/disable controls to often.
-Version 3.4.3.1 (2011-06-16)
- Fixed bug where listboxes were not being handled correctly by JAWS in firefox with the o2k7 skin.
- Fixed bug where custom buttons were not being rendered correctly when in high contrast mode.
- Added support for iOS 5 that now supporting contentEditable in it's latest beta.
- Fixed bug where urls in style attributes with a _ character followed by a number would cause incorrect output.
- Fixed bug where custom_elements option wasn't working properly on IE browsers.
- Fixed bug where custom_elements marked as block elements wouldn't get correctly treated as block elements.
- Fixed bug where attributes with </> wasn't properly encoded as XML entities.
-Version 3.4.3 (2011-06-09)
- Fixed bug where deleting backwards before an image into a list would put the cursor in the wrong location.
- Fixed bug where styles plugin would not apply styles across multiple selected block elements correctly.
- Fixed bug where cursor would jump to start of document when selection contained empty table cells in IE8.
- Fixed bug where applied styles wouldn't be kept if you pressed enter twice to produce two paragraphs.
- Fixed bug where a ghost like caret would appear on Gecko when pressing enter while having a text color applied.
- Fixed bug where IE would produce absolute urls if you inserted a image/link and reloaded the page.
- Fixed bug where applying a heading style to a list item would cascade style to children list items.
- Fixed bug where Editor loses focus when backspacing and changing styles in WebKit.
- Fixed bug where exception was thrown in tinymce.util.URI when parsing a relative URI and no base_uri setting was provided.
- Fixed bug where alt-f10 was not always giving focus to the toolbar on Safari.
- Added new 'allow_html_in_named_anchor' option to allow html to occur within a named anchor tag. Use at own risk.
- Added plugin dependency support. Will autoload plugins specified as a dependency if they haven't been loaded.
- Fixed bug where the autolink plugin didn't work with non-English keyboards when pressing ).
- Added possibility to change properties of all table cells in a column.
- Added external_image_list option to get images list from user-defined variable or function.
- Fixed bug where the autoresize plugin wouldn't reduce the editors height on Chrome.
- Fixed bug where table size inputs were to small for values with size units.
- Fixed bug where table cell/row size input values were not validated.
- Fixed bug where menu item line-height would be set to wrong value by external styles.
- Fixed bug where hasUndo() would return wrong answer.
- Fixed bug where page title would be set to undefined by fullpage plugin.
- Fixed bug where HTML5 video properties were not updated in embedded media settings.
- Fixed bug where HTML comment on the first line would cause an error.
- Fixed bug where spellchecker menu was positioned incorrectly on IE.
- Fixed bug where breaking out of list elements on WebKit would produce a DIV instead of P after the list.
- Fixed bug where pasting from Word in IE9 would add extra BR elements when text was word wrapped.
- Fixed bug where numeric entities with leading zeros would produce incorrect decoding.
- Fixed bug where hexadecimal entities wasn't properly decoded.
- Fixed bug where bookmarks wasn't properly stored/restored on undo/redo.
- Fixed bug where the mceInsertCommand didn't retain the values of links if they contained non url contents.
- Fixed bug where the valid_styles option wouldn't be properly used on styles for specific elements.
- Fixed so contentEditable is used for the body of the editor if it's supported.
- Fixed so trailing BR elements gets removed even when forced_root_blocks option was set to false/null.
- Fixed performance issue with mceInsertCommand and inserting very simple contents.
- Fixed performance issue with older IE version and huge documents by optimizing the forced root blocks logic.
- Fixed performance issue with table plugin where it checked for selected cells to often.
- Fixed bug where creating a link on centered/floated image would produce an error on WebKit browsers.
- Fixed bug where Gecko would remove single paragraphs if there where contents before/after it.
- Fixed bug where the scrollbar would move up/down when pasting contents using the paste plugin.
-Version 3.4.2 (2011-04-07)
- Added new 'paste_text_sticky_default' option to paste plugin, enables you to set the default state for paste as plain text.
- Added new autoresize_bottom_margin option to autoresize plugin that enables you to add an extra margin at the bottom. Patch contributed by Andrew Ozz.
- Rewritten the fullpage plugin to handle style contents better and have a more normalized behavior across browsers.
- Fixed bug where contents inserted with mceInsertContent wasn't parsed using the default dom parser.
- Fixed bug where blocks containing a single anchor element would be treated as empty.
- Fixed bug where merging of table cells on IE 6, 7 wouldn't look correctly until the contents was refreshed.
- Fixed bug where context menu wouldn't work properly on Safari since it was passing out the ctrl key as pressed.
- Fixed bug where image border color/style values were overwritten by advimage plugin.
- Fixed bug where setting border in advimage plugin would throw error in IE.
- Fixed bug where empty anchors list in link settings wasn't hidden.
- Fixed bug where xhtmlextras popups were missing localized popup-size parameters.
- Fixed bug where the context menu wouldn't select images on WebKit browsers.
- Fixed bug where paste plugin wouldn't properly extract the contents on WebKit due to recent changes in browser behavior.
- Fixed bug where focus of the editor would get on control contents on IE lost due to a bug in the ColorSplitButton control.
- Fixed bug where contextmenu wasn't disabled on noneditable elements.
- Fixed bug where getStyle function would trigger error when called on element without style property.
- Fixed bug where editor fail to load if Javascript Compressor was used.
- Fixed bug where list-style-type=lower-greek would produce errors in IE<8.
- Fixed bug where spellchecker plugin would produce errors on IE6-7.
- Fixed bug where theme_advanced_containers configuration option causes error.
- Fixed bug where the mceReplaceContent command would produce an error since it didn't correctly handle a return value.
- Fixed bug where you couldn't enter float point values for em in dialog input fields since it wouldn't be considered a valid size.
- Fixed bug in xhtmlxtras plugin where it wasn't possible to remove some attributes in the attributes dialog.
-Version 3.4.1 (2011-03-24)
- Added significantly improved list handling via the new 'lists' plugin.
- Added 'autolink' plugin to enable automatically linking URLs. Similar to the behavior IE has by default.
- Added 'theme_advanced_show_current_color' setting to enable the forecolor and backcolor buttons to continuously show the current text color.
- Added 'contextmenu_never_use_native' setting to disable the ctrl-right-click showing the native browser context menu behaviour.
- Added 'paste_enable_default_filters' setting to enable the default paste filters to be disabled.
- Fixed bug where selection locations on undo/redo didn't work correctly on specific contents.
- Fixed bug where an exception would be trown on IE when loading TinyMCE inside an iframe.
- Fixed bug where some ascii numeric entities wasn't properly decoded.
- Fixed bug where some non western language codes wasn't properly decoded/encoded.
- Fixed bug where undo levels wasn't created when deleting contents on IE.
- Fixed bug where the initial undo levels bookmark wasn't updated correctly.
- Fixed bug where search/replace wouldn't be scoped to editor instances on IE8.
- Fixed bug where IE9 would produce two br elements after block elements when pasting.
- Fixed bug where IE would place the caret at an incorrect position after a paste operation.
- Fixed bug where a paste operation using the keyboard would add an extra undo level.
- Fixed bug where some attributes/elements wasn't correctly filtered when invalid contents was inserted.
- Fixed bug where the table plugin couldn't correctly handle invalid table structures.
- Fixed bug where charset and title of the page were handled incorrectly by the fullpage plugin.
- Fixed bug where toggle states on some of the list boxes didn't update correctly.
- Fixed bug where sub/sub wouldn't work correctly when done as a caret action in Chrome 10.
- Fixed bug where the constrain proportions checkbox wouldn't work in the media plugin.
- Fixed bug where block elements containing trailing br elements wouldn't treated properly if they where invalid.
- Fixed bug where the color picker dialog wouldn't be rendered correctly when using the o2k7 theme.
- Fixed bug where setting border=0 using advimage plugin invalid style attribute content was created in Chrome.
- Fixed bug with references to non-existing images in css of fullpage plugin.
- Fixed bug where item could be unselected in spellchecker's language selector.
- Fixed bug where some mispelled words could be not highlighted using spellchecker plugin.
- Fixed bug where spellchecking would merge some words on IE.
- Fixed bug where spellchecker context menu was not always positioned correctly.
- Fixed bug with empty anchors list in advlink popup when Invisible Elements feature was disabled.
- Fixed bug where older IE versions wouldn't properly handle some elements if they where placed at the top of editor contents.
- Fixed bug where selecting the whole table would enable table tools for cells and rows.
- Fixed bug where it wasn't possible to replace selected contents on IE when pasting using the paste plugin.
- Fixed bug where setting text color in fullpage plugin doesn't work.
- Fixed bug where the state of checkboxes in media plugin wouldn't be set correctly.
- Fixed bug where black spade suit character was not included in special character selector.
- Fixed bug where setting invalid values for table cell size would throw an error in IE.
- Fixed bug where spellchecking would remove whitespace characters from PRE block in IE.
- Fixed bug where HR was inserted inside P elements instead of splitting them.
- Fixed bug where extra, empty span tags were added when using a format with both selector and inline modes.
- Fixed bug where bullet lists weren't always detected correctly.
- Fixed bug where deleting some paragraphs on IE would cause an exception.
- Fixed bug where the json encoder logic wouldn't properly encode \ characters.
- Fixed bug where the onChange event would be fired when the editor was first initialized.
- Fixed bug where mceSelected wouldn't be removed properly from output even if it's an internal class.
- Fixed issue with table background colors not being transparent. This improves compliance with users browser color preferences.
- Fixed issue where styles were not included when using the full page plugin.
- Fixed issue where drag/drop operations wasn't properly added to the undo levels.
- Fixed issue where colors wasn't correctly applied to elements with underline decoration.
- Fixed issue where deleting some paragraphs on IE would cause an exception.
-Version 3.4 (2011-03-10)
- Added accessibility example with various accessibility options contributed by Ephox.
- Fixed bug where attributes wasn't properly handled in the xhtmlxtras plugin.
- Fixed bug where the image.htm had some strange td artifacts probably due to auto merging.
- Fixed bug where the ToolbarGroup had an missing reference to this in it's destroy method.
- Fixed bug with the resizeBy function in the advanced theme where it was scaled by the wrong parent.
- Fixed bug where an exception would be thrown by the element if the page was served in xhtml mode.
- Fixed bug where mceInsertContent would throw an exception when page was served in xhtml mode.
- Fixed bug where you couldn't select a forground/background color when page was served in xhtml mode.
- Fixed bug where the editor would scroll to the toolbar when clicked due to a call to focus in ListBox.
- Fixed bug where pages with rtl dir wouldn't render split buttons correctly when using the o2k7 theme.
- Fixed bug where anchor elements with names wasn't properly collapsed as they where in 3.3.x.
- Fixed bug where WebKit wouldn't properly handle image selection if it was done left to right.
- Fixed bug where the formatter would align images when the selection range was collapsed.
- Fixed bug where the image button would be active when the selection range was collapsed.
- Fixed bug where the element_format option wasn't used by the new (X)HTML serializer logic.
- Fixed bug where the table cell/row dialogs would produce empty attributes.
- Fixed bug where the tfoot wouldn't be added to the top of the table.
- Fixed bug where the formatter would merge siblings with white space between them.
- Fixed bug where pasting headers and paragraphs would produce an extra paragraph.
- Fixed bug where the ColorSplitButton would throw an exception if you clicked out side a color.
- Fixed bug where IE9 wouldn't properly produce new paragraphs on enter if the current paragraph had formatting.
- Fixed bug where multiple BR elements at end of block elements where removed.
- Fixed bug where fullscreen plugin wouldn't correctly display the edit area on IE6 for long pages.
- Fixed bug where paste plugin wouldn't properly encode raw entities when pasting in plain text mode.
- Fixed bug where the search/replace plugin wouldn't work correctly on IE 9.
- Fixed so the drop menus doesn't get an outline border visible when focused, patch contributed by Ephox.
- Fixed so the values entered in the color picker are forced to hex values.
- Removed dialog workaround for IE 9 beta since the RC is now out and people should upgrade.
- Removed obsolete calls in various plugins to the mceBeginUndoLevel command.
-Version 3.4b3 (2011-02-10)
- Added WAI-ARIA support for the main UI and dialogs this feature was contributed by Ephox.
- Added iframe support to media plugin in order to handle the new YouTube HTML5 video formats.
- Fixed bug where anchors would wrap the text contents after it due to a bug in the DomParser logic.
- Fixed bug where the selected state wouldn't be removed on ListBox controls when a menu item was selected.
- Fixed bug where IE could throw an unspecified error exception when the getBookmark logic was executed.
- Fixed bug where IE would throw an invalid argument error when focus was applied to an empty editor instance.
- Fixed bug where applying inline format wouldn't work if the start cell in the selection was empty.
- Fixed bug where auto detection logic for YouTube and Google Video wouldn't work in the new media plugin.
- Fixed bug where td elements would get a colspan/rowspan of 1 when created by the table plugin.
- Fixed bug where removal/padding of empty elements wasn't handled correctly.
- Fixed bug where internal elements would show up in element path.
- Fixed bug where internal elements would get serialized as valid output.
- Fixed bug where color wasn't correctly applied to anchor elements.
- Fixed bug where float option in the style plugin dialog wouldn't be handled correctly on WebKit.
- Fixed bug where the tinymce.dom.TreeWalker prev function wouldn't walk the DOM correctly.
- Fixed bug where mceInsertContent command could produce empty block elements after the inserted content.
- Fixed bug where mceInsertContent command wouldn't apply visual aids on tables and similar elements.
- Fixed bug where empty block elements would get double br bogus elements in them.
- Fixed bug where the color menu wouldn't apply the color correctly on IE when the viewport was to small.
- Fixed bug where right clicking out side the body element of the editor iframe would prevent paste from working on IE.
- Fixed bug where the onContextMenu event wouldn't fire correctly on IE if you clicked out side the body element.
- Fixed bug where the onContextMenu event wouldn't fire correctly on modern Opera versions that now support it by default.
- Fixed bug where legacy content wasn't converted correctly when inserted using mceInsertContent or through the source dialog.
- Fixed bug where resizing images or tables wouldn't update the style attribute correctly or leave data-mce prefixed attributes.
- Fixed bug where adding links wouldn't work correctly when using TinyMCE jQuery version with jQuery 1.5.
- Fixed bug where single quotes inside param elements wasn't treated correctly by the media plugin.
- Fixed bug where pasting plain text in WebKit wouldn't work correctly. It will now auto detect the WebKit bug and use plain text mode.
- Fixed bug where the DomParser would fail to move out invalid elements within invalid elements on complex contents.
- Fixed bug where paste as plain text would not decode html entities properly.
- Fixed bug where large paragraphs would cause incorrect scrolling behavior if you would split them using enter.
- Fixed bug where the SaxParser wouldn't properly parse some specific short ended elements.
- Fixed so mceReplaceContent supports caret position and makes sure that the contents inserted gets validated.
- Fixed so unnecessary traling br elements in blocks gets removed on Gecko/WebKit when using mceInsertContent command.
- Moved some plugin css contents into the skin content css files to reduce the number of http requests.
- Moved some plugin specific images into the theme img directory since they can then be shared.
-Version 3.4b2 (2011-01-13)
- Added new custom flash player, this player supports mp4 and flv and has skin support.
- Fixed so mceInsertContent handles context correctly to enforce valid nesting of elements.
- Fixed bug where scrolling would become jerky on IE on some contents.
- Fixed bug where paste as plain text would throw exception of missing entities setting.
- Fixed bug where anchor nodes where removed by the new serializer engine.
- Fixed bug where IE would crash if when backspace where used on some specific contents.
- Fixed bug where pasting of plain text in WebKit would result in merging of text lines.
- Fixed bug where it wasn't possible to delete images or tables using backspace on IE9.
- Fixed bug where urls in styles would generate a JS error due to incorrect scope.
- Fixed bug where copy paste from Java applications would produce extra contents in FF on Mac.
- Fixed bug where the verify_html option wouldn't allow all elements and attributes.
-Version 3.4b1 (2010-12-20)
- Added new serialization engine that increases performance and enforces valid output according to the specified schema settings.
- Added new HTML parser logic used by the serialization engine and can handle malformed html contents.
- Added new valid_children config option, enables more fine grain control of elements can be inside other elements.
- Added new entities encoding logic boost performance and will only encode entities based on context i.e. attributes/text nodes.
- Added new protect setting that enables users to protect template items from being removed by the serializer logic.
- Added new {$caret} marker for the mceInsertContent command. Makes it possible to move the caret to a specific position when inserting contents.
- Added new validation of anchor names. Only valid W3C names will be accepted.
- Replaced the internal _mce_ prefixed attributes to the more standard HTML5 data-mce- prefix. This will also resolve future browser santiaztion issues.
- Fixed bug where the paste plugin wouldn't convert Word lists with more than 9 items to real ol lists. Patch contributed by Mike (yogaboy).
- Fixed bug where clicking on a format title would produce errors if the current selection didn't have any formats.
- Fixed bug where paste of simple texts wouldn't work correctly in Gecko using the paste plugin since it keeps block formatting.
- Fixed bug where confirm dialogs didn't display correctly due to resent IE9 fixes.
- Fixed bug where spaces in URLs wouldn't be properly encoded to %20 if the user entered them in the link dialogs. Patch contributed by Ephox.
- Fixed bug where the image alignment buttons wouldn't reposition the resize handles on FF due to a browser issue. Patch contributed by Ephox.
- Fixed bug where the compareBoundaryPoints method of the IE Range class didn't work correctly. Patch contributed by Ephox.
- Fixed bug where selection of elements using double click wouldn't select the clicked element but rather the parent node on FF. Patch contributed by Ephox.
- Fixed bug where IE would scroll the user to the current selection causing parent document to scroll as well. Patch contributed by Ephox.
- Fixed bug where style compression would incorrectly compress items with different values. It now only compresses if the values are the same. Patch contributed by Ephox.
- Fixed bug where FF would add non breaking spaces outside TD elements if formatting was applied to table cells. Patch contributed by Ephox.
- Fixed bug where the caret position would be lost on WebKit browsers if you pasted images multiple times. Patch contributed by Ephox.
- Fixed bug where non word contents like * would be counted as words in the wordcount pluging. Patch contributed by David Balatero.
- Fixed bug where the toggle absolute button in the layer plugin wouldn't remove the existing internal style attribute first.
- Fixed bug where the autosave plugin would generate an exception on IE if the user had disabled userdata persistence.
- Fixed bug where the paste plugin would remove dashed classes on IE since the regexps didn't include that character.
- Fixed bug where applying text color would not add spans inside link elements. This is needed due to CSS style inheritance.
- Fixed bug where applying block formats to empty elements wouldn't render correctly on IE.
- Fixed bug where the searchreplace plugin would add a f or r character when shortcuts where used on IE while using default dialogs.
- Fixed bug where Opera wouldn't load scripts correctly since the onreadystate would fire even though the script wasn't loaded.
- Fixed issue where &nbsp; wouldn't be handled correctly in the bbcode plugin if entity_encoding was set to raw.
- Fixed issue where contents would flicker since the content css files where asynchronously loaded.
- Fixed bug where WebKit wouldn't create links on images with a float style.
-Version 3.3.9.3 (2010-12-20)
- Fixed issue where WebKit wouldn't correctly apply ins/del in xhtmlxtras plugin.
- Fixed bug where paste as plaintext on WebKit wouldn't produce br and p elements correctly.
- Fixed bug where the confirm dialog texts would be incorrectly placed due to recent IE 9 workarounds in the window.css.
- Fixed bug where applying text color would not add spans inside link elements. This is needed due to CSS style inheritance.
-Version 3.3.9.2 (2010-09-29)
- Fixed bug where placing the caret in IE 9 beta 1 would not work correctly if you clicked out side the document body element.
- Fixed bug where IE 9 beta 1 wouldn't resize the editor correctly since the events didn't fire as previous versions did.
- Fixed bug where FF would produce an error message when being rendered inside a hidden div element.
- Fixed bug where resize logic could produce a cookie with a width/height less than the size of the container.
- Fixed bug where content_css wouldn't populate the styles dropdown correctly.
-Version 3.3.9.1 (2010-09-23)
- Fixed bug where WebKit browsers wouldn't activate the image button when images where selected.
- Fixed bug where Opera Presto 10.60 deletes elements when restoring bookmarks.
- Fixed bug where IE9 beta1 doesn't handle regexp replacement values correctly.
- Fixed bug where IE9 beta1 didn't render the inline dialogs correctly due to a bug with CSS clip.
- Fixed bug where IE9 beta1 would produce error messages on load since they removed the document.recalc method.
- Fixed bug where IE9 beta1 would produce <html xmlns=""> since they haven't implemented document.implementation.createDocument correctly.
- Fixed bug where IE9 beta1 would searchreplace doesn't work since their native DOM Range doesn't have a find method.
- Fixed bug where IE9 beta1 would render the source view incorrectly due to incorrect viewport size measurements.
- Fixed bug where IE9 beta1 would crash when running the basic functionality unit tests.
- Fixed bug where IE9 beta1 would wrap elements in blocks correctly due to changes to the selection object.
- Fixed bug where IE9 beta1 would fail to insert contents since they havn't implemented the createContextualFragment method in their DOM Range.
- Fixed bug where IE9 beta1 would fail to handle image selection since they currently doesn't support control selections in their DOM Range.
- Fixed bug where IE9 beta1 would fail to load scripts since they fire the onload event before the scripts are parsed and executed.
-Version 3.3.9 (2010-09-08)
- Fixed bug where inserting table rows into a table with subtable would produce an incorrect column count.
- Fixed bug where the selection of cells in a table with subtables could produce invalid selections.
- Fixed bug where the table plugin would produce a script error if you tried to move the caret before a first child table.
- Fixed bug where the keep_styles feature on IE would move the caret to an incorrect location at the end of list blocks.
- Fixed so attributes from legacy elements such as font gets retained when they get converted to spans.
- Fixed minor issue where the select boxes wouldn't be set the not set by default in the table dialog.
-Version 3.3.8 (2010-06-30)
- On IE8+ and FireFox 3.5+, dragging an image now correctly adds an undo
- event.
- Fixed bug where WebKit would not move the caret to a correct position after a paste operation.
- Fixed bug where WebKit would produce a div wrapper element when pasting some contents.
- Fixed bug where the visual chars and nonbreaking plugin wouldn't show nbsp elements correctly.
- Fixed bug where the format states would be enabled even after the format was removed.
- Fixed bug where the delete key would move the caret to an incorrect position.
- Fixed bug where it wasn't possible to toggle of the current font size/family/style by clicking the title item.
- Fixed bug where the abbr element wouldn't get serialized correctly on IE6.
- Fixed so that the examples checks if they are executed from the local file system since that might not work properly.
-Version 3.3.7 (2010-06-10)
- Fixed bug where context menu would produce an error on IE if you right clicked twice and left clicked once.
- Fixed bug where resizing of the window on WebKit browsers in fullscreen mode wouldn't position the statusbar correctly.
- Fixed bug where IE would produce an error if the editor was empty and you where undoing to that initial level.
- Fixed bug where setting the table background on gecko would produce \" entities inside the url style property.
- Fixed bug where the button states wouldn't be updated correctly on IE if you placed the caret inside the new element.
- Fixed bug where undo levels wasn't properly added after applying styles or font sizes.
- Fixed bug where IE would throw an error if you used "select all" on empty elements and applied formatting to that.
- Fixed bug where IE could select one extra character when you did a bookmark call on a caret location.
- Fixed bug where IE could produce a script error on delete since it would sometimes produce an invalid DOM.
- Fixed bug where IE would return the wrong start element if the whole element was selected.
- Fixed bug where formatting states wasn't updated on IE if you pressed enter at the end of a block with formatting.
- Fixed bug where submenus for the context menu wasn't removed correctly when the editor was destroyed.
- Fixed bug where Gecko could select the wrong element after applying format to multiple elements.
- Fixed bug where Gecko would delete parts of the previous element if the selection range was a element selection.
- Fixed bug where Gecko would not merge paragraph elements correctly if they contained br elements.
- Fixed bug where the cleanup button could produce span artifacts if you pressed it twice in a row.
- Fixed bug where the fullpage plugin header/footer would be have it's header reseted to it's initial state on undo.
- Fixed bug where an empty paragraph would be collapsed if you performed a cleanup while having the caret inside it.
- Fixed a few memory leaks on IE especially with drop menus in listboxes and the spellchecker.
- Fixed so formats applied to the current caret gets merged to reduce the number of output elements.
- Added the latest version of Sizzle for the CSS selector logic to fix a compatibility issue with prototype.
-Version 3.3.6 (2010-05-20)
- Fixed bug where a editor.focus call could produce errors on IE in very specific scenarios.
- Fixed bug where Gecko would produce an error if you unformatted text inside an empty element.
- Fixed bug where IE would produce an error if the caret was placed before a table and you used the align buttons.
- Fixed bug where the font size drop down didn't display the a preview correctly.
- Fixed bug where the paste plugin wouldn't include all contents some times on WebKit browsers.
- Fixed bug where the plain text mode toggle wouldn't work properly on WebKit.
- Fixed bug where the editors statusbar would become invisible when you resized the window in fullscreen mode.
-Version 3.3.5.1 (2010-05-07)
- Fixed a critical bug with the fullscreen plugin. Produced error messages when the state was toggled on/off.
-Version 3.3.5 (2010-05-06)
- Added new merge_with_parents option to formats, enables the control of removal of elements with similar parents.
- Fixed so the default behavior for applying classes isn't a toggle state but the old behavior from before the 3.3 release.
- Fixed bug where selecting contents using double click on Gecko would produce errors when using removing format.
- Fixed bug where the IE DOM could get messed up when non valid contents was pasted into the editor.
- Fixed bug where merging selected table cells using the context menu didn't work as expected.
- Fixed bug where some nestled formatting would be applied incorrectly.
- Fixed bug with enter in list items when using the force_br_newlines mode on WebKit patch contributed by Ryan Koopmans.
- Fixed bug where undo/redo could produce js errors on some specific operations.
- Fixed bug where the theme_advanced_font_sizes didn't work as before 3.3 when complex settings where used.
- Fixed bug where the table plugin would copy cell/row id attributes when making new rows/cells.
-Version 3.3.4 (2010-04-27)
- Fixed bug where fullscreen plugin would add two editor instances to EditorManager collection.
- Fixed bug where it was difficult to enter text on non western languages such as Japanese on IE.
- Fixed bug where removing contents from nodes could result in an exception when using undo/redo.
- Fixed bug with selection of images inside layers or other resizable containers on IE.
- Fixed so editors isn't initialized on iPhone/iPad devices since they don't have caret support.
-Version 3.3.3 (2010-04-19)
- Added new script_loaded callback function setting for the jQuery plugin.
- Added various fixes and new rpc methods for the spellchecker plugin. Patch contributed by Michael Peters.
- Removed some unnecessary inline style information from some of the dialogs.
- Fixed some issues with the chaining for the TinyMCE jQuery plugin.
- Fixed so any extra arguments passed to patched jQuery functions gets passed through. Patch contributed by Lee Henson.
- Fixed so spellchecking/contextmenu can be toggled on/off if the browser has native spellchecker support.
- Fixed bug where some texts in the new paste plugin wasn't placed in language pack.
- Fixed bug where IE would produce an incorrect information message when cutting.
- Fixed bug where removing items using the xhtmlxtras plugin wouldn't work correctly.
- Fixed bug where setting table background images would add extra quotes on Gecko.
- Fixed bug where shortcut for bold/italic/underline wouldn't work properly on WebKit.
- Fixed bug where IE would produce an error message if only contents was an image tag and bold was used.
- Fixed bug where the caret would move if alignment was applied to empty block elements.
- Fixed bug where some shortcut key commands wouldn't apply formatting correctly.
-Version 3.3.2 (2010-03-25)
- Fixed bug where it was possible to scale the editor iframe smaller than the editor UI.
- Fixed bug where some of the resizing option didn't work with the new live resize.
- Fixed bug where the format listbox didn't show nestled formats correctly.
- Fixed bug where the native listboxes didn't work correctly.
- Fixed bug where font size selection in using the legacyoutput plugin would produce errors.
- Fixed so block and blockquote formats remove their matching element regardless of it's attributes.
-Version 3.3.1 (2010-03-18)
- Added new live resize feature, the editor contents is now visible while resizing.
- Fixed bug where some valid_element patterns would produce an unknown property error.
- Fixed bug where it wasn't possible to toggle off blockquotes.
- Fixed bug where an undo level wasn't produced when applying formatting using the styles dropdown.
- Fixed bug where IE 6/7 wouldn't perform caret formatting due to a focus/event bug in IE.
- Fixed bug where undo/redo wasn't restoring the previous selection correctly.
- Fixed bug where the caret would become invisible if you resized the editor in latest Gecko.
- Fixed bug where the class attribute wasn't completely removed in IE 6/7 when the removeClass function was used.
- Fixed so the matchNode method of the Formatter class returns the matched format rule.
- Fixed so it's possible to apply formatting to both blocks and as inline elements.
-Version 3.3 (2010-03-10)
- Fixed bug where backspace on a table on IE would produce an empty tbody and some JS exceptions.
- Fixed bug where some redundant children wasn't removed properly when applying inline styles to them.
- Fixed bug where Chrome would produce incorect dialog sizes if the inlinepopups plugin wasn't used.
- Fixed bug where spans with different classes would get merged if they where siblings to each other.
- Fixed bug where IE 8 would crash if you used the spellchecker.
- Fixed bug where Input Method for non western languages didn't work correctly.
- Fixed bug where the UI would render incorrectly in FF 3.6 on Mac due to a bug n their rendering engine.
- Fixed bug where WebKit wouldn't scroll down correctly if Shift+Enter was used. Patch contributed by Thomas Andersen.
-Version 3.3rc1 (2010-02-23)
- Fixed bug with new legacyoutput plugin not working correctly on it's own.
- Fixed bug some performance issues with removing text formats.
- Fixed bug where TinyMCE specific attributes wasn't removed properly by remove format.
- Fixed bug where it wasn't possible to align images within inline elements.
- Fixed bug where Ctrl+Delete/Backspace would produce an invalid argument exception on IE.
- Fixed bug where the search/replace logic could produce an infinite loop on IE for reverse searches.
- Fixed bug where cloning formats in cells didn't work properly on IE.
- Fixed bug where IE6 would produce a horizontal scroll bar.
- Fixed so remove jQuery method removes the TinyMCE instance as well as the specified textarea.
- Fixed so selected rows and cells gets updated using the row/cell properties dialogs.
-Version 3.3b2 (2010-02-04)
- Fixed bug where sometimes img elements would be removed by split method in DOMUtils.
- Fixed bug where merging of span elements could occur on bookmark nodes.
- Fixed bug where classes wasn't properly removed when removeformat was used on IE 6.
- Fixed bug where multiple calls to an tinyMCE.init with mode set to exact could produce the same unique ID.
- Fixed bug with the IE selection implementation when it was feeded an document range.
- Fixed bug where block elements formatting wasn't properly removed by removeformat on all browsers.
- Fixed bug where selection location was lost if you performed a manual cleanup.
- Fixed bug where removeformat wouldn't remove span elements within styled block elements.
- Fixed bug where an error would be thrown if you clicked on the separator lines in menus.
- Fixed bug with the jQuery plugin adding always adding a querystring value to other resources.
- Fixed bug where IE would produce an error message if you had an empty editor instance.
- Fixed bug where Shift+Enter didn't produce br elements on WebKit browsers.
- Fixed bug where a temporary marker element wasn't removed by the paste plugin.
- Fixed bug where inserting a table would produce two undo levels instead of one.
-Version 3.3b1 (2010-01-25)
- Added new text formatting engine. Fixes a lot of browser quirks and adds new possibilities.
- Added new advlist plugin that enables you to set the formats of list elements.
- Added new paste plugin logic that enables you to retain style information from Office.
- Added new autosave plugin logic that automatically saves contents in local storage.
- Added new valid_styles option. Adds the possibility to restrict styles and their order.
- Added new theme_advanced_runtime_fontsize option to display the runtime font size in font size select box.
- Added new jquery plugin version that handles the gzip compressor amongst other things. Contributed by Speednet.
- Added new $ function to tinymce namespace and editor instances for the jQuery build.
- Added the possibility to get editors by index as well as name in the tinyMCE.editors collection.
- Fixed so the contents inside the editor renders in standards mode by default.
- Fixed bug where it wasn't possible to move the caret on short documents running in standards mode on IE.
- Fixed bug where the decode method of the DOMUtils class could end up in an endless loop.
- Fixed bug where it was possible to bypass the paste cleanup on non IE browsers if you clicked while pasting.
- Fixed bug where some attributes wasn't serialized correctly on IE if wildcard attribute patters where used.
- Fixed bug where entity decoding was performed on strings that didn't have any valid entities in them.
- Fixed bugs with the insertNode method of the IE DOMRange implementation. Patch contributed by Scott McNaught.
- Rewrote the getBookmark/moveToBookmark selection logic to boost performance on larger documents.
- Rewrote the table plugin to include new cell selection logic and fixed various bugs and issues.
- Merged the tinyMCE, tinymce and tinymce.EditorManager into the same instance makes more sense.
- Removed browser setting since the browser support for TinyMCE is not far better than it was when that setting was introduced.
- Changed the mce_ attribute prefix to the more standard _mce_ prefix. This is similar to browser vendors prefixes.
- Optimized performance with named entities on Gecko. Regexp replace was executing very slowly probably due to a Gecko bug.
- Optimized performance of the IE specific selection/range implementation.
- Removed the safari plugin since we now replaced all text formatting logic to custom code.
-Version 3.2.7 (2009-09-22)
- Fixed bug where uppercase paragraphs could still produce an invalid DOM tree on IE.
- Fixed bug where split command didn't work on WebKit since the node serializer needs a real document to work with.
- Fixed bug where it was impossible in Gecko to place the caret before a table if it was the first one.
- Fixed bug where linking to urls like ../../ would produce an extra traling slash ../..//.
- Fixed bug where the template cdate functionality was using an old 2.x API call. Patch contributed by vectorjohn.
- Fixed bug where urls to the same site but different protocol would be converted when relative_urls where set to false. Patch contributed by Ted Rust.
- Fixed bug where the paste plugin would remove mceItem prefixed classes.
- Fixed bug where the paste plugin would sometimes add items in a reverse order on WebKit.
- Fixed bug where the paste buttons would present an error message on Gecko even if you changed user.js. Patch contributed by Todd (teeaykay).
- Fixed bug where Opera would crash if you had tables incorrectly placed inside paragraphs.
- Fixed bug where styles elements wasn't properly processed if you had bad input HTML.
- Fixed bug where style attributes wasn't properly forced into a specific format.
- Fixed bug and issues with boolean attributes like checked, nowrap etc.
- Fixed bug where input elements could override attributes on form elements.
- Fixed bug where script or style elements could get modified by the DOMUtils processHTML method.
- Fixed bug where the selected attribute could get lost when force root blocks logic got executed on IE. Patch contributed by Attila Mezei-Horvati.
- Fixed bug where getAttribs method didn't handle boolean attributes correctly on IE.
- Fixed so the paste from word dialog is presented if you paste content on an IE with to restrictive security settings.
- Fixed so the paste_strip_class_attributes option is set to none by default in the paste plugin.
- Removed default border=0 on tables for the default value of valid_elements.
-Version 3.2.6 (2009-08-19)
- Added new wordcount plugin, this will display the number of typed words as you write. Contributed by Andrew Ozz.
- Added new getNext and getPrev methods to DOM utils. These will return the first matching sibling.
- Fixed bug where it was impossible to place the caret after a table on Gecko. It will now add a paragraph after tables.
- Fixed bug where inline dialogs would fail if used in a window opened using a showModalDialog. Patch contributed by Derek Britt.
- Fixed bug where IE could sometimes render a unknown runtime error on invalid input HTML.
- Fixed bug where some incorrectly placed tables wouldn't be moved outside the paragraphs on IE.
- Fixed bug where uppercase script/style element wouldn't be handled correctly and converted to valid lowercase.
- Fixed bug where some WebKit versions on Mac OS X would produce issues with hidden select fields.
- Fixed bug where the media plugin would fail on WebKit since the node wasn't properly imported to the right document.
- Fixed bug where absolute URLs for the TinyMCE script using a base href element would cause loading problems in IE 6/7.
- Fixed bug where pasting using the paste plugin wasn't possible on IE with to restrictive security settings.
- Fixed bug where pasting of whitespace was impossible using the new custom paste method.
- Fixed bug where pasting on some WebKit browsers would not work if you pasted specific contents due to a WebKit bug.
- Fixed bug where doctypes with multiple lines would not be parsed correctly by the fullpage plugin. Patch contributed by Colin.
- Fixed bug where the autoresize plugin would break the fullscreen functionality.
- Fixed bug where tables would be chopped up running on IE using invalid contents and pasting paragraphs into a cell.
- Fixed bug where the each method of jQuery build didn't iterate styleSheets. We now use the TinyMCE API one instead.
- Fixed bug where auto switching to paragraphs after headers some times failed in Gecko.
- Fixed so all editor options gets passed to the Serializer class. Patch contributed by Jasper Mattsson.
- Fixed so script/style blocks isn't wrapped in paragraphs as other inline elements.
- Fixed so the XHR requests sends the X-Requested-With HTTP header.
- Fixed so the data url scheme is handled in the tinymce.util.URI class.
- Changed inline documentation to use moxiedoc style comments.
- Removed the compat2x plugin people should have upgraded to the 3.x API by now. 3.0 was released more then a year ago.
- Re-added Gecko specific message for users who doesn't understand the security concept regarding paste.
-Version 3.2.5 (2009-06-29)
- Added new jQuery plugin for the jQuery specific package. This enables you to more easily load and use TinyMCE.
- Added new autoresize plugin contributed by Peter Dekkers. This plugin will auto resize the editor to the size of the contents.
- Fixed so all packages have the same directory structure. Previous releases had a different structure for the production package.
- Fixed so the paste from word dialog forces the contents to be processed as word contents even if it's not.
- Fixed so the jQuery build adapter build works. It's currently only excluding Sizzle.
- Fixed so noscript element contents is retained during the editing process.
- Fixed bug where the getBookmark method would need a "simple" string input when the documented way is a boolean.
- Fixed bug where invalid contents could break the fix_table_elements logic.
- Fixed bug where Sizzle specific attributes would be serialized if the valid_elements was set to *[*].
- Fixed bug where IE would produce an error if you specified a relative content_css and opened the paste dialog.
- Fixed bug where pasting images on IE would produce broken images if they came from an external site.
- Fixed bug where memory was leaked if you add/remove controls dynamically. Some event handlers wasn't removed properly.
- Fixed bug where domain relaxing wasn't treated correctly if you added it after the TinyMCE script element.
- Fixed bug where the activeEditor wasn't set to null if the last editor instance was removed.
- Fixed bug where IE was leaking memory on the onbeforeunload event due to some recently introduced logic. Patch contributed by Options.
- Fixed bug where inserting tables in Safari 4 didn't work due to a new WebKit bug where some element names are reserved.
- Fixed bug where URLs having a :// value in the query string would make it absolute regardless of URL settings.
- Fixed the WebKit specific bug where DOM Ranges would fail if the node wasn't attached to something in a different way.
- Removed the auto_resize option and the resizeToContent method from the tinymce.Editor class. Use the new autoresize plugin instead.
-Version 3.2.4.1 (2009-05-25)
- Fixed bug where Gecko browsers would produce an extra space after for example strong when loaded from sub domains.
- Fixed bug where script elements would be removed if they where placed inside a paragraph element.
- Fixed bug where IE 8 would produce 1 item remaining when loading CSS files dynamically with an empty cache.
- Fixed bug where bound events would be removed from other editor instances if a specific one was removed.
- Fixed various bugs and issues with script and style elements inside the editor.
- Fixed so all script contents gets wrapped in CDATA sections so that they can be parsed using a XML parser.
- Fixed so it's impossible for elements marked as closed to have child nodes rendered in output.
-Version 3.2.4 (2009-05-21)
- Added new paste_remove_styles/paste_remove_styles_if_webkit option to paste plugin concept contributed by Hadrien Gardeur.
- Added new functionality to paste plugin contributed by Scott Eade aka monkeybrain.
- Added new paste_block_drop option to the paste plugin this is disabled by default and will block any drag/drop event.
- Added new bind/unbind methods to DOMUtils these works like Event.add/Event.remove but is easier to access.
- Added new paste_dialog_width/paste_dialog_height options to paste pluign. Enables you to change the dialog sizes.
- Fixed bug on IE 8 where it would sometimes produce a "1 item remaining" status message that would never finish.
- Fixed bug on Safari 4 beta that would produce DOM Range exceptions on the DOMUtils split method since the browser has a bug.
- Fixed bug where the paste plugin could accidentally think that some word sentences was supposed to be list elements.
- Fixed bug where paste plugin would produce one extra empty undo level on some browsers.
- Fixed bug where spans wasn't produced correctly on new line when the keep_styles option was enabled.
- Fixed bug where the caret would be placed at the beginning of contents in IE 8 if you selected colors from the color pickers.
- Fixed so the Event class is a normal class instead of a static one. The tinymce.dom.Event is now a global instance of that class.
- Fixed so internal events for instances gets removed when the DOMUtils instance is removed.
- Fixed so preventDefault and stopPropagation methods can be used on the event object in all browsers.
-Version 3.2.3.1 (2009-05-05)
- Fixed bug where paragraphs containing form elements such as input or textarea would be removed.
- Fixed bug where some IE versions would produce a wrapper function for events attributes.
- Fixed bug where table cell contents could be removed if you pressed return/enter at the end of the cell contents.
- Fixed bug where the paste plugin would remove a extra character if the selection range was collapsed.
- Fixed bug where creating tables with % width wouldn't be handled correctly on WebKit browsers.
-Version 3.2.3 (2009-04-23)
- Added new paste plugin logic. This new version will autodetect Word contents and clean it up.
- Added a optional root element argument to getPos so you can tell it where to stop the calculation.
- Added new DOM ready logic to remove the usage of document.write. We now use basically the same method as jQuery.
- Fixed bug where WebKit browsers would fail when selecting all contents in the area using Ctrl+A.
- Fixed bug where IE would produce paragraphs with empty inline style elements.
- Fixed bug where WebKit browsers would fail when inserting tables with a non pixel width.
- Fixed bug where block elements could get a redundant br element at the end of the element.
- Fixed bug where the tabfocus plugin only worked with a single editor instance on page.
- Fixed bug where IE 8 was loosing caret position if the selection was collapsed and a menu was clicked.
- Fixed bug with application/xhtml+xml mode where menus wasn't working properly.
- Fixed bug where the onstop workaround fix for IE would produce errors in an ASP update panel.
- Fixed bug where the submit function override could produce errors if executed in the wrong scope.
- Fixed bug where the area element wasn't closed by a short ending.
- Fixed various number issues in the style plugins properties dialog. Contributed by datpaulchen.
- Fixed issues with size suffix values in the style plugin dialog.
- Fixed issue where hasDuplicate variable would leak out to the global space due to a bug in the Sizzle engine.
- Fixed issue where the paste event would fire a dialog warning on IE since we extracted the text contents.
- Updated Sizzle engine to the latest version, this version fixes a few bugs that was reported.
-Version 3.2.2.3 (2009-03-26)
- Fixed regression bug with the getPos method, it would return invalid if the view port was to small.
-Version 3.2.2.2 (2009-03-25)
- Fixed so the DOMUtils getPos method can be used cross documents if needed.
- Fixed bug where undo/redo wasn't working correctly in Gecko browsers.
-Version 3.2.2.1 (2009-03-19)
- Added support for tel: URL prefixes. Even though this doesn't match any official RFC.
- Fixed so the select method of the Selection class selects the first best suitable contents.
- Fixed bug where the regexps for www. prefixes for link and advlink dialogs would match wwwX.
- Fixed bug where the preview dialog would fail to open if the content_css wasn't defined. Patch contributed by David Bildström (ChronoZ).
- Fixed bug where editors wasn't converted in application/xhtml+xml mode due to an issue with Sizzle.
- Fixed bug where alignment would fail if multiple lines where selected.
- Updated Sizzle engine to the latest version, this version fixes a few bugs that was reported.
-Version 3.2.2 (2009-03-05)
- Added new CSS selector engine. Sizzle the same one that jQuery and other libraries are using.
- Added new is and getParents methods to the DOMUtils class. These use the new Sizzle engine to select elements.
- Added new removeformat_selector option, enables you to specify a CSS selector pattern of elements to remove when using removeformat.
- Fixed so the getParent method can take CSS expressions when selecting it's parents.
- Added new ant based build process, includes a new javabased preprocessor and a yuicompressor ant task.
- Moved the tab_focus logic into a plugin called tabfocus, so the old tab_focus option has been removed from the core.
- Replaced the TinyMCE custom unit testing framework with Qunit and rewrote all tests to match the new logic.
- Moved the examples/testcases to a root directory called tests since it now includes slickspeed.
- Fixed bug where nbsp wasn't replaced correctly in ForceBlocks.js. Patch contributed by thorn.
- Fixed bug where an dom exception would be thrown in Gecko when the theme_advanced_path path was set to false under xml application mode.
- Fixed bug where it was impossible to get out of a link at the end of a block element in Gecko.
- Fixed bug where the latest WebKit nightly would fail when changing font size and font family.
- Fixed bug where the latest WebKit nightly would fail when opening dialogs due to changes to the arguments object.
- Fixed bug where paragraphs wasn't added to elements positioned absolute using classes.
- Fixed bug where font size values with dot's like 1.4em would produce a class instead of the style value.
- Fixed bug where IE 8 would return an incorrect position for elements.
- Fixed bug where IE 8 would render colorpicker/filepicker icons incorrectly.
- Fixed bug where trailing slashes for directories in URLs would be removed.
- Fixed bug where autostart and other boolean values in the media dialog wouldn't be stored/parsed correctly.
- Fixed bug where the repaint call for the media plugin wouldn't be executed due to a typo in the source.
- Fixed bug where id attribute of object elements wasn't kept intact by the media plugin.
- Fixed bug where preview of embeded elements when the media_use_script option was used would fail.
- Fixed bug where inlinepopups could be rendered at an incorrect location on IE 6 while dragging.
- Fixed bug where the blocker shim could be placed at an incorrect location on IE 6.
- Fixed bug where the multiple and size attributes of select elements would produce incorrect values while running in IE.
- Fixed bug where IE would loose the caret position is you selected a color from the color drop down.
- Fixed bug where remove format wouldn't work on IE since it couldn't remove span elements that had style information.
- Fixed bug where Opera was removing links when removing formatting from selected contents.
- Fixed bug where paragraphs could be produced inside non positional elements styled with the CSS position value of static.
- Fixed bug where removeformat wouldn't work if you selected part of a span in IE.
- Fixed bug where media plugin didn't retain the style attribute on embed/object elements.
- Fixed bug where auto focus on empty editor instances could produce strange results if you inserted an image into it.
- Fixed bug where &nbsp; characters would be removed in FF when inserted with the mceInsertContent or selection.setContent methods.
- Fixed bug where warning message of missing paste support wasn't displayed on WebKit browsers.
- Fixed bug where anchor links could include other links. The selected range is now unlinked before adding news links to it.
- Fixed memory leak when TinyMCE was used with prototype. Patch contributed by James Ots.
- Fixed so the non documented fullpage_hide_in_source_view option for the fullpage plugin works again in the 3.x branch.
- Fixed so tables doesn't get inserted into paragraphs by default since it's not W3C valid. Can be disabled by using the fix_table_elements option.
- Fixed so the source view dialog sets a source_view state to the event object. Enables plugins to intercept the source view mode.
- Fixed various validation issues with the html dialogs and pages.
- Removed ask mode option since there is way better ways of doing this now. Use the add/remove control methods instead.
- Removed logic for compatibility with Safari 2.x, this browser is no longer supported since no one is using it.
- Removed the auto domain relaxing feature. If loading scripts cross sub domains it's better to specify the document.domain by hand.
-Version 3.2.1.1 (2008-11-27)
- Added new theme_advanced_default_background_color/theme_advanced_default_foreground_color options. Patch contributed by David Bildström (ChronoZ).
- Fixed font style formatting compatibility issue with Adobe Air.
- Fixed so legacy font elements get converted into spans even if cleanup_on_startup isn't enabled.
- Fixed bug where pre elements could be incorrectly modified by an IE bug workaround. Patch contributed by hu vime.
- Fixed bug where input elements inside inlinepopups wasn't editable in Firefox 2.
- Fixed bug where the xhtmlxtras plugin wasn't replacing attribute values correctly.
- Fixed bug where menu buttons in skin variants would look strange due to IE 8 fixes.
- Fixed bug where WebKit browsers would on backspace take you back to the previous page if the editor was empty.
- Fixed bug where DOMUtils decode method wouldn't handle strings larger than 4096kb due to node chunking.
- Fixed bug where meta key wasn't handled as ctrl key on Mac OS X for custom keyboard short cuts.
- Fixed bug where init event would get fired twice on WebKit on Mac OS X.
-Version 3.2.1 (2008-11-04)
- Added support for custom icon image for drop menus. Use icon_src to set a custom image directly.
- Added new media_strict option to media plugin. Enables you to control if the flash embed is strict or not. Enabled by default.
- Fixed so the editors script files gets dynamically loaded without using XHR or eval.
- Fixed so the media plugin outputs valid XHTML object elements for Flash movies. Can be disabled with the media_strict option.
- Fixed so dynamic loading doesn't require eval calls on non IE browsers for better Air support.
- Fixed bug where the editor wasn't treated as empty if the remaining paragraph had attributes.
- Fixed bug where id's of elements was removed ones they got wrapped in paragraphs. Patch contributed by ChronoZ.
- Fixed bug where WebKit browsers where placing list elements inside paragraph elements.
- Fixed bug where inserting images or links would produce absolute urls on WebKit browsers.
- Fixed bug where values for checked, readonly, disabled and selected attributes was incorrect on IE.
- Fixed bug where positive values for checked, readonly, disabled and selected attributes wasn't forced to valid values.
- Fixed bug where selecting the first option in a native select box would produce an undefined error.
- Fixed bug where tabindex 32768 could be outputted on IE if element attributes where cloned.
- Fixed bug where the media dialogs preview window would display incorrect contents due to duplicate clsid prefixes.
- Fixed bug where non pixel or percent heights for textarea elements would produce errors on IE.
- Fixed bug where cdata sections in script elements wasn't handled correctly.
- Fixed bug where nowrap of table cells would produce a 65535 value output.
- Fixed bug where media plugin would produce an error if you selected the first item in the items list.
- Fixed bug where media plugin would modify links with the item _value in them.
- Fixed so table width/height is better forced if inline_styles is enabled. Patch contributed by daKmoR.
- Fixed css for IE 8 such as opacity and other rendering quirks.
-Version 3.2.0.2 (2008-10-02)
- Fixed bug where the SelectBox and NativeSelectBox wasn't updated correctly if undefined was passed to them.
- Fixed bug where the style dropdown wasn't correctly changed back to it's original state when element had no class.
- Fixed bug where multiple pending font styles wasn't handled correctly.
- Fixed so you can disable all auto css loading for dialogs by setting the popups_css option to false.
-Version 3.2.0.1 (2008-09-17)
- Fixed bug where font sizes and faces wouldn't be changed correctly when there was a parent with a different style.
- Fixed bug where adding fonts to the same selection would produce redundant spans.
-Version 3.2 (2008-09-11)
- Added new text style support, it will now use span elements internally instead of font elements.
- Added new improved support for the theme_advanced_font_sizes option, check the Wiki for details.
- Added new keep_style setting that maintains the text style on return/enter on non IE browsers, enabled by default.
- Added new onBeforeSetContent/onBeforeGetContent/onSetContent/onGetContent events to the Selection class.
- Added new selectByIndex method to ListBox class. This enables you to select list items by an index instead of a value.
- Added new possibility to the select method of the ListBox class. This can now have a selector function as it's value argument.
- Added new possibility to skip the loading of popups css by setting the feature popup_css to the value false.
- Added new possibility to skip translation of popups by setting the translate_i18n feature to false.
- Added new element_format option enables you to produce HTML element endings instead of XHTML. But we are still in the XHTML is better camp.
- Added missing allowfullscreen and quality options for flash elements, this will now get correctly stored.
- Fixed bug where table cell dialog didn't close properly unless the accessibility_warnings option was set to false.
- Fixed bug where the modal dialog blocker element for inlinepopups wasn't placed at a correct location if the page had scroll.
- Fixed bug where non inline dialogs didn't close correctly if the inlinepopups plugin was used.
- Fixed bug where non inline dialogs could make the modal dialog blocker to work incorrectly.
- Fixed bug where style select wasn't populated correctly if you pressed the arrow. Patch by Hari Karam Singh.
- Fixed bug where toggling the fullscreen mode didn't restore scrollbars on IE when the editor was inside a frame. Patch by Jacob Barrett.
- Fixed bug where inserting flash contents using the template plugin didn't work correctly.
- Fixed bug where inserting flash contents using the selection.setContent or mceInsertContent command didn't work correctly.
- Fixed bug where IE would produce an exception if a comment started with -.
- Fixed bug where the blockquote button would wrap lists incorrectly on non IE browsers.
- Fixed bug where Opera would display BR elements in the element path.
- Fixed bug where xhtmlxtras didn't insert elements correctly on IE.
- Fixed bug where the buttons wasn't activated correctly in the xhtmlxtras plugin.
- Fixed bug where adding an object as the style attribute for the dom setAttribs method wouldn't work.
- Fixed bug where the background color would bleed out to parent container element in Gecko.
- Fixed bug where the insert column actions for tables would fail if you did it in a thead or tfoot. Patch contributed by T Andersen (tan73).
- Fixed bug where event blocker element wasn't positioned correctly for the inlinepopups plugin.
- Fixed bug where pasting from Office 2007 would produce an odd comment in the contents.
- Fixed bug where the paste as plain text could remove an extra character. Patch contributed by Speednet.
- Fixed bug where some characters where missing for the paste_replace_list option. Patch contributed by Speednet.
- Fixed bug where removing non existing editor instances by the mceRemoveControl command would produce an error.
- Fixed bug where meta elements with the name description would produce errors in IE.
- Fixed bug where color and background colors wouldn't be updated properly.
- Fixed bug where the createMenuButton of tinymce.ControlManager didn't implement the last class argument.
- Fixed bug where the editor_css option was relative from the TinyMCE installation directory not the current page.
- Fixed bug where elements wouldn't be padded if the element contained bogus br elements. For example TD elements.
- Fixed bug where parsing of <body > in fullpage plugin would produce an error.
- Fixed bug where relative urls with just ./ would become an empty string.
- Fixed bug where outdent button would be disabled if inline_styles where set to false.
- Fixed bug where replace with an empty search string would produce an error on IE.
- Fixed bug where restoring the overflow state of the body in fullscreen plugin running on IE would produce vertical scrollbars.
- Fixed bug where pressing return/enter in list items would sometimes move the caret the to top of the content area in FF.
- Fixed bug where the style listbox wouldn't be updated correctly if you used the use_native_selects option.
- Fixed bug where WebKit browsers would produce a div element when ending list elements using return.
- Fixed so translation of popup contents only occurs if it's needed.
- Optimized the URI object in regards or converting absolute URIs to relative URIs.
-Version 3.1.1 (2008-08-18)
- Added new getSize method to DOMUtils it will return the dimensions only of an element.
- Added new alert/confirm methods to the tinyMCEPopup class to prevent focus problems and also to shorten method calls.
- Added new plugin_preview_inline option to preview plugin to enable/disable native/inline dialogs.
- Added new readonly option. If this is set the editor will only display the contents for the user.
- Added missing tabindex and accesskey to input elements in the default valid_elements setup.
- Updated firebug lite to 1.2, to enable it use the tiny_mce_dev.js?debug=1 on the development package.
- Fixed so the preview dialog in the preview plugin uses inline dialogs/popups.
- Fixed so CDATA sections remains intact through the serialization process of the DOM tree.
- Fixed various issues with the getAttrib command. It will now return more correct values.
- Fixed bug where the embed element wasn't properly parsed in the media plugin it now supports 3 formats.
- Fixed bug where the noshade attribute was serialized incorrectly on IE.
- Fixed bug where editing an existing link element didn't force it relative.
- Fixed bug where image link creation fails on Safari if the image is aligned.
- Fixed bug where it was possible to scroll the fullscreen mode in Opera 9.50.
- Fixed bug where removal of center image alignment would fail. Patch contributed by Andrew Ozz.
- Fixed bug where inlinedialogs didn't work properly if the doctype was incorrect in IE.
- Fixed bug where cross domain loading didn't work correctly in Opera 9.50.
- Fixed bug where breaking huge text blocks with return/enter key would scroll to end of block.
- Fixed bug where replace button kept inserting the replacement text even if there is no more matches.
- Fixed bug with fullpage plugin where value wasn't set correctly. Patch contributed by Pascal Chantelois.
- Fixed bug where the dom utils setAttrib method call could produce an exception if the input was null/false.
- Fixed bug where pressing backspace would sometimes remove one extra character in Gecko browsers.
- Fixed bug where the native confirm/alert boxes would move focus to parent document if fired in dialogs.
- Fixed bug where Opera 9.50 was telling you that the selection is collapsed even when it isn't.
- Fixed bug where mceInsertContent would break up existing elements in Opera and Gecko.
- Fixed bug where TinyMCE fails to detect some keyboard combos on Mac, contributed by MattyRob.
- Fixed bug where replace all didn't move the caret to beginning of text before searching.
- Fixed bug where the oninit callback wasn't executed correctly when the strict_loading_mode option was used, thanks goes to Nicholas Oxhoej.
- Fixed bug where a access denied exception was thrown if some other script specified document.domain before loading TinyMCE.
- Fixed so setting language to empty string will skip language loading if translations are made by some backend.
- Fixed so dialog_type is automatically modal if you use the inlinepopups plugin use dialog_type : "window" to re-enable the old behavior.
-Version 3.1.0.1 (2008-06-18)
- Fixed bug where the Opera line break fix didn't work correctly on Mac OS X and Unix.
- Fixed bug where IE was producing the default value the maxlength attribute of input elements.
-Version 3.1.0 (2008-06-17)
- Fixed bug where the paste as text didn't work correctly it encoded produced paragraphs and br elements.
- Fixed bug where embed element in XHTML style didn't work correctly in the media plugin.
- Fixed bug where style elements was forced empty in IE. The will now be wrapped in a comment just like script elements.
- Fixed bug where some script elements wrapped in CDATA could fail to be serialized correctly.
- Fixed bug where FF 3 produced -moz- internal styles in some style attributes.
- Fixed bug where query strings and external URLs didn't work correctly in style attributes.
- Fixed bug where shape attribute of area elements got serialized as rect regardless of it's initial value in IE 6.
- Fixed bug where selection of elements inside layers would fail in IE since focus was moved to the document body.
- Fixed bug where pressing enter/return in an editable select box would produce an __mce_add_custom__ class value.
- Fixed bug where changing font size of text placed inside a colored text chunk would remove the parent node.
- Fixed bug where Opera 9.5 final produced a strange line break behavior due to a workaround for previous Opera versions.
- Fixed bug where text/background color would produce a strange focus problem when you tried to click on the body in IE.
- Fixed issue where selecting the title of an listbox equals the old 2.x behavior of changing the value to an empty string.
- Fixed issue where it was common for the media plugin to break if the _value attribute wasn't added for the param element.
- Fixed issue where the wrong parent editor instance might be updated if you use fullscreen mode in an incorrect way.
- Fixed issue where Safari was producing a warning about the base element not being closed correctly.
- Removed redundant form element name matching from regexp in the DOMUtils class.
-Version 3.0.9 (2008-06-02)
- Added new contextmenu_offset_x/contextmenu_offset_y options for the contextmenu plugin.
- Added cite attribute to the default rule for the blockquote element.
- Added support for using arrow keys for selection of items in listboxes.
- Added support for using arrow keys for selection of items in dropmenus.
- Fixed bug where blockformat change on elements with BR inside them didn't change correctly on Firefox.
- Fixed bug where removing table rows inside thead or tfoot would remove the whole table if it was the last one.
- Fixed bug where XHR synchronous mode didn't execute the callback handlers synchronously.
- Fixed bug where setting border to 0 didn't add border: 0 to the style attribute when using the advimage dialog.
- Fixed bug where the selection of images and table cells didn't work correctly when the editor is placed in a frame and running on IE.
- Fixed bug where the store/restore of a selection didn't work correctly in non IE browsers.
- Fixed bug where only the first element would be invalid for the invalid_elements option.
- Fixed bug where paste as plain text didn't encode the characters correctly when they where inserted.
- Fixed bug where HTML source window couldn't be maximized on Gecko when the maximizable feature was enabled.
- Fixed bug where color selection using the color picker could produce exception in IE.
- Fixed bug where font size changes could produce produce extra redundant elements.
- Fixed bug where IE could produce unknown runtime error if you replaced a image with another image from a separate frame.
- Fixed bug where the domLoaded state for the Event class wasn't set correctly if the editor was loaded dynamically using the gzip compressor.
- Fixed bug where handling of the base element for a page would produce incorrect urls. Based on a patch contributed by John LeSueur.
- Fixed bug where table constraint alert boxes was presented with an empty value and wasn't the skinned inline ones.
- Fixed bug where the onChange event wasn't fired when the form was submitted. It's now also triggered when the save method is called.
- Fixed bug where encoding set to xml didn't work as expected. It now encodes the contents into XML entities.
- Fixed bug where numrows didn't work correctly for the merge cells dialog of the table plugin.
- Fixed bug where the onGetContent event was fired even when the no_events flag was set.
- Fixed bug where the preview panels for the advimage and the media plugin could overflow on Safari and FF 3.
- Fixed bug where the editing and removal of abbr elements using the xhtmlxtras plugin working correctly on IE.
- Fixed bug where save button in the save plugin didn't work correctly on IE.
- Fixed bug where dragging layers didn't work as expected since it would snap back to it's original location if you saved.
- Fixed bug where the description of the template plugin dialog wasn't updated correctly.
- Fixed bug where the values for frame and rules in the table dialogs where swapped.
- Fixed bug where the elements like ins, del, cite, acronym and abbr didn't have the default editing style as the old 2.x branch.
- Fixed bug where ask mode would lock the focused textarea if you pressed cancel in the confirm dialog on FF 3.
- Fixed bug where ask mode would produce contents for empty textareas if you reloaded the page.
- Fixed so the onGetContent event gets the full pass through object just like the other events.
- Fixed so attributes for block elements remains the same when you change format of a element.
-Version 3.0.8 (2008-04-30)
- Fixed bug where IE would produce an error if textareas without names where converted.
- Fixed bug where editor wasn't forced empty when there was only a single br or empty paragraph left.
- Fixed bug where IE would produce an warning message if object elements where produced in the media plugins preview running on https.
- Fixed bug where new addVer function didn't handle hash items correctly. Patch contributed by Mirek Burkon.
- Fixed bug where font_size_style_values option wasn't applied correctly to fonts inside the editor.
- Fixed bug where image selection could be lost if a image was edited using context menu on IE.
- Fixed bug where style values wasn't updated properly due to an invalid regexp.
- Fixed bug where IE 6 where displaying warning message about insecure items when inserting an image while using https. Patch contributed by Norifumi Sunaoka.
- Fixed bug where IE was producing an auto save message if you selected a color from the color split button.
- Fixed bug where backspace sometimes would move the caret to the end of the previous block in Gecko.
- Fixed bug where the rowlayout manager didn't work as described in the documentation.
- Fixed bug where the default options for the fullpage plugin wasn't applied correctly.
- Fixed bug where selection would jump one character if you applied a styles to a words in non IE browsers.
- Fixed bug where undo levels wasn't added correctly if you went back in undo history and added a new event.
- Fixed bug where font size dropdown didn't mark the selected size in IE.
- Fixed bug where the size of the editor was determined using clientWidth instead of offsetWidth.
- Fixed so the onchange event doesn't fire on the initial undo level, it will also fire when the editor is blurred.
- Fixed so the advhr plugin produces XHTML valid output instead of non standard attributes.
- Fixed so blockquote gets converted into [quote] in when the bbcode plugin is enabled.
- Fixed so theme_advanced_font_sizes can be named for example Font 1=1, Font 2=2 etc.
- Fixed so editor_selector/editor_deselector can be regexps. By default only strings are allowed not part regexps like before.
- Fixed so that the version suffix is optional. It still requires the build process so you need to export it manually.
- Fixed so it's possible to tab to table cells in non Gecko browsers and also produce new rows if you tab at the end of a table. Contributed by Josh Peek.
-Version 3.0.7 (2008-04-14)
- Added new version suffix to all internal GET requests to make sure that the users cache gets cleared correctly.
- Fixed issue with isDirty returning true event if it wasn't dirty on IE due to changes in tables during initialization.
- Fixed memory leak in IE where if a page was unloaded before all images on the page was loaded it would leak.
- Fixed bug in IE where underline and strikethrough could produce an exception error message.
- Fixed bug where inserting paragraphs in totally empty table cells would produce odd effects.
- Fixed bug where layer style data wasn't updated correctly due to some performance enhancements with the DOM serializer.
- Fixed bug where it would convert the wrong element if there was two elements with the same name and id on the page.
- Fixed bug where it was possible to add style information to the body element using the style plugin.
- Fixed bug where Gecko would add an extra undo level some times due to the blur event.
- Fixed bug where the underline icon would get active if the caret was inside a link element.
- Fixed bug where merging th cells not working correctly. Patch contributed by André R.
- Fixed bug where forecolorpicker and backcolorpicker buttons where rendered incorrectly when the o2k7 skin was used.
- Fixed bug where comment couldn't contain -- since it's invalid markup. It will now at least not break on those invalid comments.
- Fixed bug where apos wasn't handled correctly in IE. It will now convert apos to &#39; on IE since that browser doesn't support that entity.
- Fixed bug where entities wasn't encoded correctly inside pre elements since they where protected from whitespace removal.
- Fixed bug where color split buttons where rendered incorrectly on IE6 when using the non default theme.
- Fixed so caret is placed after links ones they are created, to improve usability of the editor.
- Fixed so you can select tables by clicking on it's borders in non IE browsers to normalize the behavior.
- Fixed so the menus can be toggled by clicking once more on the icon in listboxes, menubuttons and splitbuttons based on code contributed by Josh Peek.
- Fixed so buttons can be labeled, currently only works with the default skin, so it's kind of experimental. Patch contributed by Daniel Insley.
- Fixed so forecolorpicker and backcolorpicker remembers the last selected color. Patch contributed by Shane Tomlinson.
- Fixed so that you can only execute the mceAddEditor command once for the same instance name.
- Fixed so command functions added with addCommand can pass though the call to default handles if it returns true.
-Version 3.0.6.2 (2008-04-07)
- Fixed bug where empty tables couldn't be edited correctly on non IE browsers if they where loaded into the editor.
- Fixed bug where it was impossible to resize layers correctly in IE since it thought it was an image.
- Fixed bug where an editor instance was stealing focus in IE resulting in a scroll to the editor on page reloads.
- Fixed bug where Safari was crashing on Mac OS X if you closed dialogs using the Esc key.
-Version 3.0.6.1 (2008-04-04)
- Added support for the missing mceAddFrameControl command. The input for this command has changed so consult the Wiki.
- Fixed bug where sub menus for the drop menus would leave an empty element behind.
- Fixed memory leak in IE if the editor was placed in a frame or iframe.
-Version 3.0.6 (2008-04-03)
- Added elements to the default value of valid_elements option. It now contains all XHTML strict elements and a few transitional.
- Added more accessibility fixes, it's now possible to navigate and close list boxes and split button menus with the keyboard.
- Added missing getInfo method to the contextmenu and safari plugin, this caused problems for the Drupal module.
- Added new inlinepopups_zindex option to the inlinepopups plugin so that you can configure the default start z-index.
- Added new setControlType method to the tinymce.ControlManager class. This method enables you to override the default classes.
- Added ability to specific an optional control class to use instead of the default one for the ControlManager methods. Based on concept by Josh Peek.
- Fixed bug where attribute rules for the DOM Serializer couldn't contain - or _ characters in their names.
- Fixed bug where inlinepopups event blocker and modal dialog blocker elements produced vertical scrollbars.
- Fixed bug where there was a rendering issue with quirks mode in Safari moving the resize handle to an incorrect position.
- Fixed bug with forecolor/backcolor controls on IE. Sometimes elements positioned relative will generate display errors.
- Fixed bug where a p2 was leaking out in the global name space when you selected a color from the forecolor/backcolor controls.
- Fixed bug where empty paragraphs didn't work as expected in browsers other than IE.
- Fixed bug where the load method of the tinymce.dom.ScriptLoader didn't check if the file was already loaded.
- Fixed bug where the load method for the PluginManager and ThemeManager didn't check if a plugin/theme by a specific name was all ready loaded.
- Fixed bug where the theme_advanced_link_targets option didn't work correctly with the advanced themes link dialog. Patch contributed by Arnold B.
- Fixed bug where the style command would merge classes into empty span elements.
- Fixed bug where the style command would remove empty span elements outside the current selection.
- Fixed bug where the fix for the Safari backspace bug removed all editor contents if it was filled with empty paragraphs.
- Fixed bug where alert and confirm boxes opened by the inlinepopups plugin would produce an exception if domain relaxing was used.
- Fixed bug where Safari was adding style attributes to all elements when you paste them into the editor.
- Fixed bug where the spellchecker menus was visually incorrect since the space for the non existing icon was still there.
- Fixed bug where remove_linebreaks option didn't remove line breaks inside the text contents of a element.
- Fixed bug where Safari 3.1 was introducing _mc_tmp into paragraphs due to the new querySelectorAll and a TinyMCE specific workaround.
- Fixed bug where getParam method in the Editor class was returning incorrect objects and would mess up the font drop down. Patch contributed by speednet.
- Fixed bug where the table dialog would produce an exception in IE when you edited tables since it tried to place focus in a disabled field.
- Fixed bug where class attribute on some span elements was removed on cleanup.
- Fixed bug where resizing the editor in IE could produce an exception if the editor width/height got to be a negative value.
- Fixed bug where wmv files wouldn't play since the src param was used instead of the url param.
- Fixed bug where br elements would be added here and there in Gecko. Geckos internal _moz_dirty br elements where serialized as well.
- Fixed bug where editing named anchors would produce two anchors instead of one updated one.
- Fixed bug where arrow and function keys didn't work when an noneditable element was focused within the editor.
- Fixed bug where the dispatcher could produce an exception if the listener list was altered inside an event callback.
- Fixed bug where it was impossible to totally empty the editor contents on Safari due to an mistreatment of nbsp as whitespace. Patch contributed by Andrew Ozz.
- Fixed bug where TinyMCE would not convert textareas with the same name attribute value. It will now generate an unique id for those textareas.
- Fixed bug where backspace/delete key was deleting td elements inside tables while running on Gecko.
- Fixed bug where Firefox 3.0b4 and Opera 9.26 where scrolling to the top of document when pressing return/enter.
- Fixed bug where the template plugin wasn't just inserting the mceTmpl tagged element.
- Fixed bug where the alert method of the default WindowManager implementation didn't translate input language strings like the inlinepopups dialog does.
- Fixed bugs with the backspace behavior in Gecko. The caret was placed on incorrect locations in the DOM sometimes.
- Fixed so advimage dialog and table dialogs has support for editable select boxes for the class value.
- Fixed so the media, pagebreak and spellchecker doesn't load it's default content.css file if the content_css option is set to false.
- Fixed so the paste_use_dialog option works again it's enabled by default but can be disabled on IE. Patch contributed by Speednet.
- Fixed so that the fullscreen editor is focused when switching fullscreen editing on.
- Fixed so it's possible to edit images and links inside tables using the context menu.
- Fixed so table dialogs and the advanced image dialog doesn't loose selection in IE if the dialogs where navigated/submitted with the keyboard.
- Fixed so the theme_advanced_blockformats options can have named items for example title 1=h1;title 2=h2.
- Fixed so it's possible to add a custom editor_css for the simple theme.
- Fixed quirks with directionality rtl, patch contributed by Andrew Ozz.
- Fixed so the inlinepopups default start zIndex is 300000.
- Fixed typo in media plugin Shockware is now replaced with Shockwave.
- Fixed psuedo memory leak in IE with the replaceChild method inside the DOMUtils.replace method.
- Fixed so memory is released when an editor instance is removed from page.
- Optimized the color split button menus so that they use less event handlers.
- Removed the util/mclayer.js file since it's no longer used by any of the TinyMCE dialogs and is considered deprecated.
-Version 3.0.5 (2008-03-12)
- Added new black skin variant to the o2k7 skin contributed by Stefan Moonen.
- Added new explode method to the tinymce core class. This does a split but removed whitespace it also defaults to a , delimiter.
- Added new detection logic for IE 8 standards mode into the DOMUtils class strMode can now be checked to see if that mode is on/off.
- Added new noscale option value for the scale select box for Flash in the media plugin.
- Fixed bug where the menu for the ColorSplitButton wasn't removed when the editor was removed.
- Fixed bug where font colors couldn't be edited correctly since the style of the element didn't get updated correctly.
- Fixed bug where class of elements would get lost when TinyMCE was fixing incorrect HTML markup.
- Fixed bug where table editing would produce double height values.
- Fixed bug where width style value wouldn't be removed if you switched width unit from cm/em to pixels or percent.
- Fixed bug where the search/replace input box wasn't auto focused like the other dialogs.
- Fixed bug where the old mceAddControl command would use the fullscreen settings next time it created an instance.
- Fixed bug where multiple lines where added to the target cell if you merged multiple empty cells.
- Fixed bug where drop down menus would be incorrectly positioned inside scrollable divs.
- Fixed bug where the separators of the silver skin variant didn't display correctly in IE 6.
- Fixed bug where createStyleSheet seems to load scripts at opposite order in some IE versions.
- Fixed bug where directionality could produce odd results for the UI and the dialogs.
- Fixed bug where the DOM serializer wouldn't serialize custom namespaced attributes in IE 6 using the *[*] valid elements rule.
- Fixed bug where table caption would be inserted after the thead element if you swapped a tr to be inside the thead.
- Fixed bug where the youtube detection logic for the media plugin was to generic.
- Fixed so the deprecated and undocumented theme_advanced_path_location set to none won't hide the whole statusbar.
- Fixed so most input lists can have whitespace in them they are now split using the new tinymce.explode method.
- Fixed so the popup_css and popup_css_add URLs are relative to where the current document is located.
- Fixed various bugs and quirks with the store/restore selection logic.
- Fixed so the editor starts in IE 8 standards mode but still that browser is very very buggy.
- Fixed so dialog_type set to modal will block the background and other inline windows and only give access to the front most window.
-Version 3.0.4.1 (2008-03-08)
- Fixed critical bug where it was impossible to edit images when inlinepopups where used due to lost selection in IE.
-Version 3.0.4 (2008-03-07)
- Added new option constrain_menus, this enables you to force view port constraints on all menus. Contributed by Shane Tomlinson.
- Fixed bug where table background wasn't visible inside the editor due to a default CSS rule overriding the style attribute.
- Fixed bug where links would get a null class added if no styles was used in IE.
- Fixed bug where spellchecker was auto focusing the editor in IE.
- Fixed bug where document.domain would produce invalid argument if the editor was loaded in IE6 over a network UNC path.
- Fixed bug where table height attribute was used, this is deprecated in XHTML so it now adds it as an style.
- Fixed bug where textareas with style values would produce error in IE.
- Fixed so the first element in each dialog is focused by default to enhance keyboard usage.
- Fixed so you can add a mceFocus class to elements to make it auto focused.
- Fixed so you can close dialogs using the esc key.
- Fixed so you can press return/enter to submit the action of each dialog.
- Fixed so tabbing inside an inline popups wont focus the resize anchor elements.
- Fixed so you can press ok in inline alert messages using the return/enter key.
- Fixed so textareas can be set to non px or % sizes for example em, cm, pt etc.
- Fixed so non pixel values can be used in width/height properties for tables.
- Fixed so the custom context menu can be disabled by holding down ctrl key while clicking.
- Fixed so the layout for the o2k7 skin looks better if you don't have separators before and after list boxes.
- Fixed so the sub classes get a copy of the super class constructor function to ease up type checking.
- Fixed so font sizes for the format block previews are normalized according to http://www.w3.org/TR/CSS21/sample.html (it can be overridden).
- Fixed so font sizes for h1-h6 in the default content.css is normalized according to http://www.w3.org/TR/CSS21/sample.html (it can be overridden).
-Version 3.0.3 (2008-03-03)
- Fixed bug where an error about document.domain would be thrown if TinyMCE was loaded using a different port.
- Fixed bug where mode exact would convert textareas without id or name if the elements option was omitted.
- Fixed bug where the caret could be placed at an incorrect location when backspace was used in Gecko.
- Fixed bug where local file:// URLs where converted into absolute domain URLs.
- Fixed bug where an error was produced if a editor was removed inside an editor command.
- Fixed bug where force_p_newlines didn't effect the paste plugin correctly.
- Fixed bug where the paste plugin was producing an exception on IE if you pasted contents with middots.
- Fixed bug where delete key could produce exceptions in Gecko sometimes due to the fix for the table cell bug.
- Fixed bug where the layer plugin would produce an visual add class called mceVisualAid this one is now renamed to mceItemVisualAid to mark it internal.
- Fixed bug where TinyMCE wouldn't initialize properly if ActiveX controls was disabled in IE.
- Fixed bug where tables and other elements that had visual aids on them would produce an extra space after any custom class names.
- Fixed bug where search with an empty string would produce some odd "invalid pointer" error in IE.
- Fixed bug where elements like menus where placed at incorrect positions in Opera 9.26.
- Fixed bug where IE was loosing focus of the editor when you clicked some dropmenu and if it was placed in a frame or iframe.
- Fixed bug where focus of images could be lost in IE if you focused the accessibility confirm dialog in the advimage plugin.
- Fixed bug where nestled font elements would produce odd output like missing font elements.
- Fixed bug where text colors and styles got removed if invalid_elements included the font element.
- Fixed bug where text-decoration set to underline or line-through would remove other styles from span elements.
- Fixed bug where editor contents like \n\n would be incorrectly handled and processed as real line feeds.
- Fixed bug where incorrectly encoded urls with ampersands in them would be decoded incorrectly.
- Optimized the DOMUtils decode method to be a lot faster if the string doesn't have any entities to decode.
-Version 3.0.2.1 (2008-02-26)
- Fixed alert/confirm dialogs so they display correctly.
-Version 3.0.2 (2008-02-26)
- Added new body_id option that enables you to specify the id of the body inside the editor iframe based on ideas by David Bildström (ChronoZ).
- Added new body_class option that enables you to set the class for the body of the editor iframe based on ideas by David Bildström (ChronoZ).
- Added new CSS class to the default content.css files mceForceColors that forces white background and black text can be used with the body_class option.
- Added new type parameter to the Editor.getParam function to reduce redundant logic for parsing hash tables.
- Added new isDone method to the ScriptLoaded class, this enables you to check if a script has been loaded or not.
- Added new resizeTo and resizeBy methods for the advanced theme. Can be called using tinyMCE.activeEditor.theme.resizeTo(w, h);
- Added new skin_variant option this can be used to extend existing skins with slight modifications like color.
- Added new variant of the o2k7 skin called "silver" based on a contribution made by Stefan Moonen.
- Fixed bug where the template plugin might produce errors if the template_mdate_classes wasn't configured.
- Fixed bug where the media plugin didn't convert the URLs for movies once they where inserted.
- Fixed bug where the style field for the advlink dialog didn't work correctly if you edited an existing link.
- Fixed bug where alignment of toolbars would fail in editor was uses in a quirks mode on IE, fix contributed by Peter Wood & Art Lawry.
- Fixed bug where initialization of multiple editors at the same time using the mceAddControl method would produce errors.
- Fixed bug where initialization of editors using mceAddControl command or new tinymce.Editor calls would fail during page load.
- Fixed bug where the check for domain relaxing could fail if the document.domain property was changed by another script.
- Fixed bug where textareas couldn't be named description or any other name that matches the meta elements in IE and Opera.
- Fixed bug where the element path would fail sometimes in IE due to "unknown runtime error" on innerHTML.
- Fixed bug where Safari would crash if you was hiding the editor before serializing the contents.
- Fixed bug where the editor wasn't scaled propertly in fullscreen mode using the old fullscreen_new_window option.
- Fixed bug where render method didn't load language packs in IE and Opera if you rendered an editor during page load.
- Fixed bug where resizing the browser window in fullscreen didn't resize the editor.
- Fixed bug where the blockquote command didn't move the caret inside the new empty blockquote if you used it on an empty document.
- Fixed bug where auto in a style width/height for the textarea would produce an editor with the size value of 100. Fix contributed by Shane Tomlinson.
- Fixed bug where restoration of selection at the beginning of an element could fail in Gecko.
- Fixed bug where caret restoration after a cleanup could place the it at an incorrect location.
- Fixed bug where delete key inside td elements would delete the cell in Gecko.
- Fixed so the blockquote button toggles individual lines. This behavior is a bit more like the old indentation behavior in the 2.x branch.
- Fixed so the dialog language packs only gets loaded the first time you open a dialog.
- Fixed so all classes in the whole UI is prefixed with "mce" to avoid collisions, use the skin converter to update your existing skins.
- Fixed so all classes in the inlinepopups logic is prefixed with "mce" to avoid collisions, use the skin converter to update your existing skins.
- Fixed so that the window in fullscreen mode can be resized when fullscreen_new_window option is enabled.
- Fixed so blockquote elements are formatted in the source output with an linefeed before and after it.
- Optimized the editor initialization by reducing the number of calls to getBookmark/moveToBookmark.
-Version 3.0.1 (2008-02-21)
- Added spellchecker plugin into the main package, but without any backend can be specified with the spellchecker_rpc_url option.
- Added src attribute for script elements to the default valid_elements option value.
- Added extra parameter to the class_filter callback it can now also filter out classes based on the whole CSS rule.
- Added support for domain relaxing, TinyMCE can now be loaded from an remote domain as long as they are on the same root domain.
- Added support for custom elements the new custom_elements option enables you to add non HTML elements to the editor.
- Added support for the W3C Selectors API that was added to latest nightly build of WebKit.
- Fixed bug where some object param element wasn't stored correctly using the media plugin.
- Fixed bug where Opera was scrolling to top of page is drop menus on list boxes where displayed.
- Fixed bug where IE6 was crashing if a format block was used on a container with anchor elements.
- Fixed bug where spans with font sizes wasn't handled correctly when editor was loading contents.
- Fixed bug where mode exact couldn't convert editors with name only. Id is no longer required but recommended.
- Fixed bug where the mceInsertRawHTML command produced an extra undo level.
- Fixed bug where the specific_textareas mode didn't work correctly this is the same thing as textareas now.
- Fixed bug where the values of input elements in the HTML page of dialogs pages where changed in IE.
- Fixed bug where fullscreen and fullpage plugins didn't work well together.
- Fixed bug where embed elements wasn't handled properly in the media plugin.
- Fixed bug where style information on span elements gets munged when fonts are converted to spans.
- Fixed bug where some entities in element attributes where encoded incorrectly in the latest WebKit build.
- Fixed bug where initialization would fail in IE if there where two input elements with the name submit in the form.
- Fixed bug where fullscreen mode didn't work correctly in IE when the fullscreen_new_window option was used.
- Fixed bug where invalid contents like an ul inside a p element would produce odd results in IE.
- Fixed bug where Opera 9.2x was placing the drop menus at incorrect locations if the editor was placed in a table.
- Fixed bug where Opera was producing odd results if enter/return was pressed while having forced_root_blocks disabled.
- Fixed bug where layer plugin was stealing focus in IE on initialization.
- Fixed bug where body attributes wasn't set properly in the fullpage plugin, fix contributed by Hiroaki Kawai.
- Fixed bug where insert image and insert link dialogs where producing an extra level in the undo history.
- Fixed bug where Gecko would produce an error if empty elements like <div></div> where inserted using mceInsertContent.
- Fixed bug where center alignment of images produced odd results inside table cells.
- Fixed bug where center alignment of images couldn't be toggled correctly.
- Fixed bug where alignment of images inside tables would produce double float style items in IE if the fix_table_elements option was enabled.
- Fixed bug where a variable called 'v' was polluting the global namespace. Objects tinymce and tinyMCE are the only ones allowed to be global.
- Fixed bug where insert table from context menu couldn't insert new tables inside existing tables.
- Fixed bug where Safari wouldn't produce br elements on enter when the force_br_newlines option was enabled.
- Fixed bug where switching cell type in table cell dialog would produce odd attributes in IE.
- Fixed bug where Gecko was outputting internal attributes if valid_elements where set to "*[*]".
- Fixed bug where the style plugin would produce non hex colors inside the dialog when running on Gecko.
- Fixed bug where an empty src value for insert image would remove the currently selected image if it wasn't and image element.
- Fixed bug where hidden input elements would break the logic for the tab_focus option.
- Fixed bug where save button wasn't working correctly in fullscreen mode.
- Fixed bug where the editor was forced to be placed in a form element if the save_onsavecallback option was used.
- Fixed bug where upper case param attributes wasn't parsed correctly in the media plugin.
- Fixed bug where render method of tinymce.Editor class would produce an exception if the strict_loading_mode option was omitted.
- Fixed bug where nodeChanged event could be fired while the editor was loading and there for produce an exception in FF.
- Fixed bug where no undo levels where added if the user created new table rows using the tab key on Gecko.
- Fixed bug where tables would be broken if you selected a different block format for contents withing an table cell.
- Fixed bug where the render method of the tinymce.Editor class didn't setup the tinymce.EditorManager.settings object correctly.
- Fixed bug where the advanced image dialog would go to the first tab if the alternative image was changed using the file browser link.
- Fixed bug where the forced_root_block option would produce BR elements inside empty blocks if the block wasn't a paragraph.
- Fixed bug where the forced_root_block doesn't work correctly on IE if the specified element was something else than paragraphs.
- Fixed bug where selection of images would get lost if user selected something from the context menu in IE.
- Fixed bug where the context menu plugin would pollute the global namespace with two variables p1 and p2.
- Fixed compatibility issue with Mootools, it is destroying document.getElementById on unload in IE. (Mantra: You don't own the internal objects).
- Fixed bugs where dialogs/tabs and other UI elements where rendered incorrectly in Firefox 3.
- Fixed so the auto CSS class importer is compatible with 2.x.
- Fixed so the editor UI and inlinedialogs works correctly with the YUI CSS reset package.
- Fixed so header and footer elements are forced to lower case when the fullpage plugin is used.
- Fixed so load prefixes "-" for plugins and themes isn't required if the plugin/theme was loaded by the ThemeManager/PluginManager.
- Fixed so the JSONRequest uses application/json content type to make Ruby on rails happy.
- Fixed so the CSS rule is more exact for the body in the default content.css files. Body is now defined as "body.mceContentBody" instead of just "body".
- Fixed so the tiny_mce_dev.js uses XHR instead of document.write to load scripts to resolve an issue with Opera 9.50.
- Fixed so language pack loading can be disabled by setting the language option to false. Can be useful for systems with their own language pack management.
-Version 3.0 (2008-01-30)
- Added map and area elements to the default valid_elements list and also some indentation rules.
- Fixed bug where empty paragraphs wasn't padded when loading contents.
- Fixed bug where the RowLayout manager didn't work at all.
- Fixed bug where style attribute data would get messed up in advimage dialog.
- Fixed bug where the table dialogs class select wasn't updated correctly.
- Fixed bug where elements would get extra whitespace around on insert when body was present in valid_elements.
- Fixed bug where coords attribute of the area element wasn't handled properly in IE.
- Fixed bug where Safari didn't produce BR elements on shift+return.
- Fixed bug where force blocks would cast odd invalid attribute exception in IE.
- Fixed bug where media plugin would produce extra whitespace before and after objects.
- Fixed bug where cleanup_callback could break the contents of the editor. But use the new event system instead of this option.
- Fixed bug where the tab_focus option didn't work between editor instanced. You can now tab between editors.
- Fixed bug where the load function of the ScriptLoader class didn't load single files without the load que as it was supposed to.
- Fixed bug where the execcommand_callback parameter order was incorrect. Recommendation use the new addCommand method.
- Fixed bug where range.select calls sometimes failed on some IE versions.
- Fixed bug where Safari was scrolling to top of document when enter/returned was pressed.
- Fixed bug where fullscreen_new_window option didn't work correctly.
- Fixed bug where the nonbreaking plugin inserted an space instead of an non breaking space the first time.
- Fixed bug where the visualization of non breaking spaces where visual in element path.
- Fixed so the focus is restored to the editor after inserting an custom character.
- Fixed so the isNotDirty state is set to false if a new undo level is added.
- Fixed so pointless style information for borders gets removed in IE.
- Fixed so the resize button has a se-resize cursor css value.
-Version 3.0rc2 (2008-01-18)
- Added new fix_nesting option to fix bug #1867292, this is disabled by default.
- Added new indentation option enables you to specify how much each indent/outdent call will add/remove.
- Added easier support for enabling/disabling icon columns on drop menues.
- Added new menu button control class. This control is very similar to the splitbutton but without any onclick action.
- Added support for previous tab focus (shift+tab). The tab_focus setting now takes two items next and previous element.
- Fixed bug where iframes inside the editor got removed in Firefox on initial load.
- Fixed bug where the CSS for abbr elements wasn't applied correctly in IE.
- Fixed bug where mceAddControl on element inside a hidden container produced errors.
- Fixed bug where closed anchors like <a /> produced strange results.
- Fixed bug where caret would jump to the top of the editor if enter was pressed a the end of a list.
- Fixed bug where remove editor failed if the editor wasn't properly initialized.
- Fixed bug where render call on for a non existing element produced exception.
- Fixed bug where parent window was hidden when the color picker was used in a non inlinepopups setup.
- Fixed bug where onchange event wasn't fired correctly on IE when color picker was used in dialogs.
- Fixed bug where save plugin could not save contents if the converted element wasn't an textarea.
- Fixed bug where events might be fired even after an editor instance was removed such as blur events.
- Fixed bug where an exception about undefined undo levels could be throwed sometimes.
- Fixed bug where the plugin_preview_pageurl option didn't work.
- Fixed bug where adding/removing an editor instance very fast could produce problems.
- Fixed bug where the link button was highlighted when an anchor element was selected.
- Fixed bug where the selected contents where removed if a new anchor element was added.
- Fixed bug where splitbuttons where rendered one pixel down in the default theme.
- Fixed bug where some buttons where placed at incorrect positions in the o2k7 theme.
- Fixed bug that made it impossible to visually disable a custom button that used an image instead of CSS sprites.
- Fixed bug where it wasn't possible to press delete/backspace if the editor was added+removed and re-added due to a FF bug.
- Fixed bug where an entities option with only 38,amp,60,lt,62,gt would fail in IE.
- Fixed bug where innerHTML sometimes generated unknown runtime error on IE.
- Fixed bug where content_css files wasn't loaded in the template preview iframe.
- Fixed bug where scroll position was incorrect when toggling fullscreen mode.
- Fixed bug where restoration of overflow didn't work correctly when disabling fullscreen mode in Opera.
- Fixed bug where drop menus where places at incorrect locations if the editor was placed in a scrollable container element.
- Fixed bug where hideMenu didn't hide sub menus correctly. It will now hide all menus recursively.
- Fixed so theme_advanced_path_location can be used in init options for compatibility reasons.
- Fixed so the drop menu colors matches the rest of o2k7 theme.
- Fixed so the preview example.html file is updated to the new 3.x API.
- Fixed so the margins are the same by default inside the editable area between IE and other browsers.
- Fixed so editor contents gets stored before it the onSubmit event is fired.
-Version 3.0rc1 (2008-01-08)
- Added new classes for toolbar rows in advanced theme mceToolbarRow1..n enabled you to change appearance of individual rows.
- Added auto detection for the strict_loading_mode option when running in application/xhtml+xml mode on Gecko.
- Optimized the HTML serializer by bundling some post process methods together.
- Fixed so that the toolbars have unique IDs, enables you to alter the toolbars using the ControlManager and the DOM.
- Fixed bug where delta values for dialog sizes in language packs didn't work correctly due to missing string to number casting.
- Fixed bug where paragraph generation logic didn't handle hr or table elements correctly if they where the only element.
- Fixed bug where some elements got extra linebreaks added after or before it in HTML output.
- Fixed bug where it was hard to modify existing style data on table rows and table cells.
- Fixed bug where the dom.getRect method didn't handle non pixel values correctly.
- Fixed bug where strikethrough and underline couldn't be toggled on existing span elements.
- Fixed bug where the postprocessor searched for nsbp instead of nbsp entities.
- Fixed bug where it was impossible to edit links that had child elements within them.
- Fixed bug where it was possible to click on the parent item of a submenu.
- Fixed bug where mouseover/mouseout images couldn't be removed in advimage dialog.
- Fixed bug where drop menus didn't work when running in application/xhtml+xml mode.
- Fixed bug where Opera added doctype to output in application/xhtml+xml mode.
- Fixed bug where some DOM methods didn't work correctly in the application/xhtml+xml mode.
- Fixed bug where the inlinepopups didn't work correctly in the application/xhtml+xml mode.
- Fixed bug where the ColorSplitButton didn't display correctly in the application/xhtml+xml mode.
- Fixed bug where the UI layout was incorrect on Gecko browsers when running in application/xhtml+xml mode.
- Fixed bug where the word paste plugin produced exception while running in application/xhtml+xml mode.
- Fixed bug where there wasn't any hidden input element generated for divs while running in application/xhtml+xml mode.
- Fixed bug where indentation of script/style/pre elements where incorrect.
- Fixed bug where script element contents was removed in IE.
- Fixed bug where script element contents got entity encoded.
- Fixed bug where you couldn't edit existing element styles using the styles plugin.
- Fixed bug where styles wasn't updated properly sometimes due to an performance enhancement.
- Fixed bug where font sizes couldn't be changed using the style plugin.
- Fixed bug where an error was produced in Gecko browsers when switching back from fullscreen mode.
- Fixed bug where Opera was producing br elements after elements like h3.
- Fixed bug where TinyMCE couldn't be loaded on a page using - characters in it's URL.
- Fixed bug where the editor container element was forced to have a specific name.
- Fixed bug with force_br_newlines option on Firefox, even though it should never be used (Read FAQ).
- Fixed bug where onclick event had an return true; prefix added when creating an popup.
- Fixed bug where the theme_advanced_statusbar_location option couldn't handle the value "none".
- Fixed issue with URLs with multiple at characters for example an Zope URI.
- Fixed so simple and advanced themes doesn't collide.
- Fixed so a elements gets removed when the href field is left empty, the href attribute is required in a link after all.
- Fixed so img elements gets removed when the src field is left empty, the src attribute is required for all images after all.
- Removed the indent and encode methods from the tinymce.dom.Serializer class due to performance enhancement and reduction of the API size.
-Version 3.0b3 (2007-12-14)
- Added new getElement method to Editor class, returns the element that was replaced with the editor instance.
- Added new unavailable prefix for disabled controls for accessibility reasons.
- Fixed bug where regexp patterns couldn't be used for the editor_selector/editor_deselector options.
- Fixed bug where the DOM wasn't properly initialized before the onInit event was executed in popups.
- Fixed bug where font sizes where reduced by font size actions on previous spans in Safari.
- Fixed bug where HR elements got places at the wrong location in IE.
- Fixed bug where align/justify didn't work correctly on multiple paragraphs.
- Fixed bug with missing translation for cell scope settings.
- Fixed bug where selection/caret position was lost on some table actions.
- Fixed bug where editor instances couldn't be added to hidden div elements.
- Fixed bug where list elements in Safari would get an odd ID attribute.
- Fixed bug where IE would return <html/> when the editor was completely empty.
- Fixed bug where accessibility title attribute for access keys wasn't setup properly.
- Fixed bug where forecolorpicker and backcolorpicker control names wasn't working.
- Fixed bug where inserting template content didn't work in Safari due to selection exception.
- Fixed bug where absolute URLs to remote hosts couldn't be used for background images.
- Fixed bug where mysterious span elements where produced in Safari when injecting HTML contents.
- Fixed bug where the media plugin didn't work correctly on the latest Opera 9.24.
- Fixed bug where indentation of HTML output wasn't applied to all block elements.
- Fixed bug where Safari was production DOM exception if you pressed enter in an empty editor.
- Fixed bug where media plugin didn't parse script tags correctly patch contributed by Mathieu Campagna.
- Fixed bug where the drop menus of list boxes like blockformat could produce scrolling of the page.
- Fixed bug where the drop menus where placed at an incorrect location if TinyMCE was placed in a scrollable div.
- Fixed bug where submit buttons couldn't be named submit, it's not recommended to name submit buttons submit anyway.
- Fixed bug where the stylelistbox produced an exception if there was only one class in the list box.
- Fixed bug where the stylelistbox wasn't updated correctly when the current class was removed.
- Fixed bug where the formatblock command sometimes removed the body element.
- Fixed bug where fullscreen switching in IE sometimes produced an exception when the spellchecker plugin was enabled.
- Fixed issue where FF produced an empty paragraph when the editor was completely empty.
- Fixed issue with size of image dialog in the advanced theme.
- Fixed issues with the bbcode plugin it now also handles spans and the [font] rule.
- Fixed so the style compression feature is a bit smarter to resolve issues with Opera.
- Reintroduced the remove_linebreaks option, this is enabled by default.
-Version 3.0b2 (2007-11-29)
- Added type and compact attributes to the default valid_elements list for the ul and ol elements.
- Added missing accessibility support to native list boxes in both the toolbar and dialogs.
- Added missing access key for the element path for accessibility reasons.
- Fixed support for loading themes from external URLs.
- Fixed bug where setOuterHTML didn't work correctly when multiple elements where passed to it.
- Fixed bug with visualchars plugin was moving elements around in the DOM.
- Fixed bug with DIV elements that got converted into editors on IE.
- Fixed bug with paste plugin using the old event API.
- Fixed bug where the spellchecker was removing the word when it was ignored.
- Fixed bug where fullscreen wasn't working properly.
- Fixed bug where the base href element and attribute was ignored.
- Fixed bug where redo function didn't work in IE.
- Fixed bug where content_css didn't work as previous 2.x branch.
- Fixed bug where preview dialog was throwing errors if the content_css wasn't defined.
- Fixed bug where the theme_advanced_path option didn't work like the 2.x branch.
- Fixed bug where the theme_advanced_statusbar_location was called theme_advanced_status_location.
- Fixed bug where the strict_loading_mode option didn't work if you created editors dynamically without using the EditorManager.
- Fixed bug where some language values wasn't translated such as insert and update in dialogs.
- Fixed bug where some image attributes wasn't stored correctly when inserting an image.
- Fixed bug where fullscreen mode didn't restore scrollbars when disabled.
- Fixed bug where there was no visual representation for tab focus in toolbars on IE.
- Fixed bug where HR elements wasn't treated as block elements so forced_root_block would fail on these.
- Fixed bug where autosave presented warning message even when the form was submitted normally.
- Fixed typo of openBrower it's now openBrowser in form_utils.js.
- Fixed various HTML problems like missing TD elements and duplicated doctypes.
- Fixed default values for theme_advanced_resize_horizontal, theme_advanced_resizing_use_cookie to be 2.x compatible.
- Moved spellchecker JS files into the development package.
- Removed support for theme_advanced_path_location since the theme_advanced_statusbar_location is the correct option name.
-Version 3.0b1 (2007-11-21)
- Added new tab_focus option, that enables you to specify a element id or that the next element to be focused on tab key down.
- Added new addQueryValueHandler method to the tinymce.Editor class.
- Added new class_filter option, this enables you to specify a function that can filter out CSS classes for the styles list box.
- Added support form [url=url]title[/url] to the bbcode plugin.
- Renamed the addCommandQueryState method in the tinymce.Editor class to addQueryStateHandler.
- Renamed loadQue to loadQueue, to correct spelling.
- Removed the createDOM method from the window manager and replace it with a createInstance method.
- Removed the add to beginning of class attribute parameter of the DOMUtils.addClass method.
- Fixed bug with the forced_root_block option, didn't work correctly with multiple inline elements.
- Fixed bug where image dialogs replaced the current image element with a new one even when it was updated.
- Fixed bug where the submit trigger wasn't executed when divs where converted into editor instances.
- Fixed bug where div elements that got converted into editors didn't get a hidden input element generated for them.
- Fixed bug where the the media_use_script option for the media plugin wasn't working correctly.
- Fixed bug where the font size and font family listboxes wasn't updated correctly on Safari.
- Fixed bug where the height of the fieldset in default image dialog for the advanced theme was to small.
- Fixed bug where the font sizes behaved incorrectly after a cleanup on Safari.
- Fixed bug where formatblock didn't work correctly in Safari on some elements.
- Fixed bug where template plugin didn't insert content correctly unless some options where specified.
- Fixed bug where charmap on Safari produced scrollbars.
- Fixed bug where there was white artifacts in some dialogs due to missing background color.
- Fixed bug where port was added to all external URLs if the editor was loaded from a custom port.
- Fixed bug where the context menus got duplicated on Safari 3.0.4 on Mac OS X.
- Fixed bug where dialogs like paste from word was huge on Firefox.
- Fixed bug with media plugin not working with windows media objects.
- Fixed bug where a forever loop was created if multiple instances where submitted using form.submit.
- Fixed bug with editing a table produce error in IE when inlinepopups where used.
- Fixed bug where the style plugin generated ugly looking style information in IE.
- Fixed bug where the inline dialogs that got opened while in fullscreen mode wasn't visible.
- Fixed bug where it was difficult to place the caret inside the word paste dialog.
- Fixed bug where Opera produced strange border in the word paste dialog.
- Fixed bug where viewport constraints could move a inlinepopup to a negative x, y position if the viewport was to small.
- Fixed bug where template plugin was producing an error due to a deprecated API call.
- Fixed bug where drag drop of images failed in Gecko if a document_base_url was specified.
- Fixed bug where Firefox 3 failed to apply block formats like H1-H6 it still breaks on DIVs this has been reported to bugzilla.
- Fixed bug where IE was producing a warning dialog about non secure items when running TinyMCE over HTTPS.
- Fixed bug where the onbeforeunload event was triggered when menus or dialogs where opened.
- Fixed bug where the fullscreen mode of the HTML view source box threw an error.
- Fixed bug where the mceFocus command didn't work correctly.
- Fixed bug where the selection could get lost in IE using inlinepopups.
- Fixed so the body of the editor area has the mceContentBody class just like the 2.x branch.
- Fixed so the media icon gets active when a media element is selected.
-Version 3.0a3 (2007-11-13)
- Added new experimental jQuery and Prototype framework adapters to the development package.
- Added new translation.html file for the development package. Helps with the internationalization of TinyMCE.
- Added new setup callback option, use this callback to add events to TinyMCE. This method is recommended over the old callbacks.
- Added new API documetation to all classes, functions, events, properties to the Wiki with examples etc.
- Added new init method to all plugins and themes, since it's shorter to write and it mimics interface capable languages better.
- Fixed various CSS issues in the default skin such as alignment of split buttons and separators.
- Fixed issues with mod_security. It didn't like that a content type of text/javascript was forced in a XHR.
- Fixed all events so that they now pass the sender object as it's first argument.
- Fixed some DOM methods so they now can take an array as input.
- Fixed so addButton and the methods of the ControlManager uses less arguments and it now uses a settings object instead.
- Fixed various issues with the tinymce.util.URI class.
- Fixed bug in IE and Safari and the on demand gzip loading feature.
- Fixed bug with moving inline windows sometimes failed in IE6.
- Fixed bug where save_callback function wasn't executed at all.
- Fixed bug where inlinepopups produces scrollbars if windows where moved to the corners of the browser.
- Fixed bug where view HTML source failed when inserting a embedded media object.
- Fixed bug where the listbox menus didn't display correctly on IE6.
- Fixed bug where undo level wasn't added when editor was blurred.
- Fixed bug where spellchecker wasn't disabled when fullscreen mode was enabled.
- Fixed bug where Firefox could crash some times when the user switched to fullscreen mode.
- Fixed bug where tinymce.ui.DropMenu didn't remove all item data when an item was removed from the menu.
- Fixed bug where anchor list in advlink dialog wasn't populated correctly in Safari.
- Fixed bug where it wasn't possible to edit tables in IE when inlinepopups was enabled.
- Fixed bug where it wasn't possible to change the table width of an existing table.
- Fixed bug where xhtmlxtras like abbr didn't work correctly on IE.
- Fixed bug where IE6 had some graphics rendering issues with the inlinepopups.
- Fixed bug where inlinepopup windows where moved incorrectly when they were boundary checked for min width.
- Fixed bug where textareas without id or name couldn't be converted into editor instances.
- Fixed bug where TinyMCE was stealing element focus on IE.
- Fixed bug where the getParam method didn't handle false values correctly.
- Fixed bug where inlinepopups was clipped by other TinyMCE instances or relative elements in IE.
- Fixed bug where the contextmenu was clipped by other TinyMCE instances or relative elements in IE.
- Fixed bug where listbox menus was clipped by other TinyMCE instances or relative elements in IE.
- Fixed bug where listboxes wasn't updated correctly when the a value wasn't found by select.
- Fixed various CSS issues that produced odd rendering bugs in IE.
- Fixed issues with tinymce.ui.DropMenu class, it required some optional settings to be specified.
- Fixed so multiple blockquotes can be removed with a easier method than before.
- Optimized some of the core API to boost performance.
- Removed some functions from the core API that wasn't needed.
-Version 3.0a2 (2007-11-02)
- Fixed critical bug where IE generaded an error on a hasAttribute call in the serialization engine.
- Fixed critical bug where some dialogs didn't open in the non dev package.
- Fixed bug when using the theme_advanced_styles option. Error was thrown in some dialogs.
- Fixed bug where the close buttons produced an error when native windows where used.
- Fixed bug in default skin so that split buttons gets activated correctly.
- Fixed so plugins can be loaded from external urls outsite the plugins directory.
-Version 3.0a1 (2007-11-01)
- Rewrote the core and most of the plugins and themes from scratch.
- Added new and improved serialization engine, faster and more powerful.
- Added new internal event system, things like editor.onClick.add(func).
- Added new inlinepopups plugin, the dialogs are now skinnable and uses clearlooks2 as default.
- Added new contextmenu plugin, context menus can now have submenus and plugins can add items on the fly.
- Added new skin support for the simple and advanced themes you can alter the whole UI using CSS.
- Added new o2k7 skin for the simple and advanced themes.
- Added new custom list boxes for font size/format/style etc with preview support.
- Added new UI management, enabled plugins to create controls like splitbuttons or menus easier.
- Added new JSON parser/serializer and JSON-RPC class to the core API.
- Added new cookie utility class to the core API.
- Added new Unit testing class to the core API only available in dev mode.
- Added new firebug lite integration when loading the dev version of TinyMCE.
- Added new Safari plugin, fixes lots compatibility of issues with Safari 3.x.
- Added new URI/URL parsing it now handles the hole RFC and even some exceptions.
- Added new pagebreak plugin, enables you to insert pagebreak comments like <!-- pagebreak -->
- Added new on demand loading of plugins and themes. Enables you to load and init TinyMCE at any time.
- Added new throbber/progress visualization a plugin can show/hide this when it's needed.
- Added new blockquote button. Enables you to wrap paragraphs in blockquotes.
- Added new compat2x plugin. Will provide a TinyMCE 2.x API for older plugins.
- Added new theme_advanced_resizing_min_width, theme_advanced_resizing_min_height options.
- Added new theme_advanced_resizing_max_height, theme_advanced_resizing_max_height options.
- Added new use_native_selects option. Enables you to toggle native listboxes on and off.
- Added new docs_url option enables you to specify where the TinyMCE user documentation is located.
- Added new frame and rules options for the table dialog.
- Added new global rule for valid_elements/extended_valid_elements enables you to specify global attributes for all elements.
- Added new deny attribute rule characher so it's possible to deny global attribute rules on specific elements.
- Added new unit tests in the dev package of TinyMCE. Runs tests on the core API, commands and settings of the editor.
- Readded the inline_styles option and enabled it by default so deprecated attributes are no longer used.
- Removed all button images and replaced them with CSS sprite images. Reduces the number of requests needed.
- Removed lots of language files and merged them into the base language files. Reduces the number of requests needed.
- Removed lots of unnecessary files and merged many of them together to reduce requests and improve loading speed.
- Reduced the over all script size by 33% and the number of files/requests by 75% so it loads a lot faster.
- Fixed so convert_fonts_to_spans are enabled by default. So no more font tags.
- Fixed so underline and strikethrough uses spans instread of deprecated U and STRIKE elements.
- Fixed so indent/outdent adds/removed margin-left instead of blockquotes.
- Fixed so alignment of paragraphs results in a text-align style value instead of the deprecated align attribute.
- Fixed so alignment of images uses float or vertical-align style values instead of the deprecated align attribute.
- Fixed so all classes from @import stylesheets gets imported into the editor.
- Fixed so the directionality can toggle the dir attribute on and off.
- Fixed so the fullscreen_settings can be used for all types of fullscreen modes.
- Fixed so the advanced HR dialog gets displayed when inserting a HR not only on edit.
- Fixed bug where word wrap didn't work in the source editor on Safari.
- Fixed so non HTML elements can be used within the editor such as <myns:tag>
- Fixed various memory leaks in IE and reduced the unload cleanups needed.
- Fixed so the preformatted option adds an invisible container pre tag inside the editor.
- Renamed the _template plugin to example and updated it to use the new 3.x API.
+Version 3.5.0.1 (2012-05-10)
+ Fixed bug where selection normalization logic would break the selections of parent elements using the element path.
+ Fixed bug where the autolink plugin would include trailing dots in domain names in the link creation.
+ Fixed bug where the autolink plugin would produce an error on older IE versions when pressing enter.
+ Fixed bug where old IE versions would throw an error during initialization when the editor was placed in an size restricted div.
+Version 3.5 (2012-05-03)
+ Fixed menu rendering issue if the document was in rtl mode.
+ Fixed bug where the hide function would throw an error about a missing variable.
+ Fixed bug where autolink wouldn't convert URLs when hitting enter on IE due to the new enter key logic.
+ Fixed bug where formatting using shortcuts like ctrl+b wouldn't work properly the first time.
+ Fixed bug where selection.setContent after a formatter call wouldn't generate formatted contents.
+ Fixed bug where whitespace would be removed before/after invalid_elements when they where removed.
+ Fixed bug where updating styles using the theme image dialog in non inline mode on IE9 would produce errors.
+ Fixed bug where IE 8 would produce an error when using the contextmenu plugin.
+ Fixed bug where delete/backspace could remove contents of noneditable elements.
+ Fixed so background color in style preview gets computed from body element if the current style element is transparent.
+Version 3.5b3 (2012-03-29)
+ Added cancel button to colour picker dialog.
+ Added figure and figcaption to the html5 visualblocks plugin.
+ Added default alignment options for the figure element.
+ Fixed bug where empty inline elements within block elements would sometimes produce a br child element.
+ Fixed bug where urls pointing to the same domain as the current one would cause undefined errors. Patch contributed by Paul Giberson.
+ Fixed bug where enter inside an editable element inside an non editable element would split the element.
+ Fixed bug where cut/copy/paste of noneditable elements didn't work.
+ Fixed bug where backspace would sometimes produce font elements on WebKit.
+ Fixed bug where WebKit would produce spans out of various inline elements when using backspace.
+ Fixed bug where IE9 wouldn't properly update image styles when images where resized.
+ Fixed bug where drag/drop of noneditable elements didn't work correctly.
+ Fixed bug where applying formatting to all contents wouldn't work correctly when an end point was inside an empty bock. Patch contributed by Jose Luiz.
+ Fixed bug where IE10 removed the scopeName from the DOM element interface and there for it produced an undefined string in element path.
+ Fixed bug where the caret would be placed at an incorrect location if you applied block formatting while having the caret at the end of the block.
+ Fixed bug where applying column changes using the cell dialog would only update the first column. Patch contributed by krzyko.
+ Fixed bug where the visualblocks plugin would force editor focus if it was turned on by default.
+ Fixed bug where the tabfocus plugin would tab to iframes these are now ignored.
+ Fixed bug where format drop down list wouldn't show the currently active format for a parent element.
+ Fixed bug where paste of plain text in IE 9 would remove the new line characters from text.
+ Fixed bug where the menu buttons/split button menus wouldn't be opened at the right location on older IE versions.
+ Fixed bug where Gecko browsers wouldn't properly display the right format when having the selection as specific places.
+ Fixed bug where shift+enter inside the body when having forced_root_blocks set to false would throw an error.
+ Fixed bug where the jQuery plugin would break the attr method of jQuery 1.7.2. Patch contributed by Markus Kemmerling.
+ Fixed so options like content_css accepts and array as well as a comma separated string as input.
+ Restructured the internal logic to make it more separate from Editor.js.
+ Updated the Sizzle engine to the latest version.
+Version 3.5b2 (2012-03-15)
+ Rewrote the enter key logic to normalize browser behavior.
+ Fixed so enter within PRE elements produces a BR and shift+enter breaks/end the PRE. Can be disabled using the br_in_pre option.
+ Fixed bug where the selection wouldn't be correct after applying formatting and having the caret at the end of the new format node.
+ Fixed bug where the noneditable plugin would process contents on raw input calls for example on undo/redo calls.
+ Fixed bug where WebKit could produce an exception when a bookmark was requested when there wasn't a proper selection.
+ Fixed bug where WebKit would fail to open the image dialog since it would be returning false for a class name instead of a string.
+ Fixed so alignment and indentation works properly when forced_root_blocks is set to false. It will produce a DIV by default.
+Version 3.5b1 (2012-03-08)
+ Added new event class that is faster and enables support for faking events.
+ Added new self_closing_elements, short_ended_elements, boolean_attributes, non_empty_elements and block_elements options to control the HTML Schema.
+ Added new schema option and support for the HTML5 schema.
+ Added new visualblocks plugin that shows html5 blocks with visual borders.
+ Added new types and selector options to make it easier to create editor instances with different configs.
+ Added new preview of formatting options in various listboxes.
+ Added new preview_styles option that enables control over what gets previewed.
+ Fixed bug where content css would be loaded twice into iframe.
+ Fixed bug where start elements with only whitespace in the attribute part wouldn't be correctly parsed.
+ Fixed bug where the advlink dialog would produce an error about the addSelectAccessibility function not being defined.
+ Fixed bug where the caret would be placed at an incorrect position if span was removed by the invalid_elements setting.
+ Fixed bug where elements inside a white space preserve element like pre didn't inherit the behavior while parsing.
+Version 3.4.9 (2012-02-23)
+ Added settings to wordcount plugin to configure update rate and checking wordcount on backspace and delete using wordcount_update_rate and wordcount_update_on_delete.
+ Fixed bug in Webkit and IE where deleting empty paragraphs would remove entire editor contents.
+ Fixed bug where pressing enter on end of list item with a heading would create a new item with heading.
+ Fixed edit css style dialog text-decoration none checkbox so it disables other text-decoration options when enabled.
+ Fixed bug in Gecko where undo wasn't added when focus was lost.
+ Fixed bug in Gecko where shift-enter in table cell ending with BR doesn't move caret to new line.
+ Fixed bug where right-click on formatted text in IE selected the entire line.
+ Fixed bug where text ending with space could not be unformatted in IE.
+ Fixed bug where caret formatting would be removed when moving the caret when a selector expression was used.
+ Fixed bug where formatting would be applied to the body element when all contents where selected and format had both inline and selector parts.
+ Fixed bug where the media plugin would throw errors if you had iframe set as an invalid element in config.
+ Fixed bug where the caret would be placed at the top of the document if you inserted a table and undo:ed that operation. Patch contributed by Wesley Walser.
+ Fixed bug where content css files where loaded twice into the iframe.
+ Fixed so elements with comments would be trated as non empty elements. Patch contributed by Arjan Scherpenisse.
+Version 3.4.8 (2012-02-02)
+ Fixed bug in IE where selected text ending with space cannot be formatted then formatted again to get original text.
+ Fixed bug in IE where images larger than editor area were being deselected when toolbar buttons are clicked.
+ Fixed bug where wrong text align buttons are active when multiple block elements are selected.
+ Fixed bug where selected link not showing in target field of link dialog in some selection cases.
+ Use settings for remove_trailing_br so this can be turned off instead of hard coding the value.
+ Fixed bug in IE where the media plugin displayed null text when some values aren't filled in.
+ Added API method 'onSetAttrib' that fires when the attribute value on a node changes.
+ Fix font size dropdown value not being updated when text already has a font size in the advanced template.
+ Fixed bug in IE where IE doesn't use ARIA attributes properly on options - causing labels to be read out 2 times.
+ Fixed bug where caret cannot be placed after table if table is at end of document in IE.
+ Fixed bug where adding range isn't always successful so we need to check range count otherwise an exception can occur.
+ Added spacebar onclick handler to toolbar buttons to ensure that the accessibility behaviour works correctly.
+ Fixed bug where a stranded bullet point would get created in WebKit.
+ Fixed bug where selecting text in a blockquote and pressing backspace toggles the style.
+ Fixed bug where pressing enter from a heading in IE, the resulting P tag below it shares the style property.
+ Fix white space in between spans from being deleted.
+ Fixed bug where scrollbars where visible in the character map dialog on Gecko.
+ Fixed issue with missing translation for one of the emoticons.
+ Fixed bug where dots in id:s where causing problems. Patch provided by Abhishek Dev.
+ Fixed bug where urls with an at sign in the path wouldn't be parsed correctly. Patch contributed by Jason Grout.
+ Fixed bug where Opera would remove the first character of a inline formatted word if you pressed backspace.
+ Fixed bugs with the autoresize plugin on various browsers and removed the need for the throbber.
+ Fixed performance issue where the contextmenu plugin would try to remove the menu even if it was removed. Patch contributed by mhu.
+Version 3.4.7 (2011-11-03)
+ Modified the caret formatting behavior to word similar to common desktop wordprocessors like Word or Libre Office.
+ Fixed bug in Webkit - Cursor positioning does not work vertically within a table cell with multiple lines of text.
+ Fixed bug in IE where Inserting a table in IE8 places cursor in the second cell of the first row.
+ Fixed bug in IE where editor in a frame doesn't give focus to the toolbar using ALT-F10.
+ Fix for webkit and gecko so that deleting bullet from start of list outdents inner list items and moves first item into paragraph.
+ Fix new list items in IE8 not displayed on a new line when list contains nested list items.
+ Clear formatting in table cell breaks the cell.
+ Made media type list localisable.
+ Fix out of memory error when using prototype in media dialog.
+ Fixed bug where could not add a space in the middle of a th cell.
+ Fixed bug where adding a bullet between two existing bullets adds an extra one
+ Fixed bug where trying to insert a new entry midway through a bulleted list fails dismally when the next entry is tabbed in.
+ Fixed bug where pressing enter on an empty list item does not outdent properly in FF
+ Fixed bug where adding a heading after a list item in a table cell changes all styles in that cell
+ Fixed bug where hitting enter to exit from a bullet list moves cursor to the top of the page in Firefox.
+ Fixed bug where pressing backspace would not delete HRs in Firefox and IE when next to an empty paragraph.
+ Fixed bug where deleting part of the link text can cause a link with no destination to be saved.
+ Fixed bug where css style border widths wasn't handled correctly in table dialog.
+ Fixed bug where parsing invalid html contents on IE or WebKit could produce an infinite loop.
+ Fixed bug where scripts with custom script types wasn't properly passed though the editor.
+ Fixed issue where some Japanese kanji characters wasn't properly entity encoded when numeric entity mode was enabled.
+ Made emoticons dialog use the keyboard naviation.
+ Added navigation instructions to the symbols dialog.
+ Added ability to set default values for the media plugin.
+ Added new font_size_legacy_values option for converting old font element sizes to span with font-size properties.
+ Fixed bug where the symbols dialog was not accessible.
+ Added quirk for IE ensuring that the body of the document containing tinyMCE has a role="application" for accessibility.
+ Fixed bug where the advanced color picker wasn't working properly on FF 7.
+ Fixed issue where the advanced color picker was producing uppercase hex codes.
+ Fixed bug where IE 8 could throw exceptions if the contents contained resizable content elements.
+ Fixed bug where caret formatting wouldn't be correctly applied to previous sibling on WebKit.
+ Fixed bug where the select boxes for font size/family would loose it's value on WebKit due to recent iOS fixes.
+Version 3.4.6 (2011-09-29)
+ Fixed bug where list items were being created for empty divs.
+ Added support in Media plugin for audio media using the embed tag
+ Fixed accessibility bugs in WebKit and IE8 where toolbar items were not being read.
+ Added new use_accessible_selects option to ensure accessible list boxes are used in all browsers (custom widget in firefox native on other browsers)
+ Fixed bug where classid attribute was not being checked from embed objects.
+ Fixed bug in jsrobot tests with intermittently failing.
+ Fixed bug where anchors wasn't updated properly if you edited them using IE 8.
+ Fixed bug where input method on WebKit on Mac OS X would fail to initialize when sometimes focusing the editor.
+ Fixed bug where it wasn't possible to select HR elements on WebKit by simply clicking on them.
+ Fixed bug where the media plugin wouldn't work on IE9 when not using the inlinepopups plugin.
+ Fixed bug where hspace,vspace,align and bgcolor would be removed from object elements in the media plugin.
+ Fixed bug where the new youtube format wouldn't be properly parsed by the media plugin.
+ Fixed bug where the style attribute of layers wasn't properly updated on IE and Gecko.
+ Fixed bug where editing contents in a layer would fail on Gecko since contentEditable doesn't inherit properly.
+ Fixed bug where IE 6/7 would produce JS errors when serializing contents containing layers.
+Version 3.4.5 (2011-09-06)
+ Fixed accessibility bug in WebKit where the right and left arrow keys would update native list boxes.
+ Added new whitespace_elements option to enable users to specify specific elements where the whitespace is preserved.
+ Added new merge_siblings option to formats. This option makes it possible to disable the auto merging of siblings when applying formats.
+ Fixed bug in IE where trailing comma in paste plugin would cause plugin to not run correctly.
+ Fixed bug in WebKit where console messages would be logged when deleting an empty document.
+ Fixed bug in IE8 where caret positioned is on list item instead of paragraph when outdent splits the list
+ Fixed bug with image dialogs not inserting an image if id was omitted from valid_elements.
+ Fixed bug where the selection normalization logic wouldn't properly handle image elements in specific config cases.
+ Fixed bug where the map elements coords attribute would be messed up by IE when serializing the DOM.
+ Fixed bug where IE wouldn't properly handle custom elements when the contents was serialized.
+ Fixed bug where you couldn't move the caret in Gecko if you focused the editor using the API or a UI control.
+ Fixed bug where adjacent links would get merged on IE due to bugs in their link command.
+ Fixed bug where the color split buttons would loose the selection on IE if the editor was placed in a frame/iframe.
+ Fixed bug where floated images in WebKit wouldn't get properly linked.
+ Fixed bug where the fullscreen mode in a separate window wasn't forced into IE9+ standards mode.
+ Fixed bug where pressing enter in an empty editor on WebKit could produce DIV elements instead of P.
+ Fixed bug where spans would get removed incorrectly when merging two blocks on backspace/delete on WebKit.
+ Fixed bug where the editor contents wouldn't be completely removed on backspace/delete on WebKit.
+ Fixed bug where the fullpage plugin wouldn't properly render style elements in the head on IE 6/7.
+ Fixed bug where the nonbreaking_force_tab option in the nonbreaking plugin wouldn't work on Gecko/WebKit.
+ Fixed bug where the isDirty state would become true on non IE browsers if there was an table at the end of the contents.
+ Fixed bug where entities wasn't properly encoded on WebKit when pasting text as plain text.
+ Fixed bug where empty editors would produce an exception of valid_elements didn't include body and forced_root_blocks where disabled.
+ Fixed bug where the fullscreen mode wouldn't retain the header/footer in the fullpage plugin.
+ Fixed issue where the plaintext_mode and plaintext_mode_sticky language keys where swapped.
+Version 3.4.4 (2011-08-04)
+ Added new html5 audio support. Patch contributed by Ronald M. Clifford.
+ Added mute option for video elements and preload options for video/audio patch contributed by Dmitry Kalinkin.
+ Fixed selection to match visual selection before applying formatting changes.
+ Fixed browser specific bugs in lists for WebKit and IE.
+ Fixed bug where IE would scroll the window if you closed an inline dialog that was larger than the viewport. Patch by Laurence Keijmel.
+ Fixed bug where pasting contents near a span element could remove parts of that span. Patch contributed by Wesley Walser.
+ Fixed bug where formatting change would be lost after pressing enter.
+ Fixed bug in WebKit where deleting across blocks would add extra styles.
+ Fixed bug where moving cursor vertically in tables in WebKit wasn't working.
+ Fixed bug in IE where deleting would cause error in console.
+ Fixed bug where the formatter was not applying formats across list elements.
+ Fixed bug where the wordcount plugin would try and update the wordcount if tinymce had been destroyed.
+ Fixed bug where tabfocus plugin would attempt to focus elements not displayed when their parent element was hidden.
+ Fixed bug where the contentEditable state would sometimes be removed if you deleted contents in Gecko.
+ Fixed bug where inserting contents using mceInsertContent would fail if "span" was disabled in valid_elements.
+ Fixed bug where initialization might fail if some resource on gecko wouldn't load properly and fire the onload event.
+ Fixed bug where ctrl+7/8/9 keys wouldn't properly add the specific formats associated with them.
+ Fixed bug where the HTML tags wasn't properly closed in the style plugins properties dialog.
+ Fixed bug where the list plugin would produce an exception if the user tried to delete an element at the very first location.
+Version 3.4.3.2 (2011-06-30)
+ Fixed bug where deleting all of a paragraph inside a table cell would behave badly in webkit.
+ Fixed bugs in tests in firefox5 and WebKit.
+ Fixed bug where selection of table cells would produce an exception on Gecko.
+ Fixed bug where the caret wasn't properly rendered on Gecko when the editor was hidden.
+ Fixed bug where pasting plain text into WebKit would produce a pre element it will now produce more semantic markup.
+ Fixed bug where selecting list type formats using the advlist plugin on IE8 would loose editor selection.
+ Fixed bug where forced root blocks logic wouldn't properly pad elements created if they contained data attributes.
+ Fixed bug where it would remove all contents of the editor if you inserted an image when not having a caret in the document.
+ Fixed bug where the YUI compressor wouldn't properly encode strings with only a quote in them.
+ Fixed bug where WebKit on iOS5 wouldn't call nodeChanged when the selection was changed.
+ Fixed bug where mceFocus command wouldn't work properly on Gecko since it didn't focus the body element.
+ Fixed performance issue with the noneditable plugin where it would enable/disable controls to often.
+Version 3.4.3.1 (2011-06-16)
+ Fixed bug where listboxes were not being handled correctly by JAWS in firefox with the o2k7 skin.
+ Fixed bug where custom buttons were not being rendered correctly when in high contrast mode.
+ Added support for iOS 5 that now supporting contentEditable in it's latest beta.
+ Fixed bug where urls in style attributes with a _ character followed by a number would cause incorrect output.
+ Fixed bug where custom_elements option wasn't working properly on IE browsers.
+ Fixed bug where custom_elements marked as block elements wouldn't get correctly treated as block elements.
+ Fixed bug where attributes with </> wasn't properly encoded as XML entities.
+Version 3.4.3 (2011-06-09)
+ Fixed bug where deleting backwards before an image into a list would put the cursor in the wrong location.
+ Fixed bug where styles plugin would not apply styles across multiple selected block elements correctly.
+ Fixed bug where cursor would jump to start of document when selection contained empty table cells in IE8.
+ Fixed bug where applied styles wouldn't be kept if you pressed enter twice to produce two paragraphs.
+ Fixed bug where a ghost like caret would appear on Gecko when pressing enter while having a text color applied.
+ Fixed bug where IE would produce absolute urls if you inserted a image/link and reloaded the page.
+ Fixed bug where applying a heading style to a list item would cascade style to children list items.
+ Fixed bug where Editor loses focus when backspacing and changing styles in WebKit.
+ Fixed bug where exception was thrown in tinymce.util.URI when parsing a relative URI and no base_uri setting was provided.
+ Fixed bug where alt-f10 was not always giving focus to the toolbar on Safari.
+ Added new 'allow_html_in_named_anchor' option to allow html to occur within a named anchor tag. Use at own risk.
+ Added plugin dependency support. Will autoload plugins specified as a dependency if they haven't been loaded.
+ Fixed bug where the autolink plugin didn't work with non-English keyboards when pressing ).
+ Added possibility to change properties of all table cells in a column.
+ Added external_image_list option to get images list from user-defined variable or function.
+ Fixed bug where the autoresize plugin wouldn't reduce the editors height on Chrome.
+ Fixed bug where table size inputs were to small for values with size units.
+ Fixed bug where table cell/row size input values were not validated.
+ Fixed bug where menu item line-height would be set to wrong value by external styles.
+ Fixed bug where hasUndo() would return wrong answer.
+ Fixed bug where page title would be set to undefined by fullpage plugin.
+ Fixed bug where HTML5 video properties were not updated in embedded media settings.
+ Fixed bug where HTML comment on the first line would cause an error.
+ Fixed bug where spellchecker menu was positioned incorrectly on IE.
+ Fixed bug where breaking out of list elements on WebKit would produce a DIV instead of P after the list.
+ Fixed bug where pasting from Word in IE9 would add extra BR elements when text was word wrapped.
+ Fixed bug where numeric entities with leading zeros would produce incorrect decoding.
+ Fixed bug where hexadecimal entities wasn't properly decoded.
+ Fixed bug where bookmarks wasn't properly stored/restored on undo/redo.
+ Fixed bug where the mceInsertCommand didn't retain the values of links if they contained non url contents.
+ Fixed bug where the valid_styles option wouldn't be properly used on styles for specific elements.
+ Fixed so contentEditable is used for the body of the editor if it's supported.
+ Fixed so trailing BR elements gets removed even when forced_root_blocks option was set to false/null.
+ Fixed performance issue with mceInsertCommand and inserting very simple contents.
+ Fixed performance issue with older IE version and huge documents by optimizing the forced root blocks logic.
+ Fixed performance issue with table plugin where it checked for selected cells to often.
+ Fixed bug where creating a link on centered/floated image would produce an error on WebKit browsers.
+ Fixed bug where Gecko would remove single paragraphs if there where contents before/after it.
+ Fixed bug where the scrollbar would move up/down when pasting contents using the paste plugin.
+Version 3.4.2 (2011-04-07)
+ Added new 'paste_text_sticky_default' option to paste plugin, enables you to set the default state for paste as plain text.
+ Added new autoresize_bottom_margin option to autoresize plugin that enables you to add an extra margin at the bottom. Patch contributed by Andrew Ozz.
+ Rewritten the fullpage plugin to handle style contents better and have a more normalized behavior across browsers.
+ Fixed bug where contents inserted with mceInsertContent wasn't parsed using the default dom parser.
+ Fixed bug where blocks containing a single anchor element would be treated as empty.
+ Fixed bug where merging of table cells on IE 6, 7 wouldn't look correctly until the contents was refreshed.
+ Fixed bug where context menu wouldn't work properly on Safari since it was passing out the ctrl key as pressed.
+ Fixed bug where image border color/style values were overwritten by advimage plugin.
+ Fixed bug where setting border in advimage plugin would throw error in IE.
+ Fixed bug where empty anchors list in link settings wasn't hidden.
+ Fixed bug where xhtmlextras popups were missing localized popup-size parameters.
+ Fixed bug where the context menu wouldn't select images on WebKit browsers.
+ Fixed bug where paste plugin wouldn't properly extract the contents on WebKit due to recent changes in browser behavior.
+ Fixed bug where focus of the editor would get on control contents on IE lost due to a bug in the ColorSplitButton control.
+ Fixed bug where contextmenu wasn't disabled on noneditable elements.
+ Fixed bug where getStyle function would trigger error when called on element without style property.
+ Fixed bug where editor fail to load if Javascript Compressor was used.
+ Fixed bug where list-style-type=lower-greek would produce errors in IE<8.
+ Fixed bug where spellchecker plugin would produce errors on IE6-7.
+ Fixed bug where theme_advanced_containers configuration option causes error.
+ Fixed bug where the mceReplaceContent command would produce an error since it didn't correctly handle a return value.
+ Fixed bug where you couldn't enter float point values for em in dialog input fields since it wouldn't be considered a valid size.
+ Fixed bug in xhtmlxtras plugin where it wasn't possible to remove some attributes in the attributes dialog.
+Version 3.4.1 (2011-03-24)
+ Added significantly improved list handling via the new 'lists' plugin.
+ Added 'autolink' plugin to enable automatically linking URLs. Similar to the behavior IE has by default.
+ Added 'theme_advanced_show_current_color' setting to enable the forecolor and backcolor buttons to continuously show the current text color.
+ Added 'contextmenu_never_use_native' setting to disable the ctrl-right-click showing the native browser context menu behaviour.
+ Added 'paste_enable_default_filters' setting to enable the default paste filters to be disabled.
+ Fixed bug where selection locations on undo/redo didn't work correctly on specific contents.
+ Fixed bug where an exception would be trown on IE when loading TinyMCE inside an iframe.
+ Fixed bug where some ascii numeric entities wasn't properly decoded.
+ Fixed bug where some non western language codes wasn't properly decoded/encoded.
+ Fixed bug where undo levels wasn't created when deleting contents on IE.
+ Fixed bug where the initial undo levels bookmark wasn't updated correctly.
+ Fixed bug where search/replace wouldn't be scoped to editor instances on IE8.
+ Fixed bug where IE9 would produce two br elements after block elements when pasting.
+ Fixed bug where IE would place the caret at an incorrect position after a paste operation.
+ Fixed bug where a paste operation using the keyboard would add an extra undo level.
+ Fixed bug where some attributes/elements wasn't correctly filtered when invalid contents was inserted.
+ Fixed bug where the table plugin couldn't correctly handle invalid table structures.
+ Fixed bug where charset and title of the page were handled incorrectly by the fullpage plugin.
+ Fixed bug where toggle states on some of the list boxes didn't update correctly.
+ Fixed bug where sub/sub wouldn't work correctly when done as a caret action in Chrome 10.
+ Fixed bug where the constrain proportions checkbox wouldn't work in the media plugin.
+ Fixed bug where block elements containing trailing br elements wouldn't treated properly if they where invalid.
+ Fixed bug where the color picker dialog wouldn't be rendered correctly when using the o2k7 theme.
+ Fixed bug where setting border=0 using advimage plugin invalid style attribute content was created in Chrome.
+ Fixed bug with references to non-existing images in css of fullpage plugin.
+ Fixed bug where item could be unselected in spellchecker's language selector.
+ Fixed bug where some mispelled words could be not highlighted using spellchecker plugin.
+ Fixed bug where spellchecking would merge some words on IE.
+ Fixed bug where spellchecker context menu was not always positioned correctly.
+ Fixed bug with empty anchors list in advlink popup when Invisible Elements feature was disabled.
+ Fixed bug where older IE versions wouldn't properly handle some elements if they where placed at the top of editor contents.
+ Fixed bug where selecting the whole table would enable table tools for cells and rows.
+ Fixed bug where it wasn't possible to replace selected contents on IE when pasting using the paste plugin.
+ Fixed bug where setting text color in fullpage plugin doesn't work.
+ Fixed bug where the state of checkboxes in media plugin wouldn't be set correctly.
+ Fixed bug where black spade suit character was not included in special character selector.
+ Fixed bug where setting invalid values for table cell size would throw an error in IE.
+ Fixed bug where spellchecking would remove whitespace characters from PRE block in IE.
+ Fixed bug where HR was inserted inside P elements instead of splitting them.
+ Fixed bug where extra, empty span tags were added when using a format with both selector and inline modes.
+ Fixed bug where bullet lists weren't always detected correctly.
+ Fixed bug where deleting some paragraphs on IE would cause an exception.
+ Fixed bug where the json encoder logic wouldn't properly encode \ characters.
+ Fixed bug where the onChange event would be fired when the editor was first initialized.
+ Fixed bug where mceSelected wouldn't be removed properly from output even if it's an internal class.
+ Fixed issue with table background colors not being transparent. This improves compliance with users browser color preferences.
+ Fixed issue where styles were not included when using the full page plugin.
+ Fixed issue where drag/drop operations wasn't properly added to the undo levels.
+ Fixed issue where colors wasn't correctly applied to elements with underline decoration.
+ Fixed issue where deleting some paragraphs on IE would cause an exception.
+Version 3.4 (2011-03-10)
+ Added accessibility example with various accessibility options contributed by Ephox.
+ Fixed bug where attributes wasn't properly handled in the xhtmlxtras plugin.
+ Fixed bug where the image.htm had some strange td artifacts probably due to auto merging.
+ Fixed bug where the ToolbarGroup had an missing reference to this in it's destroy method.
+ Fixed bug with the resizeBy function in the advanced theme where it was scaled by the wrong parent.
+ Fixed bug where an exception would be thrown by the element if the page was served in xhtml mode.
+ Fixed bug where mceInsertContent would throw an exception when page was served in xhtml mode.
+ Fixed bug where you couldn't select a forground/background color when page was served in xhtml mode.
+ Fixed bug where the editor would scroll to the toolbar when clicked due to a call to focus in ListBox.
+ Fixed bug where pages with rtl dir wouldn't render split buttons correctly when using the o2k7 theme.
+ Fixed bug where anchor elements with names wasn't properly collapsed as they where in 3.3.x.
+ Fixed bug where WebKit wouldn't properly handle image selection if it was done left to right.
+ Fixed bug where the formatter would align images when the selection range was collapsed.
+ Fixed bug where the image button would be active when the selection range was collapsed.
+ Fixed bug where the element_format option wasn't used by the new (X)HTML serializer logic.
+ Fixed bug where the table cell/row dialogs would produce empty attributes.
+ Fixed bug where the tfoot wouldn't be added to the top of the table.
+ Fixed bug where the formatter would merge siblings with white space between them.
+ Fixed bug where pasting headers and paragraphs would produce an extra paragraph.
+ Fixed bug where the ColorSplitButton would throw an exception if you clicked out side a color.
+ Fixed bug where IE9 wouldn't properly produce new paragraphs on enter if the current paragraph had formatting.
+ Fixed bug where multiple BR elements at end of block elements where removed.
+ Fixed bug where fullscreen plugin wouldn't correctly display the edit area on IE6 for long pages.
+ Fixed bug where paste plugin wouldn't properly encode raw entities when pasting in plain text mode.
+ Fixed bug where the search/replace plugin wouldn't work correctly on IE 9.
+ Fixed so the drop menus doesn't get an outline border visible when focused, patch contributed by Ephox.
+ Fixed so the values entered in the color picker are forced to hex values.
+ Removed dialog workaround for IE 9 beta since the RC is now out and people should upgrade.
+ Removed obsolete calls in various plugins to the mceBeginUndoLevel command.
+Version 3.4b3 (2011-02-10)
+ Added WAI-ARIA support for the main UI and dialogs this feature was contributed by Ephox.
+ Added iframe support to media plugin in order to handle the new YouTube HTML5 video formats.
+ Fixed bug where anchors would wrap the text contents after it due to a bug in the DomParser logic.
+ Fixed bug where the selected state wouldn't be removed on ListBox controls when a menu item was selected.
+ Fixed bug where IE could throw an unspecified error exception when the getBookmark logic was executed.
+ Fixed bug where IE would throw an invalid argument error when focus was applied to an empty editor instance.
+ Fixed bug where applying inline format wouldn't work if the start cell in the selection was empty.
+ Fixed bug where auto detection logic for YouTube and Google Video wouldn't work in the new media plugin.
+ Fixed bug where td elements would get a colspan/rowspan of 1 when created by the table plugin.
+ Fixed bug where removal/padding of empty elements wasn't handled correctly.
+ Fixed bug where internal elements would show up in element path.
+ Fixed bug where internal elements would get serialized as valid output.
+ Fixed bug where color wasn't correctly applied to anchor elements.
+ Fixed bug where float option in the style plugin dialog wouldn't be handled correctly on WebKit.
+ Fixed bug where the tinymce.dom.TreeWalker prev function wouldn't walk the DOM correctly.
+ Fixed bug where mceInsertContent command could produce empty block elements after the inserted content.
+ Fixed bug where mceInsertContent command wouldn't apply visual aids on tables and similar elements.
+ Fixed bug where empty block elements would get double br bogus elements in them.
+ Fixed bug where the color menu wouldn't apply the color correctly on IE when the viewport was to small.
+ Fixed bug where right clicking out side the body element of the editor iframe would prevent paste from working on IE.
+ Fixed bug where the onContextMenu event wouldn't fire correctly on IE if you clicked out side the body element.
+ Fixed bug where the onContextMenu event wouldn't fire correctly on modern Opera versions that now support it by default.
+ Fixed bug where legacy content wasn't converted correctly when inserted using mceInsertContent or through the source dialog.
+ Fixed bug where resizing images or tables wouldn't update the style attribute correctly or leave data-mce prefixed attributes.
+ Fixed bug where adding links wouldn't work correctly when using TinyMCE jQuery version with jQuery 1.5.
+ Fixed bug where single quotes inside param elements wasn't treated correctly by the media plugin.
+ Fixed bug where pasting plain text in WebKit wouldn't work correctly. It will now auto detect the WebKit bug and use plain text mode.
+ Fixed bug where the DomParser would fail to move out invalid elements within invalid elements on complex contents.
+ Fixed bug where paste as plain text would not decode html entities properly.
+ Fixed bug where large paragraphs would cause incorrect scrolling behavior if you would split them using enter.
+ Fixed bug where the SaxParser wouldn't properly parse some specific short ended elements.
+ Fixed so mceReplaceContent supports caret position and makes sure that the contents inserted gets validated.
+ Fixed so unnecessary traling br elements in blocks gets removed on Gecko/WebKit when using mceInsertContent command.
+ Moved some plugin css contents into the skin content css files to reduce the number of http requests.
+ Moved some plugin specific images into the theme img directory since they can then be shared.
+Version 3.4b2 (2011-01-13)
+ Added new custom flash player, this player supports mp4 and flv and has skin support.
+ Fixed so mceInsertContent handles context correctly to enforce valid nesting of elements.
+ Fixed bug where scrolling would become jerky on IE on some contents.
+ Fixed bug where paste as plain text would throw exception of missing entities setting.
+ Fixed bug where anchor nodes where removed by the new serializer engine.
+ Fixed bug where IE would crash if when backspace where used on some specific contents.
+ Fixed bug where pasting of plain text in WebKit would result in merging of text lines.
+ Fixed bug where it wasn't possible to delete images or tables using backspace on IE9.
+ Fixed bug where urls in styles would generate a JS error due to incorrect scope.
+ Fixed bug where copy paste from Java applications would produce extra contents in FF on Mac.
+ Fixed bug where the verify_html option wouldn't allow all elements and attributes.
+Version 3.4b1 (2010-12-20)
+ Added new serialization engine that increases performance and enforces valid output according to the specified schema settings.
+ Added new HTML parser logic used by the serialization engine and can handle malformed html contents.
+ Added new valid_children config option, enables more fine grain control of elements can be inside other elements.
+ Added new entities encoding logic boost performance and will only encode entities based on context i.e. attributes/text nodes.
+ Added new protect setting that enables users to protect template items from being removed by the serializer logic.
+ Added new {$caret} marker for the mceInsertContent command. Makes it possible to move the caret to a specific position when inserting contents.
+ Added new validation of anchor names. Only valid W3C names will be accepted.
+ Replaced the internal _mce_ prefixed attributes to the more standard HTML5 data-mce- prefix. This will also resolve future browser santiaztion issues.
+ Fixed bug where the paste plugin wouldn't convert Word lists with more than 9 items to real ol lists. Patch contributed by Mike (yogaboy).
+ Fixed bug where clicking on a format title would produce errors if the current selection didn't have any formats.
+ Fixed bug where paste of simple texts wouldn't work correctly in Gecko using the paste plugin since it keeps block formatting.
+ Fixed bug where confirm dialogs didn't display correctly due to resent IE9 fixes.
+ Fixed bug where spaces in URLs wouldn't be properly encoded to %20 if the user entered them in the link dialogs. Patch contributed by Ephox.
+ Fixed bug where the image alignment buttons wouldn't reposition the resize handles on FF due to a browser issue. Patch contributed by Ephox.
+ Fixed bug where the compareBoundaryPoints method of the IE Range class didn't work correctly. Patch contributed by Ephox.
+ Fixed bug where selection of elements using double click wouldn't select the clicked element but rather the parent node on FF. Patch contributed by Ephox.
+ Fixed bug where IE would scroll the user to the current selection causing parent document to scroll as well. Patch contributed by Ephox.
+ Fixed bug where style compression would incorrectly compress items with different values. It now only compresses if the values are the same. Patch contributed by Ephox.
+ Fixed bug where FF would add non breaking spaces outside TD elements if formatting was applied to table cells. Patch contributed by Ephox.
+ Fixed bug where the caret position would be lost on WebKit browsers if you pasted images multiple times. Patch contributed by Ephox.
+ Fixed bug where non word contents like * would be counted as words in the wordcount pluging. Patch contributed by David Balatero.
+ Fixed bug where the toggle absolute button in the layer plugin wouldn't remove the existing internal style attribute first.
+ Fixed bug where the autosave plugin would generate an exception on IE if the user had disabled userdata persistence.
+ Fixed bug where the paste plugin would remove dashed classes on IE since the regexps didn't include that character.
+ Fixed bug where applying text color would not add spans inside link elements. This is needed due to CSS style inheritance.
+ Fixed bug where applying block formats to empty elements wouldn't render correctly on IE.
+ Fixed bug where the searchreplace plugin would add a f or r character when shortcuts where used on IE while using default dialogs.
+ Fixed bug where Opera wouldn't load scripts correctly since the onreadystate would fire even though the script wasn't loaded.
+ Fixed issue where &nbsp; wouldn't be handled correctly in the bbcode plugin if entity_encoding was set to raw.
+ Fixed issue where contents would flicker since the content css files where asynchronously loaded.
+ Fixed bug where WebKit wouldn't create links on images with a float style.
+Version 3.3.9.3 (2010-12-20)
+ Fixed issue where WebKit wouldn't correctly apply ins/del in xhtmlxtras plugin.
+ Fixed bug where paste as plaintext on WebKit wouldn't produce br and p elements correctly.
+ Fixed bug where the confirm dialog texts would be incorrectly placed due to recent IE 9 workarounds in the window.css.
+ Fixed bug where applying text color would not add spans inside link elements. This is needed due to CSS style inheritance.
+Version 3.3.9.2 (2010-09-29)
+ Fixed bug where placing the caret in IE 9 beta 1 would not work correctly if you clicked out side the document body element.
+ Fixed bug where IE 9 beta 1 wouldn't resize the editor correctly since the events didn't fire as previous versions did.
+ Fixed bug where FF would produce an error message when being rendered inside a hidden div element.
+ Fixed bug where resize logic could produce a cookie with a width/height less than the size of the container.
+ Fixed bug where content_css wouldn't populate the styles dropdown correctly.
+Version 3.3.9.1 (2010-09-23)
+ Fixed bug where WebKit browsers wouldn't activate the image button when images where selected.
+ Fixed bug where Opera Presto 10.60 deletes elements when restoring bookmarks.
+ Fixed bug where IE9 beta1 doesn't handle regexp replacement values correctly.
+ Fixed bug where IE9 beta1 didn't render the inline dialogs correctly due to a bug with CSS clip.
+ Fixed bug where IE9 beta1 would produce error messages on load since they removed the document.recalc method.
+ Fixed bug where IE9 beta1 would produce <html xmlns=""> since they haven't implemented document.implementation.createDocument correctly.
+ Fixed bug where IE9 beta1 would searchreplace doesn't work since their native DOM Range doesn't have a find method.
+ Fixed bug where IE9 beta1 would render the source view incorrectly due to incorrect viewport size measurements.
+ Fixed bug where IE9 beta1 would crash when running the basic functionality unit tests.
+ Fixed bug where IE9 beta1 would wrap elements in blocks correctly due to changes to the selection object.
+ Fixed bug where IE9 beta1 would fail to insert contents since they havn't implemented the createContextualFragment method in their DOM Range.
+ Fixed bug where IE9 beta1 would fail to handle image selection since they currently doesn't support control selections in their DOM Range.
+ Fixed bug where IE9 beta1 would fail to load scripts since they fire the onload event before the scripts are parsed and executed.
+Version 3.3.9 (2010-09-08)
+ Fixed bug where inserting table rows into a table with subtable would produce an incorrect column count.
+ Fixed bug where the selection of cells in a table with subtables could produce invalid selections.
+ Fixed bug where the table plugin would produce a script error if you tried to move the caret before a first child table.
+ Fixed bug where the keep_styles feature on IE would move the caret to an incorrect location at the end of list blocks.
+ Fixed so attributes from legacy elements such as font gets retained when they get converted to spans.
+ Fixed minor issue where the select boxes wouldn't be set the not set by default in the table dialog.
+Version 3.3.8 (2010-06-30)
+ On IE8+ and FireFox 3.5+, dragging an image now correctly adds an undo
+ event.
+ Fixed bug where WebKit would not move the caret to a correct position after a paste operation.
+ Fixed bug where WebKit would produce a div wrapper element when pasting some contents.
+ Fixed bug where the visual chars and nonbreaking plugin wouldn't show nbsp elements correctly.
+ Fixed bug where the format states would be enabled even after the format was removed.
+ Fixed bug where the delete key would move the caret to an incorrect position.
+ Fixed bug where it wasn't possible to toggle of the current font size/family/style by clicking the title item.
+ Fixed bug where the abbr element wouldn't get serialized correctly on IE6.
+ Fixed so that the examples checks if they are executed from the local file system since that might not work properly.
+Version 3.3.7 (2010-06-10)
+ Fixed bug where context menu would produce an error on IE if you right clicked twice and left clicked once.
+ Fixed bug where resizing of the window on WebKit browsers in fullscreen mode wouldn't position the statusbar correctly.
+ Fixed bug where IE would produce an error if the editor was empty and you where undoing to that initial level.
+ Fixed bug where setting the table background on gecko would produce \" entities inside the url style property.
+ Fixed bug where the button states wouldn't be updated correctly on IE if you placed the caret inside the new element.
+ Fixed bug where undo levels wasn't properly added after applying styles or font sizes.
+ Fixed bug where IE would throw an error if you used "select all" on empty elements and applied formatting to that.
+ Fixed bug where IE could select one extra character when you did a bookmark call on a caret location.
+ Fixed bug where IE could produce a script error on delete since it would sometimes produce an invalid DOM.
+ Fixed bug where IE would return the wrong start element if the whole element was selected.
+ Fixed bug where formatting states wasn't updated on IE if you pressed enter at the end of a block with formatting.
+ Fixed bug where submenus for the context menu wasn't removed correctly when the editor was destroyed.
+ Fixed bug where Gecko could select the wrong element after applying format to multiple elements.
+ Fixed bug where Gecko would delete parts of the previous element if the selection range was a element selection.
+ Fixed bug where Gecko would not merge paragraph elements correctly if they contained br elements.
+ Fixed bug where the cleanup button could produce span artifacts if you pressed it twice in a row.
+ Fixed bug where the fullpage plugin header/footer would be have it's header reseted to it's initial state on undo.
+ Fixed bug where an empty paragraph would be collapsed if you performed a cleanup while having the caret inside it.
+ Fixed a few memory leaks on IE especially with drop menus in listboxes and the spellchecker.
+ Fixed so formats applied to the current caret gets merged to reduce the number of output elements.
+ Added the latest version of Sizzle for the CSS selector logic to fix a compatibility issue with prototype.
+Version 3.3.6 (2010-05-20)
+ Fixed bug where a editor.focus call could produce errors on IE in very specific scenarios.
+ Fixed bug where Gecko would produce an error if you unformatted text inside an empty element.
+ Fixed bug where IE would produce an error if the caret was placed before a table and you used the align buttons.
+ Fixed bug where the font size drop down didn't display the a preview correctly.
+ Fixed bug where the paste plugin wouldn't include all contents some times on WebKit browsers.
+ Fixed bug where the plain text mode toggle wouldn't work properly on WebKit.
+ Fixed bug where the editors statusbar would become invisible when you resized the window in fullscreen mode.
+Version 3.3.5.1 (2010-05-07)
+ Fixed a critical bug with the fullscreen plugin. Produced error messages when the state was toggled on/off.
+Version 3.3.5 (2010-05-06)
+ Added new merge_with_parents option to formats, enables the control of removal of elements with similar parents.
+ Fixed so the default behavior for applying classes isn't a toggle state but the old behavior from before the 3.3 release.
+ Fixed bug where selecting contents using double click on Gecko would produce errors when using removing format.
+ Fixed bug where the IE DOM could get messed up when non valid contents was pasted into the editor.
+ Fixed bug where merging selected table cells using the context menu didn't work as expected.
+ Fixed bug where some nestled formatting would be applied incorrectly.
+ Fixed bug with enter in list items when using the force_br_newlines mode on WebKit patch contributed by Ryan Koopmans.
+ Fixed bug where undo/redo could produce js errors on some specific operations.
+ Fixed bug where the theme_advanced_font_sizes didn't work as before 3.3 when complex settings where used.
+ Fixed bug where the table plugin would copy cell/row id attributes when making new rows/cells.
+Version 3.3.4 (2010-04-27)
+ Fixed bug where fullscreen plugin would add two editor instances to EditorManager collection.
+ Fixed bug where it was difficult to enter text on non western languages such as Japanese on IE.
+ Fixed bug where removing contents from nodes could result in an exception when using undo/redo.
+ Fixed bug with selection of images inside layers or other resizable containers on IE.
+ Fixed so editors isn't initialized on iPhone/iPad devices since they don't have caret support.
+Version 3.3.3 (2010-04-19)
+ Added new script_loaded callback function setting for the jQuery plugin.
+ Added various fixes and new rpc methods for the spellchecker plugin. Patch contributed by Michael Peters.
+ Removed some unnecessary inline style information from some of the dialogs.
+ Fixed some issues with the chaining for the TinyMCE jQuery plugin.
+ Fixed so any extra arguments passed to patched jQuery functions gets passed through. Patch contributed by Lee Henson.
+ Fixed so spellchecking/contextmenu can be toggled on/off if the browser has native spellchecker support.
+ Fixed bug where some texts in the new paste plugin wasn't placed in language pack.
+ Fixed bug where IE would produce an incorrect information message when cutting.
+ Fixed bug where removing items using the xhtmlxtras plugin wouldn't work correctly.
+ Fixed bug where setting table background images would add extra quotes on Gecko.
+ Fixed bug where shortcut for bold/italic/underline wouldn't work properly on WebKit.
+ Fixed bug where IE would produce an error message if only contents was an image tag and bold was used.
+ Fixed bug where the caret would move if alignment was applied to empty block elements.
+ Fixed bug where some shortcut key commands wouldn't apply formatting correctly.
+Version 3.3.2 (2010-03-25)
+ Fixed bug where it was possible to scale the editor iframe smaller than the editor UI.
+ Fixed bug where some of the resizing option didn't work with the new live resize.
+ Fixed bug where the format listbox didn't show nestled formats correctly.
+ Fixed bug where the native listboxes didn't work correctly.
+ Fixed bug where font size selection in using the legacyoutput plugin would produce errors.
+ Fixed so block and blockquote formats remove their matching element regardless of it's attributes.
+Version 3.3.1 (2010-03-18)
+ Added new live resize feature, the editor contents is now visible while resizing.
+ Fixed bug where some valid_element patterns would produce an unknown property error.
+ Fixed bug where it wasn't possible to toggle off blockquotes.
+ Fixed bug where an undo level wasn't produced when applying formatting using the styles dropdown.
+ Fixed bug where IE 6/7 wouldn't perform caret formatting due to a focus/event bug in IE.
+ Fixed bug where undo/redo wasn't restoring the previous selection correctly.
+ Fixed bug where the caret would become invisible if you resized the editor in latest Gecko.
+ Fixed bug where the class attribute wasn't completely removed in IE 6/7 when the removeClass function was used.
+ Fixed so the matchNode method of the Formatter class returns the matched format rule.
+ Fixed so it's possible to apply formatting to both blocks and as inline elements.
+Version 3.3 (2010-03-10)
+ Fixed bug where backspace on a table on IE would produce an empty tbody and some JS exceptions.
+ Fixed bug where some redundant children wasn't removed properly when applying inline styles to them.
+ Fixed bug where Chrome would produce incorect dialog sizes if the inlinepopups plugin wasn't used.
+ Fixed bug where spans with different classes would get merged if they where siblings to each other.
+ Fixed bug where IE 8 would crash if you used the spellchecker.
+ Fixed bug where Input Method for non western languages didn't work correctly.
+ Fixed bug where the UI would render incorrectly in FF 3.6 on Mac due to a bug n their rendering engine.
+ Fixed bug where WebKit wouldn't scroll down correctly if Shift+Enter was used. Patch contributed by Thomas Andersen.
+Version 3.3rc1 (2010-02-23)
+ Fixed bug with new legacyoutput plugin not working correctly on it's own.
+ Fixed bug some performance issues with removing text formats.
+ Fixed bug where TinyMCE specific attributes wasn't removed properly by remove format.
+ Fixed bug where it wasn't possible to align images within inline elements.
+ Fixed bug where Ctrl+Delete/Backspace would produce an invalid argument exception on IE.
+ Fixed bug where the search/replace logic could produce an infinite loop on IE for reverse searches.
+ Fixed bug where cloning formats in cells didn't work properly on IE.
+ Fixed bug where IE6 would produce a horizontal scroll bar.
+ Fixed so remove jQuery method removes the TinyMCE instance as well as the specified textarea.
+ Fixed so selected rows and cells gets updated using the row/cell properties dialogs.
+Version 3.3b2 (2010-02-04)
+ Fixed bug where sometimes img elements would be removed by split method in DOMUtils.
+ Fixed bug where merging of span elements could occur on bookmark nodes.
+ Fixed bug where classes wasn't properly removed when removeformat was used on IE 6.
+ Fixed bug where multiple calls to an tinyMCE.init with mode set to exact could produce the same unique ID.
+ Fixed bug with the IE selection implementation when it was feeded an document range.
+ Fixed bug where block elements formatting wasn't properly removed by removeformat on all browsers.
+ Fixed bug where selection location was lost if you performed a manual cleanup.
+ Fixed bug where removeformat wouldn't remove span elements within styled block elements.
+ Fixed bug where an error would be thrown if you clicked on the separator lines in menus.
+ Fixed bug with the jQuery plugin adding always adding a querystring value to other resources.
+ Fixed bug where IE would produce an error message if you had an empty editor instance.
+ Fixed bug where Shift+Enter didn't produce br elements on WebKit browsers.
+ Fixed bug where a temporary marker element wasn't removed by the paste plugin.
+ Fixed bug where inserting a table would produce two undo levels instead of one.
+Version 3.3b1 (2010-01-25)
+ Added new text formatting engine. Fixes a lot of browser quirks and adds new possibilities.
+ Added new advlist plugin that enables you to set the formats of list elements.
+ Added new paste plugin logic that enables you to retain style information from Office.
+ Added new autosave plugin logic that automatically saves contents in local storage.
+ Added new valid_styles option. Adds the possibility to restrict styles and their order.
+ Added new theme_advanced_runtime_fontsize option to display the runtime font size in font size select box.
+ Added new jquery plugin version that handles the gzip compressor amongst other things. Contributed by Speednet.
+ Added new $ function to tinymce namespace and editor instances for the jQuery build.
+ Added the possibility to get editors by index as well as name in the tinyMCE.editors collection.
+ Fixed so the contents inside the editor renders in standards mode by default.
+ Fixed bug where it wasn't possible to move the caret on short documents running in standards mode on IE.
+ Fixed bug where the decode method of the DOMUtils class could end up in an endless loop.
+ Fixed bug where it was possible to bypass the paste cleanup on non IE browsers if you clicked while pasting.
+ Fixed bug where some attributes wasn't serialized correctly on IE if wildcard attribute patters where used.
+ Fixed bug where entity decoding was performed on strings that didn't have any valid entities in them.
+ Fixed bugs with the insertNode method of the IE DOMRange implementation. Patch contributed by Scott McNaught.
+ Rewrote the getBookmark/moveToBookmark selection logic to boost performance on larger documents.
+ Rewrote the table plugin to include new cell selection logic and fixed various bugs and issues.
+ Merged the tinyMCE, tinymce and tinymce.EditorManager into the same instance makes more sense.
+ Removed browser setting since the browser support for TinyMCE is not far better than it was when that setting was introduced.
+ Changed the mce_ attribute prefix to the more standard _mce_ prefix. This is similar to browser vendors prefixes.
+ Optimized performance with named entities on Gecko. Regexp replace was executing very slowly probably due to a Gecko bug.
+ Optimized performance of the IE specific selection/range implementation.
+ Removed the safari plugin since we now replaced all text formatting logic to custom code.
+Version 3.2.7 (2009-09-22)
+ Fixed bug where uppercase paragraphs could still produce an invalid DOM tree on IE.
+ Fixed bug where split command didn't work on WebKit since the node serializer needs a real document to work with.
+ Fixed bug where it was impossible in Gecko to place the caret before a table if it was the first one.
+ Fixed bug where linking to urls like ../../ would produce an extra traling slash ../..//.
+ Fixed bug where the template cdate functionality was using an old 2.x API call. Patch contributed by vectorjohn.
+ Fixed bug where urls to the same site but different protocol would be converted when relative_urls where set to false. Patch contributed by Ted Rust.
+ Fixed bug where the paste plugin would remove mceItem prefixed classes.
+ Fixed bug where the paste plugin would sometimes add items in a reverse order on WebKit.
+ Fixed bug where the paste buttons would present an error message on Gecko even if you changed user.js. Patch contributed by Todd (teeaykay).
+ Fixed bug where Opera would crash if you had tables incorrectly placed inside paragraphs.
+ Fixed bug where styles elements wasn't properly processed if you had bad input HTML.
+ Fixed bug where style attributes wasn't properly forced into a specific format.
+ Fixed bug and issues with boolean attributes like checked, nowrap etc.
+ Fixed bug where input elements could override attributes on form elements.
+ Fixed bug where script or style elements could get modified by the DOMUtils processHTML method.
+ Fixed bug where the selected attribute could get lost when force root blocks logic got executed on IE. Patch contributed by Attila Mezei-Horvati.
+ Fixed bug where getAttribs method didn't handle boolean attributes correctly on IE.
+ Fixed so the paste from word dialog is presented if you paste content on an IE with to restrictive security settings.
+ Fixed so the paste_strip_class_attributes option is set to none by default in the paste plugin.
+ Removed default border=0 on tables for the default value of valid_elements.
+Version 3.2.6 (2009-08-19)
+ Added new wordcount plugin, this will display the number of typed words as you write. Contributed by Andrew Ozz.
+ Added new getNext and getPrev methods to DOM utils. These will return the first matching sibling.
+ Fixed bug where it was impossible to place the caret after a table on Gecko. It will now add a paragraph after tables.
+ Fixed bug where inline dialogs would fail if used in a window opened using a showModalDialog. Patch contributed by Derek Britt.
+ Fixed bug where IE could sometimes render a unknown runtime error on invalid input HTML.
+ Fixed bug where some incorrectly placed tables wouldn't be moved outside the paragraphs on IE.
+ Fixed bug where uppercase script/style element wouldn't be handled correctly and converted to valid lowercase.
+ Fixed bug where some WebKit versions on Mac OS X would produce issues with hidden select fields.
+ Fixed bug where the media plugin would fail on WebKit since the node wasn't properly imported to the right document.
+ Fixed bug where absolute URLs for the TinyMCE script using a base href element would cause loading problems in IE 6/7.
+ Fixed bug where pasting using the paste plugin wasn't possible on IE with to restrictive security settings.
+ Fixed bug where pasting of whitespace was impossible using the new custom paste method.
+ Fixed bug where pasting on some WebKit browsers would not work if you pasted specific contents due to a WebKit bug.
+ Fixed bug where doctypes with multiple lines would not be parsed correctly by the fullpage plugin. Patch contributed by Colin.
+ Fixed bug where the autoresize plugin would break the fullscreen functionality.
+ Fixed bug where tables would be chopped up running on IE using invalid contents and pasting paragraphs into a cell.
+ Fixed bug where the each method of jQuery build didn't iterate styleSheets. We now use the TinyMCE API one instead.
+ Fixed bug where auto switching to paragraphs after headers some times failed in Gecko.
+ Fixed so all editor options gets passed to the Serializer class. Patch contributed by Jasper Mattsson.
+ Fixed so script/style blocks isn't wrapped in paragraphs as other inline elements.
+ Fixed so the XHR requests sends the X-Requested-With HTTP header.
+ Fixed so the data url scheme is handled in the tinymce.util.URI class.
+ Changed inline documentation to use moxiedoc style comments.
+ Removed the compat2x plugin people should have upgraded to the 3.x API by now. 3.0 was released more then a year ago.
+ Re-added Gecko specific message for users who doesn't understand the security concept regarding paste.
+Version 3.2.5 (2009-06-29)
+ Added new jQuery plugin for the jQuery specific package. This enables you to more easily load and use TinyMCE.
+ Added new autoresize plugin contributed by Peter Dekkers. This plugin will auto resize the editor to the size of the contents.
+ Fixed so all packages have the same directory structure. Previous releases had a different structure for the production package.
+ Fixed so the paste from word dialog forces the contents to be processed as word contents even if it's not.
+ Fixed so the jQuery build adapter build works. It's currently only excluding Sizzle.
+ Fixed so noscript element contents is retained during the editing process.
+ Fixed bug where the getBookmark method would need a "simple" string input when the documented way is a boolean.
+ Fixed bug where invalid contents could break the fix_table_elements logic.
+ Fixed bug where Sizzle specific attributes would be serialized if the valid_elements was set to *[*].
+ Fixed bug where IE would produce an error if you specified a relative content_css and opened the paste dialog.
+ Fixed bug where pasting images on IE would produce broken images if they came from an external site.
+ Fixed bug where memory was leaked if you add/remove controls dynamically. Some event handlers wasn't removed properly.
+ Fixed bug where domain relaxing wasn't treated correctly if you added it after the TinyMCE script element.
+ Fixed bug where the activeEditor wasn't set to null if the last editor instance was removed.
+ Fixed bug where IE was leaking memory on the onbeforeunload event due to some recently introduced logic. Patch contributed by Options.
+ Fixed bug where inserting tables in Safari 4 didn't work due to a new WebKit bug where some element names are reserved.
+ Fixed bug where URLs having a :// value in the query string would make it absolute regardless of URL settings.
+ Fixed the WebKit specific bug where DOM Ranges would fail if the node wasn't attached to something in a different way.
+ Removed the auto_resize option and the resizeToContent method from the tinymce.Editor class. Use the new autoresize plugin instead.
+Version 3.2.4.1 (2009-05-25)
+ Fixed bug where Gecko browsers would produce an extra space after for example strong when loaded from sub domains.
+ Fixed bug where script elements would be removed if they where placed inside a paragraph element.
+ Fixed bug where IE 8 would produce 1 item remaining when loading CSS files dynamically with an empty cache.
+ Fixed bug where bound events would be removed from other editor instances if a specific one was removed.
+ Fixed various bugs and issues with script and style elements inside the editor.
+ Fixed so all script contents gets wrapped in CDATA sections so that they can be parsed using a XML parser.
+ Fixed so it's impossible for elements marked as closed to have child nodes rendered in output.
+Version 3.2.4 (2009-05-21)
+ Added new paste_remove_styles/paste_remove_styles_if_webkit option to paste plugin concept contributed by Hadrien Gardeur.
+ Added new functionality to paste plugin contributed by Scott Eade aka monkeybrain.
+ Added new paste_block_drop option to the paste plugin this is disabled by default and will block any drag/drop event.
+ Added new bind/unbind methods to DOMUtils these works like Event.add/Event.remove but is easier to access.
+ Added new paste_dialog_width/paste_dialog_height options to paste pluign. Enables you to change the dialog sizes.
+ Fixed bug on IE 8 where it would sometimes produce a "1 item remaining" status message that would never finish.
+ Fixed bug on Safari 4 beta that would produce DOM Range exceptions on the DOMUtils split method since the browser has a bug.
+ Fixed bug where the paste plugin could accidentally think that some word sentences was supposed to be list elements.
+ Fixed bug where paste plugin would produce one extra empty undo level on some browsers.
+ Fixed bug where spans wasn't produced correctly on new line when the keep_styles option was enabled.
+ Fixed bug where the caret would be placed at the beginning of contents in IE 8 if you selected colors from the color pickers.
+ Fixed so the Event class is a normal class instead of a static one. The tinymce.dom.Event is now a global instance of that class.
+ Fixed so internal events for instances gets removed when the DOMUtils instance is removed.
+ Fixed so preventDefault and stopPropagation methods can be used on the event object in all browsers.
+Version 3.2.3.1 (2009-05-05)
+ Fixed bug where paragraphs containing form elements such as input or textarea would be removed.
+ Fixed bug where some IE versions would produce a wrapper function for events attributes.
+ Fixed bug where table cell contents could be removed if you pressed return/enter at the end of the cell contents.
+ Fixed bug where the paste plugin would remove a extra character if the selection range was collapsed.
+ Fixed bug where creating tables with % width wouldn't be handled correctly on WebKit browsers.
+Version 3.2.3 (2009-04-23)
+ Added new paste plugin logic. This new version will autodetect Word contents and clean it up.
+ Added a optional root element argument to getPos so you can tell it where to stop the calculation.
+ Added new DOM ready logic to remove the usage of document.write. We now use basically the same method as jQuery.
+ Fixed bug where WebKit browsers would fail when selecting all contents in the area using Ctrl+A.
+ Fixed bug where IE would produce paragraphs with empty inline style elements.
+ Fixed bug where WebKit browsers would fail when inserting tables with a non pixel width.
+ Fixed bug where block elements could get a redundant br element at the end of the element.
+ Fixed bug where the tabfocus plugin only worked with a single editor instance on page.
+ Fixed bug where IE 8 was loosing caret position if the selection was collapsed and a menu was clicked.
+ Fixed bug with application/xhtml+xml mode where menus wasn't working properly.
+ Fixed bug where the onstop workaround fix for IE would produce errors in an ASP update panel.
+ Fixed bug where the submit function override could produce errors if executed in the wrong scope.
+ Fixed bug where the area element wasn't closed by a short ending.
+ Fixed various number issues in the style plugins properties dialog. Contributed by datpaulchen.
+ Fixed issues with size suffix values in the style plugin dialog.
+ Fixed issue where hasDuplicate variable would leak out to the global space due to a bug in the Sizzle engine.
+ Fixed issue where the paste event would fire a dialog warning on IE since we extracted the text contents.
+ Updated Sizzle engine to the latest version, this version fixes a few bugs that was reported.
+Version 3.2.2.3 (2009-03-26)
+ Fixed regression bug with the getPos method, it would return invalid if the view port was to small.
+Version 3.2.2.2 (2009-03-25)
+ Fixed so the DOMUtils getPos method can be used cross documents if needed.
+ Fixed bug where undo/redo wasn't working correctly in Gecko browsers.
+Version 3.2.2.1 (2009-03-19)
+ Added support for tel: URL prefixes. Even though this doesn't match any official RFC.
+ Fixed so the select method of the Selection class selects the first best suitable contents.
+ Fixed bug where the regexps for www. prefixes for link and advlink dialogs would match wwwX.
+ Fixed bug where the preview dialog would fail to open if the content_css wasn't defined. Patch contributed by David Bildström (ChronoZ).
+ Fixed bug where editors wasn't converted in application/xhtml+xml mode due to an issue with Sizzle.
+ Fixed bug where alignment would fail if multiple lines where selected.
+ Updated Sizzle engine to the latest version, this version fixes a few bugs that was reported.
+Version 3.2.2 (2009-03-05)
+ Added new CSS selector engine. Sizzle the same one that jQuery and other libraries are using.
+ Added new is and getParents methods to the DOMUtils class. These use the new Sizzle engine to select elements.
+ Added new removeformat_selector option, enables you to specify a CSS selector pattern of elements to remove when using removeformat.
+ Fixed so the getParent method can take CSS expressions when selecting it's parents.
+ Added new ant based build process, includes a new javabased preprocessor and a yuicompressor ant task.
+ Moved the tab_focus logic into a plugin called tabfocus, so the old tab_focus option has been removed from the core.
+ Replaced the TinyMCE custom unit testing framework with Qunit and rewrote all tests to match the new logic.
+ Moved the examples/testcases to a root directory called tests since it now includes slickspeed.
+ Fixed bug where nbsp wasn't replaced correctly in ForceBlocks.js. Patch contributed by thorn.
+ Fixed bug where an dom exception would be thrown in Gecko when the theme_advanced_path path was set to false under xml application mode.
+ Fixed bug where it was impossible to get out of a link at the end of a block element in Gecko.
+ Fixed bug where the latest WebKit nightly would fail when changing font size and font family.
+ Fixed bug where the latest WebKit nightly would fail when opening dialogs due to changes to the arguments object.
+ Fixed bug where paragraphs wasn't added to elements positioned absolute using classes.
+ Fixed bug where font size values with dot's like 1.4em would produce a class instead of the style value.
+ Fixed bug where IE 8 would return an incorrect position for elements.
+ Fixed bug where IE 8 would render colorpicker/filepicker icons incorrectly.
+ Fixed bug where trailing slashes for directories in URLs would be removed.
+ Fixed bug where autostart and other boolean values in the media dialog wouldn't be stored/parsed correctly.
+ Fixed bug where the repaint call for the media plugin wouldn't be executed due to a typo in the source.
+ Fixed bug where id attribute of object elements wasn't kept intact by the media plugin.
+ Fixed bug where preview of embeded elements when the media_use_script option was used would fail.
+ Fixed bug where inlinepopups could be rendered at an incorrect location on IE 6 while dragging.
+ Fixed bug where the blocker shim could be placed at an incorrect location on IE 6.
+ Fixed bug where the multiple and size attributes of select elements would produce incorrect values while running in IE.
+ Fixed bug where IE would loose the caret position is you selected a color from the color drop down.
+ Fixed bug where remove format wouldn't work on IE since it couldn't remove span elements that had style information.
+ Fixed bug where Opera was removing links when removing formatting from selected contents.
+ Fixed bug where paragraphs could be produced inside non positional elements styled with the CSS position value of static.
+ Fixed bug where removeformat wouldn't work if you selected part of a span in IE.
+ Fixed bug where media plugin didn't retain the style attribute on embed/object elements.
+ Fixed bug where auto focus on empty editor instances could produce strange results if you inserted an image into it.
+ Fixed bug where &nbsp; characters would be removed in FF when inserted with the mceInsertContent or selection.setContent methods.
+ Fixed bug where warning message of missing paste support wasn't displayed on WebKit browsers.
+ Fixed bug where anchor links could include other links. The selected range is now unlinked before adding news links to it.
+ Fixed memory leak when TinyMCE was used with prototype. Patch contributed by James Ots.
+ Fixed so the non documented fullpage_hide_in_source_view option for the fullpage plugin works again in the 3.x branch.
+ Fixed so tables doesn't get inserted into paragraphs by default since it's not W3C valid. Can be disabled by using the fix_table_elements option.
+ Fixed so the source view dialog sets a source_view state to the event object. Enables plugins to intercept the source view mode.
+ Fixed various validation issues with the html dialogs and pages.
+ Removed ask mode option since there is way better ways of doing this now. Use the add/remove control methods instead.
+ Removed logic for compatibility with Safari 2.x, this browser is no longer supported since no one is using it.
+ Removed the auto domain relaxing feature. If loading scripts cross sub domains it's better to specify the document.domain by hand.
+Version 3.2.1.1 (2008-11-27)
+ Added new theme_advanced_default_background_color/theme_advanced_default_foreground_color options. Patch contributed by David Bildström (ChronoZ).
+ Fixed font style formatting compatibility issue with Adobe Air.
+ Fixed so legacy font elements get converted into spans even if cleanup_on_startup isn't enabled.
+ Fixed bug where pre elements could be incorrectly modified by an IE bug workaround. Patch contributed by hu vime.
+ Fixed bug where input elements inside inlinepopups wasn't editable in Firefox 2.
+ Fixed bug where the xhtmlxtras plugin wasn't replacing attribute values correctly.
+ Fixed bug where menu buttons in skin variants would look strange due to IE 8 fixes.
+ Fixed bug where WebKit browsers would on backspace take you back to the previous page if the editor was empty.
+ Fixed bug where DOMUtils decode method wouldn't handle strings larger than 4096kb due to node chunking.
+ Fixed bug where meta key wasn't handled as ctrl key on Mac OS X for custom keyboard short cuts.
+ Fixed bug where init event would get fired twice on WebKit on Mac OS X.
+Version 3.2.1 (2008-11-04)
+ Added support for custom icon image for drop menus. Use icon_src to set a custom image directly.
+ Added new media_strict option to media plugin. Enables you to control if the flash embed is strict or not. Enabled by default.
+ Fixed so the editors script files gets dynamically loaded without using XHR or eval.
+ Fixed so the media plugin outputs valid XHTML object elements for Flash movies. Can be disabled with the media_strict option.
+ Fixed so dynamic loading doesn't require eval calls on non IE browsers for better Air support.
+ Fixed bug where the editor wasn't treated as empty if the remaining paragraph had attributes.
+ Fixed bug where id's of elements was removed ones they got wrapped in paragraphs. Patch contributed by ChronoZ.
+ Fixed bug where WebKit browsers where placing list elements inside paragraph elements.
+ Fixed bug where inserting images or links would produce absolute urls on WebKit browsers.
+ Fixed bug where values for checked, readonly, disabled and selected attributes was incorrect on IE.
+ Fixed bug where positive values for checked, readonly, disabled and selected attributes wasn't forced to valid values.
+ Fixed bug where selecting the first option in a native select box would produce an undefined error.
+ Fixed bug where tabindex 32768 could be outputted on IE if element attributes where cloned.
+ Fixed bug where the media dialogs preview window would display incorrect contents due to duplicate clsid prefixes.
+ Fixed bug where non pixel or percent heights for textarea elements would produce errors on IE.
+ Fixed bug where cdata sections in script elements wasn't handled correctly.
+ Fixed bug where nowrap of table cells would produce a 65535 value output.
+ Fixed bug where media plugin would produce an error if you selected the first item in the items list.
+ Fixed bug where media plugin would modify links with the item _value in them.
+ Fixed so table width/height is better forced if inline_styles is enabled. Patch contributed by daKmoR.
+ Fixed css for IE 8 such as opacity and other rendering quirks.
+Version 3.2.0.2 (2008-10-02)
+ Fixed bug where the SelectBox and NativeSelectBox wasn't updated correctly if undefined was passed to them.
+ Fixed bug where the style dropdown wasn't correctly changed back to it's original state when element had no class.
+ Fixed bug where multiple pending font styles wasn't handled correctly.
+ Fixed so you can disable all auto css loading for dialogs by setting the popups_css option to false.
+Version 3.2.0.1 (2008-09-17)
+ Fixed bug where font sizes and faces wouldn't be changed correctly when there was a parent with a different style.
+ Fixed bug where adding fonts to the same selection would produce redundant spans.
+Version 3.2 (2008-09-11)
+ Added new text style support, it will now use span elements internally instead of font elements.
+ Added new improved support for the theme_advanced_font_sizes option, check the Wiki for details.
+ Added new keep_style setting that maintains the text style on return/enter on non IE browsers, enabled by default.
+ Added new onBeforeSetContent/onBeforeGetContent/onSetContent/onGetContent events to the Selection class.
+ Added new selectByIndex method to ListBox class. This enables you to select list items by an index instead of a value.
+ Added new possibility to the select method of the ListBox class. This can now have a selector function as it's value argument.
+ Added new possibility to skip the loading of popups css by setting the feature popup_css to the value false.
+ Added new possibility to skip translation of popups by setting the translate_i18n feature to false.
+ Added new element_format option enables you to produce HTML element endings instead of XHTML. But we are still in the XHTML is better camp.
+ Added missing allowfullscreen and quality options for flash elements, this will now get correctly stored.
+ Fixed bug where table cell dialog didn't close properly unless the accessibility_warnings option was set to false.
+ Fixed bug where the modal dialog blocker element for inlinepopups wasn't placed at a correct location if the page had scroll.
+ Fixed bug where non inline dialogs didn't close correctly if the inlinepopups plugin was used.
+ Fixed bug where non inline dialogs could make the modal dialog blocker to work incorrectly.
+ Fixed bug where style select wasn't populated correctly if you pressed the arrow. Patch by Hari Karam Singh.
+ Fixed bug where toggling the fullscreen mode didn't restore scrollbars on IE when the editor was inside a frame. Patch by Jacob Barrett.
+ Fixed bug where inserting flash contents using the template plugin didn't work correctly.
+ Fixed bug where inserting flash contents using the selection.setContent or mceInsertContent command didn't work correctly.
+ Fixed bug where IE would produce an exception if a comment started with -.
+ Fixed bug where the blockquote button would wrap lists incorrectly on non IE browsers.
+ Fixed bug where Opera would display BR elements in the element path.
+ Fixed bug where xhtmlxtras didn't insert elements correctly on IE.
+ Fixed bug where the buttons wasn't activated correctly in the xhtmlxtras plugin.
+ Fixed bug where adding an object as the style attribute for the dom setAttribs method wouldn't work.
+ Fixed bug where the background color would bleed out to parent container element in Gecko.
+ Fixed bug where the insert column actions for tables would fail if you did it in a thead or tfoot. Patch contributed by T Andersen (tan73).
+ Fixed bug where event blocker element wasn't positioned correctly for the inlinepopups plugin.
+ Fixed bug where pasting from Office 2007 would produce an odd comment in the contents.
+ Fixed bug where the paste as plain text could remove an extra character. Patch contributed by Speednet.
+ Fixed bug where some characters where missing for the paste_replace_list option. Patch contributed by Speednet.
+ Fixed bug where removing non existing editor instances by the mceRemoveControl command would produce an error.
+ Fixed bug where meta elements with the name description would produce errors in IE.
+ Fixed bug where color and background colors wouldn't be updated properly.
+ Fixed bug where the createMenuButton of tinymce.ControlManager didn't implement the last class argument.
+ Fixed bug where the editor_css option was relative from the TinyMCE installation directory not the current page.
+ Fixed bug where elements wouldn't be padded if the element contained bogus br elements. For example TD elements.
+ Fixed bug where parsing of <body > in fullpage plugin would produce an error.
+ Fixed bug where relative urls with just ./ would become an empty string.
+ Fixed bug where outdent button would be disabled if inline_styles where set to false.
+ Fixed bug where replace with an empty search string would produce an error on IE.
+ Fixed bug where restoring the overflow state of the body in fullscreen plugin running on IE would produce vertical scrollbars.
+ Fixed bug where pressing return/enter in list items would sometimes move the caret the to top of the content area in FF.
+ Fixed bug where the style listbox wouldn't be updated correctly if you used the use_native_selects option.
+ Fixed bug where WebKit browsers would produce a div element when ending list elements using return.
+ Fixed so translation of popup contents only occurs if it's needed.
+ Optimized the URI object in regards or converting absolute URIs to relative URIs.
+Version 3.1.1 (2008-08-18)
+ Added new getSize method to DOMUtils it will return the dimensions only of an element.
+ Added new alert/confirm methods to the tinyMCEPopup class to prevent focus problems and also to shorten method calls.
+ Added new plugin_preview_inline option to preview plugin to enable/disable native/inline dialogs.
+ Added new readonly option. If this is set the editor will only display the contents for the user.
+ Added missing tabindex and accesskey to input elements in the default valid_elements setup.
+ Updated firebug lite to 1.2, to enable it use the tiny_mce_dev.js?debug=1 on the development package.
+ Fixed so the preview dialog in the preview plugin uses inline dialogs/popups.
+ Fixed so CDATA sections remains intact through the serialization process of the DOM tree.
+ Fixed various issues with the getAttrib command. It will now return more correct values.
+ Fixed bug where the embed element wasn't properly parsed in the media plugin it now supports 3 formats.
+ Fixed bug where the noshade attribute was serialized incorrectly on IE.
+ Fixed bug where editing an existing link element didn't force it relative.
+ Fixed bug where image link creation fails on Safari if the image is aligned.
+ Fixed bug where it was possible to scroll the fullscreen mode in Opera 9.50.
+ Fixed bug where removal of center image alignment would fail. Patch contributed by Andrew Ozz.
+ Fixed bug where inlinedialogs didn't work properly if the doctype was incorrect in IE.
+ Fixed bug where cross domain loading didn't work correctly in Opera 9.50.
+ Fixed bug where breaking huge text blocks with return/enter key would scroll to end of block.
+ Fixed bug where replace button kept inserting the replacement text even if there is no more matches.
+ Fixed bug with fullpage plugin where value wasn't set correctly. Patch contributed by Pascal Chantelois.
+ Fixed bug where the dom utils setAttrib method call could produce an exception if the input was null/false.
+ Fixed bug where pressing backspace would sometimes remove one extra character in Gecko browsers.
+ Fixed bug where the native confirm/alert boxes would move focus to parent document if fired in dialogs.
+ Fixed bug where Opera 9.50 was telling you that the selection is collapsed even when it isn't.
+ Fixed bug where mceInsertContent would break up existing elements in Opera and Gecko.
+ Fixed bug where TinyMCE fails to detect some keyboard combos on Mac, contributed by MattyRob.
+ Fixed bug where replace all didn't move the caret to beginning of text before searching.
+ Fixed bug where the oninit callback wasn't executed correctly when the strict_loading_mode option was used, thanks goes to Nicholas Oxhoej.
+ Fixed bug where a access denied exception was thrown if some other script specified document.domain before loading TinyMCE.
+ Fixed so setting language to empty string will skip language loading if translations are made by some backend.
+ Fixed so dialog_type is automatically modal if you use the inlinepopups plugin use dialog_type : "window" to re-enable the old behavior.
+Version 3.1.0.1 (2008-06-18)
+ Fixed bug where the Opera line break fix didn't work correctly on Mac OS X and Unix.
+ Fixed bug where IE was producing the default value the maxlength attribute of input elements.
+Version 3.1.0 (2008-06-17)
+ Fixed bug where the paste as text didn't work correctly it encoded produced paragraphs and br elements.
+ Fixed bug where embed element in XHTML style didn't work correctly in the media plugin.
+ Fixed bug where style elements was forced empty in IE. The will now be wrapped in a comment just like script elements.
+ Fixed bug where some script elements wrapped in CDATA could fail to be serialized correctly.
+ Fixed bug where FF 3 produced -moz- internal styles in some style attributes.
+ Fixed bug where query strings and external URLs didn't work correctly in style attributes.
+ Fixed bug where shape attribute of area elements got serialized as rect regardless of it's initial value in IE 6.
+ Fixed bug where selection of elements inside layers would fail in IE since focus was moved to the document body.
+ Fixed bug where pressing enter/return in an editable select box would produce an __mce_add_custom__ class value.
+ Fixed bug where changing font size of text placed inside a colored text chunk would remove the parent node.
+ Fixed bug where Opera 9.5 final produced a strange line break behavior due to a workaround for previous Opera versions.
+ Fixed bug where text/background color would produce a strange focus problem when you tried to click on the body in IE.
+ Fixed issue where selecting the title of an listbox equals the old 2.x behavior of changing the value to an empty string.
+ Fixed issue where it was common for the media plugin to break if the _value attribute wasn't added for the param element.
+ Fixed issue where the wrong parent editor instance might be updated if you use fullscreen mode in an incorrect way.
+ Fixed issue where Safari was producing a warning about the base element not being closed correctly.
+ Removed redundant form element name matching from regexp in the DOMUtils class.
+Version 3.0.9 (2008-06-02)
+ Added new contextmenu_offset_x/contextmenu_offset_y options for the contextmenu plugin.
+ Added cite attribute to the default rule for the blockquote element.
+ Added support for using arrow keys for selection of items in listboxes.
+ Added support for using arrow keys for selection of items in dropmenus.
+ Fixed bug where blockformat change on elements with BR inside them didn't change correctly on Firefox.
+ Fixed bug where removing table rows inside thead or tfoot would remove the whole table if it was the last one.
+ Fixed bug where XHR synchronous mode didn't execute the callback handlers synchronously.
+ Fixed bug where setting border to 0 didn't add border: 0 to the style attribute when using the advimage dialog.
+ Fixed bug where the selection of images and table cells didn't work correctly when the editor is placed in a frame and running on IE.
+ Fixed bug where the store/restore of a selection didn't work correctly in non IE browsers.
+ Fixed bug where only the first element would be invalid for the invalid_elements option.
+ Fixed bug where paste as plain text didn't encode the characters correctly when they where inserted.
+ Fixed bug where HTML source window couldn't be maximized on Gecko when the maximizable feature was enabled.
+ Fixed bug where color selection using the color picker could produce exception in IE.
+ Fixed bug where font size changes could produce produce extra redundant elements.
+ Fixed bug where IE could produce unknown runtime error if you replaced a image with another image from a separate frame.
+ Fixed bug where the domLoaded state for the Event class wasn't set correctly if the editor was loaded dynamically using the gzip compressor.
+ Fixed bug where handling of the base element for a page would produce incorrect urls. Based on a patch contributed by John LeSueur.
+ Fixed bug where table constraint alert boxes was presented with an empty value and wasn't the skinned inline ones.
+ Fixed bug where the onChange event wasn't fired when the form was submitted. It's now also triggered when the save method is called.
+ Fixed bug where encoding set to xml didn't work as expected. It now encodes the contents into XML entities.
+ Fixed bug where numrows didn't work correctly for the merge cells dialog of the table plugin.
+ Fixed bug where the onGetContent event was fired even when the no_events flag was set.
+ Fixed bug where the preview panels for the advimage and the media plugin could overflow on Safari and FF 3.
+ Fixed bug where the editing and removal of abbr elements using the xhtmlxtras plugin working correctly on IE.
+ Fixed bug where save button in the save plugin didn't work correctly on IE.
+ Fixed bug where dragging layers didn't work as expected since it would snap back to it's original location if you saved.
+ Fixed bug where the description of the template plugin dialog wasn't updated correctly.
+ Fixed bug where the values for frame and rules in the table dialogs where swapped.
+ Fixed bug where the elements like ins, del, cite, acronym and abbr didn't have the default editing style as the old 2.x branch.
+ Fixed bug where ask mode would lock the focused textarea if you pressed cancel in the confirm dialog on FF 3.
+ Fixed bug where ask mode would produce contents for empty textareas if you reloaded the page.
+ Fixed so the onGetContent event gets the full pass through object just like the other events.
+ Fixed so attributes for block elements remains the same when you change format of a element.
+Version 3.0.8 (2008-04-30)
+ Fixed bug where IE would produce an error if textareas without names where converted.
+ Fixed bug where editor wasn't forced empty when there was only a single br or empty paragraph left.
+ Fixed bug where IE would produce an warning message if object elements where produced in the media plugins preview running on https.
+ Fixed bug where new addVer function didn't handle hash items correctly. Patch contributed by Mirek Burkon.
+ Fixed bug where font_size_style_values option wasn't applied correctly to fonts inside the editor.
+ Fixed bug where image selection could be lost if a image was edited using context menu on IE.
+ Fixed bug where style values wasn't updated properly due to an invalid regexp.
+ Fixed bug where IE 6 where displaying warning message about insecure items when inserting an image while using https. Patch contributed by Norifumi Sunaoka.
+ Fixed bug where IE was producing an auto save message if you selected a color from the color split button.
+ Fixed bug where backspace sometimes would move the caret to the end of the previous block in Gecko.
+ Fixed bug where the rowlayout manager didn't work as described in the documentation.
+ Fixed bug where the default options for the fullpage plugin wasn't applied correctly.
+ Fixed bug where selection would jump one character if you applied a styles to a words in non IE browsers.
+ Fixed bug where undo levels wasn't added correctly if you went back in undo history and added a new event.
+ Fixed bug where font size dropdown didn't mark the selected size in IE.
+ Fixed bug where the size of the editor was determined using clientWidth instead of offsetWidth.
+ Fixed so the onchange event doesn't fire on the initial undo level, it will also fire when the editor is blurred.
+ Fixed so the advhr plugin produces XHTML valid output instead of non standard attributes.
+ Fixed so blockquote gets converted into [quote] in when the bbcode plugin is enabled.
+ Fixed so theme_advanced_font_sizes can be named for example Font 1=1, Font 2=2 etc.
+ Fixed so editor_selector/editor_deselector can be regexps. By default only strings are allowed not part regexps like before.
+ Fixed so that the version suffix is optional. It still requires the build process so you need to export it manually.
+ Fixed so it's possible to tab to table cells in non Gecko browsers and also produce new rows if you tab at the end of a table. Contributed by Josh Peek.
+Version 3.0.7 (2008-04-14)
+ Added new version suffix to all internal GET requests to make sure that the users cache gets cleared correctly.
+ Fixed issue with isDirty returning true event if it wasn't dirty on IE due to changes in tables during initialization.
+ Fixed memory leak in IE where if a page was unloaded before all images on the page was loaded it would leak.
+ Fixed bug in IE where underline and strikethrough could produce an exception error message.
+ Fixed bug where inserting paragraphs in totally empty table cells would produce odd effects.
+ Fixed bug where layer style data wasn't updated correctly due to some performance enhancements with the DOM serializer.
+ Fixed bug where it would convert the wrong element if there was two elements with the same name and id on the page.
+ Fixed bug where it was possible to add style information to the body element using the style plugin.
+ Fixed bug where Gecko would add an extra undo level some times due to the blur event.
+ Fixed bug where the underline icon would get active if the caret was inside a link element.
+ Fixed bug where merging th cells not working correctly. Patch contributed by André R.
+ Fixed bug where forecolorpicker and backcolorpicker buttons where rendered incorrectly when the o2k7 skin was used.
+ Fixed bug where comment couldn't contain -- since it's invalid markup. It will now at least not break on those invalid comments.
+ Fixed bug where apos wasn't handled correctly in IE. It will now convert apos to &#39; on IE since that browser doesn't support that entity.
+ Fixed bug where entities wasn't encoded correctly inside pre elements since they where protected from whitespace removal.
+ Fixed bug where color split buttons where rendered incorrectly on IE6 when using the non default theme.
+ Fixed so caret is placed after links ones they are created, to improve usability of the editor.
+ Fixed so you can select tables by clicking on it's borders in non IE browsers to normalize the behavior.
+ Fixed so the menus can be toggled by clicking once more on the icon in listboxes, menubuttons and splitbuttons based on code contributed by Josh Peek.
+ Fixed so buttons can be labeled, currently only works with the default skin, so it's kind of experimental. Patch contributed by Daniel Insley.
+ Fixed so forecolorpicker and backcolorpicker remembers the last selected color. Patch contributed by Shane Tomlinson.
+ Fixed so that you can only execute the mceAddEditor command once for the same instance name.
+ Fixed so command functions added with addCommand can pass though the call to default handles if it returns true.
+Version 3.0.6.2 (2008-04-07)
+ Fixed bug where empty tables couldn't be edited correctly on non IE browsers if they where loaded into the editor.
+ Fixed bug where it was impossible to resize layers correctly in IE since it thought it was an image.
+ Fixed bug where an editor instance was stealing focus in IE resulting in a scroll to the editor on page reloads.
+ Fixed bug where Safari was crashing on Mac OS X if you closed dialogs using the Esc key.
+Version 3.0.6.1 (2008-04-04)
+ Added support for the missing mceAddFrameControl command. The input for this command has changed so consult the Wiki.
+ Fixed bug where sub menus for the drop menus would leave an empty element behind.
+ Fixed memory leak in IE if the editor was placed in a frame or iframe.
+Version 3.0.6 (2008-04-03)
+ Added elements to the default value of valid_elements option. It now contains all XHTML strict elements and a few transitional.
+ Added more accessibility fixes, it's now possible to navigate and close list boxes and split button menus with the keyboard.
+ Added missing getInfo method to the contextmenu and safari plugin, this caused problems for the Drupal module.
+ Added new inlinepopups_zindex option to the inlinepopups plugin so that you can configure the default start z-index.
+ Added new setControlType method to the tinymce.ControlManager class. This method enables you to override the default classes.
+ Added ability to specific an optional control class to use instead of the default one for the ControlManager methods. Based on concept by Josh Peek.
+ Fixed bug where attribute rules for the DOM Serializer couldn't contain - or _ characters in their names.
+ Fixed bug where inlinepopups event blocker and modal dialog blocker elements produced vertical scrollbars.
+ Fixed bug where there was a rendering issue with quirks mode in Safari moving the resize handle to an incorrect position.
+ Fixed bug with forecolor/backcolor controls on IE. Sometimes elements positioned relative will generate display errors.
+ Fixed bug where a p2 was leaking out in the global name space when you selected a color from the forecolor/backcolor controls.
+ Fixed bug where empty paragraphs didn't work as expected in browsers other than IE.
+ Fixed bug where the load method of the tinymce.dom.ScriptLoader didn't check if the file was already loaded.
+ Fixed bug where the load method for the PluginManager and ThemeManager didn't check if a plugin/theme by a specific name was all ready loaded.
+ Fixed bug where the theme_advanced_link_targets option didn't work correctly with the advanced themes link dialog. Patch contributed by Arnold B.
+ Fixed bug where the style command would merge classes into empty span elements.
+ Fixed bug where the style command would remove empty span elements outside the current selection.
+ Fixed bug where the fix for the Safari backspace bug removed all editor contents if it was filled with empty paragraphs.
+ Fixed bug where alert and confirm boxes opened by the inlinepopups plugin would produce an exception if domain relaxing was used.
+ Fixed bug where Safari was adding style attributes to all elements when you paste them into the editor.
+ Fixed bug where the spellchecker menus was visually incorrect since the space for the non existing icon was still there.
+ Fixed bug where remove_linebreaks option didn't remove line breaks inside the text contents of a element.
+ Fixed bug where Safari 3.1 was introducing _mc_tmp into paragraphs due to the new querySelectorAll and a TinyMCE specific workaround.
+ Fixed bug where getParam method in the Editor class was returning incorrect objects and would mess up the font drop down. Patch contributed by speednet.
+ Fixed bug where the table dialog would produce an exception in IE when you edited tables since it tried to place focus in a disabled field.
+ Fixed bug where class attribute on some span elements was removed on cleanup.
+ Fixed bug where resizing the editor in IE could produce an exception if the editor width/height got to be a negative value.
+ Fixed bug where wmv files wouldn't play since the src param was used instead of the url param.
+ Fixed bug where br elements would be added here and there in Gecko. Geckos internal _moz_dirty br elements where serialized as well.
+ Fixed bug where editing named anchors would produce two anchors instead of one updated one.
+ Fixed bug where arrow and function keys didn't work when an noneditable element was focused within the editor.
+ Fixed bug where the dispatcher could produce an exception if the listener list was altered inside an event callback.
+ Fixed bug where it was impossible to totally empty the editor contents on Safari due to an mistreatment of nbsp as whitespace. Patch contributed by Andrew Ozz.
+ Fixed bug where TinyMCE would not convert textareas with the same name attribute value. It will now generate an unique id for those textareas.
+ Fixed bug where backspace/delete key was deleting td elements inside tables while running on Gecko.
+ Fixed bug where Firefox 3.0b4 and Opera 9.26 where scrolling to the top of document when pressing return/enter.
+ Fixed bug where the template plugin wasn't just inserting the mceTmpl tagged element.
+ Fixed bug where the alert method of the default WindowManager implementation didn't translate input language strings like the inlinepopups dialog does.
+ Fixed bugs with the backspace behavior in Gecko. The caret was placed on incorrect locations in the DOM sometimes.
+ Fixed so advimage dialog and table dialogs has support for editable select boxes for the class value.
+ Fixed so the media, pagebreak and spellchecker doesn't load it's default content.css file if the content_css option is set to false.
+ Fixed so the paste_use_dialog option works again it's enabled by default but can be disabled on IE. Patch contributed by Speednet.
+ Fixed so that the fullscreen editor is focused when switching fullscreen editing on.
+ Fixed so it's possible to edit images and links inside tables using the context menu.
+ Fixed so table dialogs and the advanced image dialog doesn't loose selection in IE if the dialogs where navigated/submitted with the keyboard.
+ Fixed so the theme_advanced_blockformats options can have named items for example title 1=h1;title 2=h2.
+ Fixed so it's possible to add a custom editor_css for the simple theme.
+ Fixed quirks with directionality rtl, patch contributed by Andrew Ozz.
+ Fixed so the inlinepopups default start zIndex is 300000.
+ Fixed typo in media plugin Shockware is now replaced with Shockwave.
+ Fixed psuedo memory leak in IE with the replaceChild method inside the DOMUtils.replace method.
+ Fixed so memory is released when an editor instance is removed from page.
+ Optimized the color split button menus so that they use less event handlers.
+ Removed the util/mclayer.js file since it's no longer used by any of the TinyMCE dialogs and is considered deprecated.
+Version 3.0.5 (2008-03-12)
+ Added new black skin variant to the o2k7 skin contributed by Stefan Moonen.
+ Added new explode method to the tinymce core class. This does a split but removed whitespace it also defaults to a , delimiter.
+ Added new detection logic for IE 8 standards mode into the DOMUtils class strMode can now be checked to see if that mode is on/off.
+ Added new noscale option value for the scale select box for Flash in the media plugin.
+ Fixed bug where the menu for the ColorSplitButton wasn't removed when the editor was removed.
+ Fixed bug where font colors couldn't be edited correctly since the style of the element didn't get updated correctly.
+ Fixed bug where class of elements would get lost when TinyMCE was fixing incorrect HTML markup.
+ Fixed bug where table editing would produce double height values.
+ Fixed bug where width style value wouldn't be removed if you switched width unit from cm/em to pixels or percent.
+ Fixed bug where the search/replace input box wasn't auto focused like the other dialogs.
+ Fixed bug where the old mceAddControl command would use the fullscreen settings next time it created an instance.
+ Fixed bug where multiple lines where added to the target cell if you merged multiple empty cells.
+ Fixed bug where drop down menus would be incorrectly positioned inside scrollable divs.
+ Fixed bug where the separators of the silver skin variant didn't display correctly in IE 6.
+ Fixed bug where createStyleSheet seems to load scripts at opposite order in some IE versions.
+ Fixed bug where directionality could produce odd results for the UI and the dialogs.
+ Fixed bug where the DOM serializer wouldn't serialize custom namespaced attributes in IE 6 using the *[*] valid elements rule.
+ Fixed bug where table caption would be inserted after the thead element if you swapped a tr to be inside the thead.
+ Fixed bug where the youtube detection logic for the media plugin was to generic.
+ Fixed so the deprecated and undocumented theme_advanced_path_location set to none won't hide the whole statusbar.
+ Fixed so most input lists can have whitespace in them they are now split using the new tinymce.explode method.
+ Fixed so the popup_css and popup_css_add URLs are relative to where the current document is located.
+ Fixed various bugs and quirks with the store/restore selection logic.
+ Fixed so the editor starts in IE 8 standards mode but still that browser is very very buggy.
+ Fixed so dialog_type set to modal will block the background and other inline windows and only give access to the front most window.
+Version 3.0.4.1 (2008-03-08)
+ Fixed critical bug where it was impossible to edit images when inlinepopups where used due to lost selection in IE.
+Version 3.0.4 (2008-03-07)
+ Added new option constrain_menus, this enables you to force view port constraints on all menus. Contributed by Shane Tomlinson.
+ Fixed bug where table background wasn't visible inside the editor due to a default CSS rule overriding the style attribute.
+ Fixed bug where links would get a null class added if no styles was used in IE.
+ Fixed bug where spellchecker was auto focusing the editor in IE.
+ Fixed bug where document.domain would produce invalid argument if the editor was loaded in IE6 over a network UNC path.
+ Fixed bug where table height attribute was used, this is deprecated in XHTML so it now adds it as an style.
+ Fixed bug where textareas with style values would produce error in IE.
+ Fixed so the first element in each dialog is focused by default to enhance keyboard usage.
+ Fixed so you can add a mceFocus class to elements to make it auto focused.
+ Fixed so you can close dialogs using the esc key.
+ Fixed so you can press return/enter to submit the action of each dialog.
+ Fixed so tabbing inside an inline popups wont focus the resize anchor elements.
+ Fixed so you can press ok in inline alert messages using the return/enter key.
+ Fixed so textareas can be set to non px or % sizes for example em, cm, pt etc.
+ Fixed so non pixel values can be used in width/height properties for tables.
+ Fixed so the custom context menu can be disabled by holding down ctrl key while clicking.
+ Fixed so the layout for the o2k7 skin looks better if you don't have separators before and after list boxes.
+ Fixed so the sub classes get a copy of the super class constructor function to ease up type checking.
+ Fixed so font sizes for the format block previews are normalized according to http://www.w3.org/TR/CSS21/sample.html (it can be overridden).
+ Fixed so font sizes for h1-h6 in the default content.css is normalized according to http://www.w3.org/TR/CSS21/sample.html (it can be overridden).
+Version 3.0.3 (2008-03-03)
+ Fixed bug where an error about document.domain would be thrown if TinyMCE was loaded using a different port.
+ Fixed bug where mode exact would convert textareas without id or name if the elements option was omitted.
+ Fixed bug where the caret could be placed at an incorrect location when backspace was used in Gecko.
+ Fixed bug where local file:// URLs where converted into absolute domain URLs.
+ Fixed bug where an error was produced if a editor was removed inside an editor command.
+ Fixed bug where force_p_newlines didn't effect the paste plugin correctly.
+ Fixed bug where the paste plugin was producing an exception on IE if you pasted contents with middots.
+ Fixed bug where delete key could produce exceptions in Gecko sometimes due to the fix for the table cell bug.
+ Fixed bug where the layer plugin would produce an visual add class called mceVisualAid this one is now renamed to mceItemVisualAid to mark it internal.
+ Fixed bug where TinyMCE wouldn't initialize properly if ActiveX controls was disabled in IE.
+ Fixed bug where tables and other elements that had visual aids on them would produce an extra space after any custom class names.
+ Fixed bug where search with an empty string would produce some odd "invalid pointer" error in IE.
+ Fixed bug where elements like menus where placed at incorrect positions in Opera 9.26.
+ Fixed bug where IE was loosing focus of the editor when you clicked some dropmenu and if it was placed in a frame or iframe.
+ Fixed bug where focus of images could be lost in IE if you focused the accessibility confirm dialog in the advimage plugin.
+ Fixed bug where nestled font elements would produce odd output like missing font elements.
+ Fixed bug where text colors and styles got removed if invalid_elements included the font element.
+ Fixed bug where text-decoration set to underline or line-through would remove other styles from span elements.
+ Fixed bug where editor contents like \n\n would be incorrectly handled and processed as real line feeds.
+ Fixed bug where incorrectly encoded urls with ampersands in them would be decoded incorrectly.
+ Optimized the DOMUtils decode method to be a lot faster if the string doesn't have any entities to decode.
+Version 3.0.2.1 (2008-02-26)
+ Fixed alert/confirm dialogs so they display correctly.
+Version 3.0.2 (2008-02-26)
+ Added new body_id option that enables you to specify the id of the body inside the editor iframe based on ideas by David Bildström (ChronoZ).
+ Added new body_class option that enables you to set the class for the body of the editor iframe based on ideas by David Bildström (ChronoZ).
+ Added new CSS class to the default content.css files mceForceColors that forces white background and black text can be used with the body_class option.
+ Added new type parameter to the Editor.getParam function to reduce redundant logic for parsing hash tables.
+ Added new isDone method to the ScriptLoaded class, this enables you to check if a script has been loaded or not.
+ Added new resizeTo and resizeBy methods for the advanced theme. Can be called using tinyMCE.activeEditor.theme.resizeTo(w, h);
+ Added new skin_variant option this can be used to extend existing skins with slight modifications like color.
+ Added new variant of the o2k7 skin called "silver" based on a contribution made by Stefan Moonen.
+ Fixed bug where the template plugin might produce errors if the template_mdate_classes wasn't configured.
+ Fixed bug where the media plugin didn't convert the URLs for movies once they where inserted.
+ Fixed bug where the style field for the advlink dialog didn't work correctly if you edited an existing link.
+ Fixed bug where alignment of toolbars would fail in editor was uses in a quirks mode on IE, fix contributed by Peter Wood & Art Lawry.
+ Fixed bug where initialization of multiple editors at the same time using the mceAddControl method would produce errors.
+ Fixed bug where initialization of editors using mceAddControl command or new tinymce.Editor calls would fail during page load.
+ Fixed bug where the check for domain relaxing could fail if the document.domain property was changed by another script.
+ Fixed bug where textareas couldn't be named description or any other name that matches the meta elements in IE and Opera.
+ Fixed bug where the element path would fail sometimes in IE due to "unknown runtime error" on innerHTML.
+ Fixed bug where Safari would crash if you was hiding the editor before serializing the contents.
+ Fixed bug where the editor wasn't scaled propertly in fullscreen mode using the old fullscreen_new_window option.
+ Fixed bug where render method didn't load language packs in IE and Opera if you rendered an editor during page load.
+ Fixed bug where resizing the browser window in fullscreen didn't resize the editor.
+ Fixed bug where the blockquote command didn't move the caret inside the new empty blockquote if you used it on an empty document.
+ Fixed bug where auto in a style width/height for the textarea would produce an editor with the size value of 100. Fix contributed by Shane Tomlinson.
+ Fixed bug where restoration of selection at the beginning of an element could fail in Gecko.
+ Fixed bug where caret restoration after a cleanup could place the it at an incorrect location.
+ Fixed bug where delete key inside td elements would delete the cell in Gecko.
+ Fixed so the blockquote button toggles individual lines. This behavior is a bit more like the old indentation behavior in the 2.x branch.
+ Fixed so the dialog language packs only gets loaded the first time you open a dialog.
+ Fixed so all classes in the whole UI is prefixed with "mce" to avoid collisions, use the skin converter to update your existing skins.
+ Fixed so all classes in the inlinepopups logic is prefixed with "mce" to avoid collisions, use the skin converter to update your existing skins.
+ Fixed so that the window in fullscreen mode can be resized when fullscreen_new_window option is enabled.
+ Fixed so blockquote elements are formatted in the source output with an linefeed before and after it.
+ Optimized the editor initialization by reducing the number of calls to getBookmark/moveToBookmark.
+Version 3.0.1 (2008-02-21)
+ Added spellchecker plugin into the main package, but without any backend can be specified with the spellchecker_rpc_url option.
+ Added src attribute for script elements to the default valid_elements option value.
+ Added extra parameter to the class_filter callback it can now also filter out classes based on the whole CSS rule.
+ Added support for domain relaxing, TinyMCE can now be loaded from an remote domain as long as they are on the same root domain.
+ Added support for custom elements the new custom_elements option enables you to add non HTML elements to the editor.
+ Added support for the W3C Selectors API that was added to latest nightly build of WebKit.
+ Fixed bug where some object param element wasn't stored correctly using the media plugin.
+ Fixed bug where Opera was scrolling to top of page is drop menus on list boxes where displayed.
+ Fixed bug where IE6 was crashing if a format block was used on a container with anchor elements.
+ Fixed bug where spans with font sizes wasn't handled correctly when editor was loading contents.
+ Fixed bug where mode exact couldn't convert editors with name only. Id is no longer required but recommended.
+ Fixed bug where the mceInsertRawHTML command produced an extra undo level.
+ Fixed bug where the specific_textareas mode didn't work correctly this is the same thing as textareas now.
+ Fixed bug where the values of input elements in the HTML page of dialogs pages where changed in IE.
+ Fixed bug where fullscreen and fullpage plugins didn't work well together.
+ Fixed bug where embed elements wasn't handled properly in the media plugin.
+ Fixed bug where style information on span elements gets munged when fonts are converted to spans.
+ Fixed bug where some entities in element attributes where encoded incorrectly in the latest WebKit build.
+ Fixed bug where initialization would fail in IE if there where two input elements with the name submit in the form.
+ Fixed bug where fullscreen mode didn't work correctly in IE when the fullscreen_new_window option was used.
+ Fixed bug where invalid contents like an ul inside a p element would produce odd results in IE.
+ Fixed bug where Opera 9.2x was placing the drop menus at incorrect locations if the editor was placed in a table.
+ Fixed bug where Opera was producing odd results if enter/return was pressed while having forced_root_blocks disabled.
+ Fixed bug where layer plugin was stealing focus in IE on initialization.
+ Fixed bug where body attributes wasn't set properly in the fullpage plugin, fix contributed by Hiroaki Kawai.
+ Fixed bug where insert image and insert link dialogs where producing an extra level in the undo history.
+ Fixed bug where Gecko would produce an error if empty elements like <div></div> where inserted using mceInsertContent.
+ Fixed bug where center alignment of images produced odd results inside table cells.
+ Fixed bug where center alignment of images couldn't be toggled correctly.
+ Fixed bug where alignment of images inside tables would produce double float style items in IE if the fix_table_elements option was enabled.
+ Fixed bug where a variable called 'v' was polluting the global namespace. Objects tinymce and tinyMCE are the only ones allowed to be global.
+ Fixed bug where insert table from context menu couldn't insert new tables inside existing tables.
+ Fixed bug where Safari wouldn't produce br elements on enter when the force_br_newlines option was enabled.
+ Fixed bug where switching cell type in table cell dialog would produce odd attributes in IE.
+ Fixed bug where Gecko was outputting internal attributes if valid_elements where set to "*[*]".
+ Fixed bug where the style plugin would produce non hex colors inside the dialog when running on Gecko.
+ Fixed bug where an empty src value for insert image would remove the currently selected image if it wasn't and image element.
+ Fixed bug where hidden input elements would break the logic for the tab_focus option.
+ Fixed bug where save button wasn't working correctly in fullscreen mode.
+ Fixed bug where the editor was forced to be placed in a form element if the save_onsavecallback option was used.
+ Fixed bug where upper case param attributes wasn't parsed correctly in the media plugin.
+ Fixed bug where render method of tinymce.Editor class would produce an exception if the strict_loading_mode option was omitted.
+ Fixed bug where nodeChanged event could be fired while the editor was loading and there for produce an exception in FF.
+ Fixed bug where no undo levels where added if the user created new table rows using the tab key on Gecko.
+ Fixed bug where tables would be broken if you selected a different block format for contents withing an table cell.
+ Fixed bug where the render method of the tinymce.Editor class didn't setup the tinymce.EditorManager.settings object correctly.
+ Fixed bug where the advanced image dialog would go to the first tab if the alternative image was changed using the file browser link.
+ Fixed bug where the forced_root_block option would produce BR elements inside empty blocks if the block wasn't a paragraph.
+ Fixed bug where the forced_root_block doesn't work correctly on IE if the specified element was something else than paragraphs.
+ Fixed bug where selection of images would get lost if user selected something from the context menu in IE.
+ Fixed bug where the context menu plugin would pollute the global namespace with two variables p1 and p2.
+ Fixed compatibility issue with Mootools, it is destroying document.getElementById on unload in IE. (Mantra: You don't own the internal objects).
+ Fixed bugs where dialogs/tabs and other UI elements where rendered incorrectly in Firefox 3.
+ Fixed so the auto CSS class importer is compatible with 2.x.
+ Fixed so the editor UI and inlinedialogs works correctly with the YUI CSS reset package.
+ Fixed so header and footer elements are forced to lower case when the fullpage plugin is used.
+ Fixed so load prefixes "-" for plugins and themes isn't required if the plugin/theme was loaded by the ThemeManager/PluginManager.
+ Fixed so the JSONRequest uses application/json content type to make Ruby on rails happy.
+ Fixed so the CSS rule is more exact for the body in the default content.css files. Body is now defined as "body.mceContentBody" instead of just "body".
+ Fixed so the tiny_mce_dev.js uses XHR instead of document.write to load scripts to resolve an issue with Opera 9.50.
+ Fixed so language pack loading can be disabled by setting the language option to false. Can be useful for systems with their own language pack management.
+Version 3.0 (2008-01-30)
+ Added map and area elements to the default valid_elements list and also some indentation rules.
+ Fixed bug where empty paragraphs wasn't padded when loading contents.
+ Fixed bug where the RowLayout manager didn't work at all.
+ Fixed bug where style attribute data would get messed up in advimage dialog.
+ Fixed bug where the table dialogs class select wasn't updated correctly.
+ Fixed bug where elements would get extra whitespace around on insert when body was present in valid_elements.
+ Fixed bug where coords attribute of the area element wasn't handled properly in IE.
+ Fixed bug where Safari didn't produce BR elements on shift+return.
+ Fixed bug where force blocks would cast odd invalid attribute exception in IE.
+ Fixed bug where media plugin would produce extra whitespace before and after objects.
+ Fixed bug where cleanup_callback could break the contents of the editor. But use the new event system instead of this option.
+ Fixed bug where the tab_focus option didn't work between editor instanced. You can now tab between editors.
+ Fixed bug where the load function of the ScriptLoader class didn't load single files without the load que as it was supposed to.
+ Fixed bug where the execcommand_callback parameter order was incorrect. Recommendation use the new addCommand method.
+ Fixed bug where range.select calls sometimes failed on some IE versions.
+ Fixed bug where Safari was scrolling to top of document when enter/returned was pressed.
+ Fixed bug where fullscreen_new_window option didn't work correctly.
+ Fixed bug where the nonbreaking plugin inserted an space instead of an non breaking space the first time.
+ Fixed bug where the visualization of non breaking spaces where visual in element path.
+ Fixed so the focus is restored to the editor after inserting an custom character.
+ Fixed so the isNotDirty state is set to false if a new undo level is added.
+ Fixed so pointless style information for borders gets removed in IE.
+ Fixed so the resize button has a se-resize cursor css value.
+Version 3.0rc2 (2008-01-18)
+ Added new fix_nesting option to fix bug #1867292, this is disabled by default.
+ Added new indentation option enables you to specify how much each indent/outdent call will add/remove.
+ Added easier support for enabling/disabling icon columns on drop menues.
+ Added new menu button control class. This control is very similar to the splitbutton but without any onclick action.
+ Added support for previous tab focus (shift+tab). The tab_focus setting now takes two items next and previous element.
+ Fixed bug where iframes inside the editor got removed in Firefox on initial load.
+ Fixed bug where the CSS for abbr elements wasn't applied correctly in IE.
+ Fixed bug where mceAddControl on element inside a hidden container produced errors.
+ Fixed bug where closed anchors like <a /> produced strange results.
+ Fixed bug where caret would jump to the top of the editor if enter was pressed a the end of a list.
+ Fixed bug where remove editor failed if the editor wasn't properly initialized.
+ Fixed bug where render call on for a non existing element produced exception.
+ Fixed bug where parent window was hidden when the color picker was used in a non inlinepopups setup.
+ Fixed bug where onchange event wasn't fired correctly on IE when color picker was used in dialogs.
+ Fixed bug where save plugin could not save contents if the converted element wasn't an textarea.
+ Fixed bug where events might be fired even after an editor instance was removed such as blur events.
+ Fixed bug where an exception about undefined undo levels could be throwed sometimes.
+ Fixed bug where the plugin_preview_pageurl option didn't work.
+ Fixed bug where adding/removing an editor instance very fast could produce problems.
+ Fixed bug where the link button was highlighted when an anchor element was selected.
+ Fixed bug where the selected contents where removed if a new anchor element was added.
+ Fixed bug where splitbuttons where rendered one pixel down in the default theme.
+ Fixed bug where some buttons where placed at incorrect positions in the o2k7 theme.
+ Fixed bug that made it impossible to visually disable a custom button that used an image instead of CSS sprites.
+ Fixed bug where it wasn't possible to press delete/backspace if the editor was added+removed and re-added due to a FF bug.
+ Fixed bug where an entities option with only 38,amp,60,lt,62,gt would fail in IE.
+ Fixed bug where innerHTML sometimes generated unknown runtime error on IE.
+ Fixed bug where content_css files wasn't loaded in the template preview iframe.
+ Fixed bug where scroll position was incorrect when toggling fullscreen mode.
+ Fixed bug where restoration of overflow didn't work correctly when disabling fullscreen mode in Opera.
+ Fixed bug where drop menus where places at incorrect locations if the editor was placed in a scrollable container element.
+ Fixed bug where hideMenu didn't hide sub menus correctly. It will now hide all menus recursively.
+ Fixed so theme_advanced_path_location can be used in init options for compatibility reasons.
+ Fixed so the drop menu colors matches the rest of o2k7 theme.
+ Fixed so the preview example.html file is updated to the new 3.x API.
+ Fixed so the margins are the same by default inside the editable area between IE and other browsers.
+ Fixed so editor contents gets stored before it the onSubmit event is fired.
+Version 3.0rc1 (2008-01-08)
+ Added new classes for toolbar rows in advanced theme mceToolbarRow1..n enabled you to change appearance of individual rows.
+ Added auto detection for the strict_loading_mode option when running in application/xhtml+xml mode on Gecko.
+ Optimized the HTML serializer by bundling some post process methods together.
+ Fixed so that the toolbars have unique IDs, enables you to alter the toolbars using the ControlManager and the DOM.
+ Fixed bug where delta values for dialog sizes in language packs didn't work correctly due to missing string to number casting.
+ Fixed bug where paragraph generation logic didn't handle hr or table elements correctly if they where the only element.
+ Fixed bug where some elements got extra linebreaks added after or before it in HTML output.
+ Fixed bug where it was hard to modify existing style data on table rows and table cells.
+ Fixed bug where the dom.getRect method didn't handle non pixel values correctly.
+ Fixed bug where strikethrough and underline couldn't be toggled on existing span elements.
+ Fixed bug where the postprocessor searched for nsbp instead of nbsp entities.
+ Fixed bug where it was impossible to edit links that had child elements within them.
+ Fixed bug where it was possible to click on the parent item of a submenu.
+ Fixed bug where mouseover/mouseout images couldn't be removed in advimage dialog.
+ Fixed bug where drop menus didn't work when running in application/xhtml+xml mode.
+ Fixed bug where Opera added doctype to output in application/xhtml+xml mode.
+ Fixed bug where some DOM methods didn't work correctly in the application/xhtml+xml mode.
+ Fixed bug where the inlinepopups didn't work correctly in the application/xhtml+xml mode.
+ Fixed bug where the ColorSplitButton didn't display correctly in the application/xhtml+xml mode.
+ Fixed bug where the UI layout was incorrect on Gecko browsers when running in application/xhtml+xml mode.
+ Fixed bug where the word paste plugin produced exception while running in application/xhtml+xml mode.
+ Fixed bug where there wasn't any hidden input element generated for divs while running in application/xhtml+xml mode.
+ Fixed bug where indentation of script/style/pre elements where incorrect.
+ Fixed bug where script element contents was removed in IE.
+ Fixed bug where script element contents got entity encoded.
+ Fixed bug where you couldn't edit existing element styles using the styles plugin.
+ Fixed bug where styles wasn't updated properly sometimes due to an performance enhancement.
+ Fixed bug where font sizes couldn't be changed using the style plugin.
+ Fixed bug where an error was produced in Gecko browsers when switching back from fullscreen mode.
+ Fixed bug where Opera was producing br elements after elements like h3.
+ Fixed bug where TinyMCE couldn't be loaded on a page using - characters in it's URL.
+ Fixed bug where the editor container element was forced to have a specific name.
+ Fixed bug with force_br_newlines option on Firefox, even though it should never be used (Read FAQ).
+ Fixed bug where onclick event had an return true; prefix added when creating an popup.
+ Fixed bug where the theme_advanced_statusbar_location option couldn't handle the value "none".
+ Fixed issue with URLs with multiple at characters for example an Zope URI.
+ Fixed so simple and advanced themes doesn't collide.
+ Fixed so a elements gets removed when the href field is left empty, the href attribute is required in a link after all.
+ Fixed so img elements gets removed when the src field is left empty, the src attribute is required for all images after all.
+ Removed the indent and encode methods from the tinymce.dom.Serializer class due to performance enhancement and reduction of the API size.
+Version 3.0b3 (2007-12-14)
+ Added new getElement method to Editor class, returns the element that was replaced with the editor instance.
+ Added new unavailable prefix for disabled controls for accessibility reasons.
+ Fixed bug where regexp patterns couldn't be used for the editor_selector/editor_deselector options.
+ Fixed bug where the DOM wasn't properly initialized before the onInit event was executed in popups.
+ Fixed bug where font sizes where reduced by font size actions on previous spans in Safari.
+ Fixed bug where HR elements got places at the wrong location in IE.
+ Fixed bug where align/justify didn't work correctly on multiple paragraphs.
+ Fixed bug with missing translation for cell scope settings.
+ Fixed bug where selection/caret position was lost on some table actions.
+ Fixed bug where editor instances couldn't be added to hidden div elements.
+ Fixed bug where list elements in Safari would get an odd ID attribute.
+ Fixed bug where IE would return <html/> when the editor was completely empty.
+ Fixed bug where accessibility title attribute for access keys wasn't setup properly.
+ Fixed bug where forecolorpicker and backcolorpicker control names wasn't working.
+ Fixed bug where inserting template content didn't work in Safari due to selection exception.
+ Fixed bug where absolute URLs to remote hosts couldn't be used for background images.
+ Fixed bug where mysterious span elements where produced in Safari when injecting HTML contents.
+ Fixed bug where the media plugin didn't work correctly on the latest Opera 9.24.
+ Fixed bug where indentation of HTML output wasn't applied to all block elements.
+ Fixed bug where Safari was production DOM exception if you pressed enter in an empty editor.
+ Fixed bug where media plugin didn't parse script tags correctly patch contributed by Mathieu Campagna.
+ Fixed bug where the drop menus of list boxes like blockformat could produce scrolling of the page.
+ Fixed bug where the drop menus where placed at an incorrect location if TinyMCE was placed in a scrollable div.
+ Fixed bug where submit buttons couldn't be named submit, it's not recommended to name submit buttons submit anyway.
+ Fixed bug where the stylelistbox produced an exception if there was only one class in the list box.
+ Fixed bug where the stylelistbox wasn't updated correctly when the current class was removed.
+ Fixed bug where the formatblock command sometimes removed the body element.
+ Fixed bug where fullscreen switching in IE sometimes produced an exception when the spellchecker plugin was enabled.
+ Fixed issue where FF produced an empty paragraph when the editor was completely empty.
+ Fixed issue with size of image dialog in the advanced theme.
+ Fixed issues with the bbcode plugin it now also handles spans and the [font] rule.
+ Fixed so the style compression feature is a bit smarter to resolve issues with Opera.
+ Reintroduced the remove_linebreaks option, this is enabled by default.
+Version 3.0b2 (2007-11-29)
+ Added type and compact attributes to the default valid_elements list for the ul and ol elements.
+ Added missing accessibility support to native list boxes in both the toolbar and dialogs.
+ Added missing access key for the element path for accessibility reasons.
+ Fixed support for loading themes from external URLs.
+ Fixed bug where setOuterHTML didn't work correctly when multiple elements where passed to it.
+ Fixed bug with visualchars plugin was moving elements around in the DOM.
+ Fixed bug with DIV elements that got converted into editors on IE.
+ Fixed bug with paste plugin using the old event API.
+ Fixed bug where the spellchecker was removing the word when it was ignored.
+ Fixed bug where fullscreen wasn't working properly.
+ Fixed bug where the base href element and attribute was ignored.
+ Fixed bug where redo function didn't work in IE.
+ Fixed bug where content_css didn't work as previous 2.x branch.
+ Fixed bug where preview dialog was throwing errors if the content_css wasn't defined.
+ Fixed bug where the theme_advanced_path option didn't work like the 2.x branch.
+ Fixed bug where the theme_advanced_statusbar_location was called theme_advanced_status_location.
+ Fixed bug where the strict_loading_mode option didn't work if you created editors dynamically without using the EditorManager.
+ Fixed bug where some language values wasn't translated such as insert and update in dialogs.
+ Fixed bug where some image attributes wasn't stored correctly when inserting an image.
+ Fixed bug where fullscreen mode didn't restore scrollbars when disabled.
+ Fixed bug where there was no visual representation for tab focus in toolbars on IE.
+ Fixed bug where HR elements wasn't treated as block elements so forced_root_block would fail on these.
+ Fixed bug where autosave presented warning message even when the form was submitted normally.
+ Fixed typo of openBrower it's now openBrowser in form_utils.js.
+ Fixed various HTML problems like missing TD elements and duplicated doctypes.
+ Fixed default values for theme_advanced_resize_horizontal, theme_advanced_resizing_use_cookie to be 2.x compatible.
+ Moved spellchecker JS files into the development package.
+ Removed support for theme_advanced_path_location since the theme_advanced_statusbar_location is the correct option name.
+Version 3.0b1 (2007-11-21)
+ Added new tab_focus option, that enables you to specify a element id or that the next element to be focused on tab key down.
+ Added new addQueryValueHandler method to the tinymce.Editor class.
+ Added new class_filter option, this enables you to specify a function that can filter out CSS classes for the styles list box.
+ Added support form [url=url]title[/url] to the bbcode plugin.
+ Renamed the addCommandQueryState method in the tinymce.Editor class to addQueryStateHandler.
+ Renamed loadQue to loadQueue, to correct spelling.
+ Removed the createDOM method from the window manager and replace it with a createInstance method.
+ Removed the add to beginning of class attribute parameter of the DOMUtils.addClass method.
+ Fixed bug with the forced_root_block option, didn't work correctly with multiple inline elements.
+ Fixed bug where image dialogs replaced the current image element with a new one even when it was updated.
+ Fixed bug where the submit trigger wasn't executed when divs where converted into editor instances.
+ Fixed bug where div elements that got converted into editors didn't get a hidden input element generated for them.
+ Fixed bug where the the media_use_script option for the media plugin wasn't working correctly.
+ Fixed bug where the font size and font family listboxes wasn't updated correctly on Safari.
+ Fixed bug where the height of the fieldset in default image dialog for the advanced theme was to small.
+ Fixed bug where the font sizes behaved incorrectly after a cleanup on Safari.
+ Fixed bug where formatblock didn't work correctly in Safari on some elements.
+ Fixed bug where template plugin didn't insert content correctly unless some options where specified.
+ Fixed bug where charmap on Safari produced scrollbars.
+ Fixed bug where there was white artifacts in some dialogs due to missing background color.
+ Fixed bug where port was added to all external URLs if the editor was loaded from a custom port.
+ Fixed bug where the context menus got duplicated on Safari 3.0.4 on Mac OS X.
+ Fixed bug where dialogs like paste from word was huge on Firefox.
+ Fixed bug with media plugin not working with windows media objects.
+ Fixed bug where a forever loop was created if multiple instances where submitted using form.submit.
+ Fixed bug with editing a table produce error in IE when inlinepopups where used.
+ Fixed bug where the style plugin generated ugly looking style information in IE.
+ Fixed bug where the inline dialogs that got opened while in fullscreen mode wasn't visible.
+ Fixed bug where it was difficult to place the caret inside the word paste dialog.
+ Fixed bug where Opera produced strange border in the word paste dialog.
+ Fixed bug where viewport constraints could move a inlinepopup to a negative x, y position if the viewport was to small.
+ Fixed bug where template plugin was producing an error due to a deprecated API call.
+ Fixed bug where drag drop of images failed in Gecko if a document_base_url was specified.
+ Fixed bug where Firefox 3 failed to apply block formats like H1-H6 it still breaks on DIVs this has been reported to bugzilla.
+ Fixed bug where IE was producing a warning dialog about non secure items when running TinyMCE over HTTPS.
+ Fixed bug where the onbeforeunload event was triggered when menus or dialogs where opened.
+ Fixed bug where the fullscreen mode of the HTML view source box threw an error.
+ Fixed bug where the mceFocus command didn't work correctly.
+ Fixed bug where the selection could get lost in IE using inlinepopups.
+ Fixed so the body of the editor area has the mceContentBody class just like the 2.x branch.
+ Fixed so the media icon gets active when a media element is selected.
+Version 3.0a3 (2007-11-13)
+ Added new experimental jQuery and Prototype framework adapters to the development package.
+ Added new translation.html file for the development package. Helps with the internationalization of TinyMCE.
+ Added new setup callback option, use this callback to add events to TinyMCE. This method is recommended over the old callbacks.
+ Added new API documetation to all classes, functions, events, properties to the Wiki with examples etc.
+ Added new init method to all plugins and themes, since it's shorter to write and it mimics interface capable languages better.
+ Fixed various CSS issues in the default skin such as alignment of split buttons and separators.
+ Fixed issues with mod_security. It didn't like that a content type of text/javascript was forced in a XHR.
+ Fixed all events so that they now pass the sender object as it's first argument.
+ Fixed some DOM methods so they now can take an array as input.
+ Fixed so addButton and the methods of the ControlManager uses less arguments and it now uses a settings object instead.
+ Fixed various issues with the tinymce.util.URI class.
+ Fixed bug in IE and Safari and the on demand gzip loading feature.
+ Fixed bug with moving inline windows sometimes failed in IE6.
+ Fixed bug where save_callback function wasn't executed at all.
+ Fixed bug where inlinepopups produces scrollbars if windows where moved to the corners of the browser.
+ Fixed bug where view HTML source failed when inserting a embedded media object.
+ Fixed bug where the listbox menus didn't display correctly on IE6.
+ Fixed bug where undo level wasn't added when editor was blurred.
+ Fixed bug where spellchecker wasn't disabled when fullscreen mode was enabled.
+ Fixed bug where Firefox could crash some times when the user switched to fullscreen mode.
+ Fixed bug where tinymce.ui.DropMenu didn't remove all item data when an item was removed from the menu.
+ Fixed bug where anchor list in advlink dialog wasn't populated correctly in Safari.
+ Fixed bug where it wasn't possible to edit tables in IE when inlinepopups was enabled.
+ Fixed bug where it wasn't possible to change the table width of an existing table.
+ Fixed bug where xhtmlxtras like abbr didn't work correctly on IE.
+ Fixed bug where IE6 had some graphics rendering issues with the inlinepopups.
+ Fixed bug where inlinepopup windows where moved incorrectly when they were boundary checked for min width.
+ Fixed bug where textareas without id or name couldn't be converted into editor instances.
+ Fixed bug where TinyMCE was stealing element focus on IE.
+ Fixed bug where the getParam method didn't handle false values correctly.
+ Fixed bug where inlinepopups was clipped by other TinyMCE instances or relative elements in IE.
+ Fixed bug where the contextmenu was clipped by other TinyMCE instances or relative elements in IE.
+ Fixed bug where listbox menus was clipped by other TinyMCE instances or relative elements in IE.
+ Fixed bug where listboxes wasn't updated correctly when the a value wasn't found by select.
+ Fixed various CSS issues that produced odd rendering bugs in IE.
+ Fixed issues with tinymce.ui.DropMenu class, it required some optional settings to be specified.
+ Fixed so multiple blockquotes can be removed with a easier method than before.
+ Optimized some of the core API to boost performance.
+ Removed some functions from the core API that wasn't needed.
+Version 3.0a2 (2007-11-02)
+ Fixed critical bug where IE generaded an error on a hasAttribute call in the serialization engine.
+ Fixed critical bug where some dialogs didn't open in the non dev package.
+ Fixed bug when using the theme_advanced_styles option. Error was thrown in some dialogs.
+ Fixed bug where the close buttons produced an error when native windows where used.
+ Fixed bug in default skin so that split buttons gets activated correctly.
+ Fixed so plugins can be loaded from external urls outsite the plugins directory.
+Version 3.0a1 (2007-11-01)
+ Rewrote the core and most of the plugins and themes from scratch.
+ Added new and improved serialization engine, faster and more powerful.
+ Added new internal event system, things like editor.onClick.add(func).
+ Added new inlinepopups plugin, the dialogs are now skinnable and uses clearlooks2 as default.
+ Added new contextmenu plugin, context menus can now have submenus and plugins can add items on the fly.
+ Added new skin support for the simple and advanced themes you can alter the whole UI using CSS.
+ Added new o2k7 skin for the simple and advanced themes.
+ Added new custom list boxes for font size/format/style etc with preview support.
+ Added new UI management, enabled plugins to create controls like splitbuttons or menus easier.
+ Added new JSON parser/serializer and JSON-RPC class to the core API.
+ Added new cookie utility class to the core API.
+ Added new Unit testing class to the core API only available in dev mode.
+ Added new firebug lite integration when loading the dev version of TinyMCE.
+ Added new Safari plugin, fixes lots compatibility of issues with Safari 3.x.
+ Added new URI/URL parsing it now handles the hole RFC and even some exceptions.
+ Added new pagebreak plugin, enables you to insert pagebreak comments like <!-- pagebreak -->
+ Added new on demand loading of plugins and themes. Enables you to load and init TinyMCE at any time.
+ Added new throbber/progress visualization a plugin can show/hide this when it's needed.
+ Added new blockquote button. Enables you to wrap paragraphs in blockquotes.
+ Added new compat2x plugin. Will provide a TinyMCE 2.x API for older plugins.
+ Added new theme_advanced_resizing_min_width, theme_advanced_resizing_min_height options.
+ Added new theme_advanced_resizing_max_height, theme_advanced_resizing_max_height options.
+ Added new use_native_selects option. Enables you to toggle native listboxes on and off.
+ Added new docs_url option enables you to specify where the TinyMCE user documentation is located.
+ Added new frame and rules options for the table dialog.
+ Added new global rule for valid_elements/extended_valid_elements enables you to specify global attributes for all elements.
+ Added new deny attribute rule characher so it's possible to deny global attribute rules on specific elements.
+ Added new unit tests in the dev package of TinyMCE. Runs tests on the core API, commands and settings of the editor.
+ Readded the inline_styles option and enabled it by default so deprecated attributes are no longer used.
+ Removed all button images and replaced them with CSS sprite images. Reduces the number of requests needed.
+ Removed lots of language files and merged them into the base language files. Reduces the number of requests needed.
+ Removed lots of unnecessary files and merged many of them together to reduce requests and improve loading speed.
+ Reduced the over all script size by 33% and the number of files/requests by 75% so it loads a lot faster.
+ Fixed so convert_fonts_to_spans are enabled by default. So no more font tags.
+ Fixed so underline and strikethrough uses spans instread of deprecated U and STRIKE elements.
+ Fixed so indent/outdent adds/removed margin-left instead of blockquotes.
+ Fixed so alignment of paragraphs results in a text-align style value instead of the deprecated align attribute.
+ Fixed so alignment of images uses float or vertical-align style values instead of the deprecated align attribute.
+ Fixed so all classes from @import stylesheets gets imported into the editor.
+ Fixed so the directionality can toggle the dir attribute on and off.
+ Fixed so the fullscreen_settings can be used for all types of fullscreen modes.
+ Fixed so the advanced HR dialog gets displayed when inserting a HR not only on edit.
+ Fixed bug where word wrap didn't work in the source editor on Safari.
+ Fixed so non HTML elements can be used within the editor such as <myns:tag>
+ Fixed various memory leaks in IE and reduced the unload cleanups needed.
+ Fixed so the preformatted option adds an invisible container pre tag inside the editor.
+ Renamed the _template plugin to example and updated it to use the new 3.x API.
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js
index d54e37a8e..8c164ff9f 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.AutolinkPlugin",{init:function(a,b){var c=this;if(tinyMCE.isIE){return}a.onKeyDown.add(function(d,f){if(f.keyCode==13){return c.handleEnter(d)}});a.onKeyPress.add(function(d,f){if(f.which==41){return c.handleEclipse(d)}});a.onKeyUp.add(function(d,f){if(f.keyCode==32){return c.handleSpacebar(d)}})},handleEclipse:function(a){this.parseCurrentLine(a,-1,"(",true)},handleSpacebar:function(a){this.parseCurrentLine(a,0,"",true)},handleEnter:function(a){this.parseCurrentLine(a,-1,"",false)},parseCurrentLine:function(i,d,b,g){var a,f,c,n,k,m,h,e,j;a=i.selection.getRng().cloneRange();if(a.startOffset<5){e=a.endContainer.previousSibling;if(e==null){if(a.endContainer.firstChild==null||a.endContainer.firstChild.nextSibling==null){return}e=a.endContainer.firstChild.nextSibling}j=e.length;a.setStart(e,j);a.setEnd(e,j);if(a.endOffset<5){return}f=a.endOffset;n=e}else{n=a.endContainer;if(n.nodeType!=3&&n.firstChild){while(n.nodeType!=3&&n.firstChild){n=n.firstChild}a.setStart(n,0);a.setEnd(n,n.nodeValue.length)}if(a.endOffset==1){f=2}else{f=a.endOffset-1-d}}c=f;do{a.setStart(n,f-2);a.setEnd(n,f-1);f-=1}while(a.toString()!=" "&&a.toString()!=""&&a.toString().charCodeAt(0)!=160&&(f-2)>=0&&a.toString()!=b);if(a.toString()==b||a.toString().charCodeAt(0)==160){a.setStart(n,f);a.setEnd(n,c);f+=1}else{if(a.startOffset==0){a.setStart(n,0);a.setEnd(n,c)}else{a.setStart(n,f);a.setEnd(n,c)}}m=a.toString();h=m.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|[A-Z0-9._%+-]+@)(.+)$/i);if(h){if(h[1]=="www."){h[1]="http://www."}else{if(/@$/.test(h[1])){h[1]="mailto:"+h[1]}}k=i.selection.getBookmark();i.selection.setRng(a);tinyMCE.execCommand("createlink",false,h[1]+h[2]);i.selection.moveToBookmark(k);if(tinyMCE.isWebKit){i.selection.collapse(false);var l=Math.min(n.length,c+1);a.setStart(n,l);a.setEnd(n,l);i.selection.setRng(a)}}},getInfo:function(){return{longname:"Autolink",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autolink",tinymce.plugins.AutolinkPlugin)})(); \ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.AutolinkPlugin",{init:function(a,b){var c=this;a.onKeyDown.addToTop(function(d,f){if(f.keyCode==13){return c.handleEnter(d)}});if(tinyMCE.isIE){return}a.onKeyPress.add(function(d,f){if(f.which==41){return c.handleEclipse(d)}});a.onKeyUp.add(function(d,f){if(f.keyCode==32){return c.handleSpacebar(d)}})},handleEclipse:function(a){this.parseCurrentLine(a,-1,"(",true)},handleSpacebar:function(a){this.parseCurrentLine(a,0,"",true)},handleEnter:function(a){this.parseCurrentLine(a,-1,"",false)},parseCurrentLine:function(i,d,b,g){var a,f,c,n,k,m,h,e,j;a=i.selection.getRng(true).cloneRange();if(a.startOffset<5){e=a.endContainer.previousSibling;if(e==null){if(a.endContainer.firstChild==null||a.endContainer.firstChild.nextSibling==null){return}e=a.endContainer.firstChild.nextSibling}j=e.length;a.setStart(e,j);a.setEnd(e,j);if(a.endOffset<5){return}f=a.endOffset;n=e}else{n=a.endContainer;if(n.nodeType!=3&&n.firstChild){while(n.nodeType!=3&&n.firstChild){n=n.firstChild}a.setStart(n,0);a.setEnd(n,n.nodeValue.length)}if(a.endOffset==1){f=2}else{f=a.endOffset-1-d}}c=f;do{a.setStart(n,f-2);a.setEnd(n,f-1);f-=1}while(a.toString()!=" "&&a.toString()!=""&&a.toString().charCodeAt(0)!=160&&(f-2)>=0&&a.toString()!=b);if(a.toString()==b||a.toString().charCodeAt(0)==160){a.setStart(n,f);a.setEnd(n,c);f+=1}else{if(a.startOffset==0){a.setStart(n,0);a.setEnd(n,c)}else{a.setStart(n,f);a.setEnd(n,c)}}var m=a.toString();if(m.charAt(m.length-1)=="."){a.setEnd(n,c-1)}m=a.toString();h=m.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|[A-Z0-9._%+-]+@)(.+)$/i);if(h){if(h[1]=="www."){h[1]="http://www."}else{if(/@$/.test(h[1])){h[1]="mailto:"+h[1]}}k=i.selection.getBookmark();i.selection.setRng(a);tinyMCE.execCommand("createlink",false,h[1]+h[2]);i.selection.moveToBookmark(k);if(tinyMCE.isWebKit){i.selection.collapse(false);var l=Math.min(n.length,c+1);a.setStart(n,l);a.setEnd(n,l);i.selection.setRng(a)}}},getInfo:function(){return{longname:"Autolink",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autolink",tinymce.plugins.AutolinkPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js
index 4db4acf6c..ad9d7007a 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js
@@ -1,174 +1,180 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2011, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.AutolinkPlugin', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
-
- init : function(ed, url) {
- var t = this;
-
- // Internet Explorer has built-in automatic linking
- if (tinyMCE.isIE)
- return;
-
- // Add a key down handler
- ed.onKeyDown.add(function(ed, e) {
- if (e.keyCode == 13)
- return t.handleEnter(ed);
- });
-
- ed.onKeyPress.add(function(ed, e) {
- if (e.which == 41)
- return t.handleEclipse(ed);
- });
-
- // Add a key up handler
- ed.onKeyUp.add(function(ed, e) {
- if (e.keyCode == 32)
- return t.handleSpacebar(ed);
- });
- },
-
- handleEclipse : function(ed) {
- this.parseCurrentLine(ed, -1, '(', true);
- },
-
- handleSpacebar : function(ed) {
- this.parseCurrentLine(ed, 0, '', true);
- },
-
- handleEnter : function(ed) {
- this.parseCurrentLine(ed, -1, '', false);
- },
-
- parseCurrentLine : function(ed, end_offset, delimiter, goback) {
- var r, end, start, endContainer, bookmark, text, matches, prev, len;
-
- // We need at least five characters to form a URL,
- // hence, at minimum, five characters from the beginning of the line.
- r = ed.selection.getRng().cloneRange();
- if (r.startOffset < 5) {
- // During testing, the caret is placed inbetween two text nodes.
- // The previous text node contains the URL.
- prev = r.endContainer.previousSibling;
- if (prev == null) {
- if (r.endContainer.firstChild == null || r.endContainer.firstChild.nextSibling == null)
- return;
-
- prev = r.endContainer.firstChild.nextSibling;
- }
- len = prev.length;
- r.setStart(prev, len);
- r.setEnd(prev, len);
-
- if (r.endOffset < 5)
- return;
-
- end = r.endOffset;
- endContainer = prev;
- } else {
- endContainer = r.endContainer;
-
- // Get a text node
- if (endContainer.nodeType != 3 && endContainer.firstChild) {
- while (endContainer.nodeType != 3 && endContainer.firstChild)
- endContainer = endContainer.firstChild;
-
- r.setStart(endContainer, 0);
- r.setEnd(endContainer, endContainer.nodeValue.length);
- }
-
- if (r.endOffset == 1)
- end = 2;
- else
- end = r.endOffset - 1 - end_offset;
- }
-
- start = end;
-
- do
- {
- // Move the selection one character backwards.
- r.setStart(endContainer, end - 2);
- r.setEnd(endContainer, end - 1);
- end -= 1;
-
- // Loop until one of the following is found: a blank space, &nbsp;, delimeter, (end-2) >= 0
- } while (r.toString() != ' ' && r.toString() != '' && r.toString().charCodeAt(0) != 160 && (end -2) >= 0 && r.toString() != delimiter);
-
- if (r.toString() == delimiter || r.toString().charCodeAt(0) == 160) {
- r.setStart(endContainer, end);
- r.setEnd(endContainer, start);
- end += 1;
- } else if (r.startOffset == 0) {
- r.setStart(endContainer, 0);
- r.setEnd(endContainer, start);
- }
- else {
- r.setStart(endContainer, end);
- r.setEnd(endContainer, start);
- }
-
- text = r.toString();
- matches = text.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|[A-Z0-9._%+-]+@)(.+)$/i);
-
- if (matches) {
- if (matches[1] == 'www.') {
- matches[1] = 'http://www.';
- } else if (/@$/.test(matches[1])) {
- matches[1] = 'mailto:' + matches[1];
- }
-
- bookmark = ed.selection.getBookmark();
-
- ed.selection.setRng(r);
- tinyMCE.execCommand('createlink',false, matches[1] + matches[2]);
- ed.selection.moveToBookmark(bookmark);
-
- // TODO: Determine if this is still needed.
- if (tinyMCE.isWebKit) {
- // move the caret to its original position
- ed.selection.collapse(false);
- var max = Math.min(endContainer.length, start + 1);
- r.setStart(endContainer, max);
- r.setEnd(endContainer, max);
- ed.selection.setRng(r);
- }
- }
- },
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Autolink',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('autolink', tinymce.plugins.AutolinkPlugin);
-})();
+/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2011, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.AutolinkPlugin', {
+ /**
+ * Initializes the plugin, this will be executed after the plugin has been created.
+ * This call is done before the editor instance has finished it's initialization so use the onInit event
+ * of the editor instance to intercept that event.
+ *
+ * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
+ * @param {string} url Absolute URL to where the plugin is located.
+ */
+
+ init : function(ed, url) {
+ var t = this;
+
+ // Add a key down handler
+ ed.onKeyDown.addToTop(function(ed, e) {
+ if (e.keyCode == 13)
+ return t.handleEnter(ed);
+ });
+
+ // Internet Explorer has built-in automatic linking for most cases
+ if (tinyMCE.isIE)
+ return;
+
+ ed.onKeyPress.add(function(ed, e) {
+ if (e.which == 41)
+ return t.handleEclipse(ed);
+ });
+
+ // Add a key up handler
+ ed.onKeyUp.add(function(ed, e) {
+ if (e.keyCode == 32)
+ return t.handleSpacebar(ed);
+ });
+ },
+
+ handleEclipse : function(ed) {
+ this.parseCurrentLine(ed, -1, '(', true);
+ },
+
+ handleSpacebar : function(ed) {
+ this.parseCurrentLine(ed, 0, '', true);
+ },
+
+ handleEnter : function(ed) {
+ this.parseCurrentLine(ed, -1, '', false);
+ },
+
+ parseCurrentLine : function(ed, end_offset, delimiter, goback) {
+ var r, end, start, endContainer, bookmark, text, matches, prev, len;
+
+ // We need at least five characters to form a URL,
+ // hence, at minimum, five characters from the beginning of the line.
+ r = ed.selection.getRng(true).cloneRange();
+ if (r.startOffset < 5) {
+ // During testing, the caret is placed inbetween two text nodes.
+ // The previous text node contains the URL.
+ prev = r.endContainer.previousSibling;
+ if (prev == null) {
+ if (r.endContainer.firstChild == null || r.endContainer.firstChild.nextSibling == null)
+ return;
+
+ prev = r.endContainer.firstChild.nextSibling;
+ }
+ len = prev.length;
+ r.setStart(prev, len);
+ r.setEnd(prev, len);
+
+ if (r.endOffset < 5)
+ return;
+
+ end = r.endOffset;
+ endContainer = prev;
+ } else {
+ endContainer = r.endContainer;
+
+ // Get a text node
+ if (endContainer.nodeType != 3 && endContainer.firstChild) {
+ while (endContainer.nodeType != 3 && endContainer.firstChild)
+ endContainer = endContainer.firstChild;
+
+ r.setStart(endContainer, 0);
+ r.setEnd(endContainer, endContainer.nodeValue.length);
+ }
+
+ if (r.endOffset == 1)
+ end = 2;
+ else
+ end = r.endOffset - 1 - end_offset;
+ }
+
+ start = end;
+
+ do
+ {
+ // Move the selection one character backwards.
+ r.setStart(endContainer, end - 2);
+ r.setEnd(endContainer, end - 1);
+ end -= 1;
+
+ // Loop until one of the following is found: a blank space, &nbsp;, delimeter, (end-2) >= 0
+ } while (r.toString() != ' ' && r.toString() != '' && r.toString().charCodeAt(0) != 160 && (end -2) >= 0 && r.toString() != delimiter);
+
+ if (r.toString() == delimiter || r.toString().charCodeAt(0) == 160) {
+ r.setStart(endContainer, end);
+ r.setEnd(endContainer, start);
+ end += 1;
+ } else if (r.startOffset == 0) {
+ r.setStart(endContainer, 0);
+ r.setEnd(endContainer, start);
+ }
+ else {
+ r.setStart(endContainer, end);
+ r.setEnd(endContainer, start);
+ }
+
+ // Exclude last . from word like "www.site.com."
+ var text = r.toString();
+ if (text.charAt(text.length - 1) == '.') {
+ r.setEnd(endContainer, start - 1);
+ }
+
+ text = r.toString();
+ matches = text.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|[A-Z0-9._%+-]+@)(.+)$/i);
+
+ if (matches) {
+ if (matches[1] == 'www.') {
+ matches[1] = 'http://www.';
+ } else if (/@$/.test(matches[1])) {
+ matches[1] = 'mailto:' + matches[1];
+ }
+
+ bookmark = ed.selection.getBookmark();
+
+ ed.selection.setRng(r);
+ tinyMCE.execCommand('createlink',false, matches[1] + matches[2]);
+ ed.selection.moveToBookmark(bookmark);
+
+ // TODO: Determine if this is still needed.
+ if (tinyMCE.isWebKit) {
+ // move the caret to its original position
+ ed.selection.collapse(false);
+ var max = Math.min(endContainer.length, start + 1);
+ r.setStart(endContainer, max);
+ r.setEnd(endContainer, max);
+ ed.selection.setRng(r);
+ }
+ }
+ },
+
+ /**
+ * Returns information about the plugin as a name/value array.
+ * The current keys are longname, author, authorurl, infourl and version.
+ *
+ * @return {Object} Name/value array containing information about the plugin.
+ */
+ getInfo : function() {
+ return {
+ longname : 'Autolink',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('autolink', tinymce.plugins.AutolinkPlugin);
+})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js
index a6456f89d..7b65e733c 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js
@@ -1 +1 @@
-(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(d,e){var f=this,g={},c,b;f.editor=d;d.addCommand("mceFullScreen",function(){var i,j=a.doc.documentElement;if(d.getParam("fullscreen_is_enabled")){if(d.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",f.resizeFunc);tinyMCE.get(d.getParam("fullscreen_editor_id")).setContent(d.getContent());tinyMCE.remove(d);a.remove("mce_fullscreen_container");j.style.overflow=d.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",d.getParam("fullscreen_overflow"));a.win.scrollTo(d.getParam("fullscreen_scrollx"),d.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(d.getParam("fullscreen_new_window")){i=a.win.open(e+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{i.resizeTo(screen.availWidth,screen.availHeight)}catch(h){}}else{tinyMCE.oldSettings=tinyMCE.settings;g.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";g.fullscreen_html_overflow=a.getStyle(j,"overflow",1);c=a.getViewPort();g.fullscreen_scrollx=c.x;g.fullscreen_scrolly=c.y;if(tinymce.isOpera&&g.fullscreen_overflow=="visible"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&g.fullscreen_overflow=="scroll"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&(g.fullscreen_html_overflow=="visible"||g.fullscreen_html_overflow=="scroll")){g.fullscreen_html_overflow="auto"}if(g.fullscreen_overflow=="0px"){g.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");j.style.overflow="hidden";c=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){c.h-=1}if(tinymce.isIE6){b="absolute;top:"+c.y}else{b="fixed;top:0"}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+b+";left:0;width:"+c.w+"px;height:"+c.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(d.settings,function(k,l){g[l]=k});g.id="mce_fullscreen";g.width=n.clientWidth;g.height=n.clientHeight-15;g.fullscreen_is_enabled=true;g.fullscreen_editor_id=d.id;g.theme_advanced_resizing=false;g.save_onsavecallback=function(){d.setContent(tinyMCE.get(g.id).getContent());d.execCommand("mceSave")};tinymce.each(d.getParam("fullscreen_settings"),function(m,l){g[l]=m});if(g.theme_advanced_toolbar_location==="external"){g.theme_advanced_toolbar_location="top"}f.fullscreenEditor=new tinymce.Editor("mce_fullscreen",g);f.fullscreenEditor.onInit.add(function(){f.fullscreenEditor.setContent(d.getContent());f.fullscreenEditor.focus()});f.fullscreenEditor.render();f.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");f.fullscreenElement.update();f.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var o=tinymce.DOM.getViewPort(),l=f.fullscreenEditor,k,m;k=l.dom.getSize(l.getContainer().firstChild);m=l.dom.getSize(l.getContainer().getElementsByTagName("iframe")[0]);l.theme.resizeTo(o.w-k.w+m.w,o.h-k.h+m.h)})}});d.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});d.onNodeChange.add(function(i,h){h.setActive("fullscreen",i.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})(); \ No newline at end of file
+(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(d,e){var f=this,g={},c,b;f.editor=d;d.addCommand("mceFullScreen",function(){var i,j=a.doc.documentElement;if(d.getParam("fullscreen_is_enabled")){if(d.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",f.resizeFunc);tinyMCE.get(d.getParam("fullscreen_editor_id")).setContent(d.getContent());tinyMCE.remove(d);a.remove("mce_fullscreen_container");j.style.overflow=d.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",d.getParam("fullscreen_overflow"));a.win.scrollTo(d.getParam("fullscreen_scrollx"),d.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(d.getParam("fullscreen_new_window")){i=a.win.open(e+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{i.resizeTo(screen.availWidth,screen.availHeight)}catch(h){}}else{tinyMCE.oldSettings=tinyMCE.settings;g.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";g.fullscreen_html_overflow=a.getStyle(j,"overflow",1);c=a.getViewPort();g.fullscreen_scrollx=c.x;g.fullscreen_scrolly=c.y;if(tinymce.isOpera&&g.fullscreen_overflow=="visible"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&g.fullscreen_overflow=="scroll"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&(g.fullscreen_html_overflow=="visible"||g.fullscreen_html_overflow=="scroll")){g.fullscreen_html_overflow="auto"}if(g.fullscreen_overflow=="0px"){g.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");j.style.overflow="hidden";c=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){c.h-=1}if(tinymce.isIE6||document.compatMode=="BackCompat"){b="absolute;top:"+c.y}else{b="fixed;top:0"}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+b+";left:0;width:"+c.w+"px;height:"+c.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(d.settings,function(k,l){g[l]=k});g.id="mce_fullscreen";g.width=n.clientWidth;g.height=n.clientHeight-15;g.fullscreen_is_enabled=true;g.fullscreen_editor_id=d.id;g.theme_advanced_resizing=false;g.save_onsavecallback=function(){d.setContent(tinyMCE.get(g.id).getContent());d.execCommand("mceSave")};tinymce.each(d.getParam("fullscreen_settings"),function(m,l){g[l]=m});if(g.theme_advanced_toolbar_location==="external"){g.theme_advanced_toolbar_location="top"}f.fullscreenEditor=new tinymce.Editor("mce_fullscreen",g);f.fullscreenEditor.onInit.add(function(){f.fullscreenEditor.setContent(d.getContent());f.fullscreenEditor.focus()});f.fullscreenEditor.render();f.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");f.fullscreenElement.update();f.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var o=tinymce.DOM.getViewPort(),l=f.fullscreenEditor,k,m;k=l.dom.getSize(l.getContainer().firstChild);m=l.dom.getSize(l.getContainer().getElementsByTagName("iframe")[0]);l.theme.resizeTo(o.w-k.w+m.w,o.h-k.h+m.h)})}});d.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});d.onNodeChange.add(function(i,h){h.setActive("fullscreen",i.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js
index afa4f9b46..6622f924a 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js
@@ -79,7 +79,7 @@
vp.h -= 1;
// Use fixed position if it exists
- if (tinymce.isIE6)
+ if (tinymce.isIE6 || document.compatMode == 'BackCompat')
posCss = 'absolute;top:' + vp.y;
else
posCss = 'fixed;top:0';
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js
index fa10b7483..e711d5301 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js
@@ -1,951 +1,951 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2011, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var each = tinymce.each, Event = tinymce.dom.Event, bookmark;
-
- // Skips text nodes that only contain whitespace since they aren't semantically important.
- function skipWhitespaceNodes(e, next) {
- while (e && (e.nodeType === 8 || (e.nodeType === 3 && /^[ \t\n\r]*$/.test(e.nodeValue)))) {
- e = next(e);
- }
- return e;
- }
-
- function skipWhitespaceNodesBackwards(e) {
- return skipWhitespaceNodes(e, function(e) {
- return e.previousSibling;
- });
- }
-
- function skipWhitespaceNodesForwards(e) {
- return skipWhitespaceNodes(e, function(e) {
- return e.nextSibling;
- });
- }
-
- function hasParentInList(ed, e, list) {
- return ed.dom.getParent(e, function(p) {
- return tinymce.inArray(list, p) !== -1;
- });
- }
-
- function isList(e) {
- return e && (e.tagName === 'OL' || e.tagName === 'UL');
- }
-
- function splitNestedLists(element, dom) {
- var tmp, nested, wrapItem;
- tmp = skipWhitespaceNodesBackwards(element.lastChild);
- while (isList(tmp)) {
- nested = tmp;
- tmp = skipWhitespaceNodesBackwards(nested.previousSibling);
- }
- if (nested) {
- wrapItem = dom.create('li', { style: 'list-style-type: none;'});
- dom.split(element, nested);
- dom.insertAfter(wrapItem, nested);
- wrapItem.appendChild(nested);
- wrapItem.appendChild(nested);
- element = wrapItem.previousSibling;
- }
- return element;
- }
-
- function attemptMergeWithAdjacent(e, allowDifferentListStyles, mergeParagraphs) {
- e = attemptMergeWithPrevious(e, allowDifferentListStyles, mergeParagraphs);
- return attemptMergeWithNext(e, allowDifferentListStyles, mergeParagraphs);
- }
-
- function attemptMergeWithPrevious(e, allowDifferentListStyles, mergeParagraphs) {
- var prev = skipWhitespaceNodesBackwards(e.previousSibling);
- if (prev) {
- return attemptMerge(prev, e, allowDifferentListStyles ? prev : false, mergeParagraphs);
- } else {
- return e;
- }
- }
-
- function attemptMergeWithNext(e, allowDifferentListStyles, mergeParagraphs) {
- var next = skipWhitespaceNodesForwards(e.nextSibling);
- if (next) {
- return attemptMerge(e, next, allowDifferentListStyles ? next : false, mergeParagraphs);
- } else {
- return e;
- }
- }
-
- function attemptMerge(e1, e2, differentStylesMasterElement, mergeParagraphs) {
- if (canMerge(e1, e2, !!differentStylesMasterElement, mergeParagraphs)) {
- return merge(e1, e2, differentStylesMasterElement);
- } else if (e1 && e1.tagName === 'LI' && isList(e2)) {
- // Fix invalidly nested lists.
- e1.appendChild(e2);
- }
- return e2;
- }
-
- function canMerge(e1, e2, allowDifferentListStyles, mergeParagraphs) {
- if (!e1 || !e2) {
- return false;
- } else if (e1.tagName === 'LI' && e2.tagName === 'LI') {
- return e2.style.listStyleType === 'none' || containsOnlyAList(e2);
- } else if (isList(e1)) {
- return (e1.tagName === e2.tagName && (allowDifferentListStyles || e1.style.listStyleType === e2.style.listStyleType)) || isListForIndent(e2);
- } else return mergeParagraphs && e1.tagName === 'P' && e2.tagName === 'P';
- }
-
- function isListForIndent(e) {
- var firstLI = skipWhitespaceNodesForwards(e.firstChild), lastLI = skipWhitespaceNodesBackwards(e.lastChild);
- return firstLI && lastLI && isList(e) && firstLI === lastLI && (isList(firstLI) || firstLI.style.listStyleType === 'none' || containsOnlyAList(firstLI));
- }
-
- function containsOnlyAList(e) {
- var firstChild = skipWhitespaceNodesForwards(e.firstChild), lastChild = skipWhitespaceNodesBackwards(e.lastChild);
- return firstChild && lastChild && firstChild === lastChild && isList(firstChild);
- }
-
- function merge(e1, e2, masterElement) {
- var lastOriginal = skipWhitespaceNodesBackwards(e1.lastChild), firstNew = skipWhitespaceNodesForwards(e2.firstChild);
- if (e1.tagName === 'P') {
- e1.appendChild(e1.ownerDocument.createElement('br'));
- }
- while (e2.firstChild) {
- e1.appendChild(e2.firstChild);
- }
- if (masterElement) {
- e1.style.listStyleType = masterElement.style.listStyleType;
- }
- e2.parentNode.removeChild(e2);
- attemptMerge(lastOriginal, firstNew, false);
- return e1;
- }
-
- function findItemToOperateOn(e, dom) {
- var item;
- if (!dom.is(e, 'li,ol,ul')) {
- item = dom.getParent(e, 'li');
- if (item) {
- e = item;
- }
- }
- return e;
- }
-
- tinymce.create('tinymce.plugins.Lists', {
- init: function(ed) {
- var LIST_TABBING = 'TABBING';
- var LIST_EMPTY_ITEM = 'EMPTY';
- var LIST_ESCAPE = 'ESCAPE';
- var LIST_PARAGRAPH = 'PARAGRAPH';
- var LIST_UNKNOWN = 'UNKNOWN';
- var state = LIST_UNKNOWN;
-
- function isTabInList(e) {
- // Don't indent on Ctrl+Tab or Alt+Tab
- return e.keyCode === tinymce.VK.TAB && !(e.altKey || e.ctrlKey) &&
- (ed.queryCommandState('InsertUnorderedList') || ed.queryCommandState('InsertOrderedList'));
- }
-
- function isOnLastListItem() {
- var li = getLi();
- var grandParent = li.parentNode.parentNode;
- var isLastItem = li.parentNode.lastChild === li;
- return isLastItem && !isNestedList(grandParent) && isEmptyListItem(li);
- }
-
- function isNestedList(grandParent) {
- if (isList(grandParent)) {
- return grandParent.parentNode && grandParent.parentNode.tagName === 'LI';
- } else {
- return grandParent.tagName === 'LI';
- }
- }
-
- function isInEmptyListItem() {
- return ed.selection.isCollapsed() && isEmptyListItem(getLi());
- }
-
- function getLi() {
- var n = ed.selection.getStart();
- // Get start will return BR if the LI only contains a BR or an empty element as we use these to fix caret position
- return ((n.tagName == 'BR' || n.tagName == '') && n.parentNode.tagName == 'LI') ? n.parentNode : n;
- }
-
- function isEmptyListItem(li) {
- var numChildren = li.childNodes.length;
- if (li.tagName === 'LI') {
- return numChildren == 0 ? true : numChildren == 1 && (li.firstChild.tagName == '' || li.firstChild.tagName == 'BR' || isEmptyIE9Li(li));
- }
- return false;
- }
-
- function isEmptyIE9Li(li) {
- // only consider this to be last item if there is no list item content or that content is nbsp or space since IE9 creates these
- var lis = tinymce.grep(li.parentNode.childNodes, function(n) {return n.tagName == 'LI'});
- var isLastLi = li == lis[lis.length - 1];
- var child = li.firstChild;
- return tinymce.isIE9 && isLastLi && (child.nodeValue == String.fromCharCode(160) || child.nodeValue == String.fromCharCode(32));
- }
-
- function isEnter(e) {
- return e.keyCode === tinymce.VK.ENTER;
- }
-
- function isEnterWithoutShift(e) {
- return isEnter(e) && !e.shiftKey;
- }
-
- function getListKeyState(e) {
- if (isTabInList(e)) {
- return LIST_TABBING;
- } else if (isEnterWithoutShift(e) && isOnLastListItem()) {
- // Returns LIST_UNKNOWN since breaking out of lists is handled by the EnterKey.js logic now
- //return LIST_ESCAPE;
- return LIST_UNKNOWN;
- } else if (isEnterWithoutShift(e) && isInEmptyListItem()) {
- return LIST_EMPTY_ITEM;
- } else {
- return LIST_UNKNOWN;
- }
- }
-
- function cancelDefaultEvents(ed, e) {
- // list escape is done manually using outdent as it does not create paragraphs correctly in td's
- if (state == LIST_TABBING || state == LIST_EMPTY_ITEM || tinymce.isGecko && state == LIST_ESCAPE) {
- Event.cancel(e);
- }
- }
-
- function isCursorAtEndOfContainer() {
- var range = ed.selection.getRng(true);
- var startContainer = range.startContainer;
- if (startContainer.nodeType == 3) {
- var value = startContainer.nodeValue;
- if (tinymce.isIE9 && value.length > 1 && value.charCodeAt(value.length-1) == 32) {
- // IE9 places a space on the end of the text in some cases so ignore last char
- return (range.endOffset == value.length-1);
- } else {
- return (range.endOffset == value.length);
- }
- } else if (startContainer.nodeType == 1) {
- return range.endOffset == startContainer.childNodes.length;
- }
- return false;
- }
-
- /*
- If we are at the end of a list item surrounded with an element, pressing enter should create a
- new list item instead without splitting the element e.g. don't want to create new P or H1 tag
- */
- function isEndOfListItem() {
- var node = ed.selection.getNode();
- var validElements = 'h1,h2,h3,h4,h5,h6,p,div';
- var isLastParagraphOfLi = ed.dom.is(node, validElements) && node.parentNode.tagName === 'LI' && node.parentNode.lastChild === node;
- return ed.selection.isCollapsed() && isLastParagraphOfLi && isCursorAtEndOfContainer();
- }
-
- // Creates a new list item after the current selection's list item parent
- function createNewLi(ed, e) {
- if (isEnterWithoutShift(e) && isEndOfListItem()) {
- var node = ed.selection.getNode();
- var li = ed.dom.create("li");
- var parentLi = ed.dom.getParent(node, 'li');
- ed.dom.insertAfter(li, parentLi);
-
- // Move caret to new list element.
- if (tinymce.isIE6 || tinymce.isIE7 || tinyMCE.isIE8) {
- // Removed this line since it would create an odd <&nbsp;> tag and placing the caret inside an empty LI is handled and should be handled by the selection logic
- //li.appendChild(ed.dom.create("&nbsp;")); // IE needs an element within the bullet point
- ed.selection.setCursorLocation(li, 1);
- } else {
- ed.selection.setCursorLocation(li, 0);
- }
- e.preventDefault();
- }
- }
-
- function imageJoiningListItem(ed, e) {
- var prevSibling;
-
- if (!tinymce.isGecko)
- return;
-
- var n = ed.selection.getStart();
- if (e.keyCode != tinymce.VK.BACKSPACE || n.tagName !== 'IMG')
- return;
-
- function lastLI(node) {
- var child = node.firstChild;
- var li = null;
- do {
- if (!child)
- break;
-
- if (child.tagName === 'LI')
- li = child;
- } while (child = child.nextSibling);
-
- return li;
- }
-
- function addChildren(parentNode, destination) {
- while (parentNode.childNodes.length > 0)
- destination.appendChild(parentNode.childNodes[0]);
- }
-
- // Check if there is a previous sibling
- prevSibling = n.parentNode.previousSibling;
- if (!prevSibling)
- return;
-
- var ul;
- if (prevSibling.tagName === 'UL' || prevSibling.tagName === 'OL')
- ul = prevSibling;
- else if (prevSibling.previousSibling && (prevSibling.previousSibling.tagName === 'UL' || prevSibling.previousSibling.tagName === 'OL'))
- ul = prevSibling.previousSibling;
- else
- return;
-
- var li = lastLI(ul);
-
- // move the caret to the end of the list item
- var rng = ed.dom.createRng();
- rng.setStart(li, 1);
- rng.setEnd(li, 1);
- ed.selection.setRng(rng);
- ed.selection.collapse(true);
-
- // save a bookmark at the end of the list item
- var bookmark = ed.selection.getBookmark();
-
- // copy the image an its text to the list item
- var clone = n.parentNode.cloneNode(true);
- if (clone.tagName === 'P' || clone.tagName === 'DIV')
- addChildren(clone, li);
- else
- li.appendChild(clone);
-
- // remove the old copy of the image
- n.parentNode.parentNode.removeChild(n.parentNode);
-
- // move the caret where we saved the bookmark
- ed.selection.moveToBookmark(bookmark);
- }
-
- // fix the cursor position to ensure it is correct in IE
- function setCursorPositionToOriginalLi(li) {
- var list = ed.dom.getParent(li, 'ol,ul');
- if (list != null) {
- var lastLi = list.lastChild;
- // Removed this line since IE9 would report an DOM character error and placing the caret inside an empty LI is handled and should be handled by the selection logic
- //lastLi.appendChild(ed.getDoc().createElement(''));
- ed.selection.setCursorLocation(lastLi, 0);
- }
- }
-
- this.ed = ed;
- ed.addCommand('Indent', this.indent, this);
- ed.addCommand('Outdent', this.outdent, this);
- ed.addCommand('InsertUnorderedList', function() {
- this.applyList('UL', 'OL');
- }, this);
- ed.addCommand('InsertOrderedList', function() {
- this.applyList('OL', 'UL');
- }, this);
-
- ed.onInit.add(function() {
- ed.editorCommands.addCommands({
- 'outdent': function() {
- var sel = ed.selection, dom = ed.dom;
-
- function hasStyleIndent(n) {
- n = dom.getParent(n, dom.isBlock);
- return n && (parseInt(ed.dom.getStyle(n, 'margin-left') || 0, 10) + parseInt(ed.dom.getStyle(n, 'padding-left') || 0, 10)) > 0;
- }
-
- return hasStyleIndent(sel.getStart()) || hasStyleIndent(sel.getEnd()) || ed.queryCommandState('InsertOrderedList') || ed.queryCommandState('InsertUnorderedList');
- }
- }, 'state');
- });
-
- ed.onKeyUp.add(function(ed, e) {
- if (state == LIST_TABBING) {
- ed.execCommand(e.shiftKey ? 'Outdent' : 'Indent', true, null);
- state = LIST_UNKNOWN;
- return Event.cancel(e);
- } else if (state == LIST_EMPTY_ITEM) {
- var li = getLi();
- var shouldOutdent = ed.settings.list_outdent_on_enter === true || e.shiftKey;
- ed.execCommand(shouldOutdent ? 'Outdent' : 'Indent', true, null);
- if (tinymce.isIE) {
- setCursorPositionToOriginalLi(li);
- }
-
- return Event.cancel(e);
- } else if (state == LIST_ESCAPE) {
- if (tinymce.isIE6 || tinymce.isIE7 || tinymce.isIE8) {
- // append a zero sized nbsp so that caret is positioned correctly in IE after escaping and applying formatting.
- // if there is no text then applying formatting for e.g a H1 to the P tag immediately following list after
- // escaping from it will cause the caret to be positioned on the last li instead of staying the in P tag.
- var n = ed.getDoc().createTextNode('\uFEFF');
- ed.selection.getNode().appendChild(n);
- } else if (tinymce.isIE9 || tinymce.isGecko) {
- // IE9 does not escape the list so we use outdent to do this and cancel the default behaviour
- // Gecko does not create a paragraph outdenting inside a TD so default behaviour is cancelled and we outdent ourselves
- ed.execCommand('Outdent');
- return Event.cancel(e);
- }
- }
- });
-
- function fixListItem(parent, reference) {
- // a zero-sized non-breaking space is placed in the empty list item so that the nested list is
- // displayed on the below line instead of next to it
- var n = ed.getDoc().createTextNode('\uFEFF');
- parent.insertBefore(n, reference);
- ed.selection.setCursorLocation(n, 0);
- // repaint to remove rendering artifact. only visible when creating new list
- ed.execCommand('mceRepaint');
- }
-
- function fixIndentedListItemForGecko(ed, e) {
- if (isEnter(e)) {
- var li = getLi();
- if (li) {
- var parent = li.parentNode;
- var grandParent = parent && parent.parentNode;
- if (grandParent && grandParent.nodeName == 'LI' && grandParent.firstChild == parent && li == parent.firstChild) {
- fixListItem(grandParent, parent);
- }
- }
- }
- }
-
- function fixIndentedListItemForIE8(ed, e) {
- if (isEnter(e)) {
- var li = getLi();
- if (ed.dom.select('ul li', li).length === 1) {
- var list = li.firstChild;
- fixListItem(li, list);
- }
- }
- }
-
- function fixDeletingFirstCharOfList(ed, e) {
- function listElements(list, li) {
- var elements = [];
- var walker = new tinymce.dom.TreeWalker(li, list);
- for (var node = walker.current(); node; node = walker.next()) {
- if (ed.dom.is(node, 'ol,ul,li')) {
- elements.push(node);
- }
- }
- return elements;
- }
-
- if (e.keyCode == tinymce.VK.BACKSPACE) {
- var li = getLi();
- if (li) {
- var list = ed.dom.getParent(li, 'ol,ul');
- if (list && list.firstChild === li) {
- var elements = listElements(list, li);
- ed.execCommand("Outdent", false, elements);
- ed.undoManager.add();
- return Event.cancel(e);
- }
- }
- }
- }
-
- function fixDeletingEmptyLiInWebkit(ed, e) {
- var li = getLi();
- if (e.keyCode === tinymce.VK.BACKSPACE && ed.dom.is(li, 'li') && li.parentNode.firstChild!==li) {
- if (ed.dom.select('ul,ol', li).length === 1) {
- var prevLi = li.previousSibling;
- ed.dom.remove(ed.dom.select('br', li));
- ed.dom.remove(li, true);
- var textNodes = tinymce.grep(prevLi.childNodes, function(n){ return n.nodeType === 3 });
- if (textNodes.length === 1) {
- var textNode = textNodes[0]
- ed.selection.setCursorLocation(textNode, textNode.length);
- }
- ed.undoManager.add();
- return Event.cancel(e);
- }
- }
- }
-
- ed.onKeyDown.add(function(_, e) { state = getListKeyState(e); });
- ed.onKeyDown.add(cancelDefaultEvents);
- ed.onKeyDown.add(imageJoiningListItem);
- ed.onKeyDown.add(createNewLi);
-
- if (tinymce.isGecko) {
- ed.onKeyUp.add(fixIndentedListItemForGecko);
- }
- if (tinymce.isIE8) {
- ed.onKeyUp.add(fixIndentedListItemForIE8);
- }
- if (tinymce.isGecko || tinymce.isWebKit) {
- ed.onKeyDown.add(fixDeletingFirstCharOfList);
- }
- if (tinymce.isWebKit) {
- ed.onKeyDown.add(fixDeletingEmptyLiInWebkit);
- }
- },
-
- applyList: function(targetListType, oppositeListType) {
- var t = this, ed = t.ed, dom = ed.dom, applied = [], hasSameType = false, hasOppositeType = false, hasNonList = false, actions,
- selectedBlocks = ed.selection.getSelectedBlocks();
-
- function cleanupBr(e) {
- if (e && e.tagName === 'BR') {
- dom.remove(e);
- }
- }
-
- function makeList(element) {
- var list = dom.create(targetListType), li;
-
- function adjustIndentForNewList(element) {
- // If there's a margin-left, outdent one level to account for the extra list margin.
- if (element.style.marginLeft || element.style.paddingLeft) {
- t.adjustPaddingFunction(false)(element);
- }
- }
-
- if (element.tagName === 'LI') {
- // No change required.
- } else if (element.tagName === 'P' || element.tagName === 'DIV' || element.tagName === 'BODY') {
- processBrs(element, function(startSection, br) {
- doWrapList(startSection, br, element.tagName === 'BODY' ? null : startSection.parentNode);
- li = startSection.parentNode;
- adjustIndentForNewList(li);
- cleanupBr(br);
- });
- if (li) {
- if (li.tagName === 'LI' && (element.tagName === 'P' || selectedBlocks.length > 1)) {
- dom.split(li.parentNode.parentNode, li.parentNode);
- }
- attemptMergeWithAdjacent(li.parentNode, true);
- }
- return;
- } else {
- // Put the list around the element.
- li = dom.create('li');
- dom.insertAfter(li, element);
- li.appendChild(element);
- adjustIndentForNewList(element);
- element = li;
- }
- dom.insertAfter(list, element);
- list.appendChild(element);
- attemptMergeWithAdjacent(list, true);
- applied.push(element);
- }
-
- function doWrapList(start, end, template) {
- var li, n = start, tmp;
- while (!dom.isBlock(start.parentNode) && start.parentNode !== dom.getRoot()) {
- start = dom.split(start.parentNode, start.previousSibling);
- start = start.nextSibling;
- n = start;
- }
- if (template) {
- li = template.cloneNode(true);
- start.parentNode.insertBefore(li, start);
- while (li.firstChild) dom.remove(li.firstChild);
- li = dom.rename(li, 'li');
- } else {
- li = dom.create('li');
- start.parentNode.insertBefore(li, start);
- }
- while (n && n != end) {
- tmp = n.nextSibling;
- li.appendChild(n);
- n = tmp;
- }
- if (li.childNodes.length === 0) {
- li.innerHTML = '<br _mce_bogus="1" />';
- }
- makeList(li);
- }
-
- function processBrs(element, callback) {
- var startSection, previousBR, END_TO_START = 3, START_TO_END = 1,
- breakElements = 'br,ul,ol,p,div,h1,h2,h3,h4,h5,h6,table,blockquote,address,pre,form,center,dl';
-
- function isAnyPartSelected(start, end) {
- var r = dom.createRng(), sel;
- bookmark.keep = true;
- ed.selection.moveToBookmark(bookmark);
- bookmark.keep = false;
- sel = ed.selection.getRng(true);
- if (!end) {
- end = start.parentNode.lastChild;
- }
- r.setStartBefore(start);
- r.setEndAfter(end);
- return !(r.compareBoundaryPoints(END_TO_START, sel) > 0 || r.compareBoundaryPoints(START_TO_END, sel) <= 0);
- }
-
- function nextLeaf(br) {
- if (br.nextSibling)
- return br.nextSibling;
- if (!dom.isBlock(br.parentNode) && br.parentNode !== dom.getRoot())
- return nextLeaf(br.parentNode);
- }
-
- // Split on BRs within the range and process those.
- startSection = element.firstChild;
- // First mark the BRs that have any part of the previous section selected.
- var trailingContentSelected = false;
- each(dom.select(breakElements, element), function(br) {
- if (br.hasAttribute && br.hasAttribute('_mce_bogus')) {
- return true; // Skip the bogus Brs that are put in to appease Firefox and Safari.
- }
- if (isAnyPartSelected(startSection, br)) {
- dom.addClass(br, '_mce_tagged_br');
- startSection = nextLeaf(br);
- }
- });
- trailingContentSelected = (startSection && isAnyPartSelected(startSection, undefined));
- startSection = element.firstChild;
- each(dom.select(breakElements, element), function(br) {
- // Got a section from start to br.
- var tmp = nextLeaf(br);
- if (br.hasAttribute && br.hasAttribute('_mce_bogus')) {
- return true; // Skip the bogus Brs that are put in to appease Firefox and Safari.
- }
- if (dom.hasClass(br, '_mce_tagged_br')) {
- callback(startSection, br, previousBR);
- previousBR = null;
- } else {
- previousBR = br;
- }
- startSection = tmp;
- });
- if (trailingContentSelected) {
- callback(startSection, undefined, previousBR);
- }
- }
-
- function wrapList(element) {
- processBrs(element, function(startSection, br, previousBR) {
- // Need to indent this part
- doWrapList(startSection, br);
- cleanupBr(br);
- cleanupBr(previousBR);
- });
- }
-
- function changeList(element) {
- if (tinymce.inArray(applied, element) !== -1) {
- return;
- }
- if (element.parentNode.tagName === oppositeListType) {
- dom.split(element.parentNode, element);
- makeList(element);
- attemptMergeWithNext(element.parentNode, false);
- }
- applied.push(element);
- }
-
- function convertListItemToParagraph(element) {
- var child, nextChild, mergedElement, splitLast;
- if (tinymce.inArray(applied, element) !== -1) {
- return;
- }
- element = splitNestedLists(element, dom);
- while (dom.is(element.parentNode, 'ol,ul,li')) {
- dom.split(element.parentNode, element);
- }
- // Push the original element we have from the selection, not the renamed one.
- applied.push(element);
- element = dom.rename(element, 'p');
- mergedElement = attemptMergeWithAdjacent(element, false, ed.settings.force_br_newlines);
- if (mergedElement === element) {
- // Now split out any block elements that can't be contained within a P.
- // Manually iterate to ensure we handle modifications correctly (doesn't work with tinymce.each)
- child = element.firstChild;
- while (child) {
- if (dom.isBlock(child)) {
- child = dom.split(child.parentNode, child);
- splitLast = true;
- nextChild = child.nextSibling && child.nextSibling.firstChild;
- } else {
- nextChild = child.nextSibling;
- if (splitLast && child.tagName === 'BR') {
- dom.remove(child);
- }
- splitLast = false;
- }
- child = nextChild;
- }
- }
- }
-
- each(selectedBlocks, function(e) {
- e = findItemToOperateOn(e, dom);
- if (e.tagName === oppositeListType || (e.tagName === 'LI' && e.parentNode.tagName === oppositeListType)) {
- hasOppositeType = true;
- } else if (e.tagName === targetListType || (e.tagName === 'LI' && e.parentNode.tagName === targetListType)) {
- hasSameType = true;
- } else {
- hasNonList = true;
- }
- });
-
- if (hasNonList &&!hasSameType || hasOppositeType || selectedBlocks.length === 0) {
- actions = {
- 'LI': changeList,
- 'H1': makeList,
- 'H2': makeList,
- 'H3': makeList,
- 'H4': makeList,
- 'H5': makeList,
- 'H6': makeList,
- 'P': makeList,
- 'BODY': makeList,
- 'DIV': selectedBlocks.length > 1 ? makeList : wrapList,
- defaultAction: wrapList,
- elements: this.selectedBlocks()
- };
- } else {
- actions = {
- defaultAction: convertListItemToParagraph,
- elements: this.selectedBlocks()
- };
- }
- this.process(actions);
- },
-
- indent: function() {
- var ed = this.ed, dom = ed.dom, indented = [];
-
- function createWrapItem(element) {
- var wrapItem = dom.create('li', { style: 'list-style-type: none;'});
- dom.insertAfter(wrapItem, element);
- return wrapItem;
- }
-
- function createWrapList(element) {
- var wrapItem = createWrapItem(element),
- list = dom.getParent(element, 'ol,ul'),
- listType = list.tagName,
- listStyle = dom.getStyle(list, 'list-style-type'),
- attrs = {},
- wrapList;
- if (listStyle !== '') {
- attrs.style = 'list-style-type: ' + listStyle + ';';
- }
- wrapList = dom.create(listType, attrs);
- wrapItem.appendChild(wrapList);
- return wrapList;
- }
-
- function indentLI(element) {
- if (!hasParentInList(ed, element, indented)) {
- element = splitNestedLists(element, dom);
- var wrapList = createWrapList(element);
- wrapList.appendChild(element);
- attemptMergeWithAdjacent(wrapList.parentNode, false);
- attemptMergeWithAdjacent(wrapList, false);
- indented.push(element);
- }
- }
-
- this.process({
- 'LI': indentLI,
- defaultAction: this.adjustPaddingFunction(true),
- elements: this.selectedBlocks()
- });
-
- },
-
- outdent: function(ui, elements) {
- var t = this, ed = t.ed, dom = ed.dom, outdented = [];
-
- function outdentLI(element) {
- var listElement, targetParent, align;
- if (!hasParentInList(ed, element, outdented)) {
- if (dom.getStyle(element, 'margin-left') !== '' || dom.getStyle(element, 'padding-left') !== '') {
- return t.adjustPaddingFunction(false)(element);
- }
- align = dom.getStyle(element, 'text-align', true);
- if (align === 'center' || align === 'right') {
- dom.setStyle(element, 'text-align', 'left');
- return;
- }
- element = splitNestedLists(element, dom);
- listElement = element.parentNode;
- targetParent = element.parentNode.parentNode;
- if (targetParent.tagName === 'P') {
- dom.split(targetParent, element.parentNode);
- } else {
- dom.split(listElement, element);
- if (targetParent.tagName === 'LI') {
- // Nested list, need to split the LI and go back out to the OL/UL element.
- dom.split(targetParent, element);
- } else if (!dom.is(targetParent, 'ol,ul')) {
- dom.rename(element, 'p');
- }
- }
- outdented.push(element);
- }
- }
-
- var listElements = elements && tinymce.is(elements, 'array') ? elements : this.selectedBlocks();
- this.process({
- 'LI': outdentLI,
- defaultAction: this.adjustPaddingFunction(false),
- elements: listElements
- });
-
- each(outdented, attemptMergeWithAdjacent);
- },
-
- process: function(actions) {
- var t = this, sel = t.ed.selection, dom = t.ed.dom, selectedBlocks, r;
-
- function isEmptyElement(element) {
- var excludeBrsAndBookmarks = tinymce.grep(element.childNodes, function(n) {
- return !(n.nodeName === 'BR' || n.nodeName === 'SPAN' && dom.getAttrib(n, 'data-mce-type') == 'bookmark'
- || n.nodeType == 3 && (n.nodeValue == String.fromCharCode(160) || n.nodeValue == ''));
- });
- return excludeBrsAndBookmarks.length === 0;
- }
-
- function processElement(element) {
- dom.removeClass(element, '_mce_act_on');
- if (!element || element.nodeType !== 1 || selectedBlocks.length > 1 && isEmptyElement(element)) {
- return;
- }
- element = findItemToOperateOn(element, dom);
- var action = actions[element.tagName];
- if (!action) {
- action = actions.defaultAction;
- }
- action(element);
- }
-
- function recurse(element) {
- t.splitSafeEach(element.childNodes, processElement);
- }
-
- function brAtEdgeOfSelection(container, offset) {
- return offset >= 0 && container.hasChildNodes() && offset < container.childNodes.length &&
- container.childNodes[offset].tagName === 'BR';
- }
-
- function isInTable() {
- var n = sel.getNode();
- var p = dom.getParent(n, 'td');
- return p !== null;
- }
-
- selectedBlocks = actions.elements;
-
- r = sel.getRng(true);
- if (!r.collapsed) {
- if (brAtEdgeOfSelection(r.endContainer, r.endOffset - 1)) {
- r.setEnd(r.endContainer, r.endOffset - 1);
- sel.setRng(r);
- }
- if (brAtEdgeOfSelection(r.startContainer, r.startOffset)) {
- r.setStart(r.startContainer, r.startOffset + 1);
- sel.setRng(r);
- }
- }
-
-
- if (tinymce.isIE8) {
- // append a zero sized nbsp so that caret is restored correctly using bookmark
- var s = t.ed.selection.getNode();
- if (s.tagName === 'LI' && !(s.parentNode.lastChild === s)) {
- var i = t.ed.getDoc().createTextNode('\uFEFF');
- s.appendChild(i);
- }
- }
-
- bookmark = sel.getBookmark();
- actions.OL = actions.UL = recurse;
- t.splitSafeEach(selectedBlocks, processElement);
- sel.moveToBookmark(bookmark);
- bookmark = null;
-
- // we avoid doing repaint in a table as this will move the caret out of the table in Firefox 3.6
- if (!isInTable()) {
- // Avoids table or image handles being left behind in Firefox.
- t.ed.execCommand('mceRepaint');
- }
- },
-
- splitSafeEach: function(elements, f) {
- if (tinymce.isGecko && (/Firefox\/[12]\.[0-9]/.test(navigator.userAgent) ||
- /Firefox\/3\.[0-4]/.test(navigator.userAgent))) {
- this.classBasedEach(elements, f);
- } else {
- each(elements, f);
- }
- },
-
- classBasedEach: function(elements, f) {
- var dom = this.ed.dom, nodes, element;
- // Mark nodes
- each(elements, function(element) {
- dom.addClass(element, '_mce_act_on');
- });
- nodes = dom.select('._mce_act_on');
- while (nodes.length > 0) {
- element = nodes.shift();
- dom.removeClass(element, '_mce_act_on');
- f(element);
- nodes = dom.select('._mce_act_on');
- }
- },
-
- adjustPaddingFunction: function(isIndent) {
- var indentAmount, indentUnits, ed = this.ed;
- indentAmount = ed.settings.indentation;
- indentUnits = /[a-z%]+/i.exec(indentAmount);
- indentAmount = parseInt(indentAmount, 10);
- return function(element) {
- var currentIndent, newIndentAmount;
- currentIndent = parseInt(ed.dom.getStyle(element, 'margin-left') || 0, 10) + parseInt(ed.dom.getStyle(element, 'padding-left') || 0, 10);
- if (isIndent) {
- newIndentAmount = currentIndent + indentAmount;
- } else {
- newIndentAmount = currentIndent - indentAmount;
- }
- ed.dom.setStyle(element, 'padding-left', '');
- ed.dom.setStyle(element, 'margin-left', newIndentAmount > 0 ? newIndentAmount + indentUnits : '');
- };
- },
-
- selectedBlocks: function() {
- var ed = this.ed
- var selectedBlocks = ed.selection.getSelectedBlocks();
- return selectedBlocks.length == 0 ? [ ed.dom.getRoot() ] : selectedBlocks;
- },
-
- getInfo: function() {
- return {
- longname : 'Lists',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/lists',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
- tinymce.PluginManager.add("lists", tinymce.plugins.Lists);
-}());
+/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2011, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ var each = tinymce.each, Event = tinymce.dom.Event, bookmark;
+
+ // Skips text nodes that only contain whitespace since they aren't semantically important.
+ function skipWhitespaceNodes(e, next) {
+ while (e && (e.nodeType === 8 || (e.nodeType === 3 && /^[ \t\n\r]*$/.test(e.nodeValue)))) {
+ e = next(e);
+ }
+ return e;
+ }
+
+ function skipWhitespaceNodesBackwards(e) {
+ return skipWhitespaceNodes(e, function(e) {
+ return e.previousSibling;
+ });
+ }
+
+ function skipWhitespaceNodesForwards(e) {
+ return skipWhitespaceNodes(e, function(e) {
+ return e.nextSibling;
+ });
+ }
+
+ function hasParentInList(ed, e, list) {
+ return ed.dom.getParent(e, function(p) {
+ return tinymce.inArray(list, p) !== -1;
+ });
+ }
+
+ function isList(e) {
+ return e && (e.tagName === 'OL' || e.tagName === 'UL');
+ }
+
+ function splitNestedLists(element, dom) {
+ var tmp, nested, wrapItem;
+ tmp = skipWhitespaceNodesBackwards(element.lastChild);
+ while (isList(tmp)) {
+ nested = tmp;
+ tmp = skipWhitespaceNodesBackwards(nested.previousSibling);
+ }
+ if (nested) {
+ wrapItem = dom.create('li', { style: 'list-style-type: none;'});
+ dom.split(element, nested);
+ dom.insertAfter(wrapItem, nested);
+ wrapItem.appendChild(nested);
+ wrapItem.appendChild(nested);
+ element = wrapItem.previousSibling;
+ }
+ return element;
+ }
+
+ function attemptMergeWithAdjacent(e, allowDifferentListStyles, mergeParagraphs) {
+ e = attemptMergeWithPrevious(e, allowDifferentListStyles, mergeParagraphs);
+ return attemptMergeWithNext(e, allowDifferentListStyles, mergeParagraphs);
+ }
+
+ function attemptMergeWithPrevious(e, allowDifferentListStyles, mergeParagraphs) {
+ var prev = skipWhitespaceNodesBackwards(e.previousSibling);
+ if (prev) {
+ return attemptMerge(prev, e, allowDifferentListStyles ? prev : false, mergeParagraphs);
+ } else {
+ return e;
+ }
+ }
+
+ function attemptMergeWithNext(e, allowDifferentListStyles, mergeParagraphs) {
+ var next = skipWhitespaceNodesForwards(e.nextSibling);
+ if (next) {
+ return attemptMerge(e, next, allowDifferentListStyles ? next : false, mergeParagraphs);
+ } else {
+ return e;
+ }
+ }
+
+ function attemptMerge(e1, e2, differentStylesMasterElement, mergeParagraphs) {
+ if (canMerge(e1, e2, !!differentStylesMasterElement, mergeParagraphs)) {
+ return merge(e1, e2, differentStylesMasterElement);
+ } else if (e1 && e1.tagName === 'LI' && isList(e2)) {
+ // Fix invalidly nested lists.
+ e1.appendChild(e2);
+ }
+ return e2;
+ }
+
+ function canMerge(e1, e2, allowDifferentListStyles, mergeParagraphs) {
+ if (!e1 || !e2) {
+ return false;
+ } else if (e1.tagName === 'LI' && e2.tagName === 'LI') {
+ return e2.style.listStyleType === 'none' || containsOnlyAList(e2);
+ } else if (isList(e1)) {
+ return (e1.tagName === e2.tagName && (allowDifferentListStyles || e1.style.listStyleType === e2.style.listStyleType)) || isListForIndent(e2);
+ } else return mergeParagraphs && e1.tagName === 'P' && e2.tagName === 'P';
+ }
+
+ function isListForIndent(e) {
+ var firstLI = skipWhitespaceNodesForwards(e.firstChild), lastLI = skipWhitespaceNodesBackwards(e.lastChild);
+ return firstLI && lastLI && isList(e) && firstLI === lastLI && (isList(firstLI) || firstLI.style.listStyleType === 'none' || containsOnlyAList(firstLI));
+ }
+
+ function containsOnlyAList(e) {
+ var firstChild = skipWhitespaceNodesForwards(e.firstChild), lastChild = skipWhitespaceNodesBackwards(e.lastChild);
+ return firstChild && lastChild && firstChild === lastChild && isList(firstChild);
+ }
+
+ function merge(e1, e2, masterElement) {
+ var lastOriginal = skipWhitespaceNodesBackwards(e1.lastChild), firstNew = skipWhitespaceNodesForwards(e2.firstChild);
+ if (e1.tagName === 'P') {
+ e1.appendChild(e1.ownerDocument.createElement('br'));
+ }
+ while (e2.firstChild) {
+ e1.appendChild(e2.firstChild);
+ }
+ if (masterElement) {
+ e1.style.listStyleType = masterElement.style.listStyleType;
+ }
+ e2.parentNode.removeChild(e2);
+ attemptMerge(lastOriginal, firstNew, false);
+ return e1;
+ }
+
+ function findItemToOperateOn(e, dom) {
+ var item;
+ if (!dom.is(e, 'li,ol,ul')) {
+ item = dom.getParent(e, 'li');
+ if (item) {
+ e = item;
+ }
+ }
+ return e;
+ }
+
+ tinymce.create('tinymce.plugins.Lists', {
+ init: function(ed) {
+ var LIST_TABBING = 'TABBING';
+ var LIST_EMPTY_ITEM = 'EMPTY';
+ var LIST_ESCAPE = 'ESCAPE';
+ var LIST_PARAGRAPH = 'PARAGRAPH';
+ var LIST_UNKNOWN = 'UNKNOWN';
+ var state = LIST_UNKNOWN;
+
+ function isTabInList(e) {
+ // Don't indent on Ctrl+Tab or Alt+Tab
+ return e.keyCode === tinymce.VK.TAB && !(e.altKey || e.ctrlKey) &&
+ (ed.queryCommandState('InsertUnorderedList') || ed.queryCommandState('InsertOrderedList'));
+ }
+
+ function isOnLastListItem() {
+ var li = getLi();
+ var grandParent = li.parentNode.parentNode;
+ var isLastItem = li.parentNode.lastChild === li;
+ return isLastItem && !isNestedList(grandParent) && isEmptyListItem(li);
+ }
+
+ function isNestedList(grandParent) {
+ if (isList(grandParent)) {
+ return grandParent.parentNode && grandParent.parentNode.tagName === 'LI';
+ } else {
+ return grandParent.tagName === 'LI';
+ }
+ }
+
+ function isInEmptyListItem() {
+ return ed.selection.isCollapsed() && isEmptyListItem(getLi());
+ }
+
+ function getLi() {
+ var n = ed.selection.getStart();
+ // Get start will return BR if the LI only contains a BR or an empty element as we use these to fix caret position
+ return ((n.tagName == 'BR' || n.tagName == '') && n.parentNode.tagName == 'LI') ? n.parentNode : n;
+ }
+
+ function isEmptyListItem(li) {
+ var numChildren = li.childNodes.length;
+ if (li.tagName === 'LI') {
+ return numChildren == 0 ? true : numChildren == 1 && (li.firstChild.tagName == '' || li.firstChild.tagName == 'BR' || isEmptyIE9Li(li));
+ }
+ return false;
+ }
+
+ function isEmptyIE9Li(li) {
+ // only consider this to be last item if there is no list item content or that content is nbsp or space since IE9 creates these
+ var lis = tinymce.grep(li.parentNode.childNodes, function(n) {return n.tagName == 'LI'});
+ var isLastLi = li == lis[lis.length - 1];
+ var child = li.firstChild;
+ return tinymce.isIE9 && isLastLi && (child.nodeValue == String.fromCharCode(160) || child.nodeValue == String.fromCharCode(32));
+ }
+
+ function isEnter(e) {
+ return e.keyCode === tinymce.VK.ENTER;
+ }
+
+ function isEnterWithoutShift(e) {
+ return isEnter(e) && !e.shiftKey;
+ }
+
+ function getListKeyState(e) {
+ if (isTabInList(e)) {
+ return LIST_TABBING;
+ } else if (isEnterWithoutShift(e) && isOnLastListItem()) {
+ // Returns LIST_UNKNOWN since breaking out of lists is handled by the EnterKey.js logic now
+ //return LIST_ESCAPE;
+ return LIST_UNKNOWN;
+ } else if (isEnterWithoutShift(e) && isInEmptyListItem()) {
+ return LIST_EMPTY_ITEM;
+ } else {
+ return LIST_UNKNOWN;
+ }
+ }
+
+ function cancelDefaultEvents(ed, e) {
+ // list escape is done manually using outdent as it does not create paragraphs correctly in td's
+ if (state == LIST_TABBING || state == LIST_EMPTY_ITEM || tinymce.isGecko && state == LIST_ESCAPE) {
+ Event.cancel(e);
+ }
+ }
+
+ function isCursorAtEndOfContainer() {
+ var range = ed.selection.getRng(true);
+ var startContainer = range.startContainer;
+ if (startContainer.nodeType == 3) {
+ var value = startContainer.nodeValue;
+ if (tinymce.isIE9 && value.length > 1 && value.charCodeAt(value.length-1) == 32) {
+ // IE9 places a space on the end of the text in some cases so ignore last char
+ return (range.endOffset == value.length-1);
+ } else {
+ return (range.endOffset == value.length);
+ }
+ } else if (startContainer.nodeType == 1) {
+ return range.endOffset == startContainer.childNodes.length;
+ }
+ return false;
+ }
+
+ /*
+ If we are at the end of a list item surrounded with an element, pressing enter should create a
+ new list item instead without splitting the element e.g. don't want to create new P or H1 tag
+ */
+ function isEndOfListItem() {
+ var node = ed.selection.getNode();
+ var validElements = 'h1,h2,h3,h4,h5,h6,p,div';
+ var isLastParagraphOfLi = ed.dom.is(node, validElements) && node.parentNode.tagName === 'LI' && node.parentNode.lastChild === node;
+ return ed.selection.isCollapsed() && isLastParagraphOfLi && isCursorAtEndOfContainer();
+ }
+
+ // Creates a new list item after the current selection's list item parent
+ function createNewLi(ed, e) {
+ if (isEnterWithoutShift(e) && isEndOfListItem()) {
+ var node = ed.selection.getNode();
+ var li = ed.dom.create("li");
+ var parentLi = ed.dom.getParent(node, 'li');
+ ed.dom.insertAfter(li, parentLi);
+
+ // Move caret to new list element.
+ if (tinymce.isIE6 || tinymce.isIE7 || tinyMCE.isIE8) {
+ // Removed this line since it would create an odd <&nbsp;> tag and placing the caret inside an empty LI is handled and should be handled by the selection logic
+ //li.appendChild(ed.dom.create("&nbsp;")); // IE needs an element within the bullet point
+ ed.selection.setCursorLocation(li, 1);
+ } else {
+ ed.selection.setCursorLocation(li, 0);
+ }
+ e.preventDefault();
+ }
+ }
+
+ function imageJoiningListItem(ed, e) {
+ var prevSibling;
+
+ if (!tinymce.isGecko)
+ return;
+
+ var n = ed.selection.getStart();
+ if (e.keyCode != tinymce.VK.BACKSPACE || n.tagName !== 'IMG')
+ return;
+
+ function lastLI(node) {
+ var child = node.firstChild;
+ var li = null;
+ do {
+ if (!child)
+ break;
+
+ if (child.tagName === 'LI')
+ li = child;
+ } while (child = child.nextSibling);
+
+ return li;
+ }
+
+ function addChildren(parentNode, destination) {
+ while (parentNode.childNodes.length > 0)
+ destination.appendChild(parentNode.childNodes[0]);
+ }
+
+ // Check if there is a previous sibling
+ prevSibling = n.parentNode.previousSibling;
+ if (!prevSibling)
+ return;
+
+ var ul;
+ if (prevSibling.tagName === 'UL' || prevSibling.tagName === 'OL')
+ ul = prevSibling;
+ else if (prevSibling.previousSibling && (prevSibling.previousSibling.tagName === 'UL' || prevSibling.previousSibling.tagName === 'OL'))
+ ul = prevSibling.previousSibling;
+ else
+ return;
+
+ var li = lastLI(ul);
+
+ // move the caret to the end of the list item
+ var rng = ed.dom.createRng();
+ rng.setStart(li, 1);
+ rng.setEnd(li, 1);
+ ed.selection.setRng(rng);
+ ed.selection.collapse(true);
+
+ // save a bookmark at the end of the list item
+ var bookmark = ed.selection.getBookmark();
+
+ // copy the image an its text to the list item
+ var clone = n.parentNode.cloneNode(true);
+ if (clone.tagName === 'P' || clone.tagName === 'DIV')
+ addChildren(clone, li);
+ else
+ li.appendChild(clone);
+
+ // remove the old copy of the image
+ n.parentNode.parentNode.removeChild(n.parentNode);
+
+ // move the caret where we saved the bookmark
+ ed.selection.moveToBookmark(bookmark);
+ }
+
+ // fix the cursor position to ensure it is correct in IE
+ function setCursorPositionToOriginalLi(li) {
+ var list = ed.dom.getParent(li, 'ol,ul');
+ if (list != null) {
+ var lastLi = list.lastChild;
+ // Removed this line since IE9 would report an DOM character error and placing the caret inside an empty LI is handled and should be handled by the selection logic
+ //lastLi.appendChild(ed.getDoc().createElement(''));
+ ed.selection.setCursorLocation(lastLi, 0);
+ }
+ }
+
+ this.ed = ed;
+ ed.addCommand('Indent', this.indent, this);
+ ed.addCommand('Outdent', this.outdent, this);
+ ed.addCommand('InsertUnorderedList', function() {
+ this.applyList('UL', 'OL');
+ }, this);
+ ed.addCommand('InsertOrderedList', function() {
+ this.applyList('OL', 'UL');
+ }, this);
+
+ ed.onInit.add(function() {
+ ed.editorCommands.addCommands({
+ 'outdent': function() {
+ var sel = ed.selection, dom = ed.dom;
+
+ function hasStyleIndent(n) {
+ n = dom.getParent(n, dom.isBlock);
+ return n && (parseInt(ed.dom.getStyle(n, 'margin-left') || 0, 10) + parseInt(ed.dom.getStyle(n, 'padding-left') || 0, 10)) > 0;
+ }
+
+ return hasStyleIndent(sel.getStart()) || hasStyleIndent(sel.getEnd()) || ed.queryCommandState('InsertOrderedList') || ed.queryCommandState('InsertUnorderedList');
+ }
+ }, 'state');
+ });
+
+ ed.onKeyUp.add(function(ed, e) {
+ if (state == LIST_TABBING) {
+ ed.execCommand(e.shiftKey ? 'Outdent' : 'Indent', true, null);
+ state = LIST_UNKNOWN;
+ return Event.cancel(e);
+ } else if (state == LIST_EMPTY_ITEM) {
+ var li = getLi();
+ var shouldOutdent = ed.settings.list_outdent_on_enter === true || e.shiftKey;
+ ed.execCommand(shouldOutdent ? 'Outdent' : 'Indent', true, null);
+ if (tinymce.isIE) {
+ setCursorPositionToOriginalLi(li);
+ }
+
+ return Event.cancel(e);
+ } else if (state == LIST_ESCAPE) {
+ if (tinymce.isIE6 || tinymce.isIE7 || tinymce.isIE8) {
+ // append a zero sized nbsp so that caret is positioned correctly in IE after escaping and applying formatting.
+ // if there is no text then applying formatting for e.g a H1 to the P tag immediately following list after
+ // escaping from it will cause the caret to be positioned on the last li instead of staying the in P tag.
+ var n = ed.getDoc().createTextNode('\uFEFF');
+ ed.selection.getNode().appendChild(n);
+ } else if (tinymce.isIE9 || tinymce.isGecko) {
+ // IE9 does not escape the list so we use outdent to do this and cancel the default behaviour
+ // Gecko does not create a paragraph outdenting inside a TD so default behaviour is cancelled and we outdent ourselves
+ ed.execCommand('Outdent');
+ return Event.cancel(e);
+ }
+ }
+ });
+
+ function fixListItem(parent, reference) {
+ // a zero-sized non-breaking space is placed in the empty list item so that the nested list is
+ // displayed on the below line instead of next to it
+ var n = ed.getDoc().createTextNode('\uFEFF');
+ parent.insertBefore(n, reference);
+ ed.selection.setCursorLocation(n, 0);
+ // repaint to remove rendering artifact. only visible when creating new list
+ ed.execCommand('mceRepaint');
+ }
+
+ function fixIndentedListItemForGecko(ed, e) {
+ if (isEnter(e)) {
+ var li = getLi();
+ if (li) {
+ var parent = li.parentNode;
+ var grandParent = parent && parent.parentNode;
+ if (grandParent && grandParent.nodeName == 'LI' && grandParent.firstChild == parent && li == parent.firstChild) {
+ fixListItem(grandParent, parent);
+ }
+ }
+ }
+ }
+
+ function fixIndentedListItemForIE8(ed, e) {
+ if (isEnter(e)) {
+ var li = getLi();
+ if (ed.dom.select('ul li', li).length === 1) {
+ var list = li.firstChild;
+ fixListItem(li, list);
+ }
+ }
+ }
+
+ function fixDeletingFirstCharOfList(ed, e) {
+ function listElements(list, li) {
+ var elements = [];
+ var walker = new tinymce.dom.TreeWalker(li, list);
+ for (var node = walker.current(); node; node = walker.next()) {
+ if (ed.dom.is(node, 'ol,ul,li')) {
+ elements.push(node);
+ }
+ }
+ return elements;
+ }
+
+ if (e.keyCode == tinymce.VK.BACKSPACE) {
+ var li = getLi();
+ if (li) {
+ var list = ed.dom.getParent(li, 'ol,ul');
+ if (list && list.firstChild === li) {
+ var elements = listElements(list, li);
+ ed.execCommand("Outdent", false, elements);
+ ed.undoManager.add();
+ return Event.cancel(e);
+ }
+ }
+ }
+ }
+
+ function fixDeletingEmptyLiInWebkit(ed, e) {
+ var li = getLi();
+ if (e.keyCode === tinymce.VK.BACKSPACE && ed.dom.is(li, 'li') && li.parentNode.firstChild!==li) {
+ if (ed.dom.select('ul,ol', li).length === 1) {
+ var prevLi = li.previousSibling;
+ ed.dom.remove(ed.dom.select('br', li));
+ ed.dom.remove(li, true);
+ var textNodes = tinymce.grep(prevLi.childNodes, function(n){ return n.nodeType === 3 });
+ if (textNodes.length === 1) {
+ var textNode = textNodes[0]
+ ed.selection.setCursorLocation(textNode, textNode.length);
+ }
+ ed.undoManager.add();
+ return Event.cancel(e);
+ }
+ }
+ }
+
+ ed.onKeyDown.add(function(_, e) { state = getListKeyState(e); });
+ ed.onKeyDown.add(cancelDefaultEvents);
+ ed.onKeyDown.add(imageJoiningListItem);
+ ed.onKeyDown.add(createNewLi);
+
+ if (tinymce.isGecko) {
+ ed.onKeyUp.add(fixIndentedListItemForGecko);
+ }
+ if (tinymce.isIE8) {
+ ed.onKeyUp.add(fixIndentedListItemForIE8);
+ }
+ if (tinymce.isGecko || tinymce.isWebKit) {
+ ed.onKeyDown.add(fixDeletingFirstCharOfList);
+ }
+ if (tinymce.isWebKit) {
+ ed.onKeyDown.add(fixDeletingEmptyLiInWebkit);
+ }
+ },
+
+ applyList: function(targetListType, oppositeListType) {
+ var t = this, ed = t.ed, dom = ed.dom, applied = [], hasSameType = false, hasOppositeType = false, hasNonList = false, actions,
+ selectedBlocks = ed.selection.getSelectedBlocks();
+
+ function cleanupBr(e) {
+ if (e && e.tagName === 'BR') {
+ dom.remove(e);
+ }
+ }
+
+ function makeList(element) {
+ var list = dom.create(targetListType), li;
+
+ function adjustIndentForNewList(element) {
+ // If there's a margin-left, outdent one level to account for the extra list margin.
+ if (element.style.marginLeft || element.style.paddingLeft) {
+ t.adjustPaddingFunction(false)(element);
+ }
+ }
+
+ if (element.tagName === 'LI') {
+ // No change required.
+ } else if (element.tagName === 'P' || element.tagName === 'DIV' || element.tagName === 'BODY') {
+ processBrs(element, function(startSection, br) {
+ doWrapList(startSection, br, element.tagName === 'BODY' ? null : startSection.parentNode);
+ li = startSection.parentNode;
+ adjustIndentForNewList(li);
+ cleanupBr(br);
+ });
+ if (li) {
+ if (li.tagName === 'LI' && (element.tagName === 'P' || selectedBlocks.length > 1)) {
+ dom.split(li.parentNode.parentNode, li.parentNode);
+ }
+ attemptMergeWithAdjacent(li.parentNode, true);
+ }
+ return;
+ } else {
+ // Put the list around the element.
+ li = dom.create('li');
+ dom.insertAfter(li, element);
+ li.appendChild(element);
+ adjustIndentForNewList(element);
+ element = li;
+ }
+ dom.insertAfter(list, element);
+ list.appendChild(element);
+ attemptMergeWithAdjacent(list, true);
+ applied.push(element);
+ }
+
+ function doWrapList(start, end, template) {
+ var li, n = start, tmp;
+ while (!dom.isBlock(start.parentNode) && start.parentNode !== dom.getRoot()) {
+ start = dom.split(start.parentNode, start.previousSibling);
+ start = start.nextSibling;
+ n = start;
+ }
+ if (template) {
+ li = template.cloneNode(true);
+ start.parentNode.insertBefore(li, start);
+ while (li.firstChild) dom.remove(li.firstChild);
+ li = dom.rename(li, 'li');
+ } else {
+ li = dom.create('li');
+ start.parentNode.insertBefore(li, start);
+ }
+ while (n && n != end) {
+ tmp = n.nextSibling;
+ li.appendChild(n);
+ n = tmp;
+ }
+ if (li.childNodes.length === 0) {
+ li.innerHTML = '<br _mce_bogus="1" />';
+ }
+ makeList(li);
+ }
+
+ function processBrs(element, callback) {
+ var startSection, previousBR, END_TO_START = 3, START_TO_END = 1,
+ breakElements = 'br,ul,ol,p,div,h1,h2,h3,h4,h5,h6,table,blockquote,address,pre,form,center,dl';
+
+ function isAnyPartSelected(start, end) {
+ var r = dom.createRng(), sel;
+ bookmark.keep = true;
+ ed.selection.moveToBookmark(bookmark);
+ bookmark.keep = false;
+ sel = ed.selection.getRng(true);
+ if (!end) {
+ end = start.parentNode.lastChild;
+ }
+ r.setStartBefore(start);
+ r.setEndAfter(end);
+ return !(r.compareBoundaryPoints(END_TO_START, sel) > 0 || r.compareBoundaryPoints(START_TO_END, sel) <= 0);
+ }
+
+ function nextLeaf(br) {
+ if (br.nextSibling)
+ return br.nextSibling;
+ if (!dom.isBlock(br.parentNode) && br.parentNode !== dom.getRoot())
+ return nextLeaf(br.parentNode);
+ }
+
+ // Split on BRs within the range and process those.
+ startSection = element.firstChild;
+ // First mark the BRs that have any part of the previous section selected.
+ var trailingContentSelected = false;
+ each(dom.select(breakElements, element), function(br) {
+ if (br.hasAttribute && br.hasAttribute('_mce_bogus')) {
+ return true; // Skip the bogus Brs that are put in to appease Firefox and Safari.
+ }
+ if (isAnyPartSelected(startSection, br)) {
+ dom.addClass(br, '_mce_tagged_br');
+ startSection = nextLeaf(br);
+ }
+ });
+ trailingContentSelected = (startSection && isAnyPartSelected(startSection, undefined));
+ startSection = element.firstChild;
+ each(dom.select(breakElements, element), function(br) {
+ // Got a section from start to br.
+ var tmp = nextLeaf(br);
+ if (br.hasAttribute && br.hasAttribute('_mce_bogus')) {
+ return true; // Skip the bogus Brs that are put in to appease Firefox and Safari.
+ }
+ if (dom.hasClass(br, '_mce_tagged_br')) {
+ callback(startSection, br, previousBR);
+ previousBR = null;
+ } else {
+ previousBR = br;
+ }
+ startSection = tmp;
+ });
+ if (trailingContentSelected) {
+ callback(startSection, undefined, previousBR);
+ }
+ }
+
+ function wrapList(element) {
+ processBrs(element, function(startSection, br, previousBR) {
+ // Need to indent this part
+ doWrapList(startSection, br);
+ cleanupBr(br);
+ cleanupBr(previousBR);
+ });
+ }
+
+ function changeList(element) {
+ if (tinymce.inArray(applied, element) !== -1) {
+ return;
+ }
+ if (element.parentNode.tagName === oppositeListType) {
+ dom.split(element.parentNode, element);
+ makeList(element);
+ attemptMergeWithNext(element.parentNode, false);
+ }
+ applied.push(element);
+ }
+
+ function convertListItemToParagraph(element) {
+ var child, nextChild, mergedElement, splitLast;
+ if (tinymce.inArray(applied, element) !== -1) {
+ return;
+ }
+ element = splitNestedLists(element, dom);
+ while (dom.is(element.parentNode, 'ol,ul,li')) {
+ dom.split(element.parentNode, element);
+ }
+ // Push the original element we have from the selection, not the renamed one.
+ applied.push(element);
+ element = dom.rename(element, 'p');
+ mergedElement = attemptMergeWithAdjacent(element, false, ed.settings.force_br_newlines);
+ if (mergedElement === element) {
+ // Now split out any block elements that can't be contained within a P.
+ // Manually iterate to ensure we handle modifications correctly (doesn't work with tinymce.each)
+ child = element.firstChild;
+ while (child) {
+ if (dom.isBlock(child)) {
+ child = dom.split(child.parentNode, child);
+ splitLast = true;
+ nextChild = child.nextSibling && child.nextSibling.firstChild;
+ } else {
+ nextChild = child.nextSibling;
+ if (splitLast && child.tagName === 'BR') {
+ dom.remove(child);
+ }
+ splitLast = false;
+ }
+ child = nextChild;
+ }
+ }
+ }
+
+ each(selectedBlocks, function(e) {
+ e = findItemToOperateOn(e, dom);
+ if (e.tagName === oppositeListType || (e.tagName === 'LI' && e.parentNode.tagName === oppositeListType)) {
+ hasOppositeType = true;
+ } else if (e.tagName === targetListType || (e.tagName === 'LI' && e.parentNode.tagName === targetListType)) {
+ hasSameType = true;
+ } else {
+ hasNonList = true;
+ }
+ });
+
+ if (hasNonList &&!hasSameType || hasOppositeType || selectedBlocks.length === 0) {
+ actions = {
+ 'LI': changeList,
+ 'H1': makeList,
+ 'H2': makeList,
+ 'H3': makeList,
+ 'H4': makeList,
+ 'H5': makeList,
+ 'H6': makeList,
+ 'P': makeList,
+ 'BODY': makeList,
+ 'DIV': selectedBlocks.length > 1 ? makeList : wrapList,
+ defaultAction: wrapList,
+ elements: this.selectedBlocks()
+ };
+ } else {
+ actions = {
+ defaultAction: convertListItemToParagraph,
+ elements: this.selectedBlocks()
+ };
+ }
+ this.process(actions);
+ },
+
+ indent: function() {
+ var ed = this.ed, dom = ed.dom, indented = [];
+
+ function createWrapItem(element) {
+ var wrapItem = dom.create('li', { style: 'list-style-type: none;'});
+ dom.insertAfter(wrapItem, element);
+ return wrapItem;
+ }
+
+ function createWrapList(element) {
+ var wrapItem = createWrapItem(element),
+ list = dom.getParent(element, 'ol,ul'),
+ listType = list.tagName,
+ listStyle = dom.getStyle(list, 'list-style-type'),
+ attrs = {},
+ wrapList;
+ if (listStyle !== '') {
+ attrs.style = 'list-style-type: ' + listStyle + ';';
+ }
+ wrapList = dom.create(listType, attrs);
+ wrapItem.appendChild(wrapList);
+ return wrapList;
+ }
+
+ function indentLI(element) {
+ if (!hasParentInList(ed, element, indented)) {
+ element = splitNestedLists(element, dom);
+ var wrapList = createWrapList(element);
+ wrapList.appendChild(element);
+ attemptMergeWithAdjacent(wrapList.parentNode, false);
+ attemptMergeWithAdjacent(wrapList, false);
+ indented.push(element);
+ }
+ }
+
+ this.process({
+ 'LI': indentLI,
+ defaultAction: this.adjustPaddingFunction(true),
+ elements: this.selectedBlocks()
+ });
+
+ },
+
+ outdent: function(ui, elements) {
+ var t = this, ed = t.ed, dom = ed.dom, outdented = [];
+
+ function outdentLI(element) {
+ var listElement, targetParent, align;
+ if (!hasParentInList(ed, element, outdented)) {
+ if (dom.getStyle(element, 'margin-left') !== '' || dom.getStyle(element, 'padding-left') !== '') {
+ return t.adjustPaddingFunction(false)(element);
+ }
+ align = dom.getStyle(element, 'text-align', true);
+ if (align === 'center' || align === 'right') {
+ dom.setStyle(element, 'text-align', 'left');
+ return;
+ }
+ element = splitNestedLists(element, dom);
+ listElement = element.parentNode;
+ targetParent = element.parentNode.parentNode;
+ if (targetParent.tagName === 'P') {
+ dom.split(targetParent, element.parentNode);
+ } else {
+ dom.split(listElement, element);
+ if (targetParent.tagName === 'LI') {
+ // Nested list, need to split the LI and go back out to the OL/UL element.
+ dom.split(targetParent, element);
+ } else if (!dom.is(targetParent, 'ol,ul')) {
+ dom.rename(element, 'p');
+ }
+ }
+ outdented.push(element);
+ }
+ }
+
+ var listElements = elements && tinymce.is(elements, 'array') ? elements : this.selectedBlocks();
+ this.process({
+ 'LI': outdentLI,
+ defaultAction: this.adjustPaddingFunction(false),
+ elements: listElements
+ });
+
+ each(outdented, attemptMergeWithAdjacent);
+ },
+
+ process: function(actions) {
+ var t = this, sel = t.ed.selection, dom = t.ed.dom, selectedBlocks, r;
+
+ function isEmptyElement(element) {
+ var excludeBrsAndBookmarks = tinymce.grep(element.childNodes, function(n) {
+ return !(n.nodeName === 'BR' || n.nodeName === 'SPAN' && dom.getAttrib(n, 'data-mce-type') == 'bookmark'
+ || n.nodeType == 3 && (n.nodeValue == String.fromCharCode(160) || n.nodeValue == ''));
+ });
+ return excludeBrsAndBookmarks.length === 0;
+ }
+
+ function processElement(element) {
+ dom.removeClass(element, '_mce_act_on');
+ if (!element || element.nodeType !== 1 || selectedBlocks.length > 1 && isEmptyElement(element)) {
+ return;
+ }
+ element = findItemToOperateOn(element, dom);
+ var action = actions[element.tagName];
+ if (!action) {
+ action = actions.defaultAction;
+ }
+ action(element);
+ }
+
+ function recurse(element) {
+ t.splitSafeEach(element.childNodes, processElement);
+ }
+
+ function brAtEdgeOfSelection(container, offset) {
+ return offset >= 0 && container.hasChildNodes() && offset < container.childNodes.length &&
+ container.childNodes[offset].tagName === 'BR';
+ }
+
+ function isInTable() {
+ var n = sel.getNode();
+ var p = dom.getParent(n, 'td');
+ return p !== null;
+ }
+
+ selectedBlocks = actions.elements;
+
+ r = sel.getRng(true);
+ if (!r.collapsed) {
+ if (brAtEdgeOfSelection(r.endContainer, r.endOffset - 1)) {
+ r.setEnd(r.endContainer, r.endOffset - 1);
+ sel.setRng(r);
+ }
+ if (brAtEdgeOfSelection(r.startContainer, r.startOffset)) {
+ r.setStart(r.startContainer, r.startOffset + 1);
+ sel.setRng(r);
+ }
+ }
+
+
+ if (tinymce.isIE8) {
+ // append a zero sized nbsp so that caret is restored correctly using bookmark
+ var s = t.ed.selection.getNode();
+ if (s.tagName === 'LI' && !(s.parentNode.lastChild === s)) {
+ var i = t.ed.getDoc().createTextNode('\uFEFF');
+ s.appendChild(i);
+ }
+ }
+
+ bookmark = sel.getBookmark();
+ actions.OL = actions.UL = recurse;
+ t.splitSafeEach(selectedBlocks, processElement);
+ sel.moveToBookmark(bookmark);
+ bookmark = null;
+
+ // we avoid doing repaint in a table as this will move the caret out of the table in Firefox 3.6
+ if (!isInTable()) {
+ // Avoids table or image handles being left behind in Firefox.
+ t.ed.execCommand('mceRepaint');
+ }
+ },
+
+ splitSafeEach: function(elements, f) {
+ if (tinymce.isGecko && (/Firefox\/[12]\.[0-9]/.test(navigator.userAgent) ||
+ /Firefox\/3\.[0-4]/.test(navigator.userAgent))) {
+ this.classBasedEach(elements, f);
+ } else {
+ each(elements, f);
+ }
+ },
+
+ classBasedEach: function(elements, f) {
+ var dom = this.ed.dom, nodes, element;
+ // Mark nodes
+ each(elements, function(element) {
+ dom.addClass(element, '_mce_act_on');
+ });
+ nodes = dom.select('._mce_act_on');
+ while (nodes.length > 0) {
+ element = nodes.shift();
+ dom.removeClass(element, '_mce_act_on');
+ f(element);
+ nodes = dom.select('._mce_act_on');
+ }
+ },
+
+ adjustPaddingFunction: function(isIndent) {
+ var indentAmount, indentUnits, ed = this.ed;
+ indentAmount = ed.settings.indentation;
+ indentUnits = /[a-z%]+/i.exec(indentAmount);
+ indentAmount = parseInt(indentAmount, 10);
+ return function(element) {
+ var currentIndent, newIndentAmount;
+ currentIndent = parseInt(ed.dom.getStyle(element, 'margin-left') || 0, 10) + parseInt(ed.dom.getStyle(element, 'padding-left') || 0, 10);
+ if (isIndent) {
+ newIndentAmount = currentIndent + indentAmount;
+ } else {
+ newIndentAmount = currentIndent - indentAmount;
+ }
+ ed.dom.setStyle(element, 'padding-left', '');
+ ed.dom.setStyle(element, 'margin-left', newIndentAmount > 0 ? newIndentAmount + indentUnits : '');
+ };
+ },
+
+ selectedBlocks: function() {
+ var ed = this.ed
+ var selectedBlocks = ed.selection.getSelectedBlocks();
+ return selectedBlocks.length == 0 ? [ ed.dom.getRoot() ] : selectedBlocks;
+ },
+
+ getInfo: function() {
+ return {
+ longname : 'Lists',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/lists',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+ tinymce.PluginManager.add("lists", tinymce.plugins.Lists);
+}());
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js
index e7f301dbc..e204328d9 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js
@@ -1 +1 @@
-(function(){var c=tinymce.dom.TreeWalker;var a="contenteditable",d="data-mce-"+a;var e=tinymce.VK;function b(n){var j=n.dom,p=n.selection,r,o="mce_noneditablecaret";r=tinymce.isGecko?"\u200B":"\uFEFF";function m(t){var s;if(t.nodeType===1){s=t.getAttribute(d);if(s&&s!=="inherit"){return s}s=t.contentEditable;if(s!=="inherit"){return s}}return null}function g(s){var t;while(s){t=m(s);if(t){return t==="false"?s:null}s=s.parentNode}}function l(s){while(s){if(s.id===o){return s}s=s.parentNode}}function k(s){var t;if(s){t=new c(s,s);for(s=t.current();s;s=t.next()){if(s.nodeType===3){return s}}}}function f(v,u){var s,t;if(m(v)==="false"){if(j.isBlock(v)){p.select(v);return}}t=j.createRng();if(m(v)==="true"){if(!v.firstChild){v.appendChild(n.getDoc().createTextNode("\u00a0"))}v=v.firstChild;u=true}s=j.create("span",{id:o,"data-mce-bogus":true},r);if(u){v.parentNode.insertBefore(s,v)}else{j.insertAfter(s,v)}t.setStart(s.firstChild,1);t.collapse(true);p.setRng(t);return s}function i(s){var v,t,u;if(s){rng=p.getRng(true);rng.setStartBefore(s);rng.setEndBefore(s);v=k(s);if(v&&v.nodeValue.charAt(0)==r){v=v.deleteData(0,1)}j.remove(s,true);p.setRng(rng)}else{t=l(p.getStart());while((s=j.get(o))&&s!==u){if(t!==s){v=k(s);if(v&&v.nodeValue.charAt(0)==r){v=v.deleteData(0,1)}j.remove(s,true)}u=s}}}function q(){var s,w,u,t,v;function x(B,D){var A,F,E,C,z;A=t.startContainer;F=t.startOffset;if(A.nodeType==3){z=A.nodeValue.length;if((F>0&&F<z)||(D?F==z:F==0)){return}}else{if(F<A.childNodes.length){var G=!D&&F>0?F-1:F;A=A.childNodes[G];if(A.hasChildNodes()){A=A.firstChild}}else{return !D?B:null}}E=new c(A,B);while(C=E[D?"prev":"next"]()){if(C.nodeType===3&&C.nodeValue.length>0){return}else{if(m(C)==="true"){return C}}}return B}i();u=p.isCollapsed();s=g(p.getStart());w=g(p.getEnd());if(s||w){t=p.getRng(true);if(u){s=s||w;var y=p.getStart();if(v=x(s,true)){f(v,true)}else{if(v=x(s,false)){f(v,false)}else{p.select(s)}}}else{t=p.getRng(true);if(s){t.setStartBefore(s)}if(w){t.setEndAfter(w)}p.setRng(t)}}}function h(y,A){var E=A.keyCode,w,B,C,u;function t(G,F){while(G=G[F?"previousSibling":"nextSibling"]){if(G.nodeType!==3||G.nodeValue.length>0){return G}}}function x(F,G){p.select(F);p.collapse(G)}C=p.getStart();u=p.getEnd();w=g(C)||g(u);if(w&&(E<112||E>124)&&E!=e.DELETE&&E!=e.BACKSPACE){A.preventDefault();if(E==e.LEFT||E==e.RIGHT){var v=E==e.LEFT;if(y.dom.isBlock(w)){var z=v?w.previousSibling:w.nextSibling;var s=new c(z,z);var D=v?s.prev():s.next();x(D,!v)}else{x(w,v)}}}else{if(E==e.LEFT||E==e.RIGHT||E==e.BACKSPACE||E==e.DELETE){B=l(C);if(B){if(E==e.LEFT||E==e.BACKSPACE){w=t(B,true);if(w&&m(w)==="false"){A.preventDefault();if(E==e.LEFT){x(w,true)}else{j.remove(w)}}else{i(B)}}if(E==e.RIGHT||E==e.DELETE){w=t(B);if(w&&m(w)==="false"){A.preventDefault();if(E==e.RIGHT){x(w,false)}else{j.remove(w)}}else{i(B)}}}}}}n.onMouseDown.addToTop(function(s,u){var t=s.selection.getNode();if(m(t)==="false"&&t==u.target){u.preventDefault()}});n.onMouseUp.addToTop(q);n.onKeyDown.addToTop(h);n.onKeyUp.addToTop(q)}tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(h,j){var g,f,i;g=" "+tinymce.trim(h.getParam("noneditable_editable_class","mceEditable"))+" ";f=" "+tinymce.trim(h.getParam("noneditable_noneditable_class","mceNonEditable"))+" ";i=h.getParam("noneditable_regexp");if(i&&!i.length){i=[i]}h.onPreInit.add(function(){b(h);if(i){h.onBeforeSetContent.add(function(l,m){var n=i.length,o=m.content,k=tinymce.trim(f);if(m.format=="raw"){return}while(n--){o=o.replace(i[n],function(){var p=arguments;return'<span class="'+k+'" data-mce-content="'+l.dom.encode(p[0])+'">'+l.dom.encode(typeof(p[1])==="string"?p[1]:p[0])+"</span>"})}m.content=o})}h.parser.addAttributeFilter("class",function(k){var l=k.length,m,n;while(l--){n=k[l];m=" "+n.attr("class")+" ";if(m.indexOf(g)!==-1){n.attr(d,"true")}else{if(m.indexOf(f)!==-1){n.attr(d,"false")}}}});h.serializer.addAttributeFilter(d,function(k,l){var m=k.length,n;while(m--){n=k[m];if(i&&n.attr("data-mce-content")){n.name="#text";n.type=3;n.raw=true;n.value=n.attr("data-mce-content")}else{n.attr(a,null);n.attr(d,null)}}});h.parser.addAttributeFilter(a,function(k,l){var m=k.length,n;while(m--){n=k[m];n.attr(d,n.attr(a));n.attr(a,null)}})})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})(); \ No newline at end of file
+(function(){var c=tinymce.dom.TreeWalker;var a="contenteditable",d="data-mce-"+a;var e=tinymce.VK;function b(n){var j=n.dom,p=n.selection,r,o="mce_noneditablecaret";r=tinymce.isGecko?"\u200B":"\uFEFF";function m(t){var s;if(t.nodeType===1){s=t.getAttribute(d);if(s&&s!=="inherit"){return s}s=t.contentEditable;if(s!=="inherit"){return s}}return null}function g(s){var t;while(s){t=m(s);if(t){return t==="false"?s:null}s=s.parentNode}}function l(s){while(s){if(s.id===o){return s}s=s.parentNode}}function k(s){var t;if(s){t=new c(s,s);for(s=t.current();s;s=t.next()){if(s.nodeType===3){return s}}}}function f(v,u){var s,t;if(m(v)==="false"){if(j.isBlock(v)){p.select(v);return}}t=j.createRng();if(m(v)==="true"){if(!v.firstChild){v.appendChild(n.getDoc().createTextNode("\u00a0"))}v=v.firstChild;u=true}s=j.create("span",{id:o,"data-mce-bogus":true},r);if(u){v.parentNode.insertBefore(s,v)}else{j.insertAfter(s,v)}t.setStart(s.firstChild,1);t.collapse(true);p.setRng(t);return s}function i(s){var v,t,u;if(s){rng=p.getRng(true);rng.setStartBefore(s);rng.setEndBefore(s);v=k(s);if(v&&v.nodeValue.charAt(0)==r){v=v.deleteData(0,1)}j.remove(s,true);p.setRng(rng)}else{t=l(p.getStart());while((s=j.get(o))&&s!==u){if(t!==s){v=k(s);if(v&&v.nodeValue.charAt(0)==r){v=v.deleteData(0,1)}j.remove(s,true)}u=s}}}function q(){var s,w,u,t,v;function x(B,D){var A,F,E,C,z;A=t.startContainer;F=t.startOffset;if(A.nodeType==3){z=A.nodeValue.length;if((F>0&&F<z)||(D?F==z:F==0)){return}}else{if(F<A.childNodes.length){var G=!D&&F>0?F-1:F;A=A.childNodes[G];if(A.hasChildNodes()){A=A.firstChild}}else{return !D?B:null}}E=new c(A,B);while(C=E[D?"prev":"next"]()){if(C.nodeType===3&&C.nodeValue.length>0){return}else{if(m(C)==="true"){return C}}}return B}i();u=p.isCollapsed();s=g(p.getStart());w=g(p.getEnd());if(s||w){t=p.getRng(true);if(u){s=s||w;var y=p.getStart();if(v=x(s,true)){f(v,true)}else{if(v=x(s,false)){f(v,false)}else{p.select(s)}}}else{t=p.getRng(true);if(s){t.setStartBefore(s)}if(w){t.setEndAfter(w)}p.setRng(t)}}}function h(z,B){var F=B.keyCode,x,C,D,v;function u(H,G){while(H=H[G?"previousSibling":"nextSibling"]){if(H.nodeType!==3||H.nodeValue.length>0){return H}}}function y(G,H){p.select(G);p.collapse(H)}function t(K){var J,I,M,H;function G(O){var N=I;while(N){if(N===O){return}N=N.parentNode}j.remove(O);q()}function L(){var O,P,N=z.schema.getNonEmptyElements();P=new tinymce.dom.TreeWalker(I,z.getBody());while(O=(K?P.prev():P.next())){if(N[O.nodeName.toLowerCase()]){break}if(O.nodeType===3&&tinymce.trim(O.nodeValue).length>0){break}if(m(O)==="false"){G(O);return true}}if(g(O)){return true}return false}if(p.isCollapsed()){J=p.getRng(true);I=J.startContainer;M=J.startOffset;I=l(I)||I;if(H=g(I)){G(H);return false}if(I.nodeType==3&&(K?M>0:M<I.nodeValue.length)){return true}if(I.nodeType==1){I=I.childNodes[M]||I}if(L()){return false}}return true}D=p.getStart();v=p.getEnd();x=g(D)||g(v);if(x&&(F<112||F>124)&&F!=e.DELETE&&F!=e.BACKSPACE){if((tinymce.isMac?B.metaKey:B.ctrlKey)&&(F==67||F==88||F==86)){return}B.preventDefault();if(F==e.LEFT||F==e.RIGHT){var w=F==e.LEFT;if(z.dom.isBlock(x)){var A=w?x.previousSibling:x.nextSibling;var s=new c(A,A);var E=w?s.prev():s.next();y(E,!w)}else{y(x,w)}}}else{if(F==e.LEFT||F==e.RIGHT||F==e.BACKSPACE||F==e.DELETE){C=l(D);if(C){if(F==e.LEFT||F==e.BACKSPACE){x=u(C,true);if(x&&m(x)==="false"){B.preventDefault();if(F==e.LEFT){y(x,true)}else{j.remove(x);return}}else{i(C)}}if(F==e.RIGHT||F==e.DELETE){x=u(C);if(x&&m(x)==="false"){B.preventDefault();if(F==e.RIGHT){y(x,false)}else{j.remove(x);return}}else{i(C)}}}if((F==e.BACKSPACE||F==e.DELETE)&&!t(F==e.BACKSPACE)){B.preventDefault();return false}}}}n.onMouseDown.addToTop(function(s,u){var t=s.selection.getNode();if(m(t)==="false"&&t==u.target){q()}});n.onMouseUp.addToTop(q);n.onKeyDown.addToTop(h);n.onKeyUp.addToTop(q)}tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(i,k){var h,g,j;function f(m,n){var o=j.length,p=n.content,l=tinymce.trim(g);if(n.format=="raw"){return}while(o--){p=p.replace(j[o],function(s){var r=arguments,q=r[r.length-2];if(q>0&&p.charAt(q-1)=='"'){return s}return'<span class="'+l+'" data-mce-content="'+m.dom.encode(r[0])+'">'+m.dom.encode(typeof(r[1])==="string"?r[1]:r[0])+"</span>"})}n.content=p}h=" "+tinymce.trim(i.getParam("noneditable_editable_class","mceEditable"))+" ";g=" "+tinymce.trim(i.getParam("noneditable_noneditable_class","mceNonEditable"))+" ";j=i.getParam("noneditable_regexp");if(j&&!j.length){j=[j]}i.onPreInit.add(function(){b(i);if(j){i.selection.onBeforeSetContent.add(f);i.onBeforeSetContent.add(f)}i.parser.addAttributeFilter("class",function(l){var m=l.length,n,o;while(m--){o=l[m];n=" "+o.attr("class")+" ";if(n.indexOf(h)!==-1){o.attr(d,"true")}else{if(n.indexOf(g)!==-1){o.attr(d,"false")}}}});i.serializer.addAttributeFilter(d,function(l,m){var n=l.length,o;while(n--){o=l[n];if(j&&o.attr("data-mce-content")){o.name="#text";o.type=3;o.raw=true;o.value=o.attr("data-mce-content")}else{o.attr(a,null);o.attr(d,null)}}});i.parser.addAttributeFilter(a,function(l,m){var n=l.length,o;while(n--){o=l[n];o.attr(d,o.attr(a));o.attr(a,null)}})})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js
index c87d241bd..c0efe749c 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js
@@ -261,12 +261,96 @@
selection.collapse(start);
}
+ function canDelete(backspace) {
+ var rng, container, offset, nonEditableParent;
+
+ function removeNodeIfNotParent(node) {
+ var parent = container;
+
+ while (parent) {
+ if (parent === node) {
+ return;
+ }
+
+ parent = parent.parentNode;
+ }
+
+ dom.remove(node);
+ moveSelection();
+ }
+
+ function isNextPrevTreeNodeNonEditable() {
+ var node, walker, nonEmptyElements = ed.schema.getNonEmptyElements();
+
+ walker = new tinymce.dom.TreeWalker(container, ed.getBody());
+ while (node = (backspace ? walker.prev() : walker.next())) {
+ // Found IMG/INPUT etc
+ if (nonEmptyElements[node.nodeName.toLowerCase()]) {
+ break;
+ }
+
+ // Found text node with contents
+ if (node.nodeType === 3 && tinymce.trim(node.nodeValue).length > 0) {
+ break;
+ }
+
+ // Found non editable node
+ if (getContentEditable(node) === "false") {
+ removeNodeIfNotParent(node);
+ return true;
+ }
+ }
+
+ // Check if the content node is within a non editable parent
+ if (getNonEditableParent(node)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ if (selection.isCollapsed()) {
+ rng = selection.getRng(true);
+ container = rng.startContainer;
+ offset = rng.startOffset;
+ container = getParentCaretContainer(container) || container;
+
+ // Is in noneditable parent
+ if (nonEditableParent = getNonEditableParent(container)) {
+ removeNodeIfNotParent(nonEditableParent);
+ return false;
+ }
+
+ // Check if the caret is in the middle of a text node
+ if (container.nodeType == 3 && (backspace ? offset > 0 : offset < container.nodeValue.length)) {
+ return true;
+ }
+
+ // Resolve container index
+ if (container.nodeType == 1) {
+ container = container.childNodes[offset] || container;
+ }
+
+ // Check if previous or next tree node is non editable then block the event
+ if (isNextPrevTreeNodeNonEditable()) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
startElement = selection.getStart()
endElement = selection.getEnd();
// Disable all key presses in contentEditable=false except delete or backspace
nonEditableParent = getNonEditableParent(startElement) || getNonEditableParent(endElement);
if (nonEditableParent && (keyCode < 112 || keyCode > 124) && keyCode != VK.DELETE && keyCode != VK.BACKSPACE) {
+ // Is Ctrl+c, Ctrl+v or Ctrl+x then use default browser behavior
+ if ((tinymce.isMac ? e.metaKey : e.ctrlKey) && (keyCode == 67 || keyCode == 88 || keyCode == 86)) {
+ return;
+ }
+
e.preventDefault();
// Arrow left/right select the element and collapse left/right
@@ -298,6 +382,7 @@
positionCaretOnElement(nonEditableParent, true);
} else {
dom.remove(nonEditableParent);
+ return;
}
} else {
removeCaretContainer(caretContainer);
@@ -315,23 +400,31 @@
positionCaretOnElement(nonEditableParent, false);
} else {
dom.remove(nonEditableParent);
+ return;
}
} else {
removeCaretContainer(caretContainer);
}
}
}
+
+ if ((keyCode == VK.BACKSPACE || keyCode == VK.DELETE) && !canDelete(keyCode == VK.BACKSPACE)) {
+ e.preventDefault();
+ return false;
+ }
}
}
};
- ed.onMouseDown.addToTop(function(ed, e){
- // prevent collapsing selection to caret when clicking in a non-editable section
+ ed.onMouseDown.addToTop(function(ed, e) {
var node = ed.selection.getNode();
+
if (getContentEditable(node) === "false" && node == e.target) {
- e.preventDefault();
+ // Expand selection on mouse down we can't block the default event since it's used for drag/drop
+ moveSelection();
}
});
+
ed.onMouseUp.addToTop(moveSelection);
ed.onKeyDown.addToTop(handleKey);
ed.onKeyUp.addToTop(moveSelection);
@@ -341,6 +434,31 @@
init : function(ed, url) {
var editClass, nonEditClass, nonEditableRegExps;
+ // Converts configured regexps to noneditable span items
+ function convertRegExpsToNonEditable(ed, args) {
+ var i = nonEditableRegExps.length, content = args.content, cls = tinymce.trim(nonEditClass);
+
+ // Don't replace the variables when raw is used for example on undo/redo
+ if (args.format == "raw") {
+ return;
+ }
+
+ while (i--) {
+ content = content.replace(nonEditableRegExps[i], function(match) {
+ var args = arguments, index = args[args.length - 2];
+
+ // Is value inside an attribute then don't replace
+ if (index > 0 && content.charAt(index - 1) == '"') {
+ return match;
+ }
+
+ return '<span class="' + cls + '" data-mce-content="' + ed.dom.encode(args[0]) + '">' + ed.dom.encode(typeof(args[1]) === "string" ? args[1] : args[0]) + '</span>';
+ });
+ }
+
+ args.content = content;
+ };
+
editClass = " " + tinymce.trim(ed.getParam("noneditable_editable_class", "mceEditable")) + " ";
nonEditClass = " " + tinymce.trim(ed.getParam("noneditable_noneditable_class", "mceNonEditable")) + " ";
@@ -354,26 +472,10 @@
handleContentEditableSelection(ed);
if (nonEditableRegExps) {
- ed.onBeforeSetContent.add(function(ed, args) {
- var i = nonEditableRegExps.length, content = args.content, cls = tinymce.trim(nonEditClass);
-
- // Don't replace the variables when raw is used for example on undo/redo
- if (args.format == "raw") {
- return;
- }
-
- while (i--) {
- content = content.replace(nonEditableRegExps[i], function() {
- var args = arguments;
-
- return '<span class="' + cls + '" data-mce-content="' + ed.dom.encode(args[0]) + '">' + ed.dom.encode(typeof(args[1]) === "string" ? args[1] : args[0]) + '</span>';
- });
- }
-
- args.content = content;
- });
+ ed.selection.onBeforeSetContent.add(convertRegExpsToNonEditable);
+ ed.onBeforeSetContent.add(convertRegExpsToNonEditable);
}
-
+
// Apply contentEditable true/false on elements with the noneditable/editable classes
ed.parser.addAttributeFilter('class', function(nodes) {
var i = nodes.length, className, node;
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js
index e47a5c630..be7eee8f1 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js
@@ -1 +1 @@
-(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"combined",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=b(d,"paste_text_sticky_default");function h(l,j){var k=d.dom,i;f.onPreProcess.dispatch(f,l);l.node=k.create("div",0,l.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){if(l.node.childNodes.length===1&&/^(p|h[1-6]|pre)$/i.test(l.node.firstChild.nodeName)&&l.content.indexOf("__MCE_ITEM__")===-1){k.remove(l.node.firstChild,true)}}}f.onPostProcess.dispatch(f,l);l.content=d.serializer.serialize(l.node,{getInner:1,forced_root_block:""});if((!j)&&(d.pasteAsPlainText)){f._insertPlainText(l.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(l.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:o.encode(r).replace(/\r?\n/g,"<br />")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="<p>"+o.encode(r).replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br />")+"</p>"}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9){d([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g,"$1"]]);d([[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*(&nbsp;)+/gi,/(&nbsp;|<br[^>]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"<p><strong>$1</strong></p>")}if(b(k,"paste_convert_middot_lists")){d([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/&quot;/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/<h[1-6][^>]*>/gi,"<p><strong>"],[/<\/h[1-6][^>]*>/gi,"</strong></p>"]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l<d.length;l++){o=d[l];j=h.getStyle(m,o);if(j){n[o]=j;k++}}}h.setAttrib(m,"style","");if(d&&k>0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f<d){n=tinymce.inArray(m,f);o=i.getParents(h.parentNode,s);h=o[o.length-1-n]||h}}}c(i.select("span",t),function(v){var p=v.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(g){var d=this.editor,e=b(d,"paste_text_linebreaktype"),i=b(d,"paste_text_replacements"),f=tinymce.is;function h(j){c(j,function(k){if(k.constructor==RegExp){g=g.replace(k,"")}else{g=g.replace(k[0],k[1])}})}if((typeof(g)==="string")&&(g.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(g)){h([/[\n\r]+/g])}else{h([/\r+/g])}h([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/<br[^>]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*<t[dh][^>]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/&nbsp;/gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"],[/\n{3,}/g,"\n\n"]]);g=d.dom.decode(tinymce.html.Entities.encodeRaw(g));if(f(i,"array")){h(i)}else{if(f(i,"string")){h(new RegExp(i,"gi"))}}if(e=="none"){h([[/\n+/g," "]])}else{if(e=="br"){h([[/\n/g,"<br />"]])}else{if(e=="p"){h([[/\n+/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"]])}else{h([[/\n\n/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"],[/\n/g,"<br />"]])}}}d.execCommand("mceInsertContent",false,g)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})(); \ No newline at end of file
+(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"combined",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=b(d,"paste_text_sticky_default");function h(l,j){var k=d.dom,i;f.onPreProcess.dispatch(f,l);l.node=k.create("div",0,l.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){if(l.node.childNodes.length===1&&/^(p|h[1-6]|pre)$/i.test(l.node.firstChild.nodeName)&&l.content.indexOf("__MCE_ITEM__")===-1){k.remove(l.node.firstChild,true)}}}f.onPostProcess.dispatch(f,l);l.content=d.serializer.serialize(l.node,{getInner:1,forced_root_block:""});if((!j)&&(d.pasteAsPlainText)){f._insertPlainText(l.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(l.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:o.encode(r).replace(/\r?\n/g,"<br />")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="<p>"+o.encode(r).replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br />")+"</p>"}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9&&/<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(e.content)){d([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g,"$1"]]);d([[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*(&nbsp;)+/gi,/(&nbsp;|<br[^>]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"<p><strong>$1</strong></p>")}if(b(k,"paste_convert_middot_lists")){d([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/&quot;/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/<h[1-6][^>]*>/gi,"<p><strong>"],[/<\/h[1-6][^>]*>/gi,"</strong></p>"]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l<d.length;l++){o=d[l];j=h.getStyle(m,o);if(j){n[o]=j;k++}}}h.setAttrib(m,"style","");if(d&&k>0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f<d){n=tinymce.inArray(m,f);o=i.getParents(h.parentNode,s);h=o[o.length-1-n]||h}}}c(i.select("span",t),function(v){var p=v.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(g){var d=this.editor,e=b(d,"paste_text_linebreaktype"),i=b(d,"paste_text_replacements"),f=tinymce.is;function h(j){c(j,function(k){if(k.constructor==RegExp){g=g.replace(k,"")}else{g=g.replace(k[0],k[1])}})}if((typeof(g)==="string")&&(g.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(g)){h([/[\n\r]+/g])}else{h([/\r+/g])}h([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/<br[^>]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*<t[dh][^>]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/&nbsp;/gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"],[/\n{3,}/g,"\n\n"]]);g=d.dom.decode(tinymce.html.Entities.encodeRaw(g));if(f(i,"array")){h(i)}else{if(f(i,"string")){h(new RegExp(i,"gi"))}}if(e=="none"){h([[/\n+/g," "]])}else{if(e=="br"){h([[/\n/g,"<br />"]])}else{if(e=="p"){h([[/\n+/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"]])}else{h([[/\n\n/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"],[/\n/g,"<br />"]])}}}d.execCommand("mceInsertContent",false,g)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js
index 73fe7fe9a..9f1c35476 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js
@@ -359,7 +359,7 @@
}
// IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
- if (tinymce.isIE && document.documentMode >= 9) {
+ if (tinymce.isIE && document.documentMode >= 9 && /<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(o.content)) {
// IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
process([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g, '$1']]);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js
index 42a82d112..2c5129161 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js
@@ -1 +1 @@
-(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(t){n=c.select(":input:enabled,*[tabindex]");function s(v){return v.nodeName==="BODY"||(v.type!="hidden"&&!(v.style.display=="none")&&!(v.style.visibility=="hidden")&&s(v.parentNode))}function i(v){return v.attributes.tabIndex.specified||v.nodeName=="INPUT"||v.nodeName=="TEXTAREA"}function u(){return tinymce.isIE6||tinymce.isIE7}function r(v){return((!u()||i(v)))&&v.getAttribute("tabindex")!="-1"&&s(v)}d(n,function(w,v){if(w.id==l.id){j=v;return false}});if(t>0){for(m=j+1;m<n.length;m++){if(r(n[m])){return n[m]}}}else{for(m=j-1;m>=0;m--){if(r(n[m])){return n[m]}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(n.id&&(l=tinymce.get(n.id||n.name))){l.focus()}else{window.setTimeout(function(){if(!tinymce.isWebKit){window.focus()}n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})(); \ No newline at end of file
+(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(t){n=c.select(":input:enabled,*[tabindex]:not(iframe)");function s(v){return v.nodeName==="BODY"||(v.type!="hidden"&&!(v.style.display=="none")&&!(v.style.visibility=="hidden")&&s(v.parentNode))}function i(v){return v.attributes.tabIndex.specified||v.nodeName=="INPUT"||v.nodeName=="TEXTAREA"}function u(){return tinymce.isIE6||tinymce.isIE7}function r(v){return((!u()||i(v)))&&v.getAttribute("tabindex")!="-1"&&s(v)}d(n,function(w,v){if(w.id==l.id){j=v;return false}});if(t>0){for(m=j+1;m<n.length;m++){if(r(n[m])){return n[m]}}}else{for(m=j-1;m>=0;m--){if(r(n[m])){return n[m]}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(n.id&&(l=tinymce.get(n.id||n.name))){l.focus()}else{window.setTimeout(function(){if(!tinymce.isWebKit){window.focus()}n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js
index a1579c85f..94f45320d 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js
@@ -22,7 +22,7 @@
var x, i, f, el, v;
function find(d) {
- el = DOM.select(':input:enabled,*[tabindex]');
+ el = DOM.select(':input:enabled,*[tabindex]:not(iframe)');
function canSelectRecursive(e) {
return e.nodeName==="BODY" || (e.type != 'hidden' &&
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js b/library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js
index d6f329059..02ecf22c8 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js
@@ -137,7 +137,7 @@ function updateAction() {
do {
if (cell == tdElm)
break;
- col += cell.getAttribute("colspan");
+ col += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1;
} while ((cell = nextCell(cell)) != null);
for (var i=0; i<rows.length; i++) {
@@ -152,7 +152,7 @@ function updateAction() {
cell = updateCell(cell, true);
break;
}
- curr += cell.getAttribute("colspan");
+ curr += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1;
} while ((cell = nextCell(cell)) != null);
}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css
index 17b9aeff1..76bc92b50 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css
+++ b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css
@@ -1,6 +1,6 @@
-p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, blockquote, address, pre {display: block; padding-top: 10px; border: 1px dashed #BBB; background: transparent no-repeat}
-p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, address, pre {margin-left: 3px}
-section, article, address, hgroup, aside {margin: 1em 0 0 3px}
+p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, blockquote, address, pre, figure {display: block; padding-top: 10px; border: 1px dashed #BBB; background: transparent no-repeat}
+p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, address, pre, figure {margin-left: 3px}
+section, article, address, hgroup, aside, figure {margin: 0 0 1em 3px}
p {background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}
h1 {background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}
@@ -17,3 +17,5 @@ address {background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH
pre {background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}
hgroup {background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}
aside {background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}
+figure {background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}
+figcaption {border: 1px dashed #BBB}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js
index 62cc2e4ce..c65eaf2b4 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.VisualBlocks",{init:function(a,b){var c;if(!window.NodeList){return}a.addCommand("mceVisualBlocks",function(){var e=a.dom,d;if(!c){c=e.uniqueId();d=e.create("link",{id:c,rel:"stylesheet",href:b+"/css/visualblocks.css"});a.getDoc().getElementsByTagName("head")[0].appendChild(d)}else{d=e.get(c);d.disabled=!d.disabled}a.controlManager.setActive("visualblocks",!d.disabled)});a.addButton("visualblocks",{title:"visualblocks.desc",cmd:"mceVisualBlocks"});a.onInit.add(function(){if(a.settings.visualblocks_default_state){a.execCommand("mceVisualBlocks")}})},getInfo:function(){return{longname:"Visual blocks",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualblocks",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("visualblocks",tinymce.plugins.VisualBlocks)})(); \ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.VisualBlocks",{init:function(a,b){var c;if(!window.NodeList){return}a.addCommand("mceVisualBlocks",function(){var e=a.dom,d;if(!c){c=e.uniqueId();d=e.create("link",{id:c,rel:"stylesheet",href:b+"/css/visualblocks.css"});a.getDoc().getElementsByTagName("head")[0].appendChild(d)}else{d=e.get(c);d.disabled=!d.disabled}a.controlManager.setActive("visualblocks",!d.disabled)});a.addButton("visualblocks",{title:"visualblocks.desc",cmd:"mceVisualBlocks"});a.onInit.add(function(){if(a.settings.visualblocks_default_state){a.execCommand("mceVisualBlocks",false,null,{skip_focus:true})}})},getInfo:function(){return{longname:"Visual blocks",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualblocks",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("visualblocks",tinymce.plugins.VisualBlocks)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js
index e74c0bdc0..b9d2ab2e1 100644
--- a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js
+++ b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js
@@ -42,7 +42,7 @@
ed.onInit.add(function() {
if (ed.settings.visualblocks_default_state) {
- ed.execCommand('mceVisualBlocks');
+ ed.execCommand('mceVisualBlocks', false, null, {skip_focus : true});
}
});
},
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm
index ad1bb0f6c..b625531a6 100644
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm
+++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm
@@ -62,12 +62,8 @@
<div class="mceActionPanel">
<input type="submit" id="insert" name="insert" value="{#apply}" />
-
- <div id="preview"></div>
-
- <div id="previewblock">
- <label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" class="text mceFocus" aria-required="true" />
- </div>
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();"/>
+ <div id="preview_wrapper"><div id="previewblock"><label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" class="text mceFocus" aria-required="true" /></div><span id="preview"></span></div>
</div>
</form>
</body>
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js
index a88701812..5e9deec89 100644
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js
+++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js
@@ -1 +1 @@
-(function(h){var i=h.DOM,g=h.dom.Event,c=h.extend,f=h.each,a=h.util.Cookie,e,d=h.explode;function b(m,k){var q,p=m.dom,n="",o,l;previewStyles=m.settings.preview_styles;if(previewStyles===false){return""}if(!previewStyles){previewStyles="font-family font-size font-weight text-decoration text-transform color background-color"}function j(r){return r.replace(/%(\w+)/g,"")}name=k.block||k.inline||"span";q=p.create(name);f(k.styles,function(s,r){s=j(s);if(s){p.setStyle(q,r,s)}});f(k.attributes,function(s,r){s=j(s);if(s){p.setAttrib(q,r,s)}});f(k.classes,function(r){r=j(r);if(!p.hasClass(q,r)){p.addClass(q,r)}});p.setStyles(q,{position:"absolute",left:-65535});m.getBody().appendChild(q);o=p.getStyle(m.getBody(),"fontSize",true);o=/px$/.test(o)?parseInt(o,10):0;f(previewStyles.split(" "),function(r){var s=p.getStyle(q,r,true);if(r=="font-size"){if(/em|%$/.test(s)){if(o===0){return}s=parseFloat(s,10)/(/%$/.test(s)?100:1);s=(s*o)+"px"}}n+=r+":"+s+";"});p.remove(q);return n}h.ThemeManager.requireLangPack("advanced");h.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(k,l){var m=this,n,j,p;m.editor=k;m.url=l;m.onResolveName=new h.util.Dispatcher(this);k.forcedHighContrastMode=k.settings.detect_highcontrast&&m._isHighContrast();k.settings.skin=k.forcedHighContrastMode?"highcontrast":k.settings.skin;m.settings=n=c({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:k.settings.readonly},k.settings);if(!n.font_size_style_values){n.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(h.is(n.theme_advanced_font_sizes,"string")){n.font_size_style_values=h.explode(n.font_size_style_values);n.font_size_classes=h.explode(n.font_size_classes||"");p={};k.settings.theme_advanced_font_sizes=n.theme_advanced_font_sizes;f(k.getParam("theme_advanced_font_sizes","","hash"),function(r,q){var o;if(q==r&&r>=1&&r<=7){q=r+" ("+m.sizes[r-1]+"pt)";o=n.font_size_classes[r-1];r=n.font_size_style_values[r-1]||(m.sizes[r-1]+"pt")}if(/^\s*\./.test(r)){o=r.replace(/\./g,"")}p[q]=o?{"class":o}:{fontSize:r}});n.theme_advanced_font_sizes=p}if((j=n.theme_advanced_path_location)&&j!="none"){n.theme_advanced_statusbar_location=n.theme_advanced_path_location}if(n.theme_advanced_statusbar_location=="none"){n.theme_advanced_statusbar_location=0}if(k.settings.content_css!==false){k.contentCSS.push(k.baseURI.toAbsolute(l+"/skins/"+k.settings.skin+"/content.css"))}k.onInit.add(function(){if(!k.settings.readonly){k.onNodeChange.add(m._nodeChanged,m);k.onKeyUp.add(m._updateUndoStatus,m);k.onMouseUp.add(m._updateUndoStatus,m);k.dom.bind(k.dom.getRoot(),"dragend",function(){m._updateUndoStatus(k)})}});k.onSetProgressState.add(function(r,o,s){var t,u=r.id,q;if(o){m.progressTimer=setTimeout(function(){t=r.getContainer();t=t.insertBefore(i.create("DIV",{style:"position:relative"}),t.firstChild);q=i.get(r.id+"_tbl");i.add(t,"div",{id:u+"_blocker","class":"mceBlocker",style:{width:q.clientWidth+2,height:q.clientHeight+2}});i.add(t,"div",{id:u+"_progress","class":"mceProgress",style:{left:q.clientWidth/2,top:q.clientHeight/2}})},s||0)}else{i.remove(u+"_blocker");i.remove(u+"_progress");clearTimeout(m.progressTimer)}});i.loadCSS(n.editor_css?k.documentBaseURI.toAbsolute(n.editor_css):l+"/skins/"+k.settings.skin+"/ui.css");if(n.skin_variant){i.loadCSS(l+"/skins/"+k.settings.skin+"/ui_"+n.skin_variant+".css")}},_isHighContrast:function(){var j,k=i.add(i.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});j=(i.getStyle(k,"background-color",true)+"").toLowerCase().replace(/ /g,"");i.remove(k);return j!="rgb(171,239,86)"&&j!="#abef56"},createControl:function(m,j){var k,l;if(l=j.createControl(m)){return l}switch(m){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((k=this.controls[m])){return j.createButton(m,{title:"advanced."+k[0],cmd:k[1],ui:k[2],value:k[3]})}},execCommand:function(l,k,m){var j=this["_"+l];if(j){j.call(this,k,m);return true}return false},_importClasses:function(l){var j=this.editor,k=j.controlManager.get("styleselect");if(k.getLength()==0){f(j.dom.getClasses(),function(q,m){var p="style_"+m,n;n={inline:"span",attributes:{"class":q["class"]},selector:"*"};j.formatter.register(p,n);k.add(q["class"],p,{style:function(){return b(j,n)}})})}},_createStyleSelect:function(o){var l=this,j=l.editor,k=j.controlManager,m;m=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(q){var r,n=[],p;f(m.items,function(s){n.push(s.value)});j.focus();j.undoManager.add();r=j.formatter.matchAll(n);h.each(r,function(s){if(!q||s==q){if(s){j.formatter.remove(s)}p=true}});if(!p){j.formatter.apply(q)}j.undoManager.add();j.nodeChanged();return false}});j.onPreInit.add(function(){var p=0,n=j.getParam("style_formats");if(n){f(n,function(q){var r,s=0;f(q,function(){s++});if(s>1){r=q.name=q.name||"style_"+(p++);j.formatter.register(r,q);m.add(q.title,r,{style:function(){return b(j,q)}})}else{m.add(q.title)}})}else{f(j.getParam("theme_advanced_styles","","hash"),function(t,s){var r,q;if(t){r="style_"+(p++);q={inline:"span",classes:t,selector:"*"};j.formatter.register(r,q);m.add(l.editor.translate(s),r,{style:function(){return b(j,q)}})}})}});if(m.getLength()==0){m.onPostRender.add(function(p,q){if(!m.NativeListBox){g.add(q.id+"_text","focus",l._importClasses,l);g.add(q.id+"_text","mousedown",l._importClasses,l);g.add(q.id+"_open","focus",l._importClasses,l);g.add(q.id+"_open","mousedown",l._importClasses,l)}else{g.add(q.id,"focus",l._importClasses,l)}})}return m},_createFontSelect:function(){var l,k=this,j=k.editor;l=j.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(m){var n=l.items[l.selectedIndex];if(!m&&n){j.execCommand("FontName",false,n.value);return}j.execCommand("FontName",false,m);l.select(function(o){return m==o});if(n&&n.value==m){l.select(null)}return false}});if(l){f(j.getParam("theme_advanced_fonts",k.settings.theme_advanced_fonts,"hash"),function(n,m){l.add(j.translate(m),n,{style:n.indexOf("dings")==-1?"font-family:"+n:""})})}return l},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(o){var p=n.items[n.selectedIndex];if(!o&&p){p=p.value;if(p["class"]){k.formatter.toggle("fontsize_class",{value:p["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,p.fontSize)}return}if(o["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}n.select(function(q){return o==q});if(p&&(p.value.fontSize==o.fontSize||p.value["class"]&&p.value["class"]==o["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(p,o){var q=p.fontSize;if(q>=1&&q<=7){q=m.sizes[parseInt(q)-1]+"pt"}n.add(o,p,{style:"font-size:"+q,"class":"mceFontSize"+(l++)+(" "+(p["class"]||""))})})}return n},_createBlockFormats:function(){var l,j={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},k=this;l=k.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(m){k.editor.execCommand("FormatBlock",false,m);return false}});if(l){f(k.editor.getParam("theme_advanced_blockformats",k.settings.theme_advanced_blockformats,"hash"),function(n,m){l.add(k.editor.translate(m!=n?m:j[n]),n,{"class":"mce_formatPreview mce_"+n,style:function(){return b(k.editor,{block:n})}})})}return l},_createForeColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_text_colors){m.colors=j}if(l.theme_advanced_default_foreground_color){m.default_color=l.theme_advanced_default_foreground_color}m.title="advanced.forecolor_desc";m.cmd="ForeColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("forecolor",m);return n},_createBackColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_background_colors){m.colors=j}if(l.theme_advanced_default_background_color){m.default_color=l.theme_advanced_default_background_color}m.title="advanced.backcolor_desc";m.cmd="HiliteColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("backcolor",m);return n},renderUI:function(l){var q,m,r,w=this,u=w.editor,x=w.settings,v,k,j;if(u.settings){u.settings.aria_label=x.aria_label+u.getLang("advanced.help_shortcut")}q=k=i.create("span",{role:"application","aria-labelledby":u.id+"_voice",id:u.id+"_parent","class":"mceEditor "+u.settings.skin+"Skin"+(x.skin_variant?" "+u.settings.skin+"Skin"+w._ufirst(x.skin_variant):"")});i.add(q,"span",{"class":"mceVoiceLabel",style:"display:none;",id:u.id+"_voice"},x.aria_label);if(!i.boxModel){q=i.add(q,"div",{"class":"mceOldBoxModel"})}q=v=i.add(q,"table",{role:"presentation",id:u.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});q=r=i.add(q,"tbody");switch((x.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":m=w._rowLayout(x,r,l);break;case"customlayout":m=u.execCallback("theme_advanced_custom_layout",x,r,l,k);break;default:m=w._simpleLayout(x,r,l,k)}q=l.targetNode;j=v.rows;i.addClass(j[0],"mceFirst");i.addClass(j[j.length-1],"mceLast");f(i.select("tr",r),function(o){i.addClass(o.firstChild,"mceFirst");i.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(i.get(x.theme_advanced_toolbar_container)){i.get(x.theme_advanced_toolbar_container).appendChild(k)}else{i.insertAfter(k,q)}g.add(u.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){w._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return false}});if(!u.getParam("accessibility_focus")){g.add(i.add(k,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(u.id).focus()})}if(x.theme_advanced_toolbar_location=="external"){l.deltaHeight=0}w.deltaHeight=l.deltaHeight;l.targetNode=null;u.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){if(h.isWebKit){window.focus()}w.toolbarGroup.focus();return g.cancel(n)}else{if(n.keyCode===o){i.get(p.id+"_path_row").focus();return g.cancel(n)}}}});u.addShortcut("alt+0","","mceShortcuts",w);return{iframeContainer:m,editorContainer:u.id+"_parent",sizeContainer:v,deltaHeight:l.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:h.majorVersion+"."+h.minorVersion}},resizeBy:function(j,k){var l=i.get(this.editor.id+"_ifr");this.resizeTo(l.clientWidth+j,l.clientHeight+k)},resizeTo:function(j,n,l){var k=this.editor,m=this.settings,o=i.get(k.id+"_tbl"),p=i.get(k.id+"_ifr");j=Math.max(m.theme_advanced_resizing_min_width||100,j);n=Math.max(m.theme_advanced_resizing_min_height||100,n);j=Math.min(m.theme_advanced_resizing_max_width||65535,j);n=Math.min(m.theme_advanced_resizing_max_height||65535,n);i.setStyle(o,"height","");i.setStyle(p,"height",n);if(m.theme_advanced_resize_horizontal){i.setStyle(o,"width","");i.setStyle(p,"width",j);if(j<o.clientWidth){j=o.clientWidth;i.setStyle(p,"width",o.clientWidth)}}if(l&&m.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+k.id+"_size",{cw:j,ch:n})}},destroy:function(){var j=this.editor.id;g.clear(j+"_resize");g.clear(j+"_path_row");g.clear(j+"_external_close")},_simpleLayout:function(z,u,l,j){var y=this,v=y.editor,w=z.theme_advanced_toolbar_location,q=z.theme_advanced_statusbar_location,m,k,r,x;if(z.readonly){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});return k}if(w=="top"){y._addToolbars(u,l)}if(w=="external"){m=x=i.create("div",{style:"position:relative"});m=i.add(m,"div",{id:v.id+"_external","class":"mceExternalToolbar"});i.add(m,"a",{id:v.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});m=i.add(m,"table",{id:v.id+"_tblext",cellSpacing:0,cellPadding:0});r=i.add(m,"tbody");if(j.firstChild.className=="mceOldBoxModel"){j.firstChild.appendChild(x)}else{j.insertBefore(x,j.firstChild)}y._addToolbars(r,l);v.onMouseUp.add(function(){var o=i.get(v.id+"_external");i.show(o);i.hide(e);var n=g.add(v.id+"_external_close","click",function(){i.hide(v.id+"_external");g.remove(v.id+"_external_close","click",n)});i.show(o);i.setStyle(o,"top",0-i.getRect(v.id+"_tblext").h-1);i.hide(o);i.show(o);o.style.filter="";e=v.id+"_external";o=null})}if(q=="top"){y._addStatusBar(u,l)}if(!z.theme_advanced_toolbar_container){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"})}if(w=="bottom"){y._addToolbars(u,l)}if(q=="bottom"){y._addStatusBar(u,l)}return k},_rowLayout:function(x,p,l){var w=this,q=w.editor,v,y,j=q.controlManager,m,k,u,r;v=x.theme_advanced_containers_default_class||"";y=x.theme_advanced_containers_default_align||"center";f(d(x.theme_advanced_containers||""),function(s,o){var n=x["theme_advanced_container_"+s]||"";switch(s.toLowerCase()){case"mceeditor":m=i.add(p,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":w._addStatusBar(p,l);break;default:r=(x["theme_advanced_container_"+s+"_align"]||y).toLowerCase();r="mce"+w._ufirst(r);m=i.add(i.add(p,"tr"),"td",{"class":"mceToolbar "+(x["theme_advanced_container_"+s+"_class"]||v)+" "+r||y});u=j.createToolbar("toolbar"+o);w._addControls(n,u);i.setHTML(m,u.renderHTML());l.deltaHeight-=x.theme_advanced_row_height}});return k},_addControls:function(k,j){var l=this,m=l.settings,n,o=l.editor.controlManager;if(m.theme_advanced_disable&&!l._disabled){n={};f(d(m.theme_advanced_disable),function(p){n[p]=1});l._disabled=n}else{n=l._disabled}f(d(k),function(q){var p;if(n&&n[q]){return}if(q=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(r){r=l.createControl(r,o);if(r){j.add(r)}});return}p=l.createControl(q,o);if(p){j.add(p)}})},_addToolbars:function(x,k){var A=this,p,m,r=A.editor,B=A.settings,z,j=r.controlManager,u,l,q=[],y,w;w=j.createToolbarGroup("toolbargroup",{name:r.getLang("advanced.toolbar"),tab_focus_toolbar:r.getParam("theme_advanced_tab_focus_toolbar")});A.toolbarGroup=w;y=B.theme_advanced_toolbar_align.toLowerCase();y="mce"+A._ufirst(y);l=i.add(i.add(x,"tr",{role:"presentation"}),"td",{"class":"mceToolbar "+y,role:"presentation"});for(p=1;(z=B["theme_advanced_buttons"+p]);p++){m=j.createToolbar("toolbar"+p,{"class":"mceToolbarRow"+p});if(B["theme_advanced_buttons"+p+"_add"]){z+=","+B["theme_advanced_buttons"+p+"_add"]}if(B["theme_advanced_buttons"+p+"_add_before"]){z=B["theme_advanced_buttons"+p+"_add_before"]+","+z}A._addControls(z,m);w.add(m);k.deltaHeight-=B.theme_advanced_row_height}q.push(w.renderHTML());q.push(i.createHTML("a",{href:"#",accesskey:"z",title:r.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+r.id+"').focus();"},"<!-- IE -->"));i.setHTML(l,q.join(""))},_addStatusBar:function(p,k){var l,w=this,q=w.editor,x=w.settings,j,u,v,m;l=i.add(p,"tr");l=m=i.add(l,"td",{"class":"mceStatusbar"});l=i.add(l,"div",{id:q.id+"_path_row",role:"group","aria-labelledby":q.id+"_path_voice"});if(x.theme_advanced_path){i.add(l,"span",{id:q.id+"_path_voice"},q.translate("advanced.path"));i.add(l,"span",{},": ")}else{i.add(l,"span",{},"&#160;")}if(x.theme_advanced_resizing){i.add(m,"a",{id:q.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(x.theme_advanced_resizing_use_cookie){q.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+q.id+"_size"),r=i.get(q.id+"_tbl");if(!n){return}w.resizeTo(n.cw,n.ch)})}q.onPostRender.add(function(){g.add(q.id+"_resize","click",function(n){n.preventDefault()});g.add(q.id+"_resize","mousedown",function(E){var t,r,s,o,D,A,B,G,n,F,y;function z(H){H.preventDefault();n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F)}function C(H){g.remove(i.doc,"mousemove",t);g.remove(q.getDoc(),"mousemove",r);g.remove(i.doc,"mouseup",s);g.remove(q.getDoc(),"mouseup",o);n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F,true)}E.preventDefault();D=E.screenX;A=E.screenY;y=i.get(w.editor.id+"_ifr");B=n=y.clientWidth;G=F=y.clientHeight;t=g.add(i.doc,"mousemove",z);r=g.add(q.getDoc(),"mousemove",z);s=g.add(i.doc,"mouseup",C);o=g.add(q.getDoc(),"mouseup",C)})})}k.deltaHeight-=21;l=p=null},_updateUndoStatus:function(k){var j=k.controlManager,l=k.undoManager;j.setDisabled("undo",!l.hasUndo()&&!l.typing);j.setDisabled("redo",!l.hasRedo())},_nodeChanged:function(o,u,E,r,F){var z=this,D,G=0,y,H,A=z.settings,x,l,w,C,m,k,j;h.each(z.stateControls,function(n){u.setActive(n,o.queryCommandState(z.controls[n][1]))});function q(p){var s,n=F.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s<n.length;s++){if(t(n[s])){return n[s]}}}u.setActive("visualaid",o.hasVisual);z._updateUndoStatus(o);u.setDisabled("outdent",!o.queryCommandState("Outdent"));D=q("A");if(H=u.get("link")){if(!D||!D.name){H.setDisabled(!D&&r);H.setActive(!!D)}}if(H=u.get("unlink")){H.setDisabled(!D&&r);H.setActive(!!D&&!D.name)}if(H=u.get("anchor")){H.setActive(!r&&!!D&&D.name)}D=q("IMG");if(H=u.get("image")){H.setActive(!r&&!!D&&E.className.indexOf("mceItem")==-1)}if(H=u.get("styleselect")){z._importClasses();k=[];f(H.items,function(n){k.push(n.value)});j=o.formatter.matchAll(k);H.select(j[0]);h.each(j,function(p,n){if(n>0){H.mark(p)}})}if(H=u.get("formatselect")){D=q(i.isBlock);if(D){H.select(D.nodeName.toLowerCase())}}q(function(p){if(p.nodeName==="SPAN"){if(!x&&p.className){x=p.className}}if(o.dom.is(p,A.theme_advanced_font_selector)){if(!l&&p.style.fontSize){l=p.style.fontSize}if(!w&&p.style.fontFamily){w=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!C&&p.style.color){C=p.style.color}if(!m&&p.style.backgroundColor){m=p.style.backgroundColor}}return false});if(H=u.get("fontselect")){H.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==w})}if(H=u.get("fontsizeselect")){if(A.theme_advanced_runtime_fontsize&&!l&&!x){l=o.dom.getStyle(E,"fontSize",true)}H.select(function(n){if(n.fontSize&&n.fontSize===l){return true}if(n["class"]&&n["class"]===x){return true}})}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_path&&A.theme_advanced_statusbar_location){D=i.get(o.id+"_path")||i.add(o.id+"_path_row","span",{id:o.id+"_path"});if(z.statusKeyboardNavigation){z.statusKeyboardNavigation.destroy();z.statusKeyboardNavigation=null}i.setHTML(D,"");q(function(I){var p=I.nodeName.toLowerCase(),s,v,t="";if(I.nodeType!=1||p==="br"||I.getAttribute("data-mce-bogus")||i.hasClass(I,"mceItemHidden")||i.hasClass(I,"mceItemRemoved")){return}if(h.isIE&&I.scopeName!=="HTML"){p=I.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(y=i.getAttrib(I,"src")){t+="src: "+y+" "}break;case"a":if(y=i.getAttrib(I,"name")){t+="name: "+y+" ";p+="#"+y}if(y=i.getAttrib(I,"href")){t+="href: "+y+" "}break;case"font":if(y=i.getAttrib(I,"face")){t+="font: "+y+" "}if(y=i.getAttrib(I,"size")){t+="size: "+y+" "}if(y=i.getAttrib(I,"color")){t+="color: "+y+" "}break;case"span":if(y=i.getAttrib(I,"style")){t+="style: "+y+" "}break}if(y=i.getAttrib(I,"id")){t+="id: "+y+" "}if(y=I.className){y=y.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(y){t+="class: "+y+" ";if(i.isBlock(I)||p=="img"||p=="span"){p+="."+y}}}p=p.replace(/(html:)/g,"");p={name:p,node:I,title:t};z.onResolveName.dispatch(z,p);t=p.title;p=p.name;v=i.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(G++)},p);if(D.hasChildNodes()){D.insertBefore(i.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),D.firstChild);D.insertBefore(v,D.firstChild)}else{D.appendChild(v)}},o.getBody());if(i.select("a",D).length>0){z.statusKeyboardNavigation=new h.ui.KeyboardNavigation({root:o.id+"_path_row",items:i.select("a",D),excludeFromTabOrder:true,onCancel:function(){o.focus()}},i)}}},_sel:function(j){this.editor.execCommand("mceSelectNodeDepth",false,j)},_mceInsertAnchor:function(l,k){var j=this.editor;j.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(j.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(j.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var j=this.editor;j.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(j.getLang("advanced.charmap_delta_width",0)),height:265+parseInt(j.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var j=this.editor;j.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var j=this.editor;j.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(l,k){var j=this.editor;k=k||{};j.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(j.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(j.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:k.color,func:k.func,theme_url:this.url})},_mceCodeEditor:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(j.getParam("theme_advanced_source_editor_width",720)),height:parseInt(j.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(k,l){var j=this.editor;if(j.dom.getAttrib(j.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}j.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(j.getLang("advanced.image_delta_width",0)),height:275+parseInt(j.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(j.getLang("advanced.link_delta_width",0)),height:200+parseInt(j.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var j=this.editor;j.windowManager.confirm("advanced.newdocument",function(k){if(k){j.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var j=this;this._mceColorPicker(0,{color:j.fgColor,func:function(k){j.fgColor=k;j.editor.execCommand("ForeColor",false,k)}})},_mceBackColor:function(){var j=this;this._mceColorPicker(0,{color:j.bgColor,func:function(k){j.bgColor=k;j.editor.execCommand("HiliteColor",false,k)}})},_ufirst:function(j){return j.substring(0,1).toUpperCase()+j.substring(1)}});h.ThemeManager.add("advanced",h.themes.AdvancedTheme)}(tinymce)); \ No newline at end of file
+(function(h){var i=h.DOM,g=h.dom.Event,c=h.extend,f=h.each,a=h.util.Cookie,e,d=h.explode;function b(m,k){var q,p=m.dom,n="",o,l;previewStyles=m.settings.preview_styles;if(previewStyles===false){return""}if(!previewStyles){previewStyles="font-family font-size font-weight text-decoration text-transform color background-color"}function j(r){return r.replace(/%(\w+)/g,"")}name=k.block||k.inline||"span";q=p.create(name);f(k.styles,function(s,r){s=j(s);if(s){p.setStyle(q,r,s)}});f(k.attributes,function(s,r){s=j(s);if(s){p.setAttrib(q,r,s)}});f(k.classes,function(r){r=j(r);if(!p.hasClass(q,r)){p.addClass(q,r)}});p.setStyles(q,{position:"absolute",left:-65535});m.getBody().appendChild(q);o=p.getStyle(m.getBody(),"fontSize",true);o=/px$/.test(o)?parseInt(o,10):0;f(previewStyles.split(" "),function(r){var s=p.getStyle(q,r,true);if(r=="background-color"&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(s)){s=p.getStyle(m.getBody(),r,true);if(p.toHex(s).toLowerCase()=="#ffffff"){return}}if(r=="font-size"){if(/em|%$/.test(s)){if(o===0){return}s=parseFloat(s,10)/(/%$/.test(s)?100:1);s=(s*o)+"px"}}n+=r+":"+s+";"});p.remove(q);return n}h.ThemeManager.requireLangPack("advanced");h.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(k,l){var m=this,n,j,p;m.editor=k;m.url=l;m.onResolveName=new h.util.Dispatcher(this);k.forcedHighContrastMode=k.settings.detect_highcontrast&&m._isHighContrast();k.settings.skin=k.forcedHighContrastMode?"highcontrast":k.settings.skin;m.settings=n=c({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:k.settings.readonly},k.settings);if(!n.font_size_style_values){n.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(h.is(n.theme_advanced_font_sizes,"string")){n.font_size_style_values=h.explode(n.font_size_style_values);n.font_size_classes=h.explode(n.font_size_classes||"");p={};k.settings.theme_advanced_font_sizes=n.theme_advanced_font_sizes;f(k.getParam("theme_advanced_font_sizes","","hash"),function(r,q){var o;if(q==r&&r>=1&&r<=7){q=r+" ("+m.sizes[r-1]+"pt)";o=n.font_size_classes[r-1];r=n.font_size_style_values[r-1]||(m.sizes[r-1]+"pt")}if(/^\s*\./.test(r)){o=r.replace(/\./g,"")}p[q]=o?{"class":o}:{fontSize:r}});n.theme_advanced_font_sizes=p}if((j=n.theme_advanced_path_location)&&j!="none"){n.theme_advanced_statusbar_location=n.theme_advanced_path_location}if(n.theme_advanced_statusbar_location=="none"){n.theme_advanced_statusbar_location=0}if(k.settings.content_css!==false){k.contentCSS.push(k.baseURI.toAbsolute(l+"/skins/"+k.settings.skin+"/content.css"))}k.onInit.add(function(){if(!k.settings.readonly){k.onNodeChange.add(m._nodeChanged,m);k.onKeyUp.add(m._updateUndoStatus,m);k.onMouseUp.add(m._updateUndoStatus,m);k.dom.bind(k.dom.getRoot(),"dragend",function(){m._updateUndoStatus(k)})}});k.onSetProgressState.add(function(r,o,s){var t,u=r.id,q;if(o){m.progressTimer=setTimeout(function(){t=r.getContainer();t=t.insertBefore(i.create("DIV",{style:"position:relative"}),t.firstChild);q=i.get(r.id+"_tbl");i.add(t,"div",{id:u+"_blocker","class":"mceBlocker",style:{width:q.clientWidth+2,height:q.clientHeight+2}});i.add(t,"div",{id:u+"_progress","class":"mceProgress",style:{left:q.clientWidth/2,top:q.clientHeight/2}})},s||0)}else{i.remove(u+"_blocker");i.remove(u+"_progress");clearTimeout(m.progressTimer)}});i.loadCSS(n.editor_css?k.documentBaseURI.toAbsolute(n.editor_css):l+"/skins/"+k.settings.skin+"/ui.css");if(n.skin_variant){i.loadCSS(l+"/skins/"+k.settings.skin+"/ui_"+n.skin_variant+".css")}},_isHighContrast:function(){var j,k=i.add(i.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});j=(i.getStyle(k,"background-color",true)+"").toLowerCase().replace(/ /g,"");i.remove(k);return j!="rgb(171,239,86)"&&j!="#abef56"},createControl:function(m,j){var k,l;if(l=j.createControl(m)){return l}switch(m){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((k=this.controls[m])){return j.createButton(m,{title:"advanced."+k[0],cmd:k[1],ui:k[2],value:k[3]})}},execCommand:function(l,k,m){var j=this["_"+l];if(j){j.call(this,k,m);return true}return false},_importClasses:function(l){var j=this.editor,k=j.controlManager.get("styleselect");if(k.getLength()==0){f(j.dom.getClasses(),function(q,m){var p="style_"+m,n;n={inline:"span",attributes:{"class":q["class"]},selector:"*"};j.formatter.register(p,n);k.add(q["class"],p,{style:function(){return b(j,n)}})})}},_createStyleSelect:function(o){var l=this,j=l.editor,k=j.controlManager,m;m=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(q){var r,n=[],p;f(m.items,function(s){n.push(s.value)});j.focus();j.undoManager.add();r=j.formatter.matchAll(n);h.each(r,function(s){if(!q||s==q){if(s){j.formatter.remove(s)}p=true}});if(!p){j.formatter.apply(q)}j.undoManager.add();j.nodeChanged();return false}});j.onPreInit.add(function(){var p=0,n=j.getParam("style_formats");if(n){f(n,function(q){var r,s=0;f(q,function(){s++});if(s>1){r=q.name=q.name||"style_"+(p++);j.formatter.register(r,q);m.add(q.title,r,{style:function(){return b(j,q)}})}else{m.add(q.title)}})}else{f(j.getParam("theme_advanced_styles","","hash"),function(t,s){var r,q;if(t){r="style_"+(p++);q={inline:"span",classes:t,selector:"*"};j.formatter.register(r,q);m.add(l.editor.translate(s),r,{style:function(){return b(j,q)}})}})}});if(m.getLength()==0){m.onPostRender.add(function(p,q){if(!m.NativeListBox){g.add(q.id+"_text","focus",l._importClasses,l);g.add(q.id+"_text","mousedown",l._importClasses,l);g.add(q.id+"_open","focus",l._importClasses,l);g.add(q.id+"_open","mousedown",l._importClasses,l)}else{g.add(q.id,"focus",l._importClasses,l)}})}return m},_createFontSelect:function(){var l,k=this,j=k.editor;l=j.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(m){var n=l.items[l.selectedIndex];if(!m&&n){j.execCommand("FontName",false,n.value);return}j.execCommand("FontName",false,m);l.select(function(o){return m==o});if(n&&n.value==m){l.select(null)}return false}});if(l){f(j.getParam("theme_advanced_fonts",k.settings.theme_advanced_fonts,"hash"),function(n,m){l.add(j.translate(m),n,{style:n.indexOf("dings")==-1?"font-family:"+n:""})})}return l},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(o){var p=n.items[n.selectedIndex];if(!o&&p){p=p.value;if(p["class"]){k.formatter.toggle("fontsize_class",{value:p["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,p.fontSize)}return}if(o["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}n.select(function(q){return o==q});if(p&&(p.value.fontSize==o.fontSize||p.value["class"]&&p.value["class"]==o["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(p,o){var q=p.fontSize;if(q>=1&&q<=7){q=m.sizes[parseInt(q)-1]+"pt"}n.add(o,p,{style:"font-size:"+q,"class":"mceFontSize"+(l++)+(" "+(p["class"]||""))})})}return n},_createBlockFormats:function(){var l,j={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},k=this;l=k.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(m){k.editor.execCommand("FormatBlock",false,m);return false}});if(l){f(k.editor.getParam("theme_advanced_blockformats",k.settings.theme_advanced_blockformats,"hash"),function(n,m){l.add(k.editor.translate(m!=n?m:j[n]),n,{"class":"mce_formatPreview mce_"+n,style:function(){return b(k.editor,{block:n})}})})}return l},_createForeColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_text_colors){m.colors=j}if(l.theme_advanced_default_foreground_color){m.default_color=l.theme_advanced_default_foreground_color}m.title="advanced.forecolor_desc";m.cmd="ForeColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("forecolor",m);return n},_createBackColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_background_colors){m.colors=j}if(l.theme_advanced_default_background_color){m.default_color=l.theme_advanced_default_background_color}m.title="advanced.backcolor_desc";m.cmd="HiliteColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("backcolor",m);return n},renderUI:function(l){var q,m,r,w=this,u=w.editor,x=w.settings,v,k,j;if(u.settings){u.settings.aria_label=x.aria_label+u.getLang("advanced.help_shortcut")}q=k=i.create("span",{role:"application","aria-labelledby":u.id+"_voice",id:u.id+"_parent","class":"mceEditor "+u.settings.skin+"Skin"+(x.skin_variant?" "+u.settings.skin+"Skin"+w._ufirst(x.skin_variant):"")+(u.settings.directionality=="rtl"?" mceRtl":"")});i.add(q,"span",{"class":"mceVoiceLabel",style:"display:none;",id:u.id+"_voice"},x.aria_label);if(!i.boxModel){q=i.add(q,"div",{"class":"mceOldBoxModel"})}q=v=i.add(q,"table",{role:"presentation",id:u.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});q=r=i.add(q,"tbody");switch((x.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":m=w._rowLayout(x,r,l);break;case"customlayout":m=u.execCallback("theme_advanced_custom_layout",x,r,l,k);break;default:m=w._simpleLayout(x,r,l,k)}q=l.targetNode;j=v.rows;i.addClass(j[0],"mceFirst");i.addClass(j[j.length-1],"mceLast");f(i.select("tr",r),function(o){i.addClass(o.firstChild,"mceFirst");i.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(i.get(x.theme_advanced_toolbar_container)){i.get(x.theme_advanced_toolbar_container).appendChild(k)}else{i.insertAfter(k,q)}g.add(u.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){w._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return false}});if(!u.getParam("accessibility_focus")){g.add(i.add(k,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(u.id).focus()})}if(x.theme_advanced_toolbar_location=="external"){l.deltaHeight=0}w.deltaHeight=l.deltaHeight;l.targetNode=null;u.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){if(h.isWebKit){window.focus()}w.toolbarGroup.focus();return g.cancel(n)}else{if(n.keyCode===o){i.get(p.id+"_path_row").focus();return g.cancel(n)}}}});u.addShortcut("alt+0","","mceShortcuts",w);return{iframeContainer:m,editorContainer:u.id+"_parent",sizeContainer:v,deltaHeight:l.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:h.majorVersion+"."+h.minorVersion}},resizeBy:function(j,k){var l=i.get(this.editor.id+"_ifr");this.resizeTo(l.clientWidth+j,l.clientHeight+k)},resizeTo:function(j,n,l){var k=this.editor,m=this.settings,o=i.get(k.id+"_tbl"),p=i.get(k.id+"_ifr");j=Math.max(m.theme_advanced_resizing_min_width||100,j);n=Math.max(m.theme_advanced_resizing_min_height||100,n);j=Math.min(m.theme_advanced_resizing_max_width||65535,j);n=Math.min(m.theme_advanced_resizing_max_height||65535,n);i.setStyle(o,"height","");i.setStyle(p,"height",n);if(m.theme_advanced_resize_horizontal){i.setStyle(o,"width","");i.setStyle(p,"width",j);if(j<o.clientWidth){j=o.clientWidth;i.setStyle(p,"width",o.clientWidth)}}if(l&&m.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+k.id+"_size",{cw:j,ch:n})}},destroy:function(){var j=this.editor.id;g.clear(j+"_resize");g.clear(j+"_path_row");g.clear(j+"_external_close")},_simpleLayout:function(z,u,l,j){var y=this,v=y.editor,w=z.theme_advanced_toolbar_location,q=z.theme_advanced_statusbar_location,m,k,r,x;if(z.readonly){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});return k}if(w=="top"){y._addToolbars(u,l)}if(w=="external"){m=x=i.create("div",{style:"position:relative"});m=i.add(m,"div",{id:v.id+"_external","class":"mceExternalToolbar"});i.add(m,"a",{id:v.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});m=i.add(m,"table",{id:v.id+"_tblext",cellSpacing:0,cellPadding:0});r=i.add(m,"tbody");if(j.firstChild.className=="mceOldBoxModel"){j.firstChild.appendChild(x)}else{j.insertBefore(x,j.firstChild)}y._addToolbars(r,l);v.onMouseUp.add(function(){var o=i.get(v.id+"_external");i.show(o);i.hide(e);var n=g.add(v.id+"_external_close","click",function(){i.hide(v.id+"_external");g.remove(v.id+"_external_close","click",n)});i.show(o);i.setStyle(o,"top",0-i.getRect(v.id+"_tblext").h-1);i.hide(o);i.show(o);o.style.filter="";e=v.id+"_external";o=null})}if(q=="top"){y._addStatusBar(u,l)}if(!z.theme_advanced_toolbar_container){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"})}if(w=="bottom"){y._addToolbars(u,l)}if(q=="bottom"){y._addStatusBar(u,l)}return k},_rowLayout:function(x,p,l){var w=this,q=w.editor,v,y,j=q.controlManager,m,k,u,r;v=x.theme_advanced_containers_default_class||"";y=x.theme_advanced_containers_default_align||"center";f(d(x.theme_advanced_containers||""),function(s,o){var n=x["theme_advanced_container_"+s]||"";switch(s.toLowerCase()){case"mceeditor":m=i.add(p,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":w._addStatusBar(p,l);break;default:r=(x["theme_advanced_container_"+s+"_align"]||y).toLowerCase();r="mce"+w._ufirst(r);m=i.add(i.add(p,"tr"),"td",{"class":"mceToolbar "+(x["theme_advanced_container_"+s+"_class"]||v)+" "+r||y});u=j.createToolbar("toolbar"+o);w._addControls(n,u);i.setHTML(m,u.renderHTML());l.deltaHeight-=x.theme_advanced_row_height}});return k},_addControls:function(k,j){var l=this,m=l.settings,n,o=l.editor.controlManager;if(m.theme_advanced_disable&&!l._disabled){n={};f(d(m.theme_advanced_disable),function(p){n[p]=1});l._disabled=n}else{n=l._disabled}f(d(k),function(q){var p;if(n&&n[q]){return}if(q=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(r){r=l.createControl(r,o);if(r){j.add(r)}});return}p=l.createControl(q,o);if(p){j.add(p)}})},_addToolbars:function(y,k){var B=this,q,p,u=B.editor,C=B.settings,A,j=u.controlManager,w,l,r=[],z,x,m=false;x=j.createToolbarGroup("toolbargroup",{name:u.getLang("advanced.toolbar"),tab_focus_toolbar:u.getParam("theme_advanced_tab_focus_toolbar")});B.toolbarGroup=x;z=C.theme_advanced_toolbar_align.toLowerCase();z="mce"+B._ufirst(z);l=i.add(i.add(y,"tr",{role:"presentation"}),"td",{"class":"mceToolbar "+z,role:"presentation"});for(q=1;(A=C["theme_advanced_buttons"+q]);q++){m=true;p=j.createToolbar("toolbar"+q,{"class":"mceToolbarRow"+q});if(C["theme_advanced_buttons"+q+"_add"]){A+=","+C["theme_advanced_buttons"+q+"_add"]}if(C["theme_advanced_buttons"+q+"_add_before"]){A=C["theme_advanced_buttons"+q+"_add_before"]+","+A}B._addControls(A,p);x.add(p);k.deltaHeight-=C.theme_advanced_row_height}if(!m){k.deltaHeight-=C.theme_advanced_row_height}r.push(x.renderHTML());r.push(i.createHTML("a",{href:"#",accesskey:"z",title:u.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+u.id+"').focus();"},"<!-- IE -->"));i.setHTML(l,r.join(""))},_addStatusBar:function(p,k){var l,w=this,q=w.editor,x=w.settings,j,u,v,m;l=i.add(p,"tr");l=m=i.add(l,"td",{"class":"mceStatusbar"});l=i.add(l,"div",{id:q.id+"_path_row",role:"group","aria-labelledby":q.id+"_path_voice"});if(x.theme_advanced_path){i.add(l,"span",{id:q.id+"_path_voice"},q.translate("advanced.path"));i.add(l,"span",{},": ")}else{i.add(l,"span",{},"&#160;")}if(x.theme_advanced_resizing){i.add(m,"a",{id:q.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(x.theme_advanced_resizing_use_cookie){q.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+q.id+"_size"),r=i.get(q.id+"_tbl");if(!n){return}w.resizeTo(n.cw,n.ch)})}q.onPostRender.add(function(){g.add(q.id+"_resize","click",function(n){n.preventDefault()});g.add(q.id+"_resize","mousedown",function(E){var t,r,s,o,D,A,B,G,n,F,y;function z(H){H.preventDefault();n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F)}function C(H){g.remove(i.doc,"mousemove",t);g.remove(q.getDoc(),"mousemove",r);g.remove(i.doc,"mouseup",s);g.remove(q.getDoc(),"mouseup",o);n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F,true)}E.preventDefault();D=E.screenX;A=E.screenY;y=i.get(w.editor.id+"_ifr");B=n=y.clientWidth;G=F=y.clientHeight;t=g.add(i.doc,"mousemove",z);r=g.add(q.getDoc(),"mousemove",z);s=g.add(i.doc,"mouseup",C);o=g.add(q.getDoc(),"mouseup",C)})})}k.deltaHeight-=21;l=p=null},_updateUndoStatus:function(k){var j=k.controlManager,l=k.undoManager;j.setDisabled("undo",!l.hasUndo()&&!l.typing);j.setDisabled("redo",!l.hasRedo())},_nodeChanged:function(o,u,E,r,F){var z=this,D,G=0,y,H,A=z.settings,x,l,w,C,m,k,j;h.each(z.stateControls,function(n){u.setActive(n,o.queryCommandState(z.controls[n][1]))});function q(p){var s,n=F.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s<n.length;s++){if(t(n[s])){return n[s]}}}u.setActive("visualaid",o.hasVisual);z._updateUndoStatus(o);u.setDisabled("outdent",!o.queryCommandState("Outdent"));D=q("A");if(H=u.get("link")){if(!D||!D.name){H.setDisabled(!D&&r);H.setActive(!!D)}}if(H=u.get("unlink")){H.setDisabled(!D&&r);H.setActive(!!D&&!D.name)}if(H=u.get("anchor")){H.setActive(!r&&!!D&&D.name)}D=q("IMG");if(H=u.get("image")){H.setActive(!r&&!!D&&E.className.indexOf("mceItem")==-1)}if(H=u.get("styleselect")){z._importClasses();k=[];f(H.items,function(n){k.push(n.value)});j=o.formatter.matchAll(k);H.select(j[0]);h.each(j,function(p,n){if(n>0){H.mark(p)}})}if(H=u.get("formatselect")){D=q(o.dom.isBlock);if(D){H.select(D.nodeName.toLowerCase())}}q(function(p){if(p.nodeName==="SPAN"){if(!x&&p.className){x=p.className}}if(o.dom.is(p,A.theme_advanced_font_selector)){if(!l&&p.style.fontSize){l=p.style.fontSize}if(!w&&p.style.fontFamily){w=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!C&&p.style.color){C=p.style.color}if(!m&&p.style.backgroundColor){m=p.style.backgroundColor}}return false});if(H=u.get("fontselect")){H.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==w})}if(H=u.get("fontsizeselect")){if(A.theme_advanced_runtime_fontsize&&!l&&!x){l=o.dom.getStyle(E,"fontSize",true)}H.select(function(n){if(n.fontSize&&n.fontSize===l){return true}if(n["class"]&&n["class"]===x){return true}})}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_path&&A.theme_advanced_statusbar_location){D=i.get(o.id+"_path")||i.add(o.id+"_path_row","span",{id:o.id+"_path"});if(z.statusKeyboardNavigation){z.statusKeyboardNavigation.destroy();z.statusKeyboardNavigation=null}i.setHTML(D,"");q(function(I){var p=I.nodeName.toLowerCase(),s,v,t="";if(I.nodeType!=1||p==="br"||I.getAttribute("data-mce-bogus")||i.hasClass(I,"mceItemHidden")||i.hasClass(I,"mceItemRemoved")){return}if(h.isIE&&I.scopeName!=="HTML"&&I.scopeName){p=I.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(y=i.getAttrib(I,"src")){t+="src: "+y+" "}break;case"a":if(y=i.getAttrib(I,"name")){t+="name: "+y+" ";p+="#"+y}if(y=i.getAttrib(I,"href")){t+="href: "+y+" "}break;case"font":if(y=i.getAttrib(I,"face")){t+="font: "+y+" "}if(y=i.getAttrib(I,"size")){t+="size: "+y+" "}if(y=i.getAttrib(I,"color")){t+="color: "+y+" "}break;case"span":if(y=i.getAttrib(I,"style")){t+="style: "+y+" "}break}if(y=i.getAttrib(I,"id")){t+="id: "+y+" "}if(y=I.className){y=y.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(y){t+="class: "+y+" ";if(o.dom.isBlock(I)||p=="img"||p=="span"){p+="."+y}}}p=p.replace(/(html:)/g,"");p={name:p,node:I,title:t};z.onResolveName.dispatch(z,p);t=p.title;p=p.name;v=i.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(G++)},p);if(D.hasChildNodes()){D.insertBefore(i.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),D.firstChild);D.insertBefore(v,D.firstChild)}else{D.appendChild(v)}},o.getBody());if(i.select("a",D).length>0){z.statusKeyboardNavigation=new h.ui.KeyboardNavigation({root:o.id+"_path_row",items:i.select("a",D),excludeFromTabOrder:true,onCancel:function(){o.focus()}},i)}}},_sel:function(j){this.editor.execCommand("mceSelectNodeDepth",false,j)},_mceInsertAnchor:function(l,k){var j=this.editor;j.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(j.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(j.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var j=this.editor;j.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(j.getLang("advanced.charmap_delta_width",0)),height:265+parseInt(j.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var j=this.editor;j.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var j=this.editor;j.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(l,k){var j=this.editor;k=k||{};j.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(j.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(j.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:k.color,func:k.func,theme_url:this.url})},_mceCodeEditor:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(j.getParam("theme_advanced_source_editor_width",720)),height:parseInt(j.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(k,l){var j=this.editor;if(j.dom.getAttrib(j.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}j.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(j.getLang("advanced.image_delta_width",0)),height:275+parseInt(j.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(j.getLang("advanced.link_delta_width",0)),height:200+parseInt(j.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var j=this.editor;j.windowManager.confirm("advanced.newdocument",function(k){if(k){j.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var j=this;this._mceColorPicker(0,{color:j.fgColor,func:function(k){j.fgColor=k;j.editor.execCommand("ForeColor",false,k)}})},_mceBackColor:function(){var j=this;this._mceColorPicker(0,{color:j.bgColor,func:function(k){j.bgColor=k;j.editor.execCommand("HiliteColor",false,k)}})},_ufirst:function(j){return j.substring(0,1).toUpperCase()+j.substring(1)}});h.ThemeManager.add("advanced",h.themes.AdvancedTheme)}(tinymce)); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js
index d94c8e499..61fe53707 100644
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js
+++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js
@@ -69,6 +69,16 @@
each(previewStyles.split(' '), function(name) {
var value = dom.getStyle(previewElm, name, true);
+ // If background is transparent then check if the body has a background color we can use
+ if (name == 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) {
+ value = dom.getStyle(ed.getBody(), name, true);
+
+ // Ignore white since it's the default color, not the nicest fix
+ if (dom.toHex(value).toLowerCase() == '#ffffff') {
+ return;
+ }
+ }
+
// Old IE won't calculate the font size so we need to do that manually
if (name == 'font-size') {
if (/em|%$/.test(value)) {
@@ -608,7 +618,7 @@
// TODO: ACC Should have an aria-describedby attribute which is user-configurable to describe what this field is actually for.
// Maybe actually inherit it from the original textara?
- n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')});
+ n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '') + (ed.settings.directionality == "rtl" ? ' mceRtl' : '')});
DOM.add(n, 'span', {'class': 'mceVoiceLabel', 'style': 'display:none;', id: ed.id + '_voice'}, s.aria_label);
if (!DOM.boxModel)
@@ -925,7 +935,7 @@
},
_addToolbars : function(c, o) {
- var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup;
+ var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup, toolbarsExist = false;
toolbarGroup = cf.createToolbarGroup('toolbargroup', {
'name': ed.getLang('advanced.toolbar'),
@@ -941,6 +951,7 @@
// Create toolbar and add the controls
for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
+ toolbarsExist = true;
tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
if (s['theme_advanced_buttons' + i + '_add'])
@@ -954,6 +965,9 @@
o.deltaHeight -= s.theme_advanced_row_height;
}
+ // Handle case when there are no toolbar buttons and ensure editor height is adjusted accordingly
+ if (!toolbarsExist)
+ o.deltaHeight -= s.theme_advanced_row_height;
h.push(toolbarGroup.renderHTML());
h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
DOM.setHTML(n, h.join(''));
@@ -1112,7 +1126,7 @@
}
if (c = cm.get('formatselect')) {
- p = getParent(DOM.isBlock);
+ p = getParent(ed.dom.isBlock);
if (p)
c.select(p.nodeName.toLowerCase());
@@ -1210,7 +1224,7 @@
return;
// Handle prefix
- if (tinymce.isIE && n.scopeName !== 'HTML')
+ if (tinymce.isIE && n.scopeName !== 'HTML' && n.scopeName)
na = n.scopeName + ':' + na;
// Remove internal prefix
@@ -1271,7 +1285,7 @@
if (v) {
ti += 'class: ' + v + ' ';
- if (DOM.isBlock(n) || na == 'img' || na == 'span')
+ if (ed.dom.isBlock(n) || na == 'img' || na == 'span')
na += '.' + v;
}
}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js
index 6c2489a16..bb09e75bf 100644
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js
+++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js
@@ -104,10 +104,12 @@ var ImageDialog = {
},
updateStyle : function() {
- var dom = tinyMCEPopup.dom, st, v, f = document.forms[0];
+ var dom = tinyMCEPopup.dom, st = {}, v, f = document.forms[0];
if (tinyMCEPopup.editor.settings.inline_styles) {
- st = tinyMCEPopup.dom.parseStyle(this.styleVal);
+ tinymce.each(tinyMCEPopup.dom.parseStyle(this.styleVal), function(value, key) {
+ st[key] = value;
+ });
// Handle align
v = getSelectValue(f, 'align');
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css
index b2ed097cd..6d9fc8dd6 100644
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css
+++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css
@@ -1,7 +1,7 @@
/* Generic */
body {
font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
-background:#F0F0EE;
+background:#F0F0EE;
color: black;
padding:0;
margin:8px 8px 0 8px;
@@ -94,11 +94,12 @@ h3 {font-size:14px;}
#plugintable, #about #plugintable td {border:1px solid #919B9C;}
#plugintable {width:96%; margin-top:10px;}
#pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
+#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
+#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
#colorpicker #light div {overflow:hidden;}
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
#colorpicker .panel_wrapper div.current {height:175px;}
#colorpicker #namedcolors {width:150px;}
#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css
index a2cfcc393..effbbe158 100644
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css
+++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css
@@ -58,7 +58,7 @@
/* Menu */
.highcontrastSkin .mceNoIcons span.mceIcon {width:0;}
-.highcontrastSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid; }
+.highcontrastSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid; direction:ltr}
.highcontrastSkin .mceMenu table {background:white; color: black}
.highcontrastSkin .mceNoIcons a .mceText {padding-left:10px}
.highcontrastSkin .mceMenu a, .highcontrastSkin .mceMenu span, .highcontrastSkin .mceMenu {display:block;background:white; color: black}
@@ -90,6 +90,10 @@
.highcontrastSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
.highcontrastSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
+/* Rtl */
+.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}
+.mceRtl .mceMenuItem .mceText {text-align: right}
+
/* Formats */
.highcontrastSkin .mce_p span.mceText {}
.highcontrastSkin .mce_address span.mceText {font-style:italic}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css
index ec0877224..a54db98df 100644
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css
+++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css
@@ -105,11 +105,12 @@ h3 {font-size:14px;}
#plugintable, #about #plugintable td {border:1px solid #919B9C;}
#plugintable {width:96%; margin-top:10px;}
#pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
+#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
+#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
#colorpicker #light div {overflow:hidden;}
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
#colorpicker .panel_wrapper div.current {height:175px;}
#colorpicker #namedcolors {width:150px;}
#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css
index 7b5103be2..a31022371 100644
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css
+++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css
@@ -86,7 +86,7 @@
.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}
/* Menu */
-.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD}
+.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD; direction:ltr}
.o2k7Skin .mceNoIcons span.mceIcon {width:0;}
.o2k7Skin .mceNoIcons a .mceText {padding-left:10px}
.o2k7Skin .mceMenu table {background:#FFF}
@@ -112,6 +112,10 @@
.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
+/* Rtl */
+.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}
+.mceRtl .mceMenuItem .mceText {text-align: right}
+
/* Formats */
.o2k7Skin .mce_formatPreview a {font-size:10px}
.o2k7Skin .mce_p span.mceText {}
diff --git a/library/tinymce/jscripts/tiny_mce/tiny_mce.js b/library/tinymce/jscripts/tiny_mce/tiny_mce.js
index 2d09557a1..f52fd836f 100644
--- a/library/tinymce/jscripts/tiny_mce/tiny_mce.js
+++ b/library/tinymce/jscripts/tiny_mce/tiny_mce.js
@@ -1 +1 @@
-(function(d){var a=/^\s*|\s*$/g,e,c="B".replace(/A(.)|B/,"$1")==="$1";var b={majorVersion:"3",minorVersion:"5b2",releaseDate:"2012-03-15",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isOpera=d.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName);s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(d.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m<f.length;m++){if(r=f[m].href){if(/^https?:\/\/[^\/]+$/.test(r)){r+="/"}k=r?r.match(/.*\//)[0]:""}}function h(i){if(i.src&&/tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(i.src)){if(/_(src|dev)\.js/g.test(i.src)){s.suffix="_src"}if((j=i.src.indexOf("?"))!=-1){s.query=i.src.substring(j+1)}s.baseURL=i.src.substring(0,i.src.lastIndexOf("/"));if(k&&s.baseURL.indexOf("://")==-1&&s.baseURL.indexOf("/")!==0){s.baseURL=k+s.baseURL}return s.baseURL}return null}f=q.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}l=q.getElementsByTagName("head")[0];if(l){f=l.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}}return},is:function(g,f){if(!f){return g!==e}if(f=="array"&&(g.hasOwnProperty&&g instanceof Array)){return true}return typeof(g)==f},makeMap:function(f,j,h){var g;f=f||[];j=j||",";if(typeof(f)=="string"){f=f.split(j)}h=h||{};g=f.length;while(g--){h[f[g]]={}}return h},each:function(i,f,h){var j,g;if(!i){return 0}h=h||i;if(i.length!==e){for(j=0,g=i.length;j<g;j++){if(f.call(h,i[j],j,i)===false){return 0}}}else{for(j in i){if(i.hasOwnProperty(j)){if(f.call(h,i[j],j,i)===false){return 0}}}}return 1},map:function(g,h){var i=[];b.each(g,function(f){i.push(h(f))});return i},grep:function(g,h){var i=[];b.each(g,function(f){if(!h||h(f)){i.push(f)}});return i},inArray:function(g,h){var j,f;if(g){for(j=0,f=g.length;j<f;j++){if(g[j]===h){return j}}}return -1},extend:function(k,j){var h,g,f=arguments;for(h=1,g=f.length;h<g;h++){j=f[h];b.each(j,function(i,l){if(i!==e){k[l]=i}})}return k},trim:function(f){return(f?""+f:"").replace(a,"")},create:function(o,f,j){var n=this,g,i,k,l,h,m=0;o=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(o);k=o[3].match(/(^|\.)(\w+)$/i)[2];i=n.createNS(o[3].replace(/\.\w+$/,""),j);if(i[k]){return}if(o[2]=="static"){i[k]=f;if(this.onCreate){this.onCreate(o[2],o[3],i[k])}return}if(!f[k]){f[k]=function(){};m=1}i[k]=f[k];n.extend(i[k].prototype,f);if(o[5]){g=n.resolve(o[5]).prototype;l=o[5].match(/\.(\w+)$/i)[1];h=i[k];if(m){i[k]=function(){return g[l].apply(this,arguments)}}else{i[k]=function(){this.parent=g[l];return h.apply(this,arguments)}}i[k].prototype[k]=i[k];n.each(g,function(p,q){i[k].prototype[q]=g[q]});n.each(f,function(p,q){if(g[q]){i[k].prototype[q]=function(){this.parent=g[q];return p.apply(this,arguments)}}else{if(q!=k){i[k].prototype[q]=p}}})}n.each(f["static"],function(p,q){i[k][q]=p});if(this.onCreate){this.onCreate(o[2],o[3],i[k].prototype)}},walk:function(i,h,j,g){g=g||this;if(i){if(j){i=i[j]}b.each(i,function(k,f){if(h.call(g,k,f,j)===false){return false}b.walk(k,h,j,g)})}},createNS:function(j,h){var g,f;h=h||d;j=j.split(".");for(g=0;g<j.length;g++){f=j[g];if(!h[f]){h[f]={}}h=h[f]}return h},resolve:function(j,h){var g,f;h=h||d;j=j.split(".");for(g=0,f=j.length;g<f;g++){h=h[j[g]];if(!h){break}}return h},addUnload:function(j,i){var h=this;j={func:j,scope:i||this};if(!h.unloads){function g(){var f=h.unloads,l,m;if(f){for(m in f){l=f[m];if(l&&l.func){l.func.call(l.scope,1)}}if(d.detachEvent){d.detachEvent("onbeforeunload",k);d.detachEvent("onunload",g)}else{if(d.removeEventListener){d.removeEventListener("unload",g,false)}}h.unloads=l=f=w=g=0;if(d.CollectGarbage){CollectGarbage()}}}function k(){var l=document;if(l.readyState=="interactive"){function f(){l.detachEvent("onstop",f);if(g){g()}l=0}if(l){l.attachEvent("onstop",f)}d.setTimeout(function(){if(l){l.detachEvent("onstop",f)}},0)}}if(d.attachEvent){d.attachEvent("onunload",g);d.attachEvent("onbeforeunload",k)}else{if(d.addEventListener){d.addEventListener("unload",g,false)}}h.unloads=[j]}else{h.unloads.push(j)}return j},removeUnload:function(i){var g=this.unloads,h=null;b.each(g,function(j,f){if(j&&j.func==i){g.splice(f,1);h=i;return false}});return h},explode:function(f,g){return f?b.map(f.split(g||","),b.trim):f},_addVer:function(g){var f;if(!this.query){return g}f=(g.indexOf("?")==-1?"?":"&")+this.query;if(g.indexOf("#")==-1){return g+f}return g.replace("#",f+"#")},_replace:function(h,f,g){if(c){return g.replace(h,function(){var l=f,j=arguments,k;for(k=0;k<j.length-2;k++){if(j[k]===e){l=l.replace(new RegExp("\\$"+k,"g"),"")}else{l=l.replace(new RegExp("\\$"+k,"g"),j[k])}}return l})}return g.replace(h,f)}};b._init();d.tinymce=d.tinyMCE=b})(window);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(a,b){this.listeners.push({cb:a,scope:b||this.scope});return a},addToTop:function(a,b){this.listeners.unshift({cb:a,scope:b||this.scope});return a},remove:function(a){var b=this.listeners,c=null;tinymce.each(b,function(e,d){if(a==e.cb){c=a;b.splice(d,1);return false}});return c},dispatch:function(){var f,d=arguments,e,b=this.listeners,g;for(e=0;e<b.length;e++){g=b[e];f=g.cb.apply(g.scope,d.length>0?d:[g.scope]);if(f===false){break}}return f}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,i,d,c,h;e=tinymce.trim(e);g=f.settings=g||{};if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^[\w-]*:?\/\//.test(e)){h=g.base_uri?g.base_uri.path:new tinymce.util.URI(location.href).directory;e=((g.base_uri&&g.base_uri.protocol)||"http")+"://mce_host"+f.toAbsPath(h,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});if(c=g.base_uri){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host=="mce_host"){f.port=c.port}if(!f.host||f.host=="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var c=this,d;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:c});if((b.host!="mce_host"&&c.host!=b.host&&b.host)||c.port!=b.port||c.protocol!=b.protocol){return b.getURI()}d=c.toRelPath(c.path,b.path);if(b.query){d+="?"+b.query}if(b.anchor){d+="#"+b.anchor}return d},toAbsolute:function(b,c){var b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,h=[],d,g;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(i){if(i){h.push(i)}});e=h;for(c=f.length-1,h=[];c>=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();(function(){function serialize(o,quote){var i,v,t;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&o instanceof Array){for(i=0,v="[";i<o.length;i++){v+=(i>0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(i in o){if(o.hasOwnProperty(i)){v+=typeof o[i]!="function"?(v.length>1?","+quote:quote)+i+quote+":"+serialize(o[i],quote):""}}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(b){return b.shiftKey||b.ctrlKey||b.altKey}}})(tinymce);(function(n){var l=n.VK,m=l.BACKSPACE,j=l.DELETE;function p(r,t,s){try{r.getDoc().execCommand(t,false,s)}catch(q){}}function d(q){var s=q.dom,r=q.selection;q.onKeyDown.add(function(u,z){var t,A,x,y,v;if(z.isDefaultPrevented()){return}v=z.keyCode==j;if((v||z.keyCode==m)&&!l.modifierPressed(z)){z.preventDefault();t=r.getRng();A=s.getParent(t.startContainer,s.isBlock);if(v){A=s.getNext(A,s.isBlock)}if(A){x=A.firstChild;while(x&&x.nodeType==3&&x.nodeValue.length==0){x=x.nextSibling}if(x&&x.nodeName==="SPAN"){y=x.cloneNode(false)}}u.getDoc().execCommand(v?"ForwardDelete":"Delete",false,null);A=s.getParent(t.startContainer,s.isBlock);n.each(s.select("span.Apple-style-span,font.Apple-style-span",A),function(B){var C=r.getBookmark();if(y){s.replace(y.cloneNode(false),B,true)}else{s.remove(B,true)}r.moveToBookmark(C)})}})}function e(q){function r(u){var t=q.dom.create("body");var v=u.cloneContents();t.appendChild(v);return q.selection.serializer.serialize(t,{format:"html"})}function s(t){var v=r(t);var x=q.dom.createRng();x.selectNode(q.getBody());var u=r(x);return v===u}q.onKeyDown.addToTop(function(u,x){var v=x.keyCode;if(v==j||v==m){var t=u.selection.getRng(true);if(!t.collapsed&&s(t)){u.setContent("",{format:"raw"});u.nodeChanged();x.preventDefault()}}})}function c(q){q.dom.bind(q.getDoc(),"focusin",function(){q.selection.setRng(q.selection.getRng())})}function g(q){q.onKeyDown.add(function(r,u){if(u.keyCode===m){if(r.selection.isCollapsed()&&r.selection.getRng(true).startOffset===0){var t=r.selection.getNode();var s=t.previousSibling;if(s&&s.nodeName&&s.nodeName.toLowerCase()==="hr"){r.dom.remove(s);n.dom.Event.cancel(u)}}}})}function i(q){if(!Range.prototype.getClientRects){q.onMouseDown.add(function(s,t){if(t.target.nodeName==="HTML"){var r=s.getBody();r.blur();setTimeout(function(){r.focus()},0)}})}}function h(q){q.onClick.add(function(r,s){s=s.target;if(/^(IMG|HR)$/.test(s.nodeName)){r.selection.getSel().setBaseAndExtent(s,0,s,1)}if(s.nodeName=="A"&&r.dom.hasClass(s,"mceItemAnchor")){r.selection.select(s)}r.nodeChanged()})}function b(q){var s=q.selection,v=q.dom;function t(){var x=v.getAttribs(s.getStart().cloneNode(false));return function(){var y=s.getStart();if(y!==q.getBody()){v.setAttrib(y,"style",null);n.each(x,function(z){y.setAttributeNode(z.cloneNode(true))})}}}function r(){return !s.isCollapsed()&&s.getStart()!=s.getEnd()}function u(x,y){y.preventDefault();return false}q.onKeyPress.add(function(x,z){var y;if((z.keyCode==8||z.keyCode==46)&&r()){y=t();x.getDoc().execCommand("delete",false,null);y();z.preventDefault();return false}});v.bind(q.getDoc(),"cut",function(y){var x;if(r()){x=t();q.onKeyUp.addToTop(u);setTimeout(function(){x();q.onKeyUp.remove(u)},0)}})}function o(q){var s,r;q.dom.bind(q.getDoc(),"selectionchange",function(){if(r){clearTimeout(r);r=0}r=window.setTimeout(function(){var t=q.selection.getRng();if(!s||!n.dom.RangeUtils.compareRanges(t,s)){q.nodeChanged();s=t}},50)})}function a(q){document.body.setAttribute("role","application")}function f(q){q.onKeyDown.add(function(r,t){if(t.keyCode===m){if(r.selection.isCollapsed()&&r.selection.getRng(true).startOffset===0){var s=r.selection.getNode().previousSibling;if(s&&s.nodeName&&s.nodeName.toLowerCase()==="table"){return n.dom.Event.cancel(t)}}}})}function k(r){var q=r.getDoc().documentMode;if(q&&q>7){return}p(r,"RespectVisibilityInDesign",true);r.dom.addClass(r.getBody(),"mceHideBrInPre");r.parser.addNodeFilter("pre",function(s,u){var v=s.length,y,t,z,x;while(v--){y=s[v].getAll("br");t=y.length;while(t--){z=y[t];x=z.prev;if(x&&x.type===3&&x.value.charAt(x.value-1)!="\n"){x.value+="\n"}else{z.parent.insert(new n.html.Node("#text",3),z,true).value="\n"}}}});r.serializer.addNodeFilter("pre",function(s,u){var v=s.length,y,t,z,x;while(v--){y=s[v].getAll("br");t=y.length;while(t--){z=y[t];x=z.prev;if(x&&x.type==3){x.value=x.value.replace(/\r?\n$/,"")}}}})}n.create("tinymce.util.Quirks",{Quirks:function(q){f(q);if(n.isWebKit){d(q);e(q);c(q);h(q);if(n.isIDevice){o(q)}}if(n.isIE){g(q);e(q);a(q);k(q)}if(n.isGecko){g(q);i(q);b(q)}}})})(tinymce);(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;"};d={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n<m.length;n+=2){o=String.fromCharCode(parseInt(m[n],p));if(!g[o]){l="&"+m[n+1]+";";q[o]=l;q[l]=o}}return q}}a=e("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);j.html=j.html||{};j.html.Entities={encodeRaw:function(m,l){return m.replace(l?k:b,function(n){return g[n]||n})},encodeAllRaw:function(l){return(""+l).replace(f,function(m){return g[m]||m})},encodeNumeric:function(m,l){return m.replace(l?k:b,function(n){if(n.length>1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g<j.length;g++){a[j[g]]="\uFEFF"+g;a["\uFEFF"+g]=j[g]}function c(n,q,p,i){function o(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(r){var y={},p,n,v,q,u=d.url_converter,x=d.url_converter_scope||this;function o(C,F){var E,B,A,D;E=y[C+"-top"+F];if(!E){return}B=y[C+"-right"+F];if(E!=B){return}A=y[C+"-bottom"+F];if(B!=A){return}D=y[C+"-left"+F];if(A!=D){return}y[C+F]=D;delete y[C+"-top"+F];delete y[C+"-right"+F];delete y[C+"-bottom"+F];delete y[C+"-left"+F]}function t(B){var C=y[B],A;if(!C||C.indexOf(" ")<0){return}C=C.split(" ");A=C.length;while(A--){if(C[A]!==C[0]){return false}}y[B]=C[0];return true}function z(C,B,A,D){if(!t(B)){return}if(!t(A)){return}if(!t(D)){return}y[C]=y[B]+" "+y[A]+" "+y[D];delete y[B];delete y[A];delete y[D]}function s(A){q=true;return a[A]}function i(B,A){if(q){B=B.replace(/\uFEFF[0-9]/g,function(C){return a[C]})}if(!A){B=B.replace(/\\([\'\";:])/g,"$1")}return B}if(r){r=r.replace(/\\[\"\';:\uFEFF]/g,s).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(A){return A.replace(/[;:]/g,s)});while(p=b.exec(r)){n=p[1].replace(l,"").toLowerCase();v=p[2].replace(l,"");if(n&&v.length>0){if(n==="font-weight"&&v==="700"){v="bold"}else{if(n==="color"||n==="background-color"){v=v.toLowerCase()}}v=v.replace(k,c);v=v.replace(h,function(B,A,E,D,F,C){F=F||C;if(F){F=i(F);return"'"+F.replace(/\'/g,"\\'")+"'"}A=i(A||E||D);if(u){A=u.call(x,A,"style")}return"url('"+A.replace(/\'/g,"\\'")+"')"});y[n]=q?i(v,true):v}b.lastIndex=p.index+p[0].length}o("border","");o("border","-width");o("border","-color");o("border","-style");o("padding","");o("margin","");z("border","border-width","border-style","border-color");if(y.border==="medium none"){delete y.border}}return y},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u<s;u++){t=x[u];v=p[t];if(v!==e&&v.length>0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(f){var a={},e=f.makeMap,g=f.each;function d(j,i){return j.split(i||",")}function h(m,l){var j,k={};function i(n){return n.replace(/[A-Z]+/g,function(o){return i(m[o])})}for(j in m){if(m.hasOwnProperty(j)){m[j]=i(m[j])}}i(l).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(q,o,n,p){n=d(n,"|");k[o]={attributes:e(n),attributesOrder:n,children:e(p,"|",{"#comment":{}})}});return k}function b(){var i=a.html5;if(!i){i=a.html5=h({A:"id|accesskey|class|dir|draggable|item|hidden|itemprop|role|spellcheck|style|subject|title",B:"#|a|abbr|area|audio|b|bdo|br|button|canvas|cite|code|command|datalist|del|dfn|em|embed|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|meta|meter|noscript|object|output|progress|q|ruby|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|var|video",C:"#|a|abbr|area|address|article|aside|audio|b|bdo|blockquote|br|button|canvas|cite|code|command|datalist|del|details|dfn|dialog|div|dl|em|embed|fieldset|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|menu|meta|meter|nav|noscript|ol|object|output|p|pre|progress|q|ruby|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|ul|var|video"},"html[A|manifest][body|head]head[A][base|command|link|meta|noscript|script|style|title]title[A][#]base[A|href|target][]link[A|href|rel|media|type|sizes][]meta[A|http-equiv|name|content|charset][]style[A|type|media|scoped][#]script[A|charset|type|src|defer|async][#]noscript[A][C]body[A][C]section[A][C]nav[A][C]article[A][C]aside[A][C]h1[A][B]h2[A][B]h3[A][B]h4[A][B]h5[A][B]h6[A][B]hgroup[A][h1|h2|h3|h4|h5|h6]header[A][C]footer[A][C]address[A][C]p[A][B]br[A][]pre[A][B]dialog[A][dd|dt]blockquote[A|cite][C]ol[A|start|reversed][li]ul[A][li]li[A|value][C]dl[A][dd|dt]dt[A][B]dd[A][C]a[A|href|target|ping|rel|media|type][C]em[A][B]strong[A][B]small[A][B]cite[A][B]q[A|cite][B]dfn[A][B]abbr[A][B]code[A][B]var[A][B]samp[A][B]kbd[A][B]sub[A][B]sup[A][B]i[A][B]b[A][B]mark[A][B]progress[A|value|max][B]meter[A|value|min|max|low|high|optimum][B]time[A|datetime][B]ruby[A][B|rt|rp]rt[A][B]rp[A][B]bdo[A][B]span[A][B]ins[A|cite|datetime][B]del[A|cite|datetime][B]figure[A][C|legend]img[A|alt|src|height|width|usemap|ismap][]iframe[A|name|src|height|width|sandbox|seamless][]embed[A|src|height|width|type][]object[A|data|type|height|width|usemap|name|form|classid][param]param[A|name|value][]details[A|open][C|legend]command[A|type|label|icon|disabled|checked|radiogroup][]menu[A|type|label][C|li]legend[A][C|B]div[A][C]source[A|src|type|media][]audio[A|src|autobuffer|autoplay|loop|controls][source]video[A|src|autobuffer|autoplay|loop|controls|width|height|poster][source]hr[A][]form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]fieldset[A|disabled|form|name][C|legend]label[A|form|for][B]input[A|type|accept|alt|autocomplete|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value][]button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]datalist[A][B|option]optgroup[A|disabled|label][option]option[A|disabled|selected|label|value][]textarea[A|autofocus|disabled|form|maxlength|name|placeholder|readonly|required|rows|cols|wrap][]keygen[A|autofocus|challenge|disabled|form|keytype|name][]output[A|for|form|name][B]canvas[A|width|height][]map[A|name][B|C]area[A|shape|coords|href|alt|target|media|rel|ping|type][]mathml[A][]svg[A][]table[A|summary][caption|colgroup|thead|tfoot|tbody|tr]caption[A][C]colgroup[A|span][col]col[A|span][]thead[A][tr]tfoot[A][tr]tbody[A][tr]tr[A][th|td]th[A|headers|rowspan|colspan|scope][B]td[A|headers|rowspan|colspan][C]")}return i}function c(){var i=a.html4;if(!i){i=a.html4=h({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]")}return i}f.html.Schema=function(A){var u=this,s={},k={},j=[],D,y;var o,q,z,r,v,n,p={};function m(F,E,H){var G=A[F];if(!G){G=a[F];if(!G){G=e(E," ",e(E.toUpperCase()," "));G=f.extend(G,H);a[F]=G}}else{G=e(G,",",e(G.toUpperCase()," "))}return G}A=A||{};y=A.schema=="html5"?b():c();if(A.verify_html===false){A.valid_elements="*[*]"}if(A.valid_styles){D={};g(A.valid_styles,function(F,E){D[E]=f.explode(F)})}o=m("whitespace_elements","pre script style textarea");q=m("self_closing_elements","colgroup dd dt li options p td tfoot th thead tr");z=m("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source");r=m("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls");n=m("non_empty_elements","td th iframe video audio object",z);v=m("block_elements","h1 h2 h3 h4 h5 h6 hr p div address pre form table tbody thead tfoot th tr td li ol ul caption blockquote center dl dt dd dir fieldset noscript menu isindex samp header footer article section hgroup aside nav");function i(E){return new RegExp("^"+E.replace(/([?+*])/g,".$1")+"$")}function C(L){var K,G,Z,V,aa,F,I,U,X,Q,Y,ac,O,J,W,E,S,H,ab,ad,P,T,N=/^([#+-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,R=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,M=/[*?+]/;if(L){L=d(L);if(s["@"]){S=s["@"].attributes;H=s["@"].attributesOrder}for(K=0,G=L.length;K<G;K++){F=N.exec(L[K]);if(F){W=F[1];Q=F[2];E=F[3];X=F[4];O={};J=[];I={attributes:O,attributesOrder:J};if(W==="#"){I.paddEmpty=true}if(W==="-"){I.removeEmpty=true}if(S){for(ad in S){O[ad]=S[ad]}J.push.apply(J,H)}if(X){X=d(X,"|");for(Z=0,V=X.length;Z<V;Z++){F=R.exec(X[Z]);if(F){U={};ac=F[1];Y=F[2].replace(/::/g,":");W=F[3];T=F[4];if(ac==="!"){I.attributesRequired=I.attributesRequired||[];I.attributesRequired.push(Y);U.required=true}if(ac==="-"){delete O[Y];J.splice(f.inArray(J,Y),1);continue}if(W){if(W==="="){I.attributesDefault=I.attributesDefault||[];I.attributesDefault.push({name:Y,value:T});U.defaultValue=T}if(W===":"){I.attributesForced=I.attributesForced||[];I.attributesForced.push({name:Y,value:T});U.forcedValue=T}if(W==="<"){U.validValues=e(T,"?")}}if(M.test(Y)){I.attributePatterns=I.attributePatterns||[];U.pattern=i(Y);I.attributePatterns.push(U)}else{if(!O[Y]){J.push(Y)}O[Y]=U}}}}if(!S&&Q=="@"){S=O;H=J}if(E){I.outputName=Q;s[E]=I}if(M.test(Q)){I.pattern=i(Q);j.push(I)}else{s[Q]=I}}}}}function t(E){s={};j=[];C(E);g(y,function(G,F){k[F]=G.children})}function l(F){var E=/^(~)?(.+)$/;if(F){g(d(F),function(J){var H=E.exec(J),I=H[1]==="~",K=I?"span":"div",G=H[2];k[G]=k[K];p[G]=K;if(!I){v[G]={}}g(k,function(L,M){if(L[K]){L[G]=L[K]}})})}}function x(F){var E=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(F){g(d(F),function(J){var I=E.exec(J),G,H;if(I){H=I[1];if(H){G=k[I[2]]}else{G=k[I[2]]={"#comment":{}}}G=k[I[2]];g(d(I[3],"|"),function(K){if(H==="-"){delete G[K]}else{G[K]={}}})}})}}function B(E){var G=s[E],F;if(G){return G}F=j.length;while(F--){G=j[F];if(G.pattern.test(E)){return G}}}if(!A.valid_elements){g(y,function(F,E){s[E]={attributes:F.attributes,attributesOrder:F.attributesOrder};k[E]=F.children});if(A.schema!="html5"){g(d("strong/b,em/i"),function(E){E=d(E,"/");s[E[1]].outputName=E[0]})}s.img.attributesDefault=[{name:"alt",value:""}];g(d("ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr,strong,em,b,i"),function(E){if(s[E]){s[E].removeEmpty=true}});g(d("p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption"),function(E){s[E].paddEmpty=true})}else{t(A.valid_elements)}l(A.custom_elements);x(A.valid_children);C(A.extended_valid_elements);x("+ol[ul|ol],+ul[ul|ol]");if(A.invalid_elements){f.each(f.explode(A.invalid_elements),function(E){if(s[E]){delete s[E]}})}if(!B("span")){C("span[!data-mce-type|*]")}u.children=k;u.styles=D;u.getBoolAttrs=function(){return r};u.getBlockElements=function(){return v};u.getShortEndedElements=function(){return z};u.getSelfClosingElements=function(){return q};u.getNonEmptyElements=function(){return n};u.getWhiteSpaceElements=function(){return o};u.isValidChild=function(E,G){var F=k[E];return !!(F&&F[G])};u.getElementRule=B;u.getCustomElements=function(){return p};u.addValidElements=C;u.setValidElements=t;u.addCustomElements=l;u.addValidChildren=x}})(tinymce);(function(a){a.html.SaxParser=function(c,e){var b=this,d=function(){};c=c||{};b.schema=e=e||new a.html.Schema();if(c.fix_self_closing!==false){c.fix_self_closing=true}a.each("comment cdata text start end pi doctype".split(" "),function(f){if(f){b[f]=c[f]||d}});b.parse=function(D){var n=this,g,F=0,H,A,z=[],M,P,B,q,y,r,L,G,N,u,m,k,s,Q,o,O,E,R,K,f,I,l,C,J,h,v=0,j=a.html.Entities.decode,x,p;function t(S){var U,T;U=z.length;while(U--){if(z[U].name===S){break}}if(U>=0){for(T=z.length-1;T>=U;T--){S=z[T];if(S.valid){n.end(S.name)}}z.length=U}}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9-:]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g");C=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;J={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};L=e.getShortEndedElements();I=e.getSelfClosingElements();G=e.getBoolAttrs();u=c.validate;r=c.remove_internals;x=c.fix_self_closing;p=a.isIE;o=/^:/;while(g=l.exec(D)){if(F<g.index){n.text(j(D.substr(F,g.index-F)))}if(H=g[6]){H=H.toLowerCase();if(p&&o.test(H)){H=H.substr(1)}t(H)}else{if(H=g[7]){H=H.toLowerCase();if(p&&o.test(H)){H=H.substr(1)}N=H in L;if(x&&I[H]&&z.length>0&&z[z.length-1].name===H){t(H)}if(!u||(m=e.getElementRule(H))){k=true;if(u){O=m.attributes;E=m.attributePatterns}if(Q=g[8]){y=Q.indexOf("data-mce-type")!==-1;if(y&&r){k=false}M=[];M.map={};Q.replace(C,function(T,S,X,W,V){var Y,U;S=S.toLowerCase();X=S in G?S:j(X||W||V||"");if(u&&!y&&S.indexOf("data-")!==0){Y=O[S];if(!Y&&E){U=E.length;while(U--){Y=E[U];if(Y.pattern.test(S)){break}}if(U===-1){Y=null}}if(!Y){return}if(Y.validValues&&!(X in Y.validValues)){return}}M.map[S]=X;M.push({name:S,value:X})})}else{M=[];M.map={}}if(u&&!y){R=m.attributesRequired;K=m.attributesDefault;f=m.attributesForced;if(f){P=f.length;while(P--){s=f[P];q=s.name;h=s.value;if(h==="{$uid}"){h="mce_"+v++}M.map[q]=h;M.push({name:q,value:h})}}if(K){P=K.length;while(P--){s=K[P];q=s.name;if(!(q in M.map)){h=s.value;if(h==="{$uid}"){h="mce_"+v++}M.map[q]=h;M.push({name:q,value:h})}}}if(R){P=R.length;while(P--){if(R[P] in M.map){break}}if(P===-1){k=false}}if(M.map["data-mce-bogus"]){k=false}}if(k){n.start(H,M,N)}}else{k=false}if(A=J[H]){A.lastIndex=F=g.index+g[0].length;if(g=A.exec(D)){if(k){B=D.substr(F,g.index-F)}F=g.index+g[0].length}else{B=D.substr(F);F=D.length}if(k&&B.length>0){n.text(B,true)}if(k){n.end(H)}l.lastIndex=F;continue}if(!N){if(!Q||Q.indexOf("/")!=Q.length-1){z.push({name:H,valid:k})}else{if(k){n.end(H)}}}}else{if(H=g[1]){n.comment(H)}else{if(H=g[2]){n.cdata(H)}else{if(H=g[3]){n.doctype(H)}else{if(H=g[4]){n.pi(H,g[5])}}}}}}F=g.index+g[0].length}if(F<D.length){n.text(j(D.substr(F)))}for(P=z.length-1;P>=0;P--){H=z[P];if(H.valid){n.end(H.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h<f;h++){j=m[h];if(j.name!=="id"){k[k.length]={name:j.name,value:j.value};k.map[j.name]=j.value}}n.attributes=k}n.value=g.value;n.shortEnded=g.shortEnded;return n},wrap:function(g){var f=this;f.parent.insert(g,f);g.append(f);return f},unwrap:function(){var f=this,h,g;for(h=f.firstChild;h;){g=h.next;f.insert(h,f,true);h=g}f.remove()},remove:function(){var f=this,h=f.parent,g=f.next,i=f.prev;if(h){if(h.firstChild===f){h.firstChild=g;if(g){g.prev=null}}else{i.next=g}if(h.lastChild===f){h.lastChild=i;if(i){i.next=null}}else{g.prev=i}f.parent=f.next=f.prev=null}return f},append:function(h){var f=this,g;if(h.parent){h.remove()}g=f.lastChild;if(g){g.next=h;h.prev=g;f.lastChild=h}else{f.lastChild=f.firstChild=h}h.parent=f;return h},insert:function(h,f,i){var g;if(h.parent){h.remove()}g=f.parent||this;if(i){if(f===g.firstChild){g.firstChild=h}else{f.prev.next=h}h.prev=f.prev;h.next=f;f.prev=h}else{if(f===g.lastChild){g.lastChild=h}else{f.next.prev=h}h.next=f.next;h.prev=f;f.next=h}h.parent=g;return h},getAll:function(g){var f=this,h,i=[];for(h=f.firstChild;h;h=a(h,f)){if(h.name===g){i.push(h)}}return i},empty:function(){var g=this,f,h,j;if(g.firstChild){f=[];for(j=g.firstChild;j;j=a(j,g)){f.push(j)}h=f.length;while(h--){j=f[h];j.parent=j.firstChild=j.lastChild=j.next=j.prev=null}}g.firstChild=g.lastChild=null;return g},isEmpty:function(k){var f=this,j=f.firstChild,h,g;if(j){do{if(j.type===1){if(j.attributes.map["data-mce-bogus"]){continue}if(k[j.name]){return false}h=j.attributes.length;while(h--){g=j.attributes[h].name;if(g==="name"||g.indexOf("data-")===0){return false}}}if(j.type===8){return false}if((j.type===3&&!c.test(j.value))){return false}}while(j=a(j,f))}return true},walk:function(f){return a(this,null,f)}});d.extend(b,{create:function(g,f){var i,h;i=new b(g,e[g]||1);if(f){for(h in f){i.attr(h,f[h])}}return i}});d.html.Node=b})(tinymce);(function(b){var a=b.html.Node;b.html.DomParser=function(g,h){var f=this,e={},d=[],i={},c={};g=g||{};g.validate="validate" in g?g.validate:true;g.root_name=g.root_name||"body";f.schema=h=h||new b.html.Schema();function j(m){var o,p,x,v,z,n,q,l,t,u,k,s,y,r;s=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();for(o=0;o<m.length;o++){p=m[o];if(!p.parent){continue}v=[p];for(x=p.parent;x&&!h.isValidChild(x.name,p.name)&&!s[x.name];x=x.parent){v.push(x)}if(x&&v.length>1){v.reverse();z=n=f.filterNode(v[0].clone());for(t=0;t<v.length-1;t++){if(h.isValidChild(n.name,v[t].name)){q=f.filterNode(v[t].clone());n.append(q)}else{q=n}for(l=v[t].firstChild;l&&l!=v[t+1];){r=l.next;q.append(l);l=r}n=q}if(!z.isEmpty(k)){x.insert(z,v[0],true);x.insert(p,z)}else{x.insert(p,v[0],true)}x=v[0];if(x.isEmpty(k)||x.firstChild===x.lastChild&&x.firstChild.name==="br"){x.empty().remove()}}else{if(p.parent){if(p.name==="li"){y=p.prev;if(y&&(y.name==="ul"||y.name==="ul")){y.append(p);continue}y=p.next;if(y&&(y.name==="ul"||y.name==="ul")){y.insert(p,y.firstChild,true);continue}p.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(p.parent.name,"div")&&h.isValidChild("div",p.name)){p.wrap(f.filterNode(new a("div",1)))}else{if(p.name==="style"||p.name==="script"){p.empty().remove()}else{p.unwrap()}}}}}}f.filterNode=function(m){var l,k,n;if(k in e){n=i[k];if(n){n.push(m)}else{i[k]=[m]}}l=d.length;while(l--){k=d[l].name;if(k in m.attributes.map){n=c[k];if(n){n.push(m)}else{c[k]=[m]}}}return m};f.addNodeFilter=function(k,l){b.each(b.explode(k),function(m){var n=e[m];if(!n){e[m]=n=[]}n.push(l)})};f.addAttributeFilter=function(k,l){b.each(b.explode(k),function(m){var n;for(n=0;n<d.length;n++){if(d[n].name===m){d[n].callbacks.push(l);return}}d.push({name:m,callbacks:[l]})})};f.parse=function(v,m){var n,H,A,z,C,B,x,r,E,L,y,o,D,K=[],J,t,k,s,p,u,q;m=m||{};i={};c={};o=b.extend(b.makeMap("script,style,head,html,body,title,meta,param"),h.getBlockElements());u=h.getNonEmptyElements();p=h.children;y=g.validate;q="forced_root_block" in m?m.forced_root_block:g.forced_root_block;s=h.getWhiteSpaceElements();D=/^[ \t\r\n]+/;t=/[ \t\r\n]+$/;k=/[ \t\r\n]+/g;function F(){var M=H.firstChild,l,N;while(M){l=M.next;if(M.type==3||(M.type==1&&M.name!=="p"&&!o[M.name]&&!M.attr("data-mce-type"))){if(!N){N=I(q,1);H.insert(N,M);N.append(M)}else{N.append(M)}}else{N=null}M=l}}function I(l,M){var N=new a(l,M),O;if(l in e){O=i[l];if(O){O.push(N)}else{i[l]=[N]}}return N}function G(N){var O,l,M;for(O=N.prev;O&&O.type===3;){l=O.value.replace(t,"");if(l.length>0){O.value=l;O=O.prev}else{M=O.prev;O.remove();O=M}}}n=new b.html.SaxParser({validate:y,fix_self_closing:!y,cdata:function(l){A.append(I("#cdata",4)).value=l},text:function(N,l){var M;if(!J){N=N.replace(k," ");if(A.lastChild&&o[A.lastChild.name]){N=N.replace(D,"")}}if(N.length!==0){M=I("#text",3);M.raw=!!l;A.append(M).value=N}},comment:function(l){A.append(I("#comment",8)).value=l},pi:function(l,M){A.append(I(l,7)).value=M;G(A)},doctype:function(M){var l;l=A.append(I("#doctype",10));l.value=M;G(A)},start:function(l,U,N){var S,P,O,M,Q,V,T,R;O=y?h.getElementRule(l):{};if(O){S=I(O.outputName||l,1);S.attributes=U;S.shortEnded=N;A.append(S);R=p[A.name];if(R&&p[S.name]&&!R[S.name]){K.push(S)}P=d.length;while(P--){Q=d[P].name;if(Q in U.map){E=c[Q];if(E){E.push(S)}else{c[Q]=[S]}}}if(o[l]){G(S)}if(!N){A=S}if(!J&&s[l]){J=true}}},end:function(l){var Q,N,P,M,O;N=y?h.getElementRule(l):{};if(N){if(o[l]){if(!J){for(Q=A.firstChild;Q&&Q.type===3;){P=Q.value.replace(D,"");if(P.length>0){Q.value=P;Q=Q.next}else{M=Q.next;Q.remove();Q=M}}for(Q=A.lastChild;Q&&Q.type===3;){P=Q.value.replace(t,"");if(P.length>0){Q.value=P;Q=Q.prev}else{M=Q.prev;Q.remove();Q=M}}}Q=A.prev;if(Q&&Q.type===3){P=Q.value.replace(D,"");if(P.length>0){Q.value=P}else{Q.remove()}}}if(J&&s[l]){J=false}if(N.removeEmpty||N.paddEmpty){if(A.isEmpty(u)){if(N.paddEmpty){A.empty().append(new a("#text","3")).value="\u00a0"}else{if(!A.attributes.map.name){O=A.parent;A.empty().remove();A=O;return}}}}A=A.parent}}},h);H=A=new a(m.context||g.root_name,11);n.parse(v);if(y&&K.length){if(!m.context){j(K)}else{m.invalid=true}}if(q&&H.name=="body"){F()}if(!m.invalid){for(L in i){E=e[L];z=i[L];x=z.length;while(x--){if(!z[x].parent){z.splice(x,1)}}for(C=0,B=E.length;C<B;C++){E[C](z,L,m)}}for(C=0,B=d.length;C<B;C++){E=d[C];if(E.name in c){z=c[E.name];x=z.length;while(x--){if(!z[x].parent){z.splice(x,1)}}for(x=0,r=E.callbacks.length;x<r;x++){E.callbacks[x](z,E.name,m)}}}}return H};if(g.remove_trailing_brs){f.addNodeFilter("br",function(n,m){var r,q=n.length,o,u=h.getBlockElements(),k=h.getNonEmptyElements(),s,p,t;u.body=1;for(r=0;r<q;r++){o=n[r];s=o.parent;if(u[o.parent.name]&&o===s.lastChild){p=o.prev;while(p){t=p.name;if(t!=="span"||p.attr("data-mce-type")!=="bookmark"){if(t!=="br"){break}if(t==="br"){o=null;break}}p=p.prev}if(o){o.remove();if(s.isEmpty(k)){elementRule=h.getElementRule(s.name);if(elementRule){if(elementRule.removeEmpty){s.remove()}else{if(elementRule.paddEmpty){s.empty().append(new b.html.Node("#text",3)).value="\u00a0"}}}}}}}})}}})(tinymce);tinymce.html.Writer=function(e){var c=[],a,b,d,f,g;e=e||{};a=e.indent;b=tinymce.makeMap(e.indent_before||"");d=tinymce.makeMap(e.indent_after||"");f=tinymce.html.Entities.getEncodeFunc(e.entity_encoding||"raw",e.entities);g=e.element_format=="html";return{start:function(m,k,p){var n,j,h,o;if(a&&b[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n<j;n++){h=k[n];c.push(" ",h.name,'="',f(h.value,true),'"')}}if(!p||g){c[c.length]=">"}else{c[c.length]=" />"}if(p&&a&&d[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("</",h,">");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("<![CDATA[",h,"]]>")},comment:function(h){c.push("<!--",h,"-->")},pi:function(h,i){if(i){c.push("<?",h," ",i,"?>")}else{c.push("<?",h,"?>")}if(a){c.push("\n")}},doctype:function(h){c.push("<!DOCTYPE",h,">",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n<m;n++){r=q.attributesOrder[n];if(r in s.map){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}for(n=0,m=s.length;n<m;n++){r=s[n].name;if(!(r in u.map)){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}s=u}e.start(k.name,s,o);if(!o){if((k=k.firstChild)){do{f(k)}while(k=k.next)}e.end(j)}}else{t(k)}}if(h.type==1&&!c.inner){f(h)}else{g[11](h)}return e.getContent()}}})(tinymce);tinymce.dom={};(function(b,h){var g=!!document.addEventListener;function c(k,j,l,i){if(k.addEventListener){k.addEventListener(j,l,i||false)}else{if(k.attachEvent){k.attachEvent("on"+j,l)}}}function e(k,j,l,i){if(k.removeEventListener){k.removeEventListener(j,l,i||false)}else{if(k.detachEvent){k.detachEvent("on"+j,l)}}}function a(n,l){var i,k=l||{};function j(){return false}function m(){return true}for(i in n){if(i!=="layerX"&&i!=="layerY"){k[i]=n[i]}}if(!k.target){k.target=k.srcElement||document}k.preventDefault=function(){k.isDefaultPrevented=m;if(n){if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}}};k.stopPropagation=function(){k.isPropagationStopped=m;if(n){if(n.stopPropagation){n.stopPropagation()}else{n.cancelBubble=true}}};k.stopImmediatePropagation=function(){k.isImmediatePropagationStopped=m;k.stopPropagation()};if(!k.isDefaultPrevented){k.isDefaultPrevented=j;k.isPropagationStopped=j;k.isImmediatePropagationStopped=j}return k}function d(m,n,l){var k=m.document,j={type:"ready"};function i(){if(!l.domLoaded){l.domLoaded=true;n(j)}}if(g){c(m,"DOMContentLoaded",i)}else{c(k,"readystatechange",function(){if(k.readyState==="complete"){e(k,"readystatechange",arguments.callee);i()}});if(k.documentElement.doScroll&&m===m.top){(function(){try{k.documentElement.doScroll("left")}catch(o){setTimeout(arguments.callee,0);return}i()})()}}c(m,"load",i)}function f(k){var q=this,p={},i,o,n,m,l;m="onmouseenter" in document.documentElement;n="onfocusin" in document.documentElement;l={mouseenter:"mouseover",mouseleave:"mouseout"};i=1;q.domLoaded=false;q.events=p;function j(t,x){var s,u,r,v;s=p[x][t.type];if(s){for(u=0,r=s.length;u<r;u++){v=s[u];if(v&&v.func.call(v.scope,t)===false){t.preventDefault()}if(t.isImmediatePropagationStopped()){return}}}}q.bind=function(x,A,D,E){var s,t,u,r,B,z,C,v=window;function y(F){j(a(F||v.event),s)}if(!x||x.nodeType===3||x.nodeType===8){return}if(!x[h]){s=i++;x[h]=s;p[s]={}}else{s=x[h];if(!p[s]){p[s]={}}}E=E||x;A=A.split(" ");u=A.length;while(u--){r=A[u];z=y;B=C=false;if(r==="DOMContentLoaded"){r="ready"}if((q.domLoaded||x.readyState=="complete")&&r==="ready"){q.domLoaded=true;D.call(E,a({type:r}));continue}if(!m){B=l[r];if(B){z=function(F){var H,G;H=F.currentTarget;G=F.relatedTarget;if(G&&H.contains){G=H.contains(G)}else{while(G&&G!==H){G=G.parentNode}}if(!G){F=a(F||v.event);F.type=F.type==="mouseout"?"mouseleave":"mouseenter";F.target=H;j(F,s)}}}}if(!n&&(r==="focusin"||r==="focusout")){C=true;B=r==="focusin"?"focus":"blur";z=function(F){F=a(F||v.event);F.type=F.type==="focus"?"focusin":"focusout";j(F,s)}}t=p[s][r];if(!t){p[s][r]=t=[{func:D,scope:E}];t.fakeName=B;t.capture=C;t.nativeHandler=z;if(!g){t.proxyHandler=k(s)}if(r==="ready"){d(x,z,q)}else{c(x,B||r,g?z:t.proxyHandler,C)}}else{t.push({func:D,scope:E})}}x=t=0;return D};q.unbind=function(x,z,A){var s,u,v,B,r,t;if(!x||x.nodeType===3||x.nodeType===8){return q}s=x[h];if(s){t=p[s];if(z){z=z.split(" ");v=z.length;while(v--){r=z[v];u=t[r];if(u){if(A){B=u.length;while(B--){if(u[B].func===A){u.splice(B,1)}}}if(!A||u.length===0){delete t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}}}}else{for(r in t){u=t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}t={}}for(r in t){return q}delete p[s];try{delete x[h]}catch(y){x[h]=null}}return q};q.fire=function(u,s,r){var v,t;if(!u||u.nodeType===3||u.nodeType===8){return q}t=a(null,r);t.type=s;do{v=u[h];if(v){j(t,v)}u=u.parentNode||u.ownerDocument||u.defaultView||u.parentWindow}while(u&&!t.isPropagationStopped());return q};q.clean=function(u){var s,r,t=q.unbind;if(!u||u.nodeType===3||u.nodeType===8){return q}if(u[h]){t(u)}if(!u.getElementsByTagName){u=u.document}if(u&&u.getElementsByTagName){t(u);r=u.getElementsByTagName("*");s=r.length;while(s--){u=r[s];if(u[h]){t(u)}}}return q};q.callNativeHandler=function(s,r){if(p){p[s][r.type].nativeHandler(r)}};q.destory=function(){p={}};q.add=function(v,s,u,t){if(typeof(v)==="string"){v=document.getElementById(v)}if(v&&v instanceof Array){var r=v;while(r--){q.add(v[r],s,u,t)}return}if(s==="init"){s="ready"}return q.bind(v,s instanceof Array?s.join(" "):s,u,t)};q.remove=function(u,s,t){if(typeof(u)==="string"){u=document.getElementById(u)}if(u instanceof Array){var r=u;while(r--){q.remove(u[r],s,t,scope)}return q}return q.unbind(u,s instanceof Array?s.join(" "):s,t)};q.clear=function(r){if(typeof(r)==="string"){r=document.getElementById(r)}return q.clean(r)};q.cancel=function(r){if(r){q.prevent(r);q.stop(r)}return false};q.prevent=function(r){r.preventDefault();return false};q.stop=function(r){r.stopPropagation();return false}}b.EventUtils=f;b.Event=new f(function(i){return function(j){tinymce.dom.Event.callNativeHandler(i,j)}});b.Event.bind(window,"ready",function(){});b=0})(tinymce.dom,"data-mce-expando");(function(e){var g=e.each,d=e.is,f=e.isWebKit,b=e.isIE,h=e.html.Entities,c=/^([a-z0-9],?)+$/i,a=/^[ \t\r\n]*$/;e.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(o,l){var k=this,i,j,n;k.doc=o;k.win=window;k.files={};k.cssFlicker=false;k.counter=0;k.stdMode=!e.isIE||o.documentMode>=8;k.boxModel=!e.isIE||o.compatMode=="CSS1Compat"||k.stdMode;k.hasOuterHTML="outerHTML" in o.createElement("a");k.settings=l=e.extend({keep_values:false,hex_colors:1},l);k.schema=l.schema;k.styles=new e.html.Styles({url_converter:l.url_converter,url_converter_scope:l.url_converter_scope},l.schema);if(e.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(m){k.cssFlicker=true}}k.fixDoc(o);k.events=l.ownEvents?new e.dom.EventUtils(l.proxy):e.dom.Event;e.addUnload(k.destroy,k);n=l.schema?l.schema.getBlockElements():{};k.isBlock=function(q){var p=q.nodeType;if(p){return !!(p===1&&n[q.nodeName])}return !!n[q]}},fixDoc:function(k){var j=this.settings,i;if(b&&j.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(l){k.createElement(l)});for(i in j.schema.getCustomElements()){k.createElement(i)}}},clone:function(k,i){var j=this,m,l;if(!b||k.nodeType!==1||i){return k.cloneNode(i)}l=j.doc;if(!i){m=l.createElement(k.nodeName);g(j.getAttribs(k),function(n){j.setAttrib(m,n.nodeName,j.getAttrib(k,n.nodeName))});return m}return m.firstChild},getRoot:function(){var i=this,j=i.settings;return(j&&i.get(j.root_element))||i.doc.body},getViewPort:function(j){var k,i;j=!j?this.win:j;k=j.document;i=this.boxModel?k.documentElement:k.body;return{x:j.pageXOffset||i.scrollLeft,y:j.pageYOffset||i.scrollTop,w:j.innerWidth||i.clientWidth,h:j.innerHeight||i.clientHeight}},getRect:function(l){var k,i=this,j;l=i.get(l);k=i.getPos(l);j=i.getSize(l);return{x:k.x,y:k.y,w:j.w,h:j.h}},getSize:function(l){var j=this,i,k;l=j.get(l);i=j.getStyle(l,"width");k=j.getStyle(l,"height");if(i.indexOf("px")===-1){i=0}if(k.indexOf("px")===-1){k=0}return{w:parseInt(i)||l.offsetWidth||l.clientWidth,h:parseInt(k)||l.offsetHeight||l.clientHeight}},getParent:function(k,j,i){return this.getParents(k,j,i,false)},getParents:function(s,m,k,q){var j=this,i,l=j.settings,p=[];s=j.get(s);q=q===undefined;if(l.strict_root){k=k||j.getRoot()}if(d(m,"string")){i=m;if(m==="*"){m=function(o){return o.nodeType==1}}else{m=function(o){return j.is(o,i)}}}while(s){if(s==k||!s.nodeType||s.nodeType===9){break}if(!m||m(s)){if(q){p.push(s)}else{return s}}s=s.parentNode}return q?p:null},get:function(i){var j;if(i&&this.doc&&typeof(i)=="string"){j=i;i=this.doc.getElementById(i);if(i&&i.id!==j){return this.doc.getElementsByName(j)[1]}}return i},getNext:function(j,i){return this._findSib(j,i,"nextSibling")},getPrev:function(j,i){return this._findSib(j,i,"previousSibling")},select:function(k,j){var i=this;return e.dom.Sizzle(k,i.get(j)||i.get(i.settings.root_element)||i.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(c.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return e.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(l,o,i,k,m){var j=this;return this.run(l,function(r){var q,n;q=d(o,"string")?j.doc.createElement(o):o;j.setAttribs(q,i);if(k){if(k.nodeType){q.appendChild(k)}else{j.setHTML(q,k)}}return !m?r.appendChild(q):q})},create:function(k,i,j){return this.add(this.doc.createElement(k),k,i,j,1)},createHTML:function(q,i,m){var p="",l=this,j;p+="<"+q;for(j in i){if(i.hasOwnProperty(j)){p+=" "+j+'="'+l.encode(i[j])+'"'}}if(typeof(m)!="undefined"){return p+">"+m+"</"+q+">"}return p+" />"},remove:function(i,j){return this.run(i,function(l){var m,k=l.parentNode;if(!k){return null}if(j){while(m=l.firstChild){if(!e.isIE||m.nodeType!==3||m.nodeValue){k.insertBefore(m,l)}else{l.removeChild(m)}}}return k.removeChild(l)})},setStyle:function(l,i,j){var k=this;return k.run(l,function(o){var n,m;n=o.style;i=i.replace(/-(\D)/g,function(q,p){return p.toUpperCase()});if(k.pixelStyles.test(i)&&(e.is(j,"number")||/^[\-0-9\.]+$/.test(j))){j+="px"}switch(i){case"opacity":if(b){n.filter=j===""?"":"alpha(opacity="+(j*100)+")";if(!l.currentStyle||!l.currentStyle.hasLayout){n.display="inline-block"}}n[i]=n["-moz-opacity"]=n["-khtml-opacity"]=j||"";break;case"float":b?n.styleFloat=j:n.cssFloat=j;break;default:n[i]=j||""}if(k.settings.update_styles){k.setAttrib(o,"data-mce-style")}})},getStyle:function(l,i,k){l=this.get(l);if(!l){return}if(this.doc.defaultView&&k){i=i.replace(/[A-Z]/g,function(m){return"-"+m});try{return this.doc.defaultView.getComputedStyle(l,null).getPropertyValue(i)}catch(j){return null}}i=i.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(i=="float"){i=b?"styleFloat":"cssFloat"}if(l.currentStyle&&k){return l.currentStyle[i]}return l.style?l.style[i]:undefined},setStyles:function(l,m){var j=this,k=j.settings,i;i=k.update_styles;k.update_styles=0;g(m,function(o,p){j.setStyle(l,p,o)});k.update_styles=i;if(k.update_styles){j.setAttrib(l,k.cssText)}},removeAllAttribs:function(i){return this.run(i,function(l){var k,j=l.attributes;for(k=j.length-1;k>=0;k--){l.removeAttributeNode(j.item(k))}})},setAttrib:function(k,l,i){var j=this;if(!k||!l){return}if(j.settings.strict){l=l.toLowerCase()}return this.run(k,function(p){var o=j.settings;var m=p.getAttribute(l);if(i!==null){switch(l){case"style":if(!d(i,"string")){g(i,function(q,r){j.setStyle(p,r,q)});return}if(o.keep_values){if(i&&!j._isRes(i)){p.setAttribute("data-mce-style",i,2)}else{p.removeAttribute("data-mce-style",2)}}p.style.cssText=i;break;case"class":p.className=i||"";break;case"src":case"href":if(o.keep_values){if(o.url_converter){i=o.url_converter.call(o.url_converter_scope||j,i,l,p)}j.setAttrib(p,"data-mce-"+l,i,2)}break;case"shape":p.setAttribute("data-mce-style",i);break}}if(d(i)&&i!==null&&i.length!==0){p.setAttribute(l,""+i,2)}else{p.removeAttribute(l,2)}if(tinyMCE.activeEditor&&m!=i){var n=tinyMCE.activeEditor;n.onSetAttrib.dispatch(n,p,l,i)}})},setAttribs:function(j,k){var i=this;return this.run(j,function(l){g(k,function(m,o){i.setAttrib(l,o,m)})})},getAttrib:function(m,o,k){var i,j=this,l;m=j.get(m);if(!m||m.nodeType!==1){return k===l?false:k}if(!d(k)){k=""}if(/^(src|href|style|coords|shape)$/.test(o)){i=m.getAttribute("data-mce-"+o);if(i){return i}}if(b&&j.props[o]){i=m[j.props[o]];i=i&&i.nodeValue?i.nodeValue:i}if(!i){i=m.getAttribute(o,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(o)){if(m[j.props[o]]===true&&i===""){return o}return i?o:""}if(m.nodeName==="FORM"&&m.getAttributeNode(o)){return m.getAttributeNode(o).nodeValue}if(o==="style"){i=i||m.style.cssText;if(i){i=j.serializeStyle(j.parseStyle(i),m.nodeName);if(j.settings.keep_values&&!j._isRes(i)){m.setAttribute("data-mce-style",i)}}}if(f&&o==="class"&&i){i=i.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(o){case"rowspan":case"colspan":if(i===1){i=""}break;case"size":if(i==="+0"||i===20||i===0){i=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(i===0){i=""}break;case"hspace":if(i===-1){i=""}break;case"maxlength":case"tabindex":if(i===32768||i===2147483647||i==="32768"){i=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(i===65535){return o}return k;case"shape":i=i.toLowerCase();break;default:if(o.indexOf("on")===0&&i){i=e._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+i)}}}return(i!==l&&i!==null&&i!=="")?""+i:k},getPos:function(q,l){var j=this,i=0,p=0,m,o=j.doc,k;q=j.get(q);l=l||o.body;if(q){if(q.getBoundingClientRect){q=q.getBoundingClientRect();m=j.boxModel?o.documentElement:o.body;i=q.left+(o.documentElement.scrollLeft||o.body.scrollLeft)-m.clientTop;p=q.top+(o.documentElement.scrollTop||o.body.scrollTop)-m.clientLeft;return{x:i,y:p}}k=q;while(k&&k!=l&&k.nodeType){i+=k.offsetLeft||0;p+=k.offsetTop||0;k=k.offsetParent}k=q.parentNode;while(k&&k!=l&&k.nodeType){i-=k.scrollLeft||0;p-=k.scrollTop||0;k=k.parentNode}}return{x:i,y:p}},parseStyle:function(i){return this.styles.parse(i)},serializeStyle:function(j,i){return this.styles.serialize(j,i)},loadCSS:function(i){var k=this,l=k.doc,j;if(!i){i=""}j=k.select("head")[0];g(i.split(","),function(m){var n;if(k.files[m]){return}k.files[m]=true;n=k.create("link",{rel:"stylesheet",href:e._addVer(m)});if(b&&l.documentMode&&l.recalc){n.onload=function(){if(l.recalc){l.recalc()}n.onload=null}}j.appendChild(n)})},addClass:function(i,j){return this.run(i,function(k){var l;if(!j){return 0}if(this.hasClass(k,j)){return k.className}l=this.removeClass(k,j);return k.className=(l!=""?(l+" "):"")+j})},removeClass:function(k,l){var i=this,j;return i.run(k,function(n){var m;if(i.hasClass(n,l)){if(!j){j=new RegExp("(^|\\s+)"+l+"(\\s+|$)","g")}m=n.className.replace(j," ");m=e.trim(m!=" "?m:"");n.className=m;if(!m){n.removeAttribute("class");n.removeAttribute("className")}return m}return n.className})},hasClass:function(j,i){j=this.get(j);if(!j||!i){return false}return(" "+j.className+" ").indexOf(" "+i+" ")!==-1},show:function(i){return this.setStyle(i,"display","block")},hide:function(i){return this.setStyle(i,"display","none")},isHidden:function(i){i=this.get(i);return !i||i.style.display=="none"||this.getStyle(i,"display")=="none"},uniqueId:function(i){return(!i?"mce_":i)+(this.counter++)},setHTML:function(k,j){var i=this;return i.run(k,function(m){if(b){while(m.firstChild){m.removeChild(m.firstChild)}try{m.innerHTML="<br />"+j;m.removeChild(m.firstChild)}catch(l){m=i.create("div");m.innerHTML="<br />"+j;g(m.childNodes,function(o,n){if(n){m.appendChild(o)}})}}else{m.innerHTML=j}return j})},getOuterHTML:function(k){var j,i=this;k=i.get(k);if(!k){return null}if(k.nodeType===1&&i.hasOuterHTML){return k.outerHTML}j=(k.ownerDocument||i.doc).createElement("body");j.appendChild(k.cloneNode(true));return j.innerHTML},setOuterHTML:function(l,j,m){var i=this;function k(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){i.insertAfter(s.cloneNode(true),p);s=s.previousSibling}i.remove(p)}return this.run(l,function(o){o=i.get(o);if(o.nodeType==1){m=m||o.ownerDocument||i.doc;if(b){try{if(b&&o.nodeType==1){o.outerHTML=j}else{k(o,j,m)}}catch(n){k(o,j,m)}}else{k(o,j,m)}}})},decode:h.decode,encode:h.encodeAllRaw,insertAfter:function(i,j){j=this.get(j);return this.run(i,function(l){var k,m;k=j.parentNode;m=j.nextSibling;if(m){k.insertBefore(l,m)}else{k.appendChild(l)}return l})},replace:function(m,l,i){var j=this;if(d(l,"array")){m=m.cloneNode(true)}return j.run(l,function(k){if(i){g(e.grep(k.childNodes),function(n){m.appendChild(n)})}return k.parentNode.replaceChild(m,k)})},rename:function(l,i){var k=this,j;if(l.nodeName!=i.toUpperCase()){j=k.create(i);g(k.getAttribs(l),function(m){k.setAttrib(j,m.nodeName,k.getAttrib(l,m.nodeName))});k.replace(j,l,1)}return j||l},findCommonAncestor:function(k,i){var l=k,j;while(l){j=i;while(j&&l!=j){j=j.parentNode}if(l==j){break}l=l.parentNode}if(!l&&k.ownerDocument){return k.ownerDocument.documentElement}return l},toHex:function(i){var k=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(i);function j(l){l=parseInt(l).toString(16);return l.length>1?l:"0"+l}if(k){i="#"+j(k[1])+j(k[2])+j(k[3]);return i}return i},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(i){g(i.imports,function(s){q(s)});g(i.cssRules||i.rules,function(s){switch(s.type||1){case 1:if(s.selectorText){g(s.selectorText.split(","),function(r){r=r.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(r)||!/\.[\w\-]+$/.test(r)){return}l=r;r=e._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",r);if(p&&!(r=p(r,l))){return}if(!o[r]){j.push({"class":r});o[r]=1}})}break;case 3:q(s.styleSheet);break}})}try{g(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(l,k,j){var i=this,m;if(i.doc&&typeof(l)==="string"){l=i.get(l)}if(!l){return false}j=j||this;if(!l.nodeType&&(l.length||l.length===0)){m=[];g(l,function(o,n){if(o){if(typeof(o)=="string"){o=i.doc.getElementById(o)}m.push(k.call(j,o,n))}});return m}return k.call(j,l)},getAttribs:function(j){var i;j=this.get(j);if(!j){return[]}if(b){i=[];if(j.nodeName=="OBJECT"){return j.attributes}if(j.nodeName==="OPTION"&&this.getAttrib(j,"selected")){i.push({specified:1,nodeName:"selected"})}j.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(k){i.push({specified:1,nodeName:k})});return i}return j.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p=0;m=m.firstChild;if(m){j=new e.dom.TreeWalker(m,m.parentNode);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){if(l==="br"){p++;continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if(q==8){return false}if((q===3&&!a.test(m.nodeValue))){return false}}while(m=j.next())}return p<=1},destroy:function(j){var i=this;i.win=i.doc=i.root=i.events=i.frag=null;if(!j){e.removeUnload(i.destroy)}},createRng:function(){var i=this.doc;return i.createRange?i.createRange():new e.dom.Range(this)},nodeIndex:function(m,n){var i=0,k,l,j;if(m){for(k=m.nodeType,m=m.previousSibling,l=m;m;m=m.previousSibling){j=m.nodeType;if(n&&j==3){if(j==k||!m.nodeValue.length){continue}}i++;k=j}}return i},split:function(m,l,p){var q=this,i=q.createRng(),n,k,o;function j(v){var t,s=v.childNodes,u=v.nodeType;function x(A){var z=A.previousSibling&&A.previousSibling.nodeName=="SPAN";var y=A.nextSibling&&A.nextSibling.nodeName=="SPAN";return z&&y}if(u==1&&v.getAttribute("data-mce-type")=="bookmark"){return}for(t=s.length-1;t>=0;t--){j(s[t])}if(u!=9){if(u==3&&v.nodeValue.length>0){var r=e.trim(v.nodeValue).length;if(!q.isBlock(v.parentNode)||r>0||r==0&&x(v)){return}}else{if(u==1){s=v.childNodes;if(s.length==1&&s[0]&&s[0].nodeType==1&&s[0].getAttribute("data-mce-type")=="bookmark"){v.parentNode.insertBefore(s[0],v)}if(s.length||/^(br|hr|input|img)$/i.test(v.nodeName)){return}}}q.remove(v)}return v}if(m&&l){i.setStart(m.parentNode,q.nodeIndex(m));i.setEnd(l.parentNode,q.nodeIndex(l));n=i.extractContents();i=q.createRng();i.setStart(l.parentNode,q.nodeIndex(l)+1);i.setEnd(m.parentNode,q.nodeIndex(m)+1);k=i.extractContents();o=m.parentNode;o.insertBefore(j(n),m);if(p){o.replaceChild(p,l)}else{o.insertBefore(l,m)}o.insertBefore(j(k),m);q.remove(m);return p||l}},bind:function(l,i,k,j){return this.events.add(l,i,k,j||this)},unbind:function(k,i,j){return this.events.remove(k,i,j)},fire:function(k,j,i){return this.events.fire(k,j,i)},_findSib:function(l,i,j){var k=this,m=i;if(l){if(d(m,"string")){m=function(n){return k.is(n,i)}}for(l=l[j];l;l=l[j]){if(m(l)){return l}}}return null},_isRes:function(i){return/^(top|left|bottom|right|width|height)/i.test(i)||/;\s*(top|left|bottom|right|width|height)/i.test(i)}});e.DOM=new e.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var O=this,e=c.doc,T=0,F=1,j=2,E=true,S=false,V="startOffset",h="startContainer",Q="endContainer",A="endOffset",k=tinymce.extend,n=c.nodeIndex;k(O,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:E,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:J,setEndBefore:K,setEndAfter:u,collapse:B,selectNode:y,selectNodeContents:G,compareBoundaryPoints:v,deleteContents:p,extractContents:I,cloneContents:d,insertNode:D,surroundContents:N,cloneRange:L});function x(){return e.createDocumentFragment()}function q(W,t){C(E,W,t)}function s(W,t){C(S,W,t)}function g(t){q(t.parentNode,n(t))}function J(t){q(t.parentNode,n(t)+1)}function K(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function B(t){if(t){O[Q]=O[h];O[A]=O[V]}else{O[h]=O[Q];O[V]=O[A]}O.collapsed=E}function y(t){g(t);u(t)}function G(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(Z,t){var ac=O[h],X=O[V],ab=O[Q],W=O[A],aa=t.startContainer,ae=t.startOffset,Y=t.endContainer,ad=t.endOffset;if(Z===0){return H(ac,X,aa,ae)}if(Z===1){return H(ab,W,aa,ae)}if(Z===2){return H(ab,W,Y,ad)}if(Z===3){return H(ac,X,Y,ad)}}function p(){l(j)}function I(){return l(T)}function d(){return l(F)}function D(Z){var W=this[h],t=this[V],Y,X;if((W.nodeType===3||W.nodeType===4)&&W.nodeValue){if(!t){W.parentNode.insertBefore(Z,W)}else{if(t>=W.nodeValue.length){c.insertAfter(Z,W)}else{Y=W.splitText(t);W.parentNode.insertBefore(Z,Y)}}}else{if(W.childNodes.length>0){X=W.childNodes[t]}if(X){W.insertBefore(Z,X)}else{W.appendChild(Z)}}}function N(W){var t=O.extractContents();O.insertNode(W);W.appendChild(t);O.selectNode(W)}function L(){return k(new b(c),{startContainer:O[h],startOffset:O[V],endContainer:O[Q],endOffset:O[A],collapsed:O.collapsed,commonAncestorContainer:O.commonAncestorContainer})}function P(t,W){var X;if(t.nodeType==3){return t}if(W<0){return t}X=t.firstChild;while(X&&W>0){--W;X=X.nextSibling}if(X){return X}return t}function m(){return(O[h]==O[Q]&&O[V]==O[A])}function H(Y,aa,W,Z){var ab,X,t,ac,ae,ad;if(Y==W){if(aa==Z){return 0}if(aa<Z){return -1}return 1}ab=W;while(ab&&ab.parentNode!=Y){ab=ab.parentNode}if(ab){X=0;t=Y.firstChild;while(t!=ab&&X<aa){X++;t=t.nextSibling}if(aa<=X){return -1}return 1}ab=Y;while(ab&&ab.parentNode!=W){ab=ab.parentNode}if(ab){X=0;t=W.firstChild;while(t!=ab&&X<Z){X++;t=t.nextSibling}if(X<Z){return -1}return 1}ac=c.findCommonAncestor(Y,W);ae=Y;while(ae&&ae.parentNode!=ac){ae=ae.parentNode}if(!ae){ae=ac}ad=W;while(ad&&ad.parentNode!=ac){ad=ad.parentNode}if(!ad){ad=ac}if(ae==ad){return 0}t=ac.firstChild;while(t){if(t==ae){return -1}if(t==ad){return 1}t=t.nextSibling}}function C(W,Z,Y){var t,X;if(W){O[h]=Z;O[V]=Y}else{O[Q]=Z;O[A]=Y}t=O[Q];while(t.parentNode){t=t.parentNode}X=O[h];while(X.parentNode){X=X.parentNode}if(X==t){if(H(O[h],O[V],O[Q],O[A])>0){O.collapse(W)}}else{O.collapse(W)}O.collapsed=m();O.commonAncestorContainer=c.findCommonAncestor(O[h],O[Q])}function l(ac){var ab,Y=0,ae=0,W,aa,X,Z,t,ad;if(O[h]==O[Q]){return f(ac)}for(ab=O[Q],W=ab.parentNode;W;ab=W,W=W.parentNode){if(W==O[h]){return r(ab,ac)}++Y}for(ab=O[h],W=ab.parentNode;W;ab=W,W=W.parentNode){if(W==O[Q]){return U(ab,ac)}++ae}aa=ae-Y;X=O[h];while(aa>0){X=X.parentNode;aa--}Z=O[Q];while(aa<0){Z=Z.parentNode;aa++}for(t=X.parentNode,ad=Z.parentNode;t!=ad;t=t.parentNode,ad=ad.parentNode){X=t;Z=ad}return o(X,Z,ac)}function f(ab){var ad,ae,t,X,Y,ac,Z,W,aa;if(ab!=j){ad=x()}if(O[V]==O[A]){return ad}if(O[h].nodeType==3){ae=O[h].nodeValue;t=ae.substring(O[V],O[A]);if(ab!=F){X=O[h];W=O[V];aa=O[A]-O[V];if(W===0&&aa>=X.nodeValue.length-1){X.parentNode.removeChild(X)}else{X.deleteData(W,aa)}O.collapse(E)}if(ab==j){return}if(t.length>0){ad.appendChild(e.createTextNode(t))}return ad}X=P(O[h],O[V]);Y=O[A]-O[V];while(X&&Y>0){ac=X.nextSibling;Z=z(X,ab);if(ad){ad.appendChild(Z)}--Y;X=ac}if(ab!=F){O.collapse(E)}return ad}function r(ac,Z){var ab,aa,W,t,Y,X;if(Z!=j){ab=x()}aa=i(ac,Z);if(ab){ab.appendChild(aa)}W=n(ac);t=W-O[V];if(t<=0){if(Z!=F){O.setEndBefore(ac);O.collapse(S)}return ab}aa=ac.previousSibling;while(t>0){Y=aa.previousSibling;X=z(aa,Z);if(ab){ab.insertBefore(X,ab.firstChild)}--t;aa=Y}if(Z!=F){O.setEndBefore(ac);O.collapse(S)}return ab}function U(aa,Z){var ac,W,ab,t,Y,X;if(Z!=j){ac=x()}ab=R(aa,Z);if(ac){ac.appendChild(ab)}W=n(aa);++W;t=O[A]-W;ab=aa.nextSibling;while(ab&&t>0){Y=ab.nextSibling;X=z(ab,Z);if(ac){ac.appendChild(X)}--t;ab=Y}if(Z!=F){O.setStartAfter(aa);O.collapse(E)}return ac}function o(aa,t,ad){var X,af,Z,ab,ac,W,ae,Y;if(ad!=j){af=x()}X=R(aa,ad);if(af){af.appendChild(X)}Z=aa.parentNode;ab=n(aa);ac=n(t);++ab;W=ac-ab;ae=aa.nextSibling;while(W>0){Y=ae.nextSibling;X=z(ae,ad);if(af){af.appendChild(X)}ae=Y;--W}X=i(t,ad);if(af){af.appendChild(X)}if(ad!=F){O.setStartAfter(aa);O.collapse(E)}return af}function i(ab,ac){var X=P(O[Q],O[A]-1),ad,aa,Z,t,W,Y=X!=O[Q];if(X==ab){return M(X,Y,S,ac)}ad=X.parentNode;aa=M(ad,S,S,ac);while(ad){while(X){Z=X.previousSibling;t=M(X,Y,S,ac);if(ac!=j){aa.insertBefore(t,aa.firstChild)}Y=E;X=Z}if(ad==ab){return aa}X=ad.previousSibling;ad=ad.parentNode;W=M(ad,S,S,ac);if(ac!=j){W.appendChild(aa)}aa=W}}function R(ab,ac){var Y=P(O[h],O[V]),Z=Y!=O[h],ad,aa,X,t,W;if(Y==ab){return M(Y,Z,E,ac)}ad=Y.parentNode;aa=M(ad,S,E,ac);while(ad){while(Y){X=Y.nextSibling;t=M(Y,Z,E,ac);if(ac!=j){aa.appendChild(t)}Z=E;Y=X}if(ad==ab){return aa}Y=ad.nextSibling;ad=ad.parentNode;W=M(ad,S,E,ac);if(ac!=j){W.appendChild(aa)}aa=W}}function M(t,Z,ac,ad){var Y,X,aa,W,ab;if(Z){return z(t,ad)}if(t.nodeType==3){Y=t.nodeValue;if(ac){W=O[V];X=Y.substring(W);aa=Y.substring(0,W)}else{W=O[A];X=Y.substring(0,W);aa=Y.substring(W)}if(ad!=F){t.nodeValue=aa}if(ad==j){return}ab=c.clone(t,S);ab.nodeValue=X;return ab}if(ad==j){return}return c.clone(t,S)}function z(W,t){if(t!=j){return t==F?c.clone(W,E):W}W.parentNode.removeChild(W)}}a.Range=b})(tinymce.dom);(function(){function a(d){var b=this,h=d.dom,c=true,f=false;function e(i,j){var k,t=0,q,n,m,l,o,r,p=-1,s;k=i.duplicate();k.collapse(j);s=k.parentElement();if(s.ownerDocument!==d.dom.doc){return}while(s.contentEditable==="false"){s=s.parentNode}if(!s.hasChildNodes()){return{node:s,inside:1}}m=s.children;q=m.length-1;while(t<=q){r=Math.floor((t+q)/2);l=m[r];k.moveToElementText(l);p=k.compareEndPoints(j?"StartToStart":"EndToEnd",i);if(p>0){q=r-1}else{if(p<0){t=r+1}else{return{node:l}}}}if(p<0){if(!l){k.moveToElementText(s);k.collapse(true);l=s;n=true}else{k.collapse(false)}o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",1)==0||s!=k.parentElement()){break}o++}}else{k.collapse(true);o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",-1)==0||s!=k.parentElement()){break}o++}}return{node:l,position:p,offset:o,inside:n}}function g(){var i=d.getRng(),r=h.createRng(),l,k,p,q,m,j;l=i.item?i.item(0):i.parentElement();if(l.ownerDocument!=h.doc){return r}k=d.isCollapsed();if(i.item){r.setStart(l.parentNode,h.nodeIndex(l));r.setEnd(r.startContainer,r.startOffset+1);return r}function o(A){var u=e(i,A),s,y,z=0,x,v,t;s=u.node;y=u.offset;if(u.inside&&!s.hasChildNodes()){r[A?"setStart":"setEnd"](s,0);return}if(y===v){r[A?"setStartBefore":"setEndAfter"](s);return}if(u.position<0){x=u.inside?s.firstChild:s.nextSibling;if(!x){r[A?"setStartAfter":"setEndAfter"](s);return}if(!y){if(x.nodeType==3){r[A?"setStart":"setEnd"](x,0)}else{r[A?"setStartBefore":"setEndBefore"](x)}return}while(x){t=x.nodeValue;z+=t.length;if(z>=y){s=x;z-=y;z=t.length-z;break}x=x.nextSibling}}else{x=s.previousSibling;if(!x){return r[A?"setStartBefore":"setEndBefore"](s)}if(!y){if(s.nodeType==3){r[A?"setStart":"setEnd"](x,s.nodeValue.length)}else{r[A?"setStartAfter":"setEndAfter"](x)}return}while(x){z+=x.nodeValue.length;if(z>=y){s=x;z-=y;break}x=x.previousSibling}}r[A?"setStart":"setEnd"](s,z)}try{o(true);if(!k){o()}}catch(n){if(n.number==-2147024809){m=b.getBookmark(2);p=i.duplicate();p.collapse(true);l=p.parentElement();if(!k){p=i.duplicate();p.collapse(false);q=p.parentElement();q.innerHTML=q.innerHTML}l.innerHTML=l.innerHTML;b.moveToBookmark(m);i=d.getRng();o(true);if(!k){o()}}else{throw n}}return r}this.getBookmark=function(m){var j=d.getRng(),o,i,l={};function n(u){var u,t,p,s,r,q=[];t=u.parentNode;p=h.getRoot().parentNode;while(t!=p&&t.nodeType!==9){s=t.children;r=s.length;while(r--){if(u===s[r]){q.push(r);break}}u=t;t=t.parentNode}return q}function k(q){var p;p=e(j,q);if(p){return{position:p.position,offset:p.offset,indexes:n(p.node),inside:p.inside}}}if(m===2){if(!j.item){l.start=k(true);if(!d.isCollapsed()){l.end=k()}}else{l.start={ctrl:true,indexes:n(j.item(0))}}}return l};this.moveToBookmark=function(k){var j,i=h.doc.body;function m(o){var r,q,n,p;r=h.getRoot();for(q=o.length-1;q>=0;q--){p=r.children;n=o[q];if(n<=p.length-1){r=p[n]}}return r}function l(r){var n=k[r?"start":"end"],q,p,o;if(n){q=n.position>0;p=i.createTextRange();p.moveToElementText(m(n.indexes));offset=n.offset;if(offset!==o){p.collapse(n.inside||q);p.moveStart("character",q?-offset:offset)}else{p.collapse(r)}j.setEndPoint(r?"StartToStart":"EndToStart",p);if(r){j.collapse(true)}}}if(k.start){if(k.start.ctrl){j=i.createControlRange();j.addElement(m(k.start.indexes));j.select()}else{j=i.createTextRange();l(true);l();j.select()}}};this.addRange=function(i){var n,l,k,p,s,q,r=d.dom.doc,m=r.body;function j(z){var u,y,t,x,v;t=h.create("a");u=z?k:s;y=z?p:q;x=n.duplicate();if(u==r||u==r.documentElement){u=m;y=0}if(u.nodeType==3){u.parentNode.insertBefore(t,u);x.moveToElementText(t);x.moveStart("character",y);h.remove(t);n.setEndPoint(z?"StartToStart":"EndToEnd",x)}else{v=u.childNodes;if(v.length){if(y>=v.length){h.insertAfter(t,v[v.length-1])}else{u.insertBefore(t,v[y])}x.moveToElementText(t)}else{if(u.canHaveHTML){u.innerHTML="<span>\uFEFF</span>";t=u.firstChild;x.moveToElementText(t);x.collapse(f)}}n.setEndPoint(z?"StartToStart":"EndToEnd",x);h.remove(t)}}k=i.startContainer;p=i.startOffset;s=i.endContainer;q=i.endOffset;n=m.createTextRange();if(k==s&&k.nodeType==1){if(!k.hasChildNodes()){k.innerHTML="<span>\uFEFF</span><span>\uFEFF</span>";n.moveToElementText(k.lastChild);n.select();h.doc.selection.clear();k.innerHTML="";return}if(p==q-1){try{l=m.createControlRange();l.addElement(k.childNodes[p]);l.select();return}catch(o){}}}j(true);j();n.select()};this.getRangeAt=g}tinymce.dom.TridentSelection=a})();(function(){var p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,j=0,d=Object.prototype.toString,o=false,i=true;[0,0].sort(function(){i=false;return 0});var b=function(v,e,z,A){z=z||[];e=e||document;var C=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!v||typeof v!=="string"){return z}var x=[],s,E,H,r,u=true,t=b.isXML(e),B=v,D,G,F,y;do{p.exec("");s=p.exec(B);if(s){B=s[3];x.push(s[1]);if(s[2]){r=s[3];break}}}while(s);if(x.length>1&&k.exec(v)){if(x.length===2&&f.relative[x[0]]){E=h(x[0]+x[1],e)}else{E=f.relative[x[0]]?[e]:b(x.shift(),e);while(x.length){v=x.shift();if(f.relative[v]){v+=x.shift()}E=h(v,E)}}}else{if(!A&&x.length>1&&e.nodeType===9&&!t&&f.match.ID.test(x[0])&&!f.match.ID.test(x[x.length-1])){D=b.find(x.shift(),e,t);e=D.expr?b.filter(D.expr,D.set)[0]:D.set[0]}if(e){D=A?{expr:x.pop(),set:a(A)}:b.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&e.parentNode?e.parentNode:e,t);E=D.expr?b.filter(D.expr,D.set):D.set;if(x.length>0){H=a(E)}else{u=false}while(x.length){G=x.pop();F=G;if(!f.relative[G]){G=""}else{F=x.pop()}if(F==null){F=e}f.relative[G](H,F,t)}}else{H=x=[]}}if(!H){H=E}if(!H){b.error(G||v)}if(d.call(H)==="[object Array]"){if(!u){z.push.apply(z,H)}else{if(e&&e.nodeType===1){for(y=0;H[y]!=null;y++){if(H[y]&&(H[y]===true||H[y].nodeType===1&&b.contains(e,H[y]))){z.push(E[y])}}}else{for(y=0;H[y]!=null;y++){if(H[y]&&H[y].nodeType===1){z.push(E[y])}}}}}else{a(H,z)}if(r){b(r,C,z,A);b.uniqueSort(z)}return z};b.uniqueSort=function(r){if(c){o=i;r.sort(c);if(o){for(var e=1;e<r.length;e++){if(r[e]===r[e-1]){r.splice(e--,1)}}}}return r};b.matches=function(e,r){return b(e,null,null,r)};b.find=function(y,e,z){var x;if(!y){return[]}for(var t=0,s=f.order.length;t<s;t++){var v=f.order[t],u;if((u=f.leftMatch[v].exec(y))){var r=u[1];u.splice(1,1);if(r.substr(r.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");x=f.find[v](u,e,z);if(x!=null){y=y.replace(f.match[v],"");break}}}}if(!x){x=e.getElementsByTagName("*")}return{set:x,expr:y}};b.filter=function(C,B,F,u){var s=C,H=[],z=B,x,e,y=B&&B[0]&&b.isXML(B[0]);while(C&&B.length){for(var A in f.filter){if((x=f.leftMatch[A].exec(C))!=null&&x[2]){var r=f.filter[A],G,E,t=x[1];e=false;x.splice(1,1);if(t.substr(t.length-1)==="\\"){continue}if(z===H){H=[]}if(f.preFilter[A]){x=f.preFilter[A](x,z,F,H,u,y);if(!x){e=G=true}else{if(x===true){continue}}}if(x){for(var v=0;(E=z[v])!=null;v++){if(E){G=r(E,x,v,z);var D=u^!!G;if(F&&G!=null){if(D){e=true}else{z[v]=false}}else{if(D){H.push(E);e=true}}}}}if(G!==undefined){if(!F){z=H}C=C.replace(f.match[A],"");if(!e){return[]}break}}}if(C===s){if(e==null){b.error(C)}else{break}}s=C}return z};b.error=function(e){throw"Syntax error, unrecognized expression: "+e};var f=b.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")}},relative:{"+":function(x,r){var t=typeof r==="string",v=t&&!/\W/.test(r),y=t&&!v;if(v){r=r.toLowerCase()}for(var s=0,e=x.length,u;s<e;s++){if((u=x[s])){while((u=u.previousSibling)&&u.nodeType!==1){}x[s]=y||u&&u.nodeName.toLowerCase()===r?u||false:u===r}}if(y){b.filter(r,x,true)}},">":function(x,r){var u=typeof r==="string",v,s=0,e=x.length;if(u&&!/\W/.test(r)){r=r.toLowerCase();for(;s<e;s++){v=x[s];if(v){var t=v.parentNode;x[s]=t.nodeName.toLowerCase()===r?t:false}}}else{for(;s<e;s++){v=x[s];if(v){x[s]=u?v.parentNode:v.parentNode===r}}if(u){b.filter(r,x,true)}}},"":function(t,r,v){var s=j++,e=q,u;if(typeof r==="string"&&!/\W/.test(r)){r=r.toLowerCase();u=r;e=n}e("parentNode",r,s,t,u,v)},"~":function(t,r,v){var s=j++,e=q,u;if(typeof r==="string"&&!/\W/.test(r)){r=r.toLowerCase();u=r;e=n}e("previousSibling",r,s,t,u,v)}},find:{ID:function(r,s,t){if(typeof s.getElementById!=="undefined"&&!t){var e=s.getElementById(r[1]);return e?[e]:[]}},NAME:function(s,v){if(typeof v.getElementsByName!=="undefined"){var r=[],u=v.getElementsByName(s[1]);for(var t=0,e=u.length;t<e;t++){if(u[t].getAttribute("name")===s[1]){r.push(u[t])}}return r.length===0?null:r}},TAG:function(e,r){return r.getElementsByTagName(e[1])}},preFilter:{CLASS:function(t,r,s,e,x,y){t=" "+t[1].replace(/\\/g,"")+" ";if(y){return t}for(var u=0,v;(v=r[u])!=null;u++){if(v){if(x^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(t)>=0)){if(!s){e.push(v)}}else{if(s){r[u]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(r,e){return r[1].toLowerCase()},CHILD:function(e){if(e[1]==="nth"){var r=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(r[1]+(r[2]||1))-0;e[3]=r[3]-0}e[0]=j++;return e},ATTR:function(u,r,s,e,v,x){var t=u[1].replace(/\\/g,"");if(!x&&f.attrMap[t]){u[1]=f.attrMap[t]}if(u[2]==="~="){u[4]=" "+u[4]+" "}return u},PSEUDO:function(u,r,s,e,v){if(u[1]==="not"){if((p.exec(u[3])||"").length>1||/^\w/.test(u[3])){u[3]=b(u[3],null,null,r)}else{var t=b.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return true}}return u},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(s,r,e){return !!b(e[3],s).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toLowerCase()==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)}},setFilters:{first:function(r,e){return e===0},last:function(s,r,e,t){return r===t.length-1},even:function(r,e){return e%2===0},odd:function(r,e){return e%2===1},lt:function(s,r,e){return r<e[3]-0},gt:function(s,r,e){return r>e[3]-0},nth:function(s,r,e){return e[3]-0===r},eq:function(s,r,e){return e[3]-0===r}},filter:{PSEUDO:function(s,y,x,z){var e=y[1],r=f.filters[e];if(r){return r(s,x,y,z)}else{if(e==="contains"){return(s.textContent||s.innerText||b.getText([s])||"").indexOf(y[3])>=0}else{if(e==="not"){var t=y[3];for(var v=0,u=t.length;v<u;v++){if(t[v]===s){return false}}return true}else{b.error("Syntax error, unrecognized expression: "+e)}}}},CHILD:function(e,t){var x=t[1],r=e;switch(x){case"only":case"first":while((r=r.previousSibling)){if(r.nodeType===1){return false}}if(x==="first"){return true}r=e;case"last":while((r=r.nextSibling)){if(r.nodeType===1){return false}}return true;case"nth":var s=t[2],A=t[3];if(s===1&&A===0){return true}var v=t[0],z=e.parentNode;if(z&&(z.sizcache!==v||!e.nodeIndex)){var u=0;for(r=z.firstChild;r;r=r.nextSibling){if(r.nodeType===1){r.nodeIndex=++u}}z.sizcache=v}var y=e.nodeIndex-A;if(s===0){return y===0}else{return(y%s===0&&y/s>=0)}}},ID:function(r,e){return r.nodeType===1&&r.getAttribute("id")===e},TAG:function(r,e){return(e==="*"&&r.nodeType===1)||r.nodeName.toLowerCase()===e},CLASS:function(r,e){return(" "+(r.className||r.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(v,t){var s=t[1],e=f.attrHandle[s]?f.attrHandle[s](v):v[s]!=null?v[s]:v.getAttribute(s),x=e+"",u=t[2],r=t[4];return e==null?u==="!=":u==="="?x===r:u==="*="?x.indexOf(r)>=0:u==="~="?(" "+x+" ").indexOf(r)>=0:!r?x&&e!==false:u==="!="?x!==r:u==="^="?x.indexOf(r)===0:u==="$="?x.substr(x.length-r.length)===r:u==="|="?x===r||x.substr(0,r.length+1)===r+"-":false},POS:function(u,r,s,v){var e=r[2],t=f.setFilters[e];if(t){return t(u,s,r,v)}}}};var k=f.match.POS,g=function(r,e){return"\\"+(e-0+1)};for(var m in f.match){f.match[m]=new RegExp(f.match[m].source+(/(?![^\[]*\])(?![^\(]*\))/.source));f.leftMatch[m]=new RegExp(/(^(?:.|\r|\n)*?)/.source+f.match[m].source.replace(/\\(\d+)/g,g))}var a=function(r,e){r=Array.prototype.slice.call(r,0);if(e){e.push.apply(e,r);return e}return r};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(l){a=function(u,t){var r=t||[],s=0;if(d.call(u)==="[object Array]"){Array.prototype.push.apply(r,u)}else{if(typeof u.length==="number"){for(var e=u.length;s<e;s++){r.push(u[s])}}else{for(;u[s];s++){r.push(u[s])}}}return r}}var c;if(document.documentElement.compareDocumentPosition){c=function(r,e){if(!r.compareDocumentPosition||!e.compareDocumentPosition){if(r==e){o=true}return r.compareDocumentPosition?-1:1}var s=r.compareDocumentPosition(e)&4?-1:r===e?0:1;if(s===0){o=true}return s}}else{if("sourceIndex" in document.documentElement){c=function(r,e){if(!r.sourceIndex||!e.sourceIndex){if(r==e){o=true}return r.sourceIndex?-1:1}var s=r.sourceIndex-e.sourceIndex;if(s===0){o=true}return s}}else{if(document.createRange){c=function(t,r){if(!t.ownerDocument||!r.ownerDocument){if(t==r){o=true}return t.ownerDocument?-1:1}var s=t.ownerDocument.createRange(),e=r.ownerDocument.createRange();s.setStart(t,0);s.setEnd(t,0);e.setStart(r,0);e.setEnd(r,0);var u=s.compareBoundaryPoints(Range.START_TO_END,e);if(u===0){o=true}return u}}}}b.getText=function(e){var r="",t;for(var s=0;e[s];s++){t=e[s];if(t.nodeType===3||t.nodeType===4){r+=t.nodeValue}else{if(t.nodeType!==8){r+=b.getText(t.childNodes)}}}return r};(function(){var r=document.createElement("div"),s="script"+(new Date()).getTime();r.innerHTML="<a name='"+s+"'/>";var e=document.documentElement;e.insertBefore(r,e.firstChild);if(document.getElementById(s)){f.find.ID=function(u,v,x){if(typeof v.getElementById!=="undefined"&&!x){var t=v.getElementById(u[1]);return t?t.id===u[1]||typeof t.getAttributeNode!=="undefined"&&t.getAttributeNode("id").nodeValue===u[1]?[t]:undefined:[]}};f.filter.ID=function(v,t){var u=typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id");return v.nodeType===1&&u&&u.nodeValue===t}}e.removeChild(r);e=r=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(r,v){var u=v.getElementsByTagName(r[1]);if(r[1]==="*"){var t=[];for(var s=0;u[s];s++){if(u[s].nodeType===1){t.push(u[s])}}u=t}return u}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(r){return r.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=b,s=document.createElement("div");s.innerHTML="<p class='TEST'></p>";if(s.querySelectorAll&&s.querySelectorAll(".TEST").length===0){return}b=function(x,v,t,u){v=v||document;if(!u&&v.nodeType===9&&!b.isXML(v)){try{return a(v.querySelectorAll(x),t)}catch(y){}}return e(x,v,t,u)};for(var r in e){b[r]=e[r]}s=null})()}(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(r,s,t){if(typeof s.getElementsByClassName!=="undefined"&&!t){return s.getElementsByClassName(r[1])}};e=null})();function n(r,x,v,A,y,z){for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1&&!z){e.sizcache=v;e.sizset=t}if(e.nodeName.toLowerCase()===x){u=e;break}e=e[r]}A[t]=u}}}function q(r,x,v,A,y,z){for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1){if(!z){e.sizcache=v;e.sizset=t}if(typeof x!=="string"){if(e===x){u=true;break}}else{if(b.filter(x,[e]).length>0){u=e;break}}}e=e[r]}A[t]=u}}}b.contains=document.compareDocumentPosition?function(r,e){return !!(r.compareDocumentPosition(e)&16)}:function(r,e){return r!==e&&(r.contains?r.contains(e):true)};b.isXML=function(e){var r=(e?e.ownerDocument||e:0).documentElement;return r?r.nodeName!=="HTML":false};var h=function(e,y){var t=[],u="",v,s=y.nodeType?[y]:y;while((v=f.match.PSEUDO.exec(e))){u+=v[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var x=0,r=s.length;x<r;x++){b(e,s[x],t)}return b.filter(u,t)};window.tinymce.dom.Sizzle=b})();(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j<arguments.length;j++){h.push(arguments[j])}h=e[g].apply(e,h);b.update(g);return h}});a.extend(b,{on:function(i,h,g){return a.dom.Event.add(b.id,i,h,g)},getXY:function(){return{x:parseInt(b.getStyle("left")),y:parseInt(b.getStyle("top"))}},getSize:function(){var g=e.get(b.id);return{w:parseInt(b.getStyle("width")||g.clientWidth),h:parseInt(b.getStyle("height")||g.clientHeight)}},moveTo:function(g,h){b.setStyles({left:g,top:h})},moveBy:function(g,i){var h=b.getXY();b.moveTo(h.x+g,h.y+i)},resizeTo:function(g,i){b.setStyles({width:g,height:i})},resizeBy:function(g,j){var i=b.getSize();b.resizeTo(i.w+g,i.h+j)},update:function(h){var g;if(a.isIE6&&d.blocker){h=h||"";if(h.indexOf("get")===0||h.indexOf("has")===0||h.indexOf("is")===0){return}if(h=="remove"){e.remove(b.blocker);return}if(!b.blocker){b.blocker=e.uniqueId();g=e.add(d.container||e.getRoot(),"iframe",{id:b.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});e.setStyle(g,"opacity",0)}else{g=e.get(b.blocker)}e.setStyles(g,{left:b.getStyle("left",1),top:b.getStyle("top",1),width:b.getStyle("width",1),height:b.getStyle("height",1),display:b.getStyle("display",1),zIndex:parseInt(b.getStyle("zIndex",1)||0)-1})}}})}})(tinymce);(function(c){function e(f){return f.replace(/[\n\r]+/g,"")}var b=c.is,a=c.isIE,d=c.each;c.create("tinymce.dom.Selection",{Selection:function(i,h,g){var f=this;f.dom=i;f.win=h;f.serializer=g;d(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(j){f[j]=new c.util.Dispatcher(f)});if(!f.win.getSelection){f.tridentSel=new c.dom.TridentSelection(f)}if(c.isIE&&i.boxModel){this._fixIESelection()}c.addUnload(f.destroy,f)},setCursorLocation:function(h,i){var f=this;var g=f.dom.createRng();g.setStart(h,i);g.setEnd(h,i);f.setRng(g);f.collapse(false)},getContent:function(g){var f=this,h=f.getRng(),l=f.dom.create("body"),j=f.getSel(),i,k,m;g=g||{};i=k="";g.get=true;g.format=g.format||"html";g.forced_root_block="";f.onBeforeGetContent.dispatch(f,g);if(g.format=="text"){return f.isCollapsed()?"":(h.text||(j.toString?j.toString():""))}if(h.cloneContents){m=h.cloneContents();if(m){l.appendChild(m)}}else{if(b(h.item)||b(h.htmlText)){l.innerHTML="<br>"+(h.item?h.item(0).outerHTML:h.htmlText);l.removeChild(l.firstChild)}else{l.innerHTML=h.toString()}}if(/^\s/.test(l.innerHTML)){i=" "}if(/\s+$/.test(l.innerHTML)){k=" "}g.getInner=true;g.content=f.isCollapsed()?"":i+f.serializer.serialize(l,g)+k;f.onGetContent.dispatch(f,g);return g.content},setContent:function(g,i){var n=this,f=n.getRng(),j,k=n.win.document,m,l;i=i||{format:"html"};i.set=true;g=i.content=g;if(!i.no_events){n.onBeforeSetContent.dispatch(n,i)}g=i.content;if(f.insertNode){g+='<span id="__caret">_</span>';if(f.startContainer==k&&f.endContainer==k){k.body.innerHTML=g}else{f.deleteContents();if(k.body.childNodes.length==0){k.body.innerHTML=g}else{if(f.createContextualFragment){f.insertNode(f.createContextualFragment(g))}else{m=k.createDocumentFragment();l=k.createElement("div");m.appendChild(l);l.outerHTML=g;f.insertNode(m)}}}j=n.dom.get("__caret");f=k.createRange();f.setStartBefore(j);f.setEndBefore(j);n.setRng(f);n.dom.remove("__caret");try{n.setRng(f)}catch(h){}}else{if(f.item){k.execCommand("Delete",false,null);f=n.getRng()}if(/^\s+/.test(g)){f.pasteHTML('<span id="__mce_tmp">_</span>'+g);n.dom.remove("__mce_tmp")}else{f.pasteHTML(g)}}if(!i.no_events){n.onSetContent.dispatch(n,i)}},getStart:function(){var g=this.getRng(),h,f,j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}j=g.duplicate();j.collapse(1);h=j.parentElement();f=i=g.parentElement();while(i=i.parentNode){if(i==h){h=f;break}}return h}else{h=g.startContainer;if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[Math.min(h.childNodes.length-1,g.startOffset)]}if(h&&h.nodeType==3){return h.parentNode}return h}},getEnd:function(){var g=this,h=g.getRng(),i,f;if(h.duplicate||h.item){if(h.item){return h.item(0)}h=h.duplicate();h.collapse(0);i=h.parentElement();if(i&&i.nodeName=="BODY"){return i.lastChild||i}return i}else{i=h.endContainer;f=h.endOffset;if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[f>0?f-1:f]}if(i&&i.nodeType==3){return i.parentNode}return i}},getBookmark:function(r,s){var v=this,m=v.dom,g,j,i,n,h,o,p,l="\uFEFF",u;function f(x,y){var t=0;d(m.select(x),function(A,z){if(A==y){t=z}});return t}if(r==2){function k(){var x=v.getRng(true),t=m.getRoot(),y={};function z(C,H){var B=C[H?"startContainer":"endContainer"],G=C[H?"startOffset":"endOffset"],A=[],D,F,E=0;if(B.nodeType==3){if(s){for(D=B.previousSibling;D&&D.nodeType==3;D=D.previousSibling){G+=D.nodeValue.length}}A.push(G)}else{F=B.childNodes;if(G>=F.length&&F.length){E=1;G=Math.max(0,F.length-1)}A.push(v.dom.nodeIndex(F[G],s)+E)}for(;B&&B!=t;B=B.parentNode){A.push(v.dom.nodeIndex(B,s))}return A}y.start=z(x,true);if(!v.isCollapsed()){y.end=z(x)}return y}if(v.tridentSel){return v.tridentSel.getBookmark(r)}return k()}if(r){return{rng:v.getRng()}}g=v.getRng();i=m.uniqueId();n=tinyMCE.activeEditor.selection.isCollapsed();u="overflow:hidden;line-height:0px";if(g.duplicate||g.item){if(!g.item){j=g.duplicate();try{g.collapse();g.pasteHTML('<span data-mce-type="bookmark" id="'+i+'_start" style="'+u+'">'+l+"</span>");if(!n){j.collapse(false);g.moveToElementText(j.parentElement());if(g.compareEndPoints("StartToEnd",j)==0){j.move("character",-1)}j.pasteHTML('<span data-mce-type="bookmark" id="'+i+'_end" style="'+u+'">'+l+"</span>")}}catch(q){return null}}else{o=g.item(0);h=o.nodeName;return{name:h,index:f(h,o)}}}else{o=v.getNode();h=o.nodeName;if(h=="IMG"){return{name:h,index:f(h,o)}}if(g.startContainer.nodeType==9){return}j=g.cloneRange();if(!n){j.collapse(false);j.insertNode(m.create("span",{"data-mce-type":"bookmark",id:i+"_end",style:u},l))}g.collapse(true);g.insertNode(m.create("span",{"data-mce-type":"bookmark",id:i+"_start",style:u},l))}v.moveToBookmark({id:i,keep:1});return{id:i}},moveToBookmark:function(n){var r=this,l=r.dom,i,h,f,q,j,s,o,p;if(n){if(n.start){f=l.createRng();q=l.getRoot();function g(z){var t=n[z?"start":"end"],v,x,y,u;if(t){y=t[0];for(x=q,v=t.length-1;v>=1;v--){u=x.childNodes;if(t[v]>u.length-1){return}x=u[t[v]]}if(x.nodeType===3){y=Math.min(t[0],x.nodeValue.length)}if(x.nodeType===1){y=Math.min(t[0],x.childNodes.length)}if(z){f.setStart(x,y)}else{f.setEnd(x,y)}}return true}if(r.tridentSel){return r.tridentSel.moveToBookmark(n)}if(g(true)&&g()){r.setRng(f)}}else{if(n.id){function k(A){var u=l.get(n.id+"_"+A),z,t,x,y,v=n.keep;if(u){z=u.parentNode;if(A=="start"){if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}j=s=z;o=p=t}else{if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}s=z;p=t}if(!v){y=u.previousSibling;x=u.nextSibling;d(c.grep(u.childNodes),function(B){if(B.nodeType==3){B.nodeValue=B.nodeValue.replace(/\uFEFF/g,"")}});while(u=l.get(n.id+"_"+A)){l.remove(u,1)}if(y&&x&&y.nodeType==x.nodeType&&y.nodeType==3&&!c.isOpera){t=y.nodeValue.length;y.appendData(x.nodeValue);l.remove(x);if(A=="start"){j=s=y;o=p=t}else{s=y;p=t}}}}}function m(t){if(l.isBlock(t)&&!t.innerHTML){t.innerHTML=!a?'<br data-mce-bogus="1" />':" "}return t}k("start");k("end");if(j){f=l.createRng();f.setStart(m(j),o);f.setEnd(m(s),p);r.setRng(f)}}else{if(n.name){r.select(l.select(n.name)[n.index])}else{if(n.rng){r.setRng(n.rng)}}}}}},select:function(k,j){var i=this,l=i.dom,g=l.createRng(),f;if(k){f=l.nodeIndex(k);g.setStart(k.parentNode,f);g.setEnd(k.parentNode,f+1);if(j){function h(m,o){var n=new c.dom.TreeWalker(m,m);do{if(m.nodeType==3&&c.trim(m.nodeValue).length!=0){if(o){g.setStart(m,0)}else{g.setEnd(m,m.nodeValue.length)}return}if(m.nodeName=="BR"){if(o){g.setStartBefore(m)}else{g.setEndBefore(m)}return}}while(m=(o?n.next():n.prev()))}h(k,1);h(k)}i.setRng(g)}return k},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}if(h.compareEndPoints){return h.compareEndPoints("StartToEnd",h)===0}return !g||h.collapsed},collapse:function(f){var h=this,g=h.getRng(),i;if(g.item){i=g.item(0);g=h.win.document.body.createTextRange();g.moveToElementText(i)}g.collapse(!!f);h.setRng(g)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(l){var g=this,h,i,k,j=g.win.document;if(l&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():j.createRange())}}catch(f){}if(c.isIE&&i&&i.setStart&&j.selection.createRange().item){k=j.selection.createRange().item(0);i=j.createRange();i.setStartBefore(k);i.setEndAfter(k)}if(!i){i=j.createRange?j.createRange():j.body.createTextRange()}if(g.selectedRange&&g.explicitRange){if(i.compareBoundaryPoints(i.START_TO_START,g.selectedRange)===0&&i.compareBoundaryPoints(i.END_TO_END,g.selectedRange)===0){i=g.explicitRange}else{g.selectedRange=null;g.explicitRange=null}}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){g.explicitRange=i;try{h.removeAllRanges()}catch(f){}h.addRange(i);g.selectedRange=h.rangeCount>0?h.getRangeAt(0):null}}else{if(i.cloneRange){try{g.tridentSel.addRange(i);return}catch(f){}}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var h=this,g=h.getRng(),i=h.getSel(),l,k=g.startContainer,f=g.endContainer;if(!g){return h.dom.getRoot()}if(g.setStart){l=g.commonAncestorContainer;if(!g.collapsed){if(g.startContainer==g.endContainer){if(g.endOffset-g.startOffset<2){if(g.startContainer.hasChildNodes()){l=g.startContainer.childNodes[g.startOffset]}}}if(k.nodeType===3&&f.nodeType===3){function j(p,m){var o=p;while(p&&p.nodeType===3&&p.length===0){p=m?p.nextSibling:p.previousSibling}return p||o}if(k.length===g.startOffset){k=j(k.nextSibling,true)}else{k=k.parentNode}if(g.endOffset===0){f=j(f.previousSibling,false)}else{f=f.parentNode}if(k&&k===f){return k}}}if(l&&l.nodeType==3){return l.parentNode}return l}return g.item?g.item(0):g.parentElement()},getSelectedBlocks:function(o,g){var m=this,j=m.dom,l,k,h,i=[];l=j.getParent(o||m.getStart(),j.isBlock);k=j.getParent(g||m.getEnd(),j.isBlock);if(l){i.push(l)}if(l&&k&&l!=k){h=l;var f=new c.dom.TreeWalker(l,j.getRoot());while((h=f.next())&&h!=k){if(j.isBlock(h)){i.push(h)}}}if(k&&l!=k){i.push(k)}return i},normalize:function(){var g=this,f,i;if(c.isIE){return}function h(p){var k,o,n,m=g.dom,j=m.getRoot(),l;k=f[(p?"start":"end")+"Container"];o=f[(p?"start":"end")+"Offset"];if(k.nodeType===9){k=k.body;o=0}if(k===j){if(k.hasChildNodes()){k=k.childNodes[Math.min(!p&&o>0?o-1:o,k.childNodes.length-1)];o=0;if(k.hasChildNodes()){l=k;n=new c.dom.TreeWalker(k,j);do{if(l.nodeType===3){o=p?0:l.nodeValue.length-1;k=l;i=true;break}if(/^(BR|IMG)$/.test(l.nodeName)){o=m.nodeIndex(l);k=l.parentNode;if(l.nodeName=="IMG"&&!p){o++}i=true;break}}while(l=(p?n.next():n.prev()))}}}if(i){f["set"+(p?"Start":"End")](k,o)}}f=g.getRng();h(true);if(!f.collapsed){h()}if(i){g.setRng(f)}},destroy:function(g){var f=this;f.win=null;if(!g){c.removeUnload(f.destroy)}},_fixIESelection:function(){var g=this.dom,m=g.doc,h=m.body,j,n,f;m.documentElement.unselectable=true;function i(o,r){var p=h.createTextRange();try{p.moveToPoint(o,r)}catch(q){p=null}return p}function l(p){var o;if(p.button){o=i(p.x,p.y);if(o){if(o.compareEndPoints("StartToStart",n)>0){o.setEndPoint("StartToStart",n)}else{o.setEndPoint("EndToEnd",n)}o.select()}}else{k()}}function k(){var o=m.selection.createRange();if(n&&!o.item&&o.compareEndPoints("StartToEnd",o)===0){n.select()}g.unbind(m,"mouseup",k);g.unbind(m,"mousemove",l);n=j=0}g.bind(m,["mousedown","contextmenu"],function(o){if(o.target.nodeName==="HTML"){if(j){k()}f=m.documentElement;if(f.scrollHeight>f.clientHeight){return}j=1;n=i(o.x,o.y);if(n){g.bind(m,"mouseup",k);g.bind(m,"mousemove",l);g.win.focus();n.select()}}})}})})(tinymce);(function(a){a.dom.Serializer=function(e,i,f){var h,b,d=a.isIE,g=a.each,c;if(!e.apply_source_formatting){e.indent=false}i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";e.remove_trailing_brs="remove_trailing_brs" in e?e.remove_trailing_brs:true;h=new a.util.Dispatcher(self);b=new a.util.Dispatcher(self);c=new a.html.DomParser(e,f);c.addAttributeFilter("src,href,style",function(k,j){var o=k.length,l,q,n="data-mce-"+j,p=e.url_converter,r=e.url_converter_scope,m;while(o--){l=k[o];q=l.attributes.map[n];if(q!==m){l.attr(j,q.length>0?q:null);l.attr(n,null)}else{q=l.attributes.map[j];if(j==="style"){q=i.serializeStyle(i.parseStyle(q),l.name)}else{if(p){q=p.call(r,q,j,l.name)}}l.attr(j,q.length>0?q:null)}}});c.addAttributeFilter("class",function(j,k){var l=j.length,m,n;while(l--){m=j[l];n=m.attr("class").replace(/\s*mce(Item\w+|Selected)\s*/g,"");m.attr("class",n.length>0?n:null)}});c.addAttributeFilter("data-mce-type",function(j,l,k){var m=j.length,n;while(m--){n=j[m];if(n.attributes.map["data-mce-type"]==="bookmark"&&!k.cleanup){n.remove()}}});c.addAttributeFilter("data-mce-expando",function(j,l,k){var m=j.length;while(m--){j[m].attr(l,null)}});c.addNodeFilter("script,style",function(k,l){var m=k.length,n,o;function j(p){return p.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}while(m--){n=k[m];o=n.firstChild?n.firstChild.value:"";if(l==="script"){n.attr("type",(n.attr("type")||"text/javascript").replace(/^mce\-/,""));if(o.length>0){n.firstChild.value="// <![CDATA[\n"+j(o)+"\n// ]]>"}}else{if(o.length>0){n.firstChild.value="<!--\n"+j(o)+"\n-->"}}}});c.addNodeFilter("#comment",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.value.indexOf("[CDATA[")===0){m.name="#cdata";m.type=4;m.value=m.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(m.value.indexOf("mce:protected ")===0){m.name="#text";m.type=3;m.raw=true;m.value=unescape(m.value).substr(14)}}}});c.addNodeFilter("xml:namespace,input",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.type===7){m.remove()}else{if(m.type===1){if(k==="input"&&!("type" in m.attributes.map)){m.attr("type","text")}}}}});if(e.fix_list_elements){c.addNodeFilter("ul,ol",function(k,l){var m=k.length,n,j;while(m--){n=k[m];j=n.parent;if(j.name==="ul"||j.name==="ol"){if(n.prev&&n.prev.name==="li"){n.prev.append(n)}}}})}c.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style",function(j,k){var l=j.length;while(l--){j[l].attr(k,null)}});return{schema:f,addNodeFilter:c.addNodeFilter,addAttributeFilter:c.addAttributeFilter,onPreProcess:h,onPostProcess:b,serialize:function(o,m){var l,p,k,j,n;if(d&&i.select("script,style,select,map").length>0){n=o.innerHTML;o=o.cloneNode(false);i.setHTML(o,n)}else{o=o.cloneNode(true)}l=o.ownerDocument.implementation;if(l.createHTMLDocument){p=l.createHTMLDocument("");g(o.nodeName=="BODY"?o.childNodes:[o],function(q){p.body.appendChild(p.importNode(q,true))});if(o.nodeName!="BODY"){o=p.body.firstChild}else{o=p.body}k=i.doc;i.doc=p}m=m||{};m.format=m.format||"html";if(!m.no_events){m.node=o;h.dispatch(self,m)}j=new a.html.Serializer(e,f);m.content=j.serialize(c.parse(m.getInner?o.innerHTML:a.trim(i.getOuterHTML(o),m),m));if(!m.cleanup){m.content=m.content.replace(/\uFEFF|\u200B/g,"")}if(!m.no_events){b.dispatch(self,m)}if(k){i.doc=k}m.node=null;return m.content},addRules:function(j){f.addValidElements(j)},setRules:function(j){f.setValidElements(j)}}}})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],f={},d=[],g=0,e;function b(m,v){var x=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}v()}function u(){if(typeof(console)!=="undefined"&&console.log){console.log("Failed to load: "+m)}}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol&&o.protocol.toLowerCase()!="file"){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(y){var t=q.create("script",{type:"text/javascript"});t.text=y;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()},error:u});return}}s=q.create("script",{id:n,type:"text/javascript",src:a._addVer(m)});if(!a.isIE){s.onload=p}s.onerror=u;if(!a.isOpera){s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}}}(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==e){j.push(m);l[m]=c}if(q){if(!f[m]){f[m]=[]}f[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(f[r],function(s){s.func.call(s.scope)});f[r]=e}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","previousSibling",e))}};(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,s){var i=d.startContainer,l=d.startOffset,t=d.endContainer,m=d.endOffset,j,g,o,h,r,q,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(u){s([u])});return}function f(u){var v;v=u[0];if(v.nodeType===3&&v===i&&l>=v.nodeValue.length){u.splice(0,1)}v=u[u.length-1];if(m===0&&u.length>0&&v===t&&v.nodeType===3){u.splice(u.length-1,1)}return u}function p(x,v,u){var y=[];for(;x&&x!=u;x=x[v]){y.push(x)}return y}function n(v,u){do{if(v.parentNode==u){return v}v=v.parentNode}while(v)}function k(x,v,y){var u=y?"nextSibling":"previousSibling";for(h=x,r=h.parentNode;h&&h!=v;h=r){r=h.parentNode;q=p(h==x?h:h[u],u);if(q.length){if(!y){q.reverse()}s(f(q))}}}if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[l]}if(t.nodeType==1&&t.hasChildNodes()){t=t.childNodes[Math.min(m-1,t.childNodes.length-1)]}if(i==t){return s(f([i]))}j=c.findCommonAncestor(i,t);for(h=i;h;h=h.parentNode){if(h===t){return k(i,j,true)}if(h===j){break}}for(h=t;h;h=h.parentNode){if(h===i){return k(t,j)}if(h===j){break}}g=n(i,j)||i;o=n(t,j)||t;k(i,g,true);q=p(g==i?g:g.nextSibling,"nextSibling",o==t?o.nextSibling:o);if(q.length){s(f(q))}k(t,o)};this.split=function(e){var h=e.startContainer,d=e.startOffset,i=e.endContainer,g=e.endOffset;function f(j,k){return j.splitText(k)}if(h==i&&h.nodeType==3){if(d>0&&d<h.nodeValue.length){i=f(h,d);h=i.previousSibling;if(g>d){g=g-d;h=i=f(i,g).previousSibling;g=i.nodeValue.length;d=0}else{g=0}}}else{if(h.nodeType==3&&d>0&&d<h.nodeValue.length){h=f(h,d);d=0}if(i.nodeType==3&&g>0&&g<i.nodeValue.length){i=f(i,g).previousSibling;g=i.nodeValue.length}}return{startContainer:h,startOffset:d,endContainer:i,endOffset:g}}};a.dom.RangeUtils.compareRanges=function(c,b){if(c&&b){if(c.item||c.duplicate){if(c.item&&b.item&&c.item(0)===b.item(0)){return true}if(c.isEqual&&b.isEqual&&b.isEqual(c)){return true}}else{return c.startContainer==b.startContainer&&c.startOffset==b.startOffset}}return false}})(tinymce);(function(b){var a=b.dom.Event,c=b.each;b.create("tinymce.ui.KeyboardNavigation",{KeyboardNavigation:function(e,f){var p=this,m=e.root,l=e.items,n=e.enableUpDown,i=e.enableLeftRight||!e.enableUpDown,k=e.excludeFromTabOrder,j,h,o,d,g;f=f||b.DOM;j=function(q){g=q.target.id};h=function(q){f.setAttrib(q.target.id,"tabindex","-1")};d=function(q){var r=f.get(g);f.setAttrib(r,"tabindex","0");r.focus()};p.focus=function(){f.get(g).focus()};p.destroy=function(){c(l,function(q){f.unbind(f.get(q.id),"focus",j);f.unbind(f.get(q.id),"blur",h)});f.unbind(f.get(m),"focus",d);f.unbind(f.get(m),"keydown",o);l=f=m=p.focus=j=h=o=d=null;p.destroy=function(){}};p.moveFocus=function(u,r){var q=-1,t=p.controls,s;if(!g){return}c(l,function(x,v){if(x.id===g){q=v;return false}});q+=u;if(q<0){q=l.length-1}else{if(q>=l.length){q=0}}s=l[q];f.setAttrib(g,"tabindex","-1");f.setAttrib(s.id,"tabindex","0");f.get(s.id).focus();if(e.actOnFocus){e.onAction(s.id)}if(r){a.cancel(r)}};o=function(y){var u=37,t=39,x=38,z=40,q=27,s=14,r=13,v=32;switch(y.keyCode){case u:if(i){p.moveFocus(-1)}break;case t:if(i){p.moveFocus(1)}break;case x:if(n){p.moveFocus(-1)}break;case z:if(n){p.moveFocus(1)}break;case q:if(e.onCancel){e.onCancel();a.cancel(y)}break;case s:case r:case v:if(e.onAction){e.onAction(g);a.cancel(y)}break}};c(l,function(s,q){var r;if(!s.id){s.id=f.uniqueId("_mce_item_")}if(k){f.bind(s.id,"blur",h);r="-1"}else{r=(q===0?"0":"-1")}f.setAttrib(s.id,"tabindex",r);f.bind(f.get(s.id),"focus",j)});if(l[0]){g=l[0].id}f.setAttrib(m,"tabindex","-1");f.bind(f.get(m),"focus",d);f.bind(f.get(m),"keydown",o)}})})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(f,e,d){this.id=f;this.settings=e=e||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=e.scope||this;this.disabled=0;this.active=0;this.editor=d},setAriaProperty:function(f,e){var d=b.get(this.id+"_aria")||b.get(this.id);if(d){b.setAttrib(d,"aria-"+f,!!e)}},focus:function(){b.get(this.id).focus()},setDisabled:function(d){if(d!=this.disabled){this.setAriaProperty("disabled",d);this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d;this.setAriaProperty("pressed",d)}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(c,b,a){this.parent(c,b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator";this.setDisabled(true)},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix,role:"separator","aria-orientation":"vertical",tabindex:"-1"})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.setAriaProperty("checked",!!f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;j.keyboard_focus=i.keyboard_focus;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},focus:function(){var g=this;if(g.keyboardNav){g.keyboardNav.focus()}},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.clientWidth,j.max_width):g.clientWidth;k=j.max_height?Math.min(g.clientHeight,j.max_height):g.clientHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return false}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}a.add(o,"keydown",z._keyHandler,z);z.onShowMenu.dispatch(z);if(A.keyboard_focus){z._setupKeyboardNav()}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(h,"mouseover",g.mouseOverFunc);a.remove(c.select("a",h),"focus",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);a.remove(h,"keydown",g._keyHandler);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{role:"listbox",id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000;outline:0"});if(i.settings.parent){c.setAttrib(g,"aria-parent","menu_"+i.settings.parent.id)}k=c.add(g,"div",{role:"presentation",id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{role:"presentation",id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_setupKeyboardNav:function(){var i,h,g=this;i=c.get("menu_"+g.id);h=c.select("a[role=option]","menu_"+g.id);h.splice(0,0,i);g.keyboardNav=new e.ui.KeyboardNavigation({root:"menu_"+g.id,items:h,onCancel:function(){g.hideMenu()},enableUpDown:true});i.focus()},_keyHandler:function(g){var h=this,i;switch(g.keyCode){case 37:if(h.settings.parent){h.hideMenu();h.settings.parent.focus();a.cancel(g)}break;case 39:if(h.mouseOverFunc){h.mouseOverFunc(g)}break}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,q.titleItem?"th":"td");i=p=c.add(i,"a",{id:h.id+"_aria",role:q.titleItem?"presentation":"option",href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});if(q.parent){c.setAttrib(p,"aria-haspopup","true");c.setAttrib(p,"aria-owns","menu_"+h.id)}c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){if(typeof h.settings.style=="function"){h.settings.style=h.settings.style()}c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(e,d,c){this.parent(e,d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a role="button" id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" aria-labelledby="'+this.id+'_voice" title="'+a.encode(e.title)+'">';if(e.image&&!(this.editor&&this.editor.forcedHighContrastMode)){d+='<img class="mceIcon" src="'+e.image+'" alt="'+a.encode(e.title)+'" />'+c}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}d+='<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="'+this.id+'_voice">'+e.title+"</span>";d+="</a>";return d},postRender:function(){var d=this,e=d.settings,c;if(b.isIE&&d.editor){b.dom.Event.add(d.id,"mousedown",function(f){var g=d.editor.selection.getNode().nodeName;c=g==="IMG"?d.editor.selection.getBookmark():null})}b.dom.Event.add(d.id,"click",function(f){if(!d.isDisabled()){if(b.isIE&&d.editor&&c!==null){d.editor.selection.moveToBookmark(c)}return e.onclick.call(e.scope,f)}});b.dom.Event.add(d.id,"keyup",function(f){if(!d.isDisabled()&&f.keyCode==b.VK.SPACEBAR){return e.onclick.call(e.scope,f)}})}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(i,h,f){var g=this;g.parent(i,h,f);g.items=[];g.onChange=new a(g);g.onPostRender=new a(g);g.onAdd=new a(g);g.onRenderMenu=new d.util.Dispatcher(this);g.classPrefix="mceListBox";g.marked={}},select:function(h){var g=this,j,i;g.marked={};if(h==undefined){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){var h=this,i,j,g;h.marked={};if(f!=h.selectedIndex){i=c.get(h.id+"_text");g=c.get(h.id+"_voiceDesc");j=h.items[f];if(j){h.selectedValue=j.value;h.selectedIndex=f;c.setHTML(i,c.encode(j.title));c.setHTML(g,h.settings.title+" - "+j.title);c.removeClass(i,"mceTitle");c.setAttrib(h.id,"aria-valuenow",j.title)}else{c.setHTML(i,c.encode(h.settings.title));c.setHTML(g,c.encode(h.settings.title));c.addClass(i,"mceTitle");h.selectedValue=h.selectedIndex=null;c.setAttrib(h.id,"aria-valuenow",h.settings.title)}i=0}},mark:function(f){this.marked[f]=true},add:function(i,f,h){var g=this;h=h||{};h=d.extend(h,{title:i,value:f});g.items.push(h);g.onAdd.dispatch(g,h)},getLength:function(){return this.items.length},renderHTML:function(){var i="",f=this,g=f.settings,j=f.classPrefix;i='<span role="listbox" aria-haspopup="true" aria-labelledby="'+f.id+'_voiceDesc" aria-describedby="'+f.id+'_voiceDesc"><table role="presentation" tabindex="0" id="'+f.id+'" cellpadding="0" cellspacing="0" class="'+j+" "+j+"Enabled"+(g["class"]?(" "+g["class"]):"")+'"><tbody><tr>';i+="<td>"+c.createHTML("span",{id:f.id+"_voiceDesc","class":"voiceLabel",style:"display:none;"},f.settings.title);i+=c.createHTML("a",{id:f.id+"_text",tabindex:-1,href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},c.encode(f.settings.title))+"</td>";i+="<td>"+c.createHTML("a",{id:f.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},'<span><span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span></span>')+"</td>";i+="</tr></tbody></table></span>";return i},showMenu:function(){var g=this,i,h=c.get(this.id),f;if(g.isDisabled()||g.items.length==0){return}if(g.menu&&g.menu.isMenuVisible){return g.hideMenu()}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}i=c.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.keyboard_focus=!d.isOpera;e(g.items,function(j){if(f.items[j.id]){f.items[j.id].setSelected(0)}});e(g.items,function(j){if(f.items[j.id]&&g.marked[j.value]){f.items[j.id].setSelected(1)}if(j.value===g.selectedValue){f.items[j.id].setSelected(1)}});f.showMenu(0,h.clientHeight);b.add(c.doc,"mousedown",g.hideMenu,g);c.addClass(g.id,g.classPrefix+"Selected")},hideMenu:function(g){var f=this;if(f.menu&&f.menu.isMenuVisible){c.removeClass(f.id,f.classPrefix+"Selected");if(g&&g.type=="mousedown"&&(g.target.id==f.id+"_text"||g.target.id==f.id+"_open")){return}if(!g||!c.getParent(g.target,".mceMenu")){c.removeClass(f.id,f.classPrefix+"Selected");b.remove(c.doc,"mousedown",f.hideMenu,f);f.menu.hideMenu()}}},renderMenu:function(){var g=this,f;f=g.settings.control_manager.createDropMenu(g.id+"_menu",{menu_line:1,"class":g.classPrefix+"Menu mceNoIcons",max_width:150,max_height:150});f.onHideMenu.add(function(){g.hideMenu();g.focus()});f.add({title:g.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}});e(g.items,function(h){if(h.value===undefined){f.add({title:h.title,role:"option","class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}})}else{h.id=c.uniqueId();h.role="option";h.onclick=function(){if(g.settings.onselect(h.value)!==false){g.select(h.value)}};f.add(h)}});g.onRenderMenu.dispatch(g,f);g.menu=f},postRender:function(){var f=this,g=f.classPrefix;b.add(f.id,"click",f.showMenu,f);b.add(f.id,"keydown",function(h){if(h.keyCode==32){f.showMenu(h);b.cancel(h)}});b.add(f.id,"focus",function(){if(!f._focused){f.keyDownHandler=b.add(f.id,"keydown",function(h){if(h.keyCode==40){f.showMenu();b.cancel(h)}});f.keyPressHandler=b.add(f.id,"keypress",function(i){var h;if(i.keyCode==13){h=f.selectedValue;f.selectedValue=null;b.cancel(i);f.settings.onselect(h)}})}f._focused=1});b.add(f.id,"blur",function(){b.remove(f.id,"keydown",f.keyDownHandler);b.remove(f.id,"keypress",f.keyPressHandler);f._focused=0});if(d.isIE6||!c.boxModel){b.add(f.id,"mouseover",function(){if(!c.hasClass(f.id,g+"Disabled")){c.addClass(f.id,g+"Hover")}});b.add(f.id,"mouseout",function(){if(!c.hasClass(f.id,g+"Disabled")){c.removeClass(f.id,g+"Hover")}})}f.onPostRender.dispatch(f,c.get(f.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(g,f){this.parent(g,f);this.classPrefix="mceNativeListBox"},setDisabled:function(f){c.get(this.id).disabled=f;this.setAriaProperty("disabled",f)},isDisabled:function(){return c.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){c.get(this.id).selectedIndex=f+1;this.selectedValue=this.items[f]?this.items[f].value:null},add:function(j,g,f){var i,h=this;f=f||{};f.value=g;if(h.isRendered()){c.add(c.get(this.id),"option",f,j)}i={title:j,value:g,attribs:f};h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var g,f=this;g=c.createHTML("option",{value:""},"-- "+f.settings.title+" --");e(f.items,function(h){g+=c.createHTML("option",{value:h.value},h.title)});g=c.createHTML("select",{id:f.id,"class":"mceNativeListBox","aria-labelledby":f.id+"_aria"},g);g+=c.createHTML("span",{id:f.id+"_aria",style:"display: none"},f.settings.title);return g},postRender:function(){var g=this,h,i=true;g.rendered=true;function f(k){var j=g.items[k.target.selectedIndex-1];if(j&&(j=j.value)){g.onChange.dispatch(g,j);if(g.settings.onselect){g.settings.onselect(j)}}}b.add(g.id,"change",f);b.add(g.id,"keydown",function(k){var j;b.remove(g.id,"change",h);i=false;j=b.add(g.id,"blur",function(){if(i){return}i=true;b.add(g.id,"change",f);b.remove(g.id,"blur",j)});if(d.isWebKit&&(k.keyCode==37||k.keyCode==39)){return b.prevent(k)}if(k.keyCode==13||k.keyCode==32){f(k);return b.cancel(k)}});g.onPostRender.dispatch(g,c.get(g.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(g,f,e){this.parent(g,f,e);this.onRenderMenu=new c.util.Dispatcher(this);f.menu_container=f.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(function(){f.hideMenu();f.focus()});f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(g,f,e){this.parent(g,f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,role:"presentation","class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}e+=b.createHTML("span",{"class":"mceVoiceLabel mceIconOnly",id:f.id+"_voice",style:"display:none;"},g.title);i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_action",tabindex:"-1",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]},'<span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span>');i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_open",tabindex:"-1",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";i=b.createHTML("table",{role:"presentation","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("div",{id:f.id,role:"button",tabindex:"0","aria-labelledby":f.id+"_voice","aria-haspopup":"true"},i)},postRender:function(){var e=this,g=e.settings,f;if(g.onclick){f=function(h){if(!e.isDisabled()){g.onclick(e.value);a.cancel(h)}};a.add(e.id+"_action","click",f);a.add(e.id,["click","keydown"],function(h){var k=32,m=14,i=13,j=38,l=40;if((h.keyCode===32||h.keyCode===13||h.keyCode===14)&&!h.altKey&&!h.ctrlKey&&!h.metaKey){f();a.cancel(h)}else{if(h.type==="click"||h.keyCode===l){e.showMenu();a.cancel(h)}}})}a.add(e.id+"_open","click",function(h){e.showMenu();a.cancel(h)});a.add([e.id,e.id+"_open"],"focus",function(){e._focused=1});a.add([e.id,e.id+"_open"],"blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open");a.clear(this.id)}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(i,h,f){var g=this;g.parent(i,h,f);g.settings=h=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},g.settings);g.onShowMenu=new d.util.Dispatcher(g);g.onHideMenu=new d.util.Dispatcher(g);g.value=h.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.isMenuVisible=1},hideMenu:function(g){var f=this;if(f.isMenuVisible){if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.isMenuVisible=0;f.onHideMenu.dispatch()}},renderMenu:function(){var p=this,h,k=0,q=p.settings,g,j,l,o,f;o=c.add(q.menu_container,"div",{role:"listbox",id:p.id+"_menu","class":q.menu_class+" "+q["class"],style:"position:absolute;left:0;top:-1000px;"});h=c.add(o,"div",{"class":q["class"]+" mceSplitButtonMenu"});c.add(h,"span",{"class":"mceMenuLine"});g=c.add(h,"table",{role:"presentation","class":"mceColorSplitMenu"});j=c.add(g,"tbody");k=0;e(b(q.colors,"array")?q.colors:q.colors.split(","),function(m){m=m.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");var i={href:"javascript:;",style:{backgroundColor:"#"+m},title:p.editor.getLang("colors."+m,m),"data-mce-color":"#"+m};if(!d.isIE){i.role="option"}g=c.add(g,"a",i);if(p.editor.forcedHighContrastMode){g=c.add(g,"canvas",{width:16,height:16,"aria-hidden":"true"});if(g.getContext&&(f=g.getContext("2d"))){f.fillStyle="#"+m;f.fillRect(0,0,16,16)}else{c.remove(g)}}});if(q.more_colors_func){g=c.add(j,"tr");g=c.add(g,"td",{colspan:q.grid_width,"class":"mceMoreColors"});g=c.add(g,"a",{role:"option",id:p.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},q.more_colors_title);a.add(g,"click",function(i){q.more_colors_func.call(q.more_colors_scope||this);return a.cancel(i)})}c.addClass(h,"mceColorSplitMenu");new d.ui.KeyboardNavigation({root:p.id+"_menu",items:c.select("a",p.id+"_menu"),onCancel:function(){p.hideMenu();p.focus()}});a.add(p.id+"_menu","mousedown",function(i){return a.cancel(i)});a.add(p.id+"_menu","click",function(i){var m;i=c.getParent(i.target,"a",j);if(i&&i.nodeName.toLowerCase()=="a"&&(m=i.getAttribute("data-mce-color"))){p.setColor(m)}return false});return o},setColor:function(f){this.displayColor(f);this.hideMenu();this.settings.onselect(f)},displayColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);(function(b){var d=b.DOM,c=b.each,a=b.dom.Event;b.create("tinymce.ui.ToolbarGroup:tinymce.ui.Container",{renderHTML:function(){var f=this,i=[],e=f.controls,j=b.each,g=f.settings;i.push('<div id="'+f.id+'" role="group" aria-labelledby="'+f.id+'_voice">');i.push("<span role='application'>");i.push('<span id="'+f.id+'_voice" class="mceVoiceLabel" style="display:none;">'+d.encode(g.name)+"</span>");j(e,function(h){i.push(h.renderHTML())});i.push("</span>");i.push("</div>");return i.join("")},focus:function(){var e=this;d.get(e.id).focus()},postRender:function(){var f=this,e=[];c(f.controls,function(g){c(g.controls,function(h){if(h.id){e.push(h)}})});f.keyNav=new b.ui.KeyboardNavigation({root:f.id,items:e,onCancel:function(){if(b.isWebKit){d.get(f.editor.id+"_ifr").focus()}f.editor.focus()},excludeFromTabOrder:!f.settings.tab_focus_toolbar})},destroy:function(){var e=this;e.parent();e.keyNav.destroy();a.clear(e.id)}})})(tinymce);(function(a){var c=a.DOM,b=a.each;a.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var m=this,f="",j,k,n=m.settings,e,d,g,l;l=m.controls;for(e=0;e<l.length;e++){k=l[e];d=l[e-1];g=l[e+1];if(e===0){j="mceToolbarStart";if(k.Button){j+=" mceToolbarStartButton"}else{if(k.SplitButton){j+=" mceToolbarStartSplitButton"}else{if(k.ListBox){j+=" mceToolbarStartListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,"<!-- IE -->"))}}if(c.stdMode){f+='<td style="position: relative">'+k.renderHTML()+"</td>"}else{f+="<td>"+k.renderHTML()+"</td>"}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,"<!-- IE -->"))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},"<tbody><tr>"+f+"</tr></tbody>")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){if(this.lookup[d]){return this.lookup[d].instance}else{return undefined}},dependencies:function(e){var d;if(this.lookup[e]){d=this.lookup[e].dependencies}return d||[]},requireLangPack:function(e){var d=b.settings;if(d&&d.language&&d.language_load!==false){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(f,e,d){this.items.push(e);this.lookup[f]={instance:e,dependencies:d};this.onAdd.dispatch(this,f,e);return e},createUrl:function(d,e){if(typeof e==="object"){return e}else{return{prefix:d.prefix,resource:e,suffix:d.suffix}}},addComponents:function(f,d){var e=this.urls[f];b.each(d,function(g){b.ScriptLoader.add(e+"/"+g)})},load:function(j,f,d,h){var g=this,e=f;function i(){var k=g.dependencies(j);b.each(k,function(m){var l=g.createUrl(f,m);g.load(l.resource,l,undefined,undefined)});if(d){if(h){d.call(h)}else{d.call(b.ScriptLoader)}}}if(g.urls[j]){return}if(typeof f==="object"){e=f.prefix+f.resource+f.suffix}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}g.urls[j]=e.substring(0,e.lastIndexOf("/"));if(g.lookup[j]){i()}else{b.ScriptLoader.add(e,i,h)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(v){var u=this,o,n=j.ScriptLoader,r,l=[],q;function p(t){var s=t.id;if(!s){s=t.name;if(s&&!k.get(s)){s=t.name}else{s=k.uniqueId()}t.setAttribute("id",s)}return s}function m(y,z,t){var x=y[z];if(!x){return}if(j.is(x,"string")){t=x.replace(/\.\w+$/,"");t=t?j.resolve(t):0;x=j.resolve(x)}return x.apply(t||this,Array.prototype.slice.call(arguments,2))}v=d({theme:"simple",language:"en"},v);u.settings=v;i.bind(window,"ready",function(){var s,x;m(v,"onpageload");switch(v.mode){case"exact":s=v.elements||"";if(s.length>0){g(e(s),function(y){if(k.get(y)){q=new j.Editor(y,v);l.push(q);q.render(1)}else{g(document.forms,function(z){g(z.elements,function(A){if(A.name===y){y="mce_editor_"+c++;k.setAttrib(A,"id",y);q=new j.Editor(y,v);l.push(q);q.render(1)}})})}})}break;case"textareas":case"specific_textareas":function t(z,y){return y.constructor===RegExp?y.test(z.className):k.hasClass(z,y)}g(k.select("textarea"),function(y){if(v.editor_deselector&&t(y,v.editor_deselector)){return}if(!v.editor_selector||t(y,v.editor_selector)){q=new j.Editor(p(y),v);l.push(q);q.render(1)}});break;default:if(v.types){g(v.types,function(y){g(k.select(y.selector),function(A){var z=new j.Editor(p(A),j.extend({},v,y));l.push(z);z.render(1)})})}else{if(v.selector){g(k.select(v.selector),function(z){var y=new j.Editor(p(z),v);l.push(y);y.render(1)})}}}if(v.oninit){s=x=0;g(l,function(y){x++;if(!y.initialized){y.onInit.add(function(){s++;if(s==x){m(v,"oninit")}})}else{s++}if(s==x){m(v,"oninit")}})}})},get:function(l){if(l===a){return this.editors}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l<o.length;l++){if(o[l]==n){o.splice(l,1);break}}if(m.activeEditor==n){m._setActive(o[0])}n.destroy();m.onRemoveEditor.dispatch(m,n);return n},execCommand:function(r,p,o){var q=this,n=q.get(o),l;switch(r){case"mceFocus":n.focus();return true;case"mceAddEditor":case"mceAddControl":if(!q.get(o)){new j.Editor(o,q.settings).render()}return true;case"mceAddFrameControl":l=o.window;l.tinyMCE=tinyMCE;l.tinymce=j;j.DOM.doc=l.document;j.DOM.win=l;n=new j.Editor(o.element_id,o);n.render();if(j.isIE){function m(){n.destroy();l.detachEvent("onunload",m);l=l.tinyMCE=l.tinymce=null}l.attachEvent("onunload",m)}o.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(n){n.remove()}return true;case"mceToggleEditor":if(!n){q.execCommand("mceAddControl",0,o);return true}if(n.isHidden()){n.show()}else{n.hide()}return true}if(q.activeEditor){return q.activeEditor.execCommand(r,p,o)}return false},execInstanceCommand:function(p,o,n,m){var l=this.get(p);if(l){return l.execCommand(o,n,m)}return false},triggerSave:function(){g(this.editors,function(l){l.save()})},addI18n:function(n,q){var l,m=this.i18n;if(!j.is(n,"string")){g(n,function(r,p){g(r,function(t,s){g(t,function(v,u){if(s==="common"){m[p+"."+u]=v}else{m[p+"."+s+"."+u]=v}})})})}else{g(q,function(r,p){m[n+"."+p]=r})}},_setActive:function(l){this.selectedInstance=this.activeEditor=l}})})(tinymce);(function(n){var o=n.DOM,k=n.dom.Event,f=n.extend,l=n.util.Dispatcher,i=n.each,a=n.isGecko,b=n.isIE,e=n.isWebKit,d=n.is,h=n.ThemeManager,c=n.PluginManager,p=n.inArray,m=n.grep,g=n.explode,j=n.VK;n.create("tinymce.Editor",{Editor:function(u,r){var q=this;q.id=q.editorId=u;q.execCommands={};q.queryStateCommands={};q.queryValueCommands={};q.isNotDirty=false;q.plugins={};i(["onPreInit","onBeforeRenderUI","onPostRender","onLoad","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState","onSetAttrib"],function(s){q[s]=new l(q)});q.settings=r=f({id:u,language:"en",docs_language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:n.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:n.isIE6?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">':"<!DOCTYPE>",visual_table_class:"mceItemTable",visual:1,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:"30px",keep_styles:1,fix_table_elements:1,inline_styles:1,convert_fonts_to_spans:true,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside",validate:true,entity_encoding:"named",url_converter:q.convertURL,url_converter_scope:q,ie7_compat:true},r);q.documentBaseURI=new n.util.URI(r.document_base_url||n.documentBaseURL,{base_uri:tinyMCE.baseURI});q.baseURI=n.baseURI;q.contentCSS=[];q.execCallback("setup",q)},render:function(u){var v=this,x=v.settings,y=v.id,q=n.ScriptLoader;if(!k.domLoaded){k.add(window,"ready",function(){v.render()});return}tinyMCE.settings=x;if(!v.getElement()){return}if(n.isIDevice&&!n.isIOS5){return}if(!/TEXTAREA|INPUT/i.test(v.getElement().nodeName)&&x.hidden_input&&o.getParent(y,"form")){o.insertAfter(o.create("input",{type:"hidden",name:y}),y)}if(n.WindowManager){v.windowManager=new n.WindowManager(v)}if(x.encoding=="xml"){v.onGetContent.add(function(s,t){if(t.save){t.content=o.encode(t.content)}})}if(x.add_form_submit_trigger){v.onSubmit.addToTop(function(){if(v.initialized){v.save();v.isNotDirty=1}})}if(x.add_unload_trigger){v._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(v.initialized&&!v.destroyed&&!v.isHidden()){v.save({format:"raw",no_events:true})}})}n.addUnload(v.destroy,v);if(x.submit_patch){v.onBeforeRenderUI.add(function(){var s=v.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){v.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){n.triggerSave();v.isNotDirty=1;return v.formElement._mceOldSubmit(v.formElement)}}s=null})}function r(){if(x.language&&x.language_load!==false){q.add(n.baseURL+"/langs/"+x.language+".js")}if(x.theme&&x.theme.charAt(0)!="-"&&!h.urls[x.theme]){h.load(x.theme,"themes/"+x.theme+"/editor_template"+n.suffix+".js")}i(g(x.plugins),function(t){if(t&&!c.urls[t]){if(t.charAt(0)=="-"){t=t.substr(1,t.length);var s=c.dependencies(t);i(s,function(A){var z={prefix:"plugins/",resource:A,suffix:"/editor_plugin"+n.suffix+".js"};var A=c.createUrl(z,A);c.load(A.resource,A)})}else{if(t=="safari"){return}c.load(t,{prefix:"plugins/",resource:t,suffix:"/editor_plugin"+n.suffix+".js"})}}});q.loadQueue(function(){if(!v.removed){v.init()}})}r()},init:function(){var v,I=this,J=I.settings,F,B,E=I.getElement(),r,q,G,z,D,H,A,x=[];n.add(I);J.aria_label=J.aria_label||o.getAttrib(E,"aria-label",I.getLang("aria.rich_text_area"));if(J.theme){J.theme=J.theme.replace(/-/,"");r=h.get(J.theme);I.theme=new r();if(I.theme.init&&J.init_theme){I.theme.init(I,h.urls[J.theme]||n.documentBaseURL.replace(/\/$/,""))}}function C(K){var L=c.get(K),t=c.urls[K]||n.documentBaseURL.replace(/\/$/,""),s;if(L&&n.inArray(x,K)===-1){i(c.dependencies(K),function(u){C(u)});s=new L(I,t);I.plugins[K]=s;if(s.init){s.init(I,t);x.push(K)}}}i(g(J.plugins.replace(/\-/g,"")),C);if(J.popup_css!==false){if(J.popup_css){J.popup_css=I.documentBaseURI.toAbsolute(J.popup_css)}else{J.popup_css=I.baseURI.toAbsolute("themes/"+J.theme+"/skins/"+J.skin+"/dialog.css")}}if(J.popup_css_add){J.popup_css+=","+I.documentBaseURI.toAbsolute(J.popup_css_add)}I.controlManager=new n.ControlManager(I);if(J.custom_undo_redo){I.onBeforeExecCommand.add(function(t,K,u,L,s){if(K!="Undo"&&K!="Redo"&&K!="mceRepaint"&&(!s||!s.skip_undo)){I.undoManager.beforeChange()}});I.onExecCommand.add(function(t,K,u,L,s){if(K!="Undo"&&K!="Redo"&&K!="mceRepaint"&&(!s||!s.skip_undo)){I.undoManager.add()}})}I.onExecCommand.add(function(s,t){if(!/^(FontName|FontSize)$/.test(t)){I.nodeChanged()}});if(a){function y(s,t){if(!t||!t.initial){I.execCommand("mceRepaint")}}I.onUndo.add(y);I.onRedo.add(y);I.onSetContent.add(y)}I.onBeforeRenderUI.dispatch(I,I.controlManager);if(J.render_ui){F=J.width||E.style.width||E.offsetWidth;B=J.height||E.style.height||E.offsetHeight;I.orgDisplay=E.style.display;H=/^[0-9\.]+(|px)$/i;if(H.test(""+F)){F=Math.max(parseInt(F)+(r.deltaWidth||0),100)}if(H.test(""+B)){B=Math.max(parseInt(B)+(r.deltaHeight||0),100)}r=I.theme.renderUI({targetNode:E,width:F,height:B,deltaWidth:J.delta_width,deltaHeight:J.delta_height});I.editorContainer=r.editorContainer}if(document.domain&&location.hostname!=document.domain){n.relaxedDomain=document.domain}o.setStyles(r.sizeContainer||r.editorContainer,{width:F,height:B});if(J.content_css){n.each(g(J.content_css),function(s){I.contentCSS.push(I.documentBaseURI.toAbsolute(s))})}B=(r.iframeHeight||B)+(typeof(B)=="number"?(r.deltaHeight||0):"");if(B<100){B=100}I.iframeHTML=J.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml">';if(J.document_base_url!=n.documentBaseURL){I.iframeHTML+='<base href="'+I.documentBaseURI.getURI()+'" />'}if(J.ie7_compat){I.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}else{I.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=edge" />'}I.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(A=0;A<I.contentCSS.length;A++){I.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+I.contentCSS[A]+'" />'}I.contentCSS=[];z=J.body_id||"tinymce";if(z.indexOf("=")!=-1){z=I.getParam("body_id","","hash");z=z[I.id]||z}D=J.body_class||"";if(D.indexOf("=")!=-1){D=I.getParam("body_class","","hash");D=D[I.id]||""}I.iframeHTML+='</head><body id="'+z+'" class="mceContentBody '+D+'" onload="window.parent.tinyMCE.get(\''+I.id+"').onLoad.dispatch();\"><br></body></html>";if(n.relaxedDomain&&(b||(n.isOpera&&parseFloat(opera.version())<11))){G='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+I.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'}v=o.add(r.iframeContainer,"iframe",{id:I.id+"_ifr",src:G||'javascript:""',frameBorder:"0",allowTransparency:"true",title:J.aria_label,style:{width:"100%",height:B,display:"block"}});I.contentAreaContainer=r.iframeContainer;o.get(r.editorContainer).style.display=I.orgDisplay;o.get(I.id).style.display="none";o.setAttrib(I.id,"aria-hidden",true);if(!n.relaxedDomain||!G){I.setupIframe()}E=v=r=null},setupIframe:function(){var r=this,x=r.settings,y=o.get(r.id),z=r.getDoc(),v,q;if(!b||!n.relaxedDomain){z.open();z.write(r.iframeHTML);z.close();if(n.relaxedDomain){z.domain=n.relaxedDomain}}q=r.getBody();q.disabled=true;if(!x.readonly){q.contentEditable=true}q.disabled=false;r.schema=new n.html.Schema(x);r.dom=new n.dom.DOMUtils(r.getDoc(),{keep_values:true,url_converter:r.convertURL,url_converter_scope:r,hex_colors:x.force_hex_style_colors,class_filter:x.class_filter,update_styles:1,fix_ie_paragraphs:1,schema:r.schema});r.parser=new n.html.DomParser(x,r.schema);if(!r.settings.allow_html_in_named_anchor){r.parser.addAttributeFilter("name",function(s,t){var B=s.length,D,A,C,E;while(B--){E=s[B];if(E.name==="a"&&E.firstChild){C=E.parent;D=E.lastChild;do{A=D.prev;C.insert(D,E);D=A}while(D)}}})}r.parser.addAttributeFilter("src,href,style",function(s,t){var A=s.length,C,E=r.dom,D,B;while(A--){C=s[A];D=C.attr(t);B="data-mce-"+t;if(!C.attributes.map[B]){if(t==="style"){C.attr(B,E.serializeStyle(E.parseStyle(D),C.name))}else{C.attr(B,r.convertURL(D,t,C.name))}}}});r.parser.addNodeFilter("script",function(s,t){var A=s.length,B;while(A--){B=s[A];B.attr("type","mce-"+(B.attr("type")||"text/javascript"))}});r.parser.addNodeFilter("#cdata",function(s,t){var A=s.length,B;while(A--){B=s[A];B.type=8;B.name="#comment";B.value="[CDATA["+B.value+"]]"}});r.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(t,A){var B=t.length,C,s=r.schema.getNonEmptyElements();while(B--){C=t[B];if(C.isEmpty(s)){C.empty().append(new n.html.Node("br",1)).shortEnded=true}}});r.serializer=new n.dom.Serializer(x,r.dom,r.schema);r.selection=new n.dom.Selection(r.dom,r.getWin(),r.serializer);r.formatter=new n.Formatter(this);r.formatter.register({alignleft:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignfull:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},wrap_links:false},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},wrap_links:false},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(s){return true},onformat:function(A,s,t){i(t,function(C,B){r.dom.setAttrib(A,B,C)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});i("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(s){r.formatter.register(s,{block:s,remove:"all"})});r.formatter.register(r.settings.formats);r.undoManager=new n.UndoManager(r);r.undoManager.onAdd.add(function(t,s){if(t.hasUndo()){return r.onChange.dispatch(r,s,t)}});r.undoManager.onUndo.add(function(t,s){return r.onUndo.dispatch(r,s,t)});r.undoManager.onRedo.add(function(t,s){return r.onRedo.dispatch(r,s,t)});r.forceBlocks=new n.ForceBlocks(r);r.enterKey=new n.EnterKey(r);r.editorCommands=new n.EditorCommands(r);r.serializer.onPreProcess.add(function(s,t){return r.onPreProcess.dispatch(r,t,s)});r.serializer.onPostProcess.add(function(s,t){return r.onPostProcess.dispatch(r,t,s)});r.onPreInit.dispatch(r);if(!x.gecko_spellcheck){r.getBody().spellcheck=0}if(!x.readonly){r._addEvents()}r.controlManager.onPostRender.dispatch(r,r.controlManager);r.onPostRender.dispatch(r);r.quirks=new n.util.Quirks(this);if(x.directionality){r.getBody().dir=x.directionality}if(x.nowrap){r.getBody().style.whiteSpace="nowrap"}if(x.handle_node_change_callback){r.onNodeChange.add(function(t,s,A){r.execCallback("handle_node_change_callback",r.id,A,-1,-1,true,r.selection.isCollapsed())})}if(x.save_callback){r.onSaveContent.add(function(s,A){var t=r.execCallback("save_callback",r.id,A.content,r.getBody());if(t){A.content=t}})}if(x.onchange_callback){r.onChange.add(function(t,s){r.execCallback("onchange_callback",r,s)})}if(x.protect){r.onBeforeSetContent.add(function(s,t){if(x.protect){i(x.protect,function(A){t.content=t.content.replace(A,function(B){return"<!--mce:protected "+escape(B)+"-->"})})}})}if(x.convert_newlines_to_brs){r.onBeforeSetContent.add(function(s,t){if(t.initial){t.content=t.content.replace(/\r?\n/g,"<br />")}})}if(x.preformatted){r.onPostProcess.add(function(s,t){t.content=t.content.replace(/^\s*<pre.*?>/,"");t.content=t.content.replace(/<\/pre>\s*$/,"");if(t.set){t.content='<pre class="mceItemHidden">'+t.content+"</pre>"}})}if(x.verify_css_classes){r.serializer.attribValueFilter=function(C,A){var B,t;if(C=="class"){if(!r.classesRE){t=r.dom.getClasses();if(t.length>0){B="";i(t,function(s){B+=(B?"|":"")+s["class"]});r.classesRE=new RegExp("("+B+")","gi")}}return !r.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(A)||r.classesRE.test(A)?A:""}return A}}if(x.cleanup_callback){r.onBeforeSetContent.add(function(s,t){t.content=r.execCallback("cleanup_callback","insert_to_editor",t.content,t)});r.onPreProcess.add(function(s,t){if(t.set){r.execCallback("cleanup_callback","insert_to_editor_dom",t.node,t)}if(t.get){r.execCallback("cleanup_callback","get_from_editor_dom",t.node,t)}});r.onPostProcess.add(function(s,t){if(t.set){t.content=r.execCallback("cleanup_callback","insert_to_editor",t.content,t)}if(t.get){t.content=r.execCallback("cleanup_callback","get_from_editor",t.content,t)}})}if(x.save_callback){r.onGetContent.add(function(s,t){if(t.save){t.content=r.execCallback("save_callback",r.id,t.content,r.getBody())}})}if(x.handle_event_callback){r.onEvent.add(function(s,t,A){if(r.execCallback("handle_event_callback",t,s,A)===false){k.cancel(t)}})}r.onSetContent.add(function(){r.addVisual(r.getBody())});if(x.padd_empty_editor){r.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}if(a){function u(s,t){i(s.dom.select("a"),function(B){var A=B.parentNode;if(s.dom.isBlock(A)&&A.lastChild===B){s.dom.add(A,"br",{"data-mce-bogus":1})}})}r.onExecCommand.add(function(s,t){if(t==="CreateLink"){u(s)}});r.onSetContent.add(r.selection.onSetContent.add(u))}r.load({initial:true,format:"html"});r.startContent=r.getContent({format:"raw"});r.undoManager.add();r.initialized=true;r.onInit.dispatch(r);r.execCallback("setupcontent_callback",r.id,r.getBody(),r.getDoc());r.execCallback("init_instance_callback",r);r.focus(true);r.nodeChanged({initial:1});i(r.contentCSS,function(s){r.dom.loadCSS(s)});if(x.auto_focus){setTimeout(function(){var s=n.get(x.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getBody().focus();s.getWin().focus()},100)}y=null},focus:function(v){var z,r=this,u=r.selection,y=r.settings.content_editable,s,q,x=r.getDoc();if(!v){s=u.getRng();if(s.item){q=s.item(0)}r._refreshContentEditable();if(!y){r.getWin().focus()}if(n.isGecko){r.getBody().focus()}if(q&&q.ownerDocument==x){s=x.body.createControlRange();s.addElement(q);s.select()}}if(n.activeEditor!=r){if((z=n.activeEditor)!=null){z.onDeactivate.dispatch(z,r)}r.onActivate.dispatch(r,z)}n._setActive(r)},execCallback:function(v){var q=this,u=q.settings[v],r;if(!u){return}if(q.callbackLookup&&(r=q.callbackLookup[v])){u=r.func;r=r.scope}if(d(u,"string")){r=u.replace(/\.\w+$/,"");r=r?n.resolve(r):0;u=n.resolve(u);q.callbackLookup=q.callbackLookup||{};q.callbackLookup[v]={func:u,scope:r}}return u.apply(r||q,Array.prototype.slice.call(arguments,1))},translate:function(q){var t=this.settings.language||"en",r=n.i18n;if(!q){return""}return r[t+"."+q]||q.replace(/{\#([^}]+)\}/g,function(u,s){return r[t+"."+s]||"{#"+s+"}"})},getLang:function(r,q){return n.i18n[(this.settings.language||"en")+"."+r]||(d(q)?q:"{#"+r+"}")},getParam:function(x,s,q){var t=n.trim,r=d(this.settings[x])?this.settings[x]:s,u;if(q==="hash"){u={};if(d(r,"string")){i(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(y){y=y.split("=");if(y.length>1){u[t(y[0])]=t(y[1])}else{u[t(y[0])]=t(y)}})}else{u=r}return u}return r},nodeChanged:function(u){var q=this,r=q.selection,v=r.getStart()||q.getBody();if(q.initialized){u=u||{};v=b&&v.ownerDocument!=q.getDoc()?q.getBody():v;u.parents=[];q.dom.getParent(v,function(s){if(s.nodeName=="BODY"){return true}u.parents.push(s)});q.onNodeChange.dispatch(q,u?u.controlManager||q.controlManager:q.controlManager,v,r.isCollapsed(),u)}},addButton:function(u,r){var q=this;q.buttons=q.buttons||{};q.buttons[u]=r},addCommand:function(q,s,r){this.execCommands[q]={func:s,scope:r||this}},addQueryStateHandler:function(q,s,r){this.queryStateCommands[q]={func:s,scope:r||this}},addQueryValueHandler:function(q,s,r){this.queryValueCommands[q]={func:s,scope:r||this}},addShortcut:function(s,v,q,u){var r=this,x;if(!r.settings.custom_shortcuts){return false}r.shortcuts=r.shortcuts||{};if(d(q,"string")){x=q;q=function(){r.execCommand(x,false,null)}}if(d(q,"object")){x=q;q=function(){r.execCommand(x[0],x[1],x[2])}}i(g(s),function(t){var y={func:q,scope:u||this,desc:v,alt:false,ctrl:false,shift:false};i(g(t,"+"),function(z){switch(z){case"alt":case"ctrl":case"shift":y[z]=true;break;default:y.charCode=z.charCodeAt(0);y.keyCode=z.toUpperCase().charCodeAt(0)}});r.shortcuts[(y.ctrl?"ctrl":"")+","+(y.alt?"alt":"")+","+(y.shift?"shift":"")+","+y.keyCode]=y});return true},execCommand:function(y,x,A,q){var u=this,v=0,z,r;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(y)&&(!q||!q.skip_focus)){u.focus()}q=f({},q);u.onBeforeExecCommand.dispatch(u,y,x,A,q);if(q.terminate){return false}if(u.execCallback("execcommand_callback",u.id,u.selection.getNode(),y,x,A)){u.onExecCommand.dispatch(u,y,x,A,q);return true}if(z=u.execCommands[y]){r=z.func.call(z.scope,x,A);if(r!==true){u.onExecCommand.dispatch(u,y,x,A,q);return r}}i(u.plugins,function(s){if(s.execCommand&&s.execCommand(y,x,A)){u.onExecCommand.dispatch(u,y,x,A,q);v=1;return false}});if(v){return true}if(u.theme&&u.theme.execCommand&&u.theme.execCommand(y,x,A)){u.onExecCommand.dispatch(u,y,x,A,q);return true}if(u.editorCommands.execCommand(y,x,A)){u.onExecCommand.dispatch(u,y,x,A,q);return true}u.getDoc().execCommand(y,x,A);u.onExecCommand.dispatch(u,y,x,A,q)},queryCommandState:function(v){var r=this,x,u;if(r._isHidden()){return}if(x=r.queryStateCommands[v]){u=x.func.call(x.scope);if(u!==true){return u}}x=r.editorCommands.queryCommandState(v);if(x!==-1){return x}try{return this.getDoc().queryCommandState(v)}catch(q){}},queryCommandValue:function(x){var r=this,v,u;if(r._isHidden()){return}if(v=r.queryValueCommands[x]){u=v.func.call(v.scope);if(u!==true){return u}}v=r.editorCommands.queryCommandValue(x);if(d(v)){return v}try{return this.getDoc().queryCommandValue(x)}catch(q){}},show:function(){var q=this;o.show(q.getContainer());o.hide(q.id);q.load()},hide:function(){var q=this,r=q.getDoc();if(b&&r){r.execCommand("SelectAll")}q.save();o.hide(q.getContainer());o.setStyle(q.id,"display",q.orgDisplay)},isHidden:function(){return !o.isHidden(this.id)},setProgressState:function(q,r,s){this.onSetProgressState.dispatch(this,q,r,s);return q},load:function(u){var q=this,s=q.getElement(),r;if(s){u=u||{};u.load=true;r=q.setContent(d(s.value)?s.value:s.innerHTML,u);u.element=s;if(!u.no_events){q.onLoadContent.dispatch(q,u)}u.element=s=null;return r}},save:function(v){var q=this,u=q.getElement(),r,s;if(!u||!q.initialized){return}v=v||{};v.save=true;if(!v.no_events){q.undoManager.typing=false;q.undoManager.add()}v.element=u;r=v.content=q.getContent(v);if(!v.no_events){q.onSaveContent.dispatch(q,v)}r=v.content;if(!/TEXTAREA|INPUT/i.test(u.nodeName)){u.innerHTML=r;if(s=o.getParent(q.id,"form")){i(s.elements,function(t){if(t.name==q.id){t.value=r;return false}})}}else{u.value=r}v.element=u=null;return r},setContent:function(v,t){var s=this,r,q=s.getBody(),u;t=t||{};t.format=t.format||"html";t.set=true;t.content=v;if(!t.no_events){s.onBeforeSetContent.dispatch(s,t)}v=t.content;if(!n.isIE&&(v.length===0||/^\s+$/.test(v))){u=s.settings.forced_root_block;if(u){v="<"+u+'><br data-mce-bogus="1"></'+u+">"}else{v='<br data-mce-bogus="1">'}q.innerHTML=v;s.selection.select(q,true);s.selection.collapse(true);return}if(t.format!=="raw"){v=new n.html.Serializer({},s.schema).serialize(s.parser.parse(v))}t.content=n.trim(v);s.dom.setHTML(q,t.content);if(!t.no_events){s.onSetContent.dispatch(s,t)}s.selection.normalize();return t.content},getContent:function(r){var q=this,s;r=r||{};r.format=r.format||"html";r.get=true;if(!r.no_events){q.onBeforeGetContent.dispatch(q,r)}if(r.format=="raw"){s=q.getBody().innerHTML}else{s=q.serializer.serialize(q.getBody(),r)}r.content=n.trim(s);if(!r.no_events){q.onGetContent.dispatch(q,r)}return r.content},isDirty:function(){var q=this;return n.trim(q.startContent)!=n.trim(q.getContent({format:"raw",no_events:1}))&&!q.isNotDirty},getContainer:function(){var q=this;if(!q.container){q.container=o.get(q.editorContainer||q.id+"_parent")}return q.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return o.get(this.settings.content_element||this.id)},getWin:function(){var q=this,r;if(!q.contentWindow){r=o.get(q.id+"_ifr");if(r){q.contentWindow=r.contentWindow}}return q.contentWindow},getDoc:function(){var r=this,q;if(!r.contentDocument){q=r.getWin();if(q){r.contentDocument=q.document}}return r.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(q,y,x){var r=this,v=r.settings;if(v.urlconverter_callback){return r.execCallback("urlconverter_callback",q,x,true,y)}if(!v.convert_urls||(x&&x.nodeName=="LINK")||q.indexOf("file:")===0){return q}if(v.relative_urls){return r.documentBaseURI.toRelative(q)}q=r.documentBaseURI.toAbsolute(q,v.remove_script_host);return q},addVisual:function(u){var q=this,r=q.settings;u=u||q.getBody();if(!d(q.hasVisual)){q.hasVisual=r.visual}i(q.dom.select("table,a",u),function(t){var s;switch(t.nodeName){case"TABLE":s=q.dom.getAttrib(t,"border");if(!s||s=="0"){if(q.hasVisual){q.dom.addClass(t,r.visual_table_class)}else{q.dom.removeClass(t,r.visual_table_class)}}return;case"A":s=q.dom.getAttrib(t,"name");if(s){if(q.hasVisual){q.dom.addClass(t,"mceItemAnchor")}else{q.dom.removeClass(t,"mceItemAnchor")}}return}});q.onVisualAid.dispatch(q,u,q.hasVisual)},remove:function(){var q=this,r=q.getContainer();if(!q.removed){q.removed=1;q.hide();if(!q.settings.content_editable){k.clear(q.getWin());k.clear(q.getDoc())}k.clear(q.getBody());k.clear(q.formElement);k.unbind(r);q.execCallback("remove_instance_callback",q);q.onRemove.dispatch(q);q.onExecCommand.listeners=[];n.remove(q);o.remove(r)}},destroy:function(r){var q=this;if(q.destroyed){return}if(a){k.unbind(q.getDoc());k.unbind(q.getWin());k.unbind(q.getBody())}if(!r){n.removeUnload(q.destroy);tinyMCE.onBeforeUnload.remove(q._beforeUnload);if(q.theme&&q.theme.destroy){q.theme.destroy()}q.controlManager.destroy();q.selection.destroy();q.dom.destroy()}if(q.formElement){q.formElement.submit=q.formElement._mceOldSubmit;q.formElement._mceOldSubmit=null}q.contentAreaContainer=q.formElement=q.container=q.settings.content_element=q.bodyElement=q.contentDocument=q.contentWindow=null;if(q.selection){q.selection=q.selection.win=q.selection.dom=q.selection.dom.doc=null}q.destroyed=1},_addEvents:function(){var B=this,u,C=B.settings,r=B.dom,y={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function q(t,D){var s=t.type;if(B.removed){return}if(B.onEvent.dispatch(B,t,D)!==false){B[y[t.fakeType||t.type]].dispatch(B,t,D)}}i(y,function(t,s){switch(s){case"contextmenu":r.bind(B.getDoc(),s,q);break;case"paste":r.bind(B.getBody(),s,function(D){q(D)});break;case"submit":case"reset":r.bind(B.getElement().form||o.getParent(B.id,"form"),s,q);break;default:r.bind(C.content_editable?B.getBody():B.getDoc(),s,q)}});r.bind(C.content_editable?B.getBody():(a?B.getDoc():B.getWin()),"focus",function(s){B.focus(true)});if(n.isGecko){r.bind(B.getDoc(),"DOMNodeInserted",function(t){var s;t=t.target;if(t.nodeType===1&&t.nodeName==="IMG"&&(s=t.getAttribute("data-mce-src"))){t.src=B.documentBaseURI.toAbsolute(s)}})}if(a){function v(){var E=this,G=E.getDoc(),F=E.settings;if(a&&!F.readonly){E._refreshContentEditable();try{G.execCommand("styleWithCSS",0,false)}catch(D){if(!E._isHidden()){try{G.execCommand("useCSS",0,true)}catch(D){}}}if(!F.table_inline_editing){try{G.execCommand("enableInlineTableEditing",false,false)}catch(D){}}if(!F.object_resizing){try{G.execCommand("enableObjectResizing",false,false)}catch(D){}}}}B.onBeforeExecCommand.add(v);B.onMouseDown.add(v)}B.onMouseUp.add(B.nodeChanged);B.onKeyUp.add(function(s,t){var D=t.keyCode;if((D>=33&&D<=36)||(D>=37&&D<=40)||D==13||D==45||D==46||D==8||(n.isMac&&(D==91||D==93))||t.ctrlKey){B.nodeChanged()}});B.onKeyDown.add(function(t,D){if(D.keyCode!=j.BACKSPACE){return}var s=t.selection.getRng();if(!s.collapsed){return}var F=s.startContainer;var E=s.startOffset;while(F&&F.nodeType&&F.nodeType!=1&&F.parentNode){F=F.parentNode}if(F&&F.parentNode&&F.parentNode.tagName==="BLOCKQUOTE"&&F.parentNode.firstChild==F&&E==0){t.formatter.toggle("blockquote",null,F.parentNode);s.setStart(F,0);s.setEnd(F,0);t.selection.setRng(s);t.selection.collapse(false)}});B.onReset.add(function(){B.setContent(B.startContent,{format:"raw"})});if(C.custom_shortcuts){if(C.custom_undo_redo_keyboard_shortcuts){B.addShortcut("ctrl+z",B.getLang("undo_desc"),"Undo");B.addShortcut("ctrl+y",B.getLang("redo_desc"),"Redo")}B.addShortcut("ctrl+b",B.getLang("bold_desc"),"Bold");B.addShortcut("ctrl+i",B.getLang("italic_desc"),"Italic");B.addShortcut("ctrl+u",B.getLang("underline_desc"),"Underline");for(u=1;u<=6;u++){B.addShortcut("ctrl+"+u,"",["FormatBlock",false,"h"+u])}B.addShortcut("ctrl+7","",["FormatBlock",false,"p"]);B.addShortcut("ctrl+8","",["FormatBlock",false,"div"]);B.addShortcut("ctrl+9","",["FormatBlock",false,"address"]);function x(t){var s=null;if(!t.altKey&&!t.ctrlKey&&!t.metaKey){return s}i(B.shortcuts,function(D){if(n.isMac&&D.ctrl!=t.metaKey){return}else{if(!n.isMac&&D.ctrl!=t.ctrlKey){return}}if(D.alt!=t.altKey){return}if(D.shift!=t.shiftKey){return}if(t.keyCode==D.keyCode||(t.charCode&&t.charCode==D.charCode)){s=D;return false}});return s}B.onKeyUp.add(function(s,t){var D=x(t);if(D){return k.cancel(t)}});B.onKeyPress.add(function(s,t){var D=x(t);if(D){return k.cancel(t)}});B.onKeyDown.add(function(s,t){var D=x(t);if(D){D.func.call(D.scope);return k.cancel(t)}})}if(n.isIE){r.bind(B.getDoc(),"controlselect",function(D){var t=B.resizeInfo,s;D=D.target;if(D.nodeName!=="IMG"){return}if(t){r.unbind(t.node,t.ev,t.cb)}if(!r.hasClass(D,"mceItemNoResize")){ev="resizeend";s=r.bind(D,ev,function(F){var E;F=F.target;if(E=r.getStyle(F,"width")){r.setAttrib(F,"width",E.replace(/[^0-9%]+/g,""));r.setStyle(F,"width","")}if(E=r.getStyle(F,"height")){r.setAttrib(F,"height",E.replace(/[^0-9%]+/g,""));r.setStyle(F,"height","")}})}else{ev="resizestart";s=r.bind(D,"resizestart",k.cancel,k)}t=B.resizeInfo={node:D,ev:ev,cb:s}})}if(n.isOpera){B.onClick.add(function(s,t){k.prevent(t)})}if(C.custom_undo_redo){function A(){B.undoManager.typing=false;B.undoManager.add()}var z=n.isGecko?"blur":"focusout";r.bind(B.getDoc(),z,function(s){if(!B.removed&&B.undoManager.typing){A()}});B.dom.bind(B.dom.getRoot(),"dragend",function(s){A()});B.onKeyUp.add(function(s,D){var t=D.keyCode;if((t>=33&&t<=36)||(t>=37&&t<=40)||t==13||t==45||D.ctrlKey){A()}});B.onKeyDown.add(function(s,E){var D=E.keyCode,t;if(D==8){t=B.getDoc().selection;if(t&&t.createRange&&t.createRange().item){B.undoManager.beforeChange();s.dom.remove(t.createRange().item(0));A();return k.cancel(E)}}if((D>=33&&D<=36)||(D>=37&&D<=40)||D==13||D==45){if(n.isIE&&D==13){B.undoManager.beforeChange()}if(B.undoManager.typing){A()}return}if((D<16||D>20)&&D!=224&&D!=91&&!B.undoManager.typing){B.undoManager.beforeChange();B.undoManager.typing=true;B.undoManager.add()}});B.onMouseDown.add(function(){if(B.undoManager.typing){A()}})}},_refreshContentEditable:function(){var r=this,q,s;if(r._isHidden()){q=r.getBody();s=q.parentNode;s.removeChild(q);s.appendChild(q);q.focus()}},_isHidden:function(){var q;if(!a){return 0}q=this.selection.getSel();return(!q||!q.rangeCount||q.rangeCount==0)}})})(tinymce);(function(c){var d=c.each,e,a=true,b=false;c.EditorCommands=function(n){var m=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,q=n.formatter,o;function r(z,y,x){var v;z=z.toLowerCase();if(v=j.exec[z]){v(z,y,x);return a}return b}function l(x){var v;x=x.toLowerCase();if(v=j.state[x]){return v(x)}return -1}function h(x){var v;x=x.toLowerCase();if(v=j.value[x]){return v(x)}return b}function u(v,x){x=x||"exec";d(v,function(z,y){d(y.toLowerCase().split(","),function(A){j[x][A]=z})})}c.extend(this,{execCommand:r,queryCommandState:l,queryCommandValue:h,addCommands:u});function f(y,x,v){if(x===e){x=b}if(v===e){v=null}return n.getDoc().execCommand(y,x,v)}function t(v){return q.match(v)}function s(v,x){q.toggle(v,x?{value:x}:e)}function i(v){o=p.getBookmark(v)}function g(){p.moveToBookmark(o)}u({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(z){var y=n.getDoc(),v;try{f(z)}catch(x){v=a}if(v||!y.queryCommandSupported(z)){if(c.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(A){if(A){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(v){if(p.isCollapsed()){p.select(p.getNode())}f(v);p.collapse(b)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){var x=v.substring(7);d("left,center,right,full".split(","),function(y){if(x!=y){q.remove("align"+y)}});s("align"+x);r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(y){var v,x;f(y);v=m.getParent(p.getNode(),"ol,ul");if(v){x=v.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(x.nodeName)){i();m.split(x,v);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){s(v)},"ForeColor,HiliteColor,FontName":function(y,x,v){s(y,v)},FontSize:function(z,y,x){var v,A;if(x>=1&&x<=7){A=c.explode(k.font_size_style_values);v=c.explode(k.font_size_classes);if(v){x=v[x-1]||x}else{x=A[x-1]||x}}s(z,x)},RemoveFormat:function(v){q.remove(v)},mceBlockQuote:function(v){s("blockquote")},FormatBlock:function(y,x,v){return s(v||"p")},mceCleanup:function(){var v=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(v)},mceRemoveNode:function(z,y,x){var v=x||p.getNode();if(v!=n.getBody()){i();n.dom.remove(v,a);g()}},mceSelectNodeDepth:function(z,y,x){var v=0;m.getParent(p.getNode(),function(A){if(A.nodeType==1&&v++==x){p.select(A);return b}},n.getBody())},mceSelectNode:function(y,x,v){p.select(v)},mceInsertContent:function(B,I,K){var y,J,E,z,F,G,D,C,L,x,A,M,v,H;y=n.parser;J=new c.html.Serializer({},n.schema);v='<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';G={content:K,format:"html"};p.onBeforeSetContent.dispatch(p,G);K=G.content;if(K.indexOf("{$caret}")==-1){K+="{$caret}"}K=K.replace(/\{\$caret\}/,v);if(!p.isCollapsed()){n.getDoc().execCommand("Delete",false,null)}E=p.getNode();G={context:E.nodeName.toLowerCase()};F=y.parse(K,G);A=F.lastChild;if(A.attr("id")=="mce_marker"){D=A;for(A=A.prev;A;A=A.walk(true)){if(A.type==3||!m.isBlock(A.name)){A.parent.insert(D,A,A.name==="br");break}}}if(!G.invalid){K=J.serialize(F);A=E.firstChild;M=E.lastChild;if(!A||(A===M&&A.nodeName==="BR")){m.setHTML(E,K)}else{p.setContent(K)}}else{p.setContent(v);E=n.selection.getNode();z=n.getBody();if(E.nodeType==9){E=A=z}else{A=E}while(A!==z){E=A;A=A.parentNode}K=E==z?z.innerHTML:m.getOuterHTML(E);K=J.serialize(y.parse(K.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return J.serialize(F)})));if(E==z){m.setHTML(z,K)}else{m.setOuterHTML(E,K)}}D=m.get("mce_marker");C=m.getRect(D);L=m.getViewPort(n.getWin());if((C.y+C.h>L.y+L.h||C.y<L.y)||(C.x>L.x+L.w||C.x<L.x)){H=c.isIE?n.getDoc().documentElement:n.getBody();H.scrollLeft=C.x;H.scrollTop=C.y-L.h+25}x=m.createRng();A=D.previousSibling;if(A&&A.nodeType==3){x.setStart(A,A.nodeValue.length)}else{x.setStartBefore(D);x.setEndBefore(D)}m.remove(D);p.setRng(x);p.onSetContent.dispatch(p,G);n.addVisual()},mceInsertRawHTML:function(y,x,v){p.setContent("tiny_mce_marker");n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return v}))},mceSetContent:function(y,x,v){n.setContent(v)},"Indent,Outdent":function(z){var x,v,y;x=k.indentation;v=/[a-z%]+$/i.exec(x);x=parseInt(x);if(!l("InsertUnorderedList")&&!l("InsertOrderedList")){if(!k.forced_root_block&&!m.getParent(p.getNode(),m.isBlock)){q.apply("div")}d(p.getSelectedBlocks(),function(A){if(z=="outdent"){y=Math.max(0,parseInt(A.style.paddingLeft||0)-x);m.setStyle(A,"paddingLeft",y?y+v:"")}else{m.setStyle(A,"paddingLeft",(parseInt(A.style.paddingLeft||0)+x)+v)}})}else{f(z)}},mceRepaint:function(){var x;if(c.isGecko){try{i(a);if(p.getSel()){p.getSel().selectAllChildren(n.getBody())}p.collapse(a);g()}catch(v){}}},mceToggleFormat:function(y,x,v){q.toggle(v)},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(y,x,v){n.execCommand("mceInsertContent",false,v.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(z,y,x){var v;if(typeof(x)=="string"){x={href:x}}v=m.getParent(p.getNode(),"a");x.href=x.href.replace(" ","%20");if(!v||!x.href){q.remove("link")}if(x.href){q.apply("link",x,v)}},selectAll:function(){var x=m.getRoot(),v=m.createRng();v.setStart(x,0);v.setEnd(x,x.childNodes.length);n.selection.setRng(v)}});u({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(z){var x="align"+z.substring(7);var v=p.isCollapsed()?[p.getNode()]:p.getSelectedBlocks();var y=c.map(v,function(A){return !!q.matchNode(A,x)});return c.inArray(y,a)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){return t(v)},mceBlockQuote:function(){return t("blockquote")},Outdent:function(){var v;if(k.inline_styles){if((v=m.getParent(p.getStart(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}if((v=m.getParent(p.getEnd(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}}return l("InsertUnorderedList")||l("InsertOrderedList")||(!k.inline_styles&&!!m.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(v){return m.getParent(p.getNode(),v=="insertunorderedlist"?"UL":"OL")}},"state");u({"FontSize,FontName":function(y){var x=0,v;if(v=m.getParent(p.getNode(),"span")){if(y=="fontsize"){x=v.style.fontSize}else{x=v.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return x}},"value");if(k.custom_undo_redo){u({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(f){var d,e=0,h=[],c;function g(){return b.trim(f.getContent({format:"raw",no_events:1}).replace(/<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g,""))}return d={typing:false,onAdd:new a(d),onUndo:new a(d),onRedo:new a(d),beforeChange:function(){c=f.selection.getBookmark(2,true)},add:function(m){var j,k=f.settings,l;m=m||{};m.content=g();l=h[e];if(l&&l.content==m.content){return null}if(h[e]){h[e].beforeBookmark=c}if(k.custom_undo_redo_levels){if(h.length>k.custom_undo_redo_levels){for(j=0;j<h.length-1;j++){h[j]=h[j+1]}h.length--;e=h.length}}m.bookmark=f.selection.getBookmark(2,true);if(e<h.length-1){h.length=e+1}h.push(m);e=h.length-1;d.onAdd.dispatch(d,m);f.isNotDirty=0;return m},undo:function(){var k,j;if(d.typing){d.add();d.typing=false}if(e>0){k=h[--e];f.setContent(k.content,{format:"raw"});f.selection.moveToBookmark(k.beforeBookmark);d.onUndo.dispatch(d,k)}return k},redo:function(){var i;if(e<h.length-1){i=h[++e];f.setContent(i.content,{format:"raw"});f.selection.moveToBookmark(i.bookmark);d.onRedo.dispatch(d,i)}return i},clear:function(){h=[];e=0;d.typing=false},hasUndo:function(){return e>0||this.typing},hasRedo:function(){return e<h.length-1&&!this.typing}}}})(tinymce);tinymce.ForceBlocks=function(c){var b=c.settings,e=c.dom,a=c.selection,d=c.schema.getBlockElements();if(b.forced_root_block){function f(){var j=a.getStart(),h=c.getBody(),g,k,o,q,p,i,l,m=-16777215;if(!j||j.nodeType!==1||!b.forced_root_block){return}while(j!=h){if(d[j.nodeName]){return}j=j.parentNode}g=a.getRng();if(g.setStart){k=g.startContainer;o=g.startOffset;q=g.endContainer;p=g.endOffset}else{if(g.item){j=g.item(0);g=c.getDoc().body.createTextRange();g.moveToElementText(j)}tmpRng=g.duplicate();tmpRng.collapse(true);o=tmpRng.move("character",m)*-1;if(!tmpRng.collapsed){tmpRng=g.duplicate();tmpRng.collapse(false);p=(tmpRng.move("character",m)*-1)-o}}for(j=h.firstChild;j;j){if(j.nodeType===3||(j.nodeType==1&&!d[j.nodeName])){if(!i){i=e.create(b.forced_root_block);j.parentNode.insertBefore(i,j)}l=j;j=j.nextSibling;i.appendChild(l)}else{i=null;j=j.nextSibling}}if(g.setStart){g.setStart(k,o);g.setEnd(q,p);a.setRng(g)}else{try{g=c.getDoc().body.createTextRange();g.moveToElementText(h);g.collapse(true);g.moveStart("character",o);if(p>0){g.moveEnd("character",p)}g.select()}catch(n){}}c.nodeChanged()}c.onKeyUp.add(f);c.onClick.add(f)}};(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(i){var h,g=this,f=g.editor;d(f.plugins,function(j){if(j.createControl){h=j.createControl(i,g);if(h){return false}}});switch(i){case"|":case"separator":return g.createSeparator()}if(!h&&f.buttons&&(h=f.buttons[i])){return g.createButton(i,h)}return g.add(h)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){if(p.cmd){i.execCommand(p.cmd,p.ui||false,p.value)}}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(f,n,h){var l=this,j=l.editor,i,k,m;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,scope:n.scope,control_manager:l},n);f=l.prefix+f;function g(o){return o.settings.use_accessible_selects&&!c.isGecko}if(j.settings.use_native_selects||g(j)){k=new c.ui.NativeListBox(f,n)}else{m=h||l._cls.listbox||c.ui.ListBox;k=new m(f,n,j)}l.controls[f]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){j.bookmark=j.selection.getBookmark(1)});a.add(o,"focus",function(){j.selection.moveToBookmark(j.bookmark);j.bookmark=null})})}if(k.hideMenu){j.onMouseDown.add(k.hideMenu,k)}return l.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i,g);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i,g)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i,g));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n,j);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createToolbarGroup:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||this._cls.toolbarGroup||c.ui.ToolbarGroup;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},resizeBy:function(f,g,h){h.resizeBy(f,g)},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.Formatter=function(W){var N={},Q=a.each,c=W.dom,q=W.selection,t=a.dom.TreeWalker,L=new a.dom.RangeUtils(c),d=W.schema.isValidChild,G=c.isBlock,l=W.settings.forced_root_block,s=c.nodeIndex,F=a.isGecko?"\u200B":"\uFEFF",e=/^(src|href|style)$/,T=false,C=true,p;function x(Y){var X=Y.getAttribute("data-mce-contenteditable");if(X&&X!=="inherit"){return X}return Y.contentEditable!=="inherit"?Y.contentEditable:null}function A(X){return X instanceof Array}function m(Y,X){return c.getParents(Y,X,c.getRoot())}function b(X){return X.nodeType===1&&X.id==="_mce_caret"}function S(X){return X?N[X]:N}function k(X,Y){if(X){if(typeof(X)!=="string"){Q(X,function(aa,Z){k(Z,aa)})}else{Y=Y.length?Y:[Y];Q(Y,function(Z){if(Z.deep===p){Z.deep=!Z.selector}if(Z.split===p){Z.split=!Z.selector||Z.inline}if(Z.remove===p&&Z.selector&&!Z.inline){Z.remove="none"}if(Z.selector&&Z.inline){Z.mixed=true;Z.block_expand=true}if(typeof(Z.classes)==="string"){Z.classes=Z.classes.split(/\s+/)}});N[X]=Y}}}var i=function(Y){var X;W.dom.getParent(Y,function(Z){X=W.dom.getStyle(Z,"text-decoration");return X&&X!=="none"});return X};var J=function(X){var Y;if(X.nodeType===1&&X.parentNode&&X.parentNode.nodeType===1){Y=i(X.parentNode);if(W.dom.getStyle(X,"color")&&Y){W.dom.setStyle(X,"text-decoration",Y)}else{if(W.dom.getStyle(X,"textdecoration")===Y){W.dom.setStyle(X,"text-decoration",null)}}}};function U(aa,ah,ac){var ad=S(aa),ai=ad[0],ag,Y,af,ae=q.isCollapsed();function X(am,al){al=al||ai;if(am){if(al.onformat){al.onformat(am,al,ah,ac)}Q(al.styles,function(ao,an){c.setStyle(am,an,r(ao,ah))});Q(al.attributes,function(ao,an){c.setAttrib(am,an,r(ao,ah))});Q(al.classes,function(an){an=r(an,ah);if(!c.hasClass(am,an)){c.addClass(am,an)}})}}function ab(){function an(au,ar){var at=new t(ar);for(ac=at.current();ac;ac=at.prev()){if(ac.childNodes.length>1||ac==au){return ac}}}var am=W.selection.getRng();var aq=am.startContainer;var al=am.endContainer;if(aq!=al&&am.endOffset==0){var ap=an(aq,al);var ao=ap.nodeType==3?ap.length:ap.childNodes.length;am.setEnd(ap,ao)}return am}function Z(ao,au,ar,aq,am){var al=[],an=-1,at,aw=-1,ap=-1,av;Q(ao.childNodes,function(ay,ax){if(ay.nodeName==="UL"||ay.nodeName==="OL"){an=ax;at=ay;return false}});Q(ao.childNodes,function(ay,ax){if(ay.nodeName==="SPAN"&&c.getAttrib(ay,"data-mce-type")=="bookmark"){if(ay.id==au.id+"_start"){aw=ax}else{if(ay.id==au.id+"_end"){ap=ax}}}});if(an<=0||(aw<an&&ap>an)){Q(a.grep(ao.childNodes),am);return 0}else{av=c.clone(ar,T);Q(a.grep(ao.childNodes),function(ay,ax){if((aw<an&&ax<an)||(aw>an&&ax>an)){al.push(ay);ay.parentNode.removeChild(ay)}});if(aw<an){ao.insertBefore(av,at)}else{if(aw>an){ao.insertBefore(av,at.nextSibling)}}aq.push(av);Q(al,function(ax){av.appendChild(ax)});return av}}function aj(am,ao,ar){var al=[],aq,an,ap=true;aq=ai.inline||ai.block;an=c.create(aq);X(an);L.walk(am,function(at){var au;function av(aw){var aB,az,ax,ay,aA;aA=ap;aB=aw.nodeName.toLowerCase();az=aw.parentNode.nodeName.toLowerCase();if(aw.nodeType===1&&x(aw)){aA=ap;ap=x(aw)==="true";ay=true}if(g(aB,"br")){au=0;if(ai.block){c.remove(aw)}return}if(ai.wrapper&&y(aw,aa,ah)){au=0;return}if(ap&&!ay&&ai.block&&!ai.wrapper&&H(aB)){aw=c.rename(aw,aq);X(aw);al.push(aw);au=0;return}if(ai.selector){Q(ad,function(aC){if("collapsed" in aC&&aC.collapsed!==ae){return}if(c.is(aw,aC.selector)&&!b(aw)){X(aw,aC);ax=true}});if(!ai.inline||ax){au=0;return}}if(ap&&!ay&&d(aq,aB)&&d(az,aq)&&!(!ar&&aw.nodeType===3&&aw.nodeValue.length===1&&aw.nodeValue.charCodeAt(0)===65279)&&!b(aw)){if(!au){au=c.clone(an,T);aw.parentNode.insertBefore(au,aw);al.push(au)}au.appendChild(aw)}else{if(aB=="li"&&ao){au=Z(aw,ao,an,al,av)}else{au=0;Q(a.grep(aw.childNodes),av);if(ay){ap=aA}au=0}}}Q(at,av)});if(ai.wrap_links===false){Q(al,function(at){function au(ay){var ax,aw,av;if(ay.nodeName==="A"){aw=c.clone(an,T);al.push(aw);av=a.grep(ay.childNodes);for(ax=0;ax<av.length;ax++){aw.appendChild(av[ax])}ay.appendChild(aw)}Q(a.grep(ay.childNodes),au)}au(at)})}Q(al,function(av){var at;function aw(ay){var ax=0;Q(ay.childNodes,function(az){if(!f(az)&&!I(az)){ax++}});return ax}function au(ax){var az,ay;Q(ax.childNodes,function(aA){if(aA.nodeType==1&&!I(aA)&&!b(aA)){az=aA;return T}});if(az&&h(az,ai)){ay=c.clone(az,T);X(ay);c.replace(ay,ax,C);c.remove(az,1)}return ay||ax}at=aw(av);if((al.length>1||!G(av))&&at===0){c.remove(av,1);return}if(ai.inline||ai.wrapper){if(!ai.exact&&at===1){av=au(av)}Q(ad,function(ax){Q(c.select(ax.inline,av),function(az){var ay;if(ax.wrap_links===false){ay=az.parentNode;do{if(ay.nodeName==="A"){return}}while(ay=ay.parentNode)}V(ax,ah,az,ax.exact?az:null)})});if(y(av.parentNode,aa,ah)){c.remove(av,1);av=0;return C}if(ai.merge_with_parents){c.getParent(av.parentNode,function(ax){if(y(ax,aa,ah)){c.remove(av,1);av=0;return C}})}if(av&&ai.merge_siblings!==false){av=u(D(av),av);av=u(av,D(av,C))}}})}if(ai){if(ac){if(ac.nodeType){Y=c.createRng();Y.setStartBefore(ac);Y.setEndAfter(ac);aj(o(Y,ad),null,true)}else{aj(ac,null,true)}}else{if(!ae||!ai.inline||c.select("td.mceSelected,th.mceSelected").length){var ak=W.selection.getNode();if(!l&&ad[0].defaultBlock&&!c.getParent(ak,c.isBlock)){U(ad[0].defaultBlock)}W.selection.setRng(ab());ag=q.getBookmark();aj(o(q.getRng(C),ad),ag);if(ai.styles&&(ai.styles.color||ai.styles.textDecoration)){a.walk(ak,J,"childNodes");J(ak)}q.moveToBookmark(ag);O(q.getRng(C));W.nodeChanged()}else{R("apply",aa,ah)}}}}function B(Z,ai,ab){var ac=S(Z),ak=ac[0],ag,af,Y,ah=true;function aa(aq){var ap,ao,an,am,at,ar;if(aq.nodeType===1&&x(aq)){at=ah;ah=x(aq)==="true";ar=true}ap=a.grep(aq.childNodes);if(ah&&!ar){for(ao=0,an=ac.length;ao<an;ao++){if(V(ac[ao],ai,aq,aq)){break}}}if(ak.deep){if(ap.length){for(ao=0,an=ap.length;ao<an;ao++){aa(ap[ao])}if(ar){ah=at}}}}function ad(am){var an;Q(m(am.parentNode).reverse(),function(ao){var ap;if(!an&&ao.id!="_start"&&ao.id!="_end"){ap=y(ao,Z,ai);if(ap&&ap.split!==false){an=ao}}});return an}function X(ap,am,ar,av){var aw,au,at,ao,aq,an;if(ap){an=ap.parentNode;for(aw=am.parentNode;aw&&aw!=an;aw=aw.parentNode){au=c.clone(aw,T);for(aq=0;aq<ac.length;aq++){if(V(ac[aq],ai,au,au)){au=0;break}}if(au){if(at){au.appendChild(at)}if(!ao){ao=au}at=au}}if(av&&(!ak.mixed||!G(ap))){am=c.split(ap,am)}if(at){ar.parentNode.insertBefore(at,ar);ao.appendChild(ar)}}return am}function aj(am){return X(ad(am),am,am,true)}function ae(ao){var an=c.get(ao?"_start":"_end"),am=an[ao?"firstChild":"lastChild"];if(I(am)){am=am[ao?"firstChild":"lastChild"]}c.remove(an,true);return am}function al(am){var an,ao;am=o(am,ac,C);if(ak.split){an=K(am,C);ao=K(am);if(an!=ao){an=P(an,"span",{id:"_start","data-mce-type":"bookmark"});ao=P(ao,"span",{id:"_end","data-mce-type":"bookmark"});aj(an);aj(ao);an=ae(C);ao=ae()}else{an=ao=aj(an)}am.startContainer=an.parentNode;am.startOffset=s(an);am.endContainer=ao.parentNode;am.endOffset=s(ao)+1}L.walk(am,function(ap){Q(ap,function(aq){aa(aq);if(aq.nodeType===1&&W.dom.getStyle(aq,"text-decoration")==="underline"&&aq.parentNode&&i(aq.parentNode)==="underline"){V({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,aq)}})})}if(ab){if(ab.nodeType){Y=c.createRng();Y.setStartBefore(ab);Y.setEndAfter(ab);al(Y)}else{al(ab)}return}if(!q.isCollapsed()||!ak.inline||c.select("td.mceSelected,th.mceSelected").length){ag=q.getBookmark();al(q.getRng(C));q.moveToBookmark(ag);if(ak.inline&&j(Z,ai,q.getStart())){O(q.getRng(true))}W.nodeChanged()}else{R("remove",Z,ai)}}function E(Y,aa,Z){var X=S(Y);if(j(Y,aa,Z)&&(!("toggle" in X[0])||X[0]["toggle"])){B(Y,aa,Z)}else{U(Y,aa,Z)}}function y(Y,X,ad,ab){var Z=S(X),ae,ac,aa;function af(aj,al,am){var ai,ak,ag=al[am],ah;if(al.onmatch){return al.onmatch(aj,al,am)}if(ag){if(ag.length===p){for(ai in ag){if(ag.hasOwnProperty(ai)){if(am==="attributes"){ak=c.getAttrib(aj,ai)}else{ak=M(aj,ai)}if(ab&&!ak&&!al.exact){return}if((!ab||al.exact)&&!g(ak,r(ag[ai],ad))){return}}}}else{for(ah=0;ah<ag.length;ah++){if(am==="attributes"?c.getAttrib(aj,ag[ah]):M(aj,ag[ah])){return al}}}}return al}if(Z&&Y){for(ac=0;ac<Z.length;ac++){ae=Z[ac];if(h(Y,ae)&&af(Y,ae,"attributes")&&af(Y,ae,"styles")){if(aa=ae.classes){for(ac=0;ac<aa.length;ac++){if(!c.hasClass(Y,aa[ac])){return}}}return ae}}}}function j(Z,ab,aa){var Y;function X(ac){ac=c.getParent(ac,function(ad){return !!y(ad,Z,ab,true)});return y(ac,Z,ab)}if(aa){return X(aa)}aa=q.getNode();if(X(aa)){return C}Y=q.getStart();if(Y!=aa){if(X(Y)){return C}}return T}function v(ae,ad){var ab,ac=[],aa={},Z,Y,X;ab=q.getStart();c.getParent(ab,function(ah){var ag,af;for(ag=0;ag<ae.length;ag++){af=ae[ag];if(!aa[af]&&y(ah,af,ad)){aa[af]=true;ac.push(af)}}});return ac}function z(ab){var ad=S(ab),aa,Z,ac,Y,X;if(ad){aa=q.getStart();Z=m(aa);for(Y=ad.length-1;Y>=0;Y--){X=ad[Y].selector;if(!X){return C}for(ac=Z.length-1;ac>=0;ac--){if(c.is(Z[ac],X)){return C}}}}return T}a.extend(this,{get:S,register:k,apply:U,remove:B,toggle:E,match:j,matchAll:v,matchNode:y,canApply:z});function h(X,Y){if(g(X,Y.inline)){return C}if(g(X,Y.block)){return C}if(Y.selector){return c.is(X,Y.selector)}}function g(Y,X){Y=Y||"";X=X||"";Y=""+(Y.nodeName||Y);X=""+(X.nodeName||X);return Y.toLowerCase()==X.toLowerCase()}function M(Y,X){var Z=c.getStyle(Y,X);if(X=="color"||X=="backgroundColor"){Z=c.toHex(Z)}if(X=="fontWeight"&&Z==700){Z="bold"}return""+Z}function r(X,Y){if(typeof(X)!="string"){X=X(Y)}else{if(Y){X=X.replace(/%(\w+)/g,function(aa,Z){return Y[Z]||aa})}}return X}function f(X){return X&&X.nodeType===3&&/^([\t \r\n]+|)$/.test(X.nodeValue)}function P(Z,Y,X){var aa=c.create(Y,X);Z.parentNode.insertBefore(aa,Z);aa.appendChild(Z);return aa}function o(X,ai,aa){var al,aj,ad,Z=X.startContainer,ae=X.startOffset,an=X.endContainer,ag=X.endOffset,al,aj,ad,ah;function ak(au){var ao,ar,at,aq,ap;ao=ar=au?Z:an;ap=au?"previousSibling":"nextSibling";root=c.getRoot();if(ao.nodeType==3&&!f(ao)){if(au?ae>0:ag<ao.nodeValue.length){return ao}}for(;;){if(!ai[0].block_expand&&G(ar)){return ar}for(aq=ar[ap];aq;aq=aq[ap]){if(!I(aq)&&!f(aq)){return ar}}if(ar.parentNode==root){ao=ar;break}ar=ar.parentNode}return ao}function ac(ao,ap){if(ap===p){ap=ao.nodeType===3?ao.length:ao.childNodes.length}while(ao&&ao.hasChildNodes()){ao=ao.childNodes[ap];if(ao){ap=ao.nodeType===3?ao.length:ao.childNodes.length}}return{node:ao,offset:ap}}if(Z.nodeType==1&&Z.hasChildNodes()){aj=Z.childNodes.length-1;Z=Z.childNodes[ae>aj?aj:ae];if(Z.nodeType==3){ae=0}}if(an.nodeType==1&&an.hasChildNodes()){aj=an.childNodes.length-1;an=an.childNodes[ag>aj?aj:ag-1];if(an.nodeType==3){ag=an.nodeValue.length}}function am(ap){var ao=ap;while(ao){if(ao.nodeType===1&&x(ao)){return x(ao)==="false"?ao:ap}ao=ao.parentNode}return ap}Z=am(Z);an=am(an);if(I(Z.parentNode)||I(Z)){Z=I(Z)?Z:Z.parentNode;Z=Z.nextSibling||Z;if(Z.nodeType==3){ae=0}}if(I(an.parentNode)||I(an)){an=I(an)?an:an.parentNode;an=an.previousSibling||an;if(an.nodeType==3){ag=an.length}}if(ai[0].inline){if(X.collapsed){function af(ap,au,aw){var at,aq,av,ao;function ar(ay,aA){var aB,ax,az=ay.nodeValue;if(typeof(aA)=="undefined"){aA=aw?az.length:0}if(aw){aB=az.lastIndexOf(" ",aA);ax=az.lastIndexOf("\u00a0",aA);aB=aB>ax?aB:ax;if(aB!==-1&&!aa){aB++}}else{aB=az.indexOf(" ",aA);ax=az.indexOf("\u00a0",aA);aB=aB!==-1&&(ax===-1||aB<ax)?aB:ax}return aB}if(ap.nodeType===3){av=ar(ap,au);if(av!==-1){return{container:ap,offset:av}}ao=ap}at=new t(ap,c.getParent(ap,G)||W.getBody());while(aq=at[aw?"prev":"next"]()){if(aq.nodeType===3){ao=aq;av=ar(aq);if(av!==-1){return{container:aq,offset:av}}}else{if(G(aq)){break}}}if(ao){if(aw){au=0}else{au=ao.length}return{container:ao,offset:au}}}ah=af(Z,ae,true);if(ah){Z=ah.container;ae=ah.offset}ah=af(an,ag);if(ah){an=ah.container;ag=ah.offset}}ad=ac(an,ag);if(ad.node){while(ad.node&&ad.offset===0&&ad.node.previousSibling){ad=ac(ad.node.previousSibling)}if(ad.node&&ad.offset>0&&ad.node.nodeType===3&&ad.node.nodeValue.charAt(ad.offset-1)===" "){if(ad.offset>1){an=ad.node;an.splitText(ad.offset-1)}else{if(ad.node.previousSibling){}}}}}if(ai[0].inline||ai[0].block_expand){if(!ai[0].inline||(Z.nodeType!=3||ae===0)){Z=ak(true)}if(!ai[0].inline||(an.nodeType!=3||ag===an.nodeValue.length)){an=ak()}}if(ai[0].selector&&ai[0].expand!==T&&!ai[0].inline){function ab(ap,ao){var aq,ar,au,at;if(ap.nodeType==3&&ap.nodeValue.length==0&&ap[ao]){ap=ap[ao]}aq=m(ap);for(ar=0;ar<aq.length;ar++){for(au=0;au<ai.length;au++){at=ai[au];if("collapsed" in at&&at.collapsed!==X.collapsed){continue}if(c.is(aq[ar],at.selector)){return aq[ar]}}}return ap}Z=ab(Z,"previousSibling");an=ab(an,"nextSibling")}if(ai[0].block||ai[0].selector){function Y(ap,ao,ar){var aq;if(!ai[0].wrapper){aq=c.getParent(ap,ai[0].block)}if(!aq){aq=c.getParent(ap.nodeType==3?ap.parentNode:ap,G)}if(aq&&ai[0].wrapper){aq=m(aq,"ul,ol").reverse()[0]||aq}if(!aq){aq=ap;while(aq[ao]&&!G(aq[ao])){aq=aq[ao];if(g(aq,"br")){break}}}return aq||ap}Z=Y(Z,"previousSibling");an=Y(an,"nextSibling");if(ai[0].block){if(!G(Z)){Z=ak(true)}if(!G(an)){an=ak()}}}if(Z.nodeType==1){ae=s(Z);Z=Z.parentNode}if(an.nodeType==1){ag=s(an)+1;an=an.parentNode}return{startContainer:Z,startOffset:ae,endContainer:an,endOffset:ag}}function V(ad,ac,aa,X){var Z,Y,ab;if(!h(aa,ad)){return T}if(ad.remove!="all"){Q(ad.styles,function(af,ae){af=r(af,ac);if(typeof(ae)==="number"){ae=af;X=0}if(!X||g(M(X,ae),af)){c.setStyle(aa,ae,"")}ab=1});if(ab&&c.getAttrib(aa,"style")==""){aa.removeAttribute("style");aa.removeAttribute("data-mce-style")}Q(ad.attributes,function(ag,ae){var af;ag=r(ag,ac);if(typeof(ae)==="number"){ae=ag;X=0}if(!X||g(c.getAttrib(X,ae),ag)){if(ae=="class"){ag=c.getAttrib(aa,ae);if(ag){af="";Q(ag.split(/\s+/),function(ah){if(/mce\w+/.test(ah)){af+=(af?" ":"")+ah}});if(af){c.setAttrib(aa,ae,af);return}}}if(ae=="class"){aa.removeAttribute("className")}if(e.test(ae)){aa.removeAttribute("data-mce-"+ae)}aa.removeAttribute(ae)}});Q(ad.classes,function(ae){ae=r(ae,ac);if(!X||c.hasClass(X,ae)){c.removeClass(aa,ae)}});Y=c.getAttribs(aa);for(Z=0;Z<Y.length;Z++){if(Y[Z].nodeName.indexOf("_")!==0){return T}}}if(ad.remove!="none"){n(aa,ad);return C}}function n(Z,aa){var X=Z.parentNode,Y;if(aa.block){if(!l){function ab(ad,ac,ae){ad=D(ad,ac,ae);return !ad||(ad.nodeName=="BR"||G(ad))}if(G(Z)&&!G(X)){if(!ab(Z,T)&&!ab(Z.firstChild,C,1)){Z.insertBefore(c.create("br"),Z.firstChild)}if(!ab(Z,C)&&!ab(Z.lastChild,T,1)){Z.appendChild(c.create("br"))}}}else{if(X==c.getRoot()){if(!aa.list_block||!g(Z,aa.list_block)){Q(a.grep(Z.childNodes),function(ac){if(d(l,ac.nodeName.toLowerCase())){if(!Y){Y=P(ac,l)}else{Y.appendChild(ac)}}else{Y=0}})}}}}if(aa.selector&&aa.inline&&!g(aa.inline,Z)){return}c.remove(Z,1)}function D(Y,X,Z){if(Y){X=X?"nextSibling":"previousSibling";for(Y=Z?Y:Y[X];Y;Y=Y[X]){if(Y.nodeType==1||!f(Y)){return Y}}}}function I(X){return X&&X.nodeType==1&&X.getAttribute("data-mce-type")=="bookmark"}function u(ab,aa){var X,Z,Y;function ad(ag,af){if(ag.nodeName!=af.nodeName){return T}function ae(ai){var aj={};Q(c.getAttribs(ai),function(ak){var al=ak.nodeName.toLowerCase();if(al.indexOf("_")!==0&&al!=="style"){aj[al]=c.getAttrib(ai,al)}});return aj}function ah(al,ak){var aj,ai;for(ai in al){if(al.hasOwnProperty(ai)){aj=ak[ai];if(aj===p){return T}if(al[ai]!=aj){return T}delete ak[ai]}}for(ai in ak){if(ak.hasOwnProperty(ai)){return T}}return C}if(!ah(ae(ag),ae(af))){return T}if(!ah(c.parseStyle(c.getAttrib(ag,"style")),c.parseStyle(c.getAttrib(af,"style")))){return T}return C}if(ab&&aa){function ac(af,ae){for(Z=af;Z;Z=Z[ae]){if(Z.nodeType==3&&Z.nodeValue.length!==0){return af}if(Z.nodeType==1&&!I(Z)){return Z}}return af}ab=ac(ab,"previousSibling");aa=ac(aa,"nextSibling");if(ad(ab,aa)){for(Z=ab.nextSibling;Z&&Z!=aa;){Y=Z;Z=Z.nextSibling;ab.appendChild(Y)}c.remove(aa);Q(a.grep(aa.childNodes),function(ae){ab.appendChild(ae)});return ab}}return aa}function H(X){return/^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(X)}function K(Y,ac){var X,ab,Z,aa;X=Y[ac?"startContainer":"endContainer"];ab=Y[ac?"startOffset":"endOffset"];if(X.nodeType==1){Z=X.childNodes.length-1;if(!ac&&ab){ab--}X=X.childNodes[ab>Z?Z:ab]}if(X.nodeType===3&&ac&&ab>=X.nodeValue.length){X=new t(X,W.getBody()).next()||X}if(X.nodeType===3&&!ac&&ab==0){X=new t(X,W.getBody()).prev()||X}return X}function R(ag,X,ae){var ah="_mce_caret",Y=W.settings.caret_debug;function Z(ak){var aj=c.create("span",{id:ah,"data-mce-bogus":true,style:Y?"color:red":""});if(ak){aj.appendChild(W.getDoc().createTextNode(F))}return aj}function af(ak,aj){while(ak){if((ak.nodeType===3&&ak.nodeValue!==F)||ak.childNodes.length>1){return false}if(aj&&ak.nodeType===1){aj.push(ak)}ak=ak.firstChild}return true}function ac(aj){while(aj){if(aj.id===ah){return aj}aj=aj.parentNode}}function ab(aj){var ak;if(aj){ak=new t(aj,aj);for(aj=ak.current();aj;aj=ak.next()){if(aj.nodeType===3){return aj}}}}function aa(al,ak){var am,aj;if(!al){al=ac(q.getStart());if(!al){while(al=c.get(ah)){aa(al,false)}}}else{aj=q.getRng(true);if(af(al)){if(ak!==false){aj.setStartBefore(al);aj.setEndBefore(al)}c.remove(al)}else{am=ab(al);if(am.nodeValue.charAt(0)===F){am=am.deleteData(0,1)}c.remove(al,1)}q.setRng(aj)}}function ad(){var al,aj,ap,ao,am,ak,an;al=q.getRng(true);ao=al.startOffset;ak=al.startContainer;an=ak.nodeValue;aj=ac(q.getStart());if(aj){ap=ab(aj)}if(an&&ao>0&&ao<an.length&&/\w/.test(an.charAt(ao))&&/\w/.test(an.charAt(ao-1))){am=q.getBookmark();al.collapse(true);al=o(al,S(X));al=L.split(al);U(X,ae,al);q.moveToBookmark(am)}else{if(!aj||ap.nodeValue!==F){aj=Z(true);ap=aj.firstChild;al.insertNode(aj);ao=1;U(X,ae,aj)}else{U(X,ae,aj)}q.setCursorLocation(ap,ao)}}function ai(){var aj=q.getRng(true),ak,am,ap,ao,al,at,ar=[],an,aq;ak=aj.startContainer;am=aj.startOffset;al=ak;if(ak.nodeType==3){if(am!=ak.nodeValue.length||ak.nodeValue===F){ao=true}al=al.parentNode}while(al){if(y(al,X,ae)){at=al;break}if(al.nextSibling){ao=true}ar.push(al);al=al.parentNode}if(!at){return}if(ao){ap=q.getBookmark();aj.collapse(true);aj=o(aj,S(X),true);aj=L.split(aj);B(X,ae,aj);q.moveToBookmark(ap)}else{aq=Z();al=aq;for(an=ar.length-1;an>=0;an--){al.appendChild(c.clone(ar[an],false));al=al.firstChild}al.appendChild(c.doc.createTextNode(F));al=al.firstChild;c.insertAfter(aq,at);q.setCursorLocation(al,1)}}if(!self._hasCaretEvents){W.onBeforeGetContent.addToTop(function(){var aj=[],ak;if(af(ac(q.getStart()),aj)){ak=aj.length;while(ak--){c.setAttrib(aj[ak],"data-mce-bogus","1")}}});a.each("onMouseUp onKeyUp".split(" "),function(aj){W[aj].addToTop(function(){aa()})});W.onKeyDown.addToTop(function(aj,al){var ak=al.keyCode;if(ak==8||ak==37||ak==39){aa(ac(q.getStart()))}});self._hasCaretEvents=true}if(ag=="apply"){ad()}else{ai()}}function O(Y){var X=Y.startContainer,ad=Y.startOffset,ac,ab,Z,aa;if(X.nodeType==3&&ad>=X.nodeValue.length){X=X.parentNode;ad=s(X)+1}if(X.nodeType==1){Z=X.childNodes;X=Z[Math.min(ad,Z.length-1)];ac=new t(X,c.getParent(X,c.isBlock));if(ad>Z.length-1){ac.next()}for(ab=ac.current();ab;ab=ac.next()){if(ab.nodeType==3&&!f(ab)){aa=c.create("a",null,F);ab.parentNode.insertBefore(aa,ab);Y.setStart(ab,0);q.setRng(Y);c.remove(aa);return}}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;if(c.inline_styles){h=e.explode(c.font_size_legacy_values);function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});(function(b){var a=b.dom.TreeWalker;b.EnterKey=function(e){var h=e.dom,d=e.selection,c=e.settings,g=e.undoManager;function f(x){var t=d.getRng(true),A,v,s,n,m,i,k,r,C,u;function z(E){return E&&h.isBlock(E)&&!/^(TD|TH|CAPTION)$/.test(E.nodeName)&&!/^(fixed|absolute)/i.test(E.style.position)}function l(F){var J,H,E,K,I,G=F;E=h.createRng();if(F.hasChildNodes()){J=new a(F,F);while(H=J.current()){if(H.nodeType==3){E.setStart(H,0);E.setEnd(H,0);break}if(/^(BR|IMG)$/.test(H.nodeName)){E.setStartBefore(H);E.setEndBefore(H);break}G=H;H=J.next()}if(!H){E.setStart(G,0);E.setEnd(G,0)}}else{if(F.nodeName=="BR"){E.setStartAfter(F);E.setEndAfter(F)}else{E.setStart(F,0);E.setEnd(F,0)}}d.setRng(E);I=h.getViewPort(e.getWin());K=h.getPos(F).y;if(K<I.y||K+25>I.y+I.h){e.getWin().scrollTo(0,K<I.y?K:K-I.h+25)}}function p(F){var G=v,I,H,E;I=F?h.create(F):n.cloneNode(false);E=I;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(G.nodeName)){H=G.cloneNode(false);h.setAttrib(H,"id","");if(I.hasChildNodes()){H.appendChild(I.firstChild);I.appendChild(H)}else{E=H;I.appendChild(H)}}}while(G=G.parentNode);if(!b.isIE){E.innerHTML="<br>"}return I}function o(G){var F,E;if(v.nodeType==3&&(G?s>0:s<v.nodeValue.length)){return false}F=new a(v,n);while(E=(G?F.prev():F.next())){if(E.nodeType===1){if(E.getAttribute("data-mce-bogus")){continue}name=E.nodeName.toLowerCase();if(name==="IMG"){return false}}else{if(E.nodeType===3&&!/^[ \t\r\n]*$/.test(E.nodeValue)){return false}}}return true}function j(E,J){var K,I,F,H,G;I=h.getParent(E,h.isBlock);if(u&&!x.shiftKey&&(!I||!z(I))){I=I||h.getRoot();if(!I.hasChildNodes()){K=h.create(u);I.appendChild(K);t.setStart(K,0);t.setEnd(K,0);return K}H=E;while(H.parentNode!=I){H=H.parentNode}while(H&&!h.isBlock(H)){F=H;H=H.previousSibling}if(F){K=h.create(u);F.parentNode.insertBefore(K,F);H=F;while(H&&!h.isBlock(H)){G=H.nextSibling;K.appendChild(H);H=G}t.setStart(E,J);t.setEnd(E,J)}}return E}function B(){function E(G){var F=k[G?"firstChild":"lastChild"];while(F){if(F.nodeType==1){break}F=F[G?"nextSibling":"previousSibling"]}return F===n}m=u?p(u):h.create("BR");if(E(true)&&E()){h.replace(m,k)}else{if(E(true)){k.parentNode.insertBefore(m,k)}else{if(E()){h.insertAfter(m,k)}else{A=t.cloneRange();A.setStartAfter(n);A.setEndAfter(k);i=A.extractContents();h.insertAfter(i,k);h.insertAfter(m,k)}}}h.remove(n);l(m);g.add()}function y(){var F=new a(v,n),E;while(E=F.current()){if(E.nodeName=="BR"){return true}E=F.next()}}function D(){var G,F,E;if(v&&v.nodeType==3&&s>=v.nodeValue.length){if(!b.isIE&&!y()){G=h.create("br");t.insertNode(G);t.setStartAfter(G);t.setEndAfter(G);F=true}}G=h.create("br");t.insertNode(G);E=h.doc.documentMode;if(b.isIE&&r=="PRE"&&(!E||E<8)){G.parentNode.insertBefore(h.doc.createTextNode("\r"),G)}if(!F){t.setStartAfter(G);t.setEndAfter(G)}else{t.setStartBefore(G);t.setEndBefore(G)}d.setRng(t);g.add()}function q(E){do{if(E.nodeType===3){E.nodeValue=E.nodeValue.replace(/^[\r\n]+/,"")}E=E.firstChild}while(E)}if(!t.collapsed){e.execCommand("Delete");return}if(x.isDefaultPrevented()){return}v=t.startContainer;s=t.startOffset;u=c.forced_root_block;u=u?u.toUpperCase():"";if(v.nodeType==1&&v.hasChildNodes()){v=v.childNodes[Math.min(s,v.childNodes.length-1)]||v;s=0}g.beforeChange();v=j(v,s);n=h.getParent(v,h.isBlock);k=n?h.getParent(n.parentNode,h.isBlock):null;r=n?n.nodeName.toUpperCase():"";C=k?k.nodeName.toUpperCase():"";if(r=="LI"&&h.isEmpty(n)){if(/^(UL|OL|LI)$/.test(k.parentNode.nodeName)){return false}B();return}if(r=="PRE"&&c.br_in_pre!==false){if(!x.shiftKey){D();return}}else{if((!u&&!x.shiftKey&&r!="LI")||(u&&x.shiftKey)){D();return}}u=u||"P";if(o()){if(/^(H[1-6]|PRE)$/.test(r)&&C!="HGROUP"){m=p(u)}else{m=p()}if(c.end_container_on_empty_block&&z(k)&&h.isEmpty(n)){m=h.split(k,n)}else{h.insertAfter(m,n)}}else{if(o(true)){m=n.parentNode.insertBefore(p(),n)}else{A=t.cloneRange();A.setEndAfter(n);i=A.extractContents();q(i);m=i.firstChild;h.insertAfter(i,n)}}h.setAttrib(m,"id","");l(m);g.add()}e.onKeyDown.add(function(j,i){if(i.keyCode==13){if(f(i)!==false){i.preventDefault()}}})}})(tinymce); \ No newline at end of file
+(function(e){var a=/^\s*|\s*$/g,b,d="B".replace(/A(.)|B/,"$1")==="$1";var c={majorVersion:"3",minorVersion:"5.0.1",releaseDate:"2012-05-10",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isOpera=e.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName);s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(e.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m<f.length;m++){r=f[m].href;if(r){if(/^https?:\/\/[^\/]+$/.test(r)){r+="/"}k=r?r.match(/.*\//)[0]:""}}function h(i){if(i.src&&/tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(i.src)){if(/_(src|dev)\.js/g.test(i.src)){s.suffix="_src"}if((j=i.src.indexOf("?"))!=-1){s.query=i.src.substring(j+1)}s.baseURL=i.src.substring(0,i.src.lastIndexOf("/"));if(k&&s.baseURL.indexOf("://")==-1&&s.baseURL.indexOf("/")!==0){s.baseURL=k+s.baseURL}return s.baseURL}return null}f=q.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}l=q.getElementsByTagName("head")[0];if(l){f=l.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}}return},is:function(g,f){if(!f){return g!==b}if(f=="array"&&(g.hasOwnProperty&&g instanceof Array)){return true}return typeof(g)==f},makeMap:function(f,j,h){var g;f=f||[];j=j||",";if(typeof(f)=="string"){f=f.split(j)}h=h||{};g=f.length;while(g--){h[f[g]]={}}return h},each:function(i,f,h){var j,g;if(!i){return 0}h=h||i;if(i.length!==b){for(j=0,g=i.length;j<g;j++){if(f.call(h,i[j],j,i)===false){return 0}}}else{for(j in i){if(i.hasOwnProperty(j)){if(f.call(h,i[j],j,i)===false){return 0}}}}return 1},map:function(g,h){var i=[];c.each(g,function(f){i.push(h(f))});return i},grep:function(g,h){var i=[];c.each(g,function(f){if(!h||h(f)){i.push(f)}});return i},inArray:function(g,h){var j,f;if(g){for(j=0,f=g.length;j<f;j++){if(g[j]===h){return j}}}return -1},extend:function(n,k){var j,f,h,g=arguments,m;for(j=1,f=g.length;j<f;j++){k=g[j];for(h in k){if(k.hasOwnProperty(h)){m=k[h];if(m!==b){n[h]=m}}}}return n},trim:function(f){return(f?""+f:"").replace(a,"")},create:function(o,f,j){var n=this,g,i,k,l,h,m=0;o=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(o);k=o[3].match(/(^|\.)(\w+)$/i)[2];i=n.createNS(o[3].replace(/\.\w+$/,""),j);if(i[k]){return}if(o[2]=="static"){i[k]=f;if(this.onCreate){this.onCreate(o[2],o[3],i[k])}return}if(!f[k]){f[k]=function(){};m=1}i[k]=f[k];n.extend(i[k].prototype,f);if(o[5]){g=n.resolve(o[5]).prototype;l=o[5].match(/\.(\w+)$/i)[1];h=i[k];if(m){i[k]=function(){return g[l].apply(this,arguments)}}else{i[k]=function(){this.parent=g[l];return h.apply(this,arguments)}}i[k].prototype[k]=i[k];n.each(g,function(p,q){i[k].prototype[q]=g[q]});n.each(f,function(p,q){if(g[q]){i[k].prototype[q]=function(){this.parent=g[q];return p.apply(this,arguments)}}else{if(q!=k){i[k].prototype[q]=p}}})}n.each(f["static"],function(p,q){i[k][q]=p});if(this.onCreate){this.onCreate(o[2],o[3],i[k].prototype)}},walk:function(i,h,j,g){g=g||this;if(i){if(j){i=i[j]}c.each(i,function(k,f){if(h.call(g,k,f,j)===false){return false}c.walk(k,h,j,g)})}},createNS:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0;g<j.length;g++){f=j[g];if(!h[f]){h[f]={}}h=h[f]}return h},resolve:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0,f=j.length;g<f;g++){h=h[j[g]];if(!h){break}}return h},addUnload:function(j,i){var h=this,g;g=function(){var f=h.unloads,l,m;if(f){for(m in f){l=f[m];if(l&&l.func){l.func.call(l.scope,1)}}if(e.detachEvent){e.detachEvent("onbeforeunload",k);e.detachEvent("onunload",g)}else{if(e.removeEventListener){e.removeEventListener("unload",g,false)}}h.unloads=l=f=w=g=0;if(e.CollectGarbage){CollectGarbage()}}};function k(){var l=document;function f(){l.detachEvent("onstop",f);if(g){g()}l=0}if(l.readyState=="interactive"){if(l){l.attachEvent("onstop",f)}e.setTimeout(function(){if(l){l.detachEvent("onstop",f)}},0)}}j={func:j,scope:i||this};if(!h.unloads){if(e.attachEvent){e.attachEvent("onunload",g);e.attachEvent("onbeforeunload",k)}else{if(e.addEventListener){e.addEventListener("unload",g,false)}}h.unloads=[j]}else{h.unloads.push(j)}return j},removeUnload:function(i){var g=this.unloads,h=null;c.each(g,function(j,f){if(j&&j.func==i){g.splice(f,1);h=i;return false}});return h},explode:function(f,g){if(!f||c.is(f,"array")){return f}return c.map(f.split(g||","),c.trim)},_addVer:function(g){var f;if(!this.query){return g}f=(g.indexOf("?")==-1?"?":"&")+this.query;if(g.indexOf("#")==-1){return g+f}return g.replace("#",f+"#")},_replace:function(h,f,g){if(d){return g.replace(h,function(){var l=f,j=arguments,k;for(k=0;k<j.length-2;k++){if(j[k]===b){l=l.replace(new RegExp("\\$"+k,"g"),"")}else{l=l.replace(new RegExp("\\$"+k,"g"),j[k])}}return l})}return g.replace(h,f)}};c._init();e.tinymce=e.tinyMCE=c})(window);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,inDispatch:false,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(b,a){this.listeners.push({cb:b,scope:a||this.scope});return b},addToTop:function(d,b){var a=this,c={cb:d,scope:b||a.scope};if(a.inDispatch){a.listeners=[c].concat(a.listeners)}else{a.listeners.unshift(c)}return d},remove:function(c){var b=this.listeners,a=null;tinymce.each(b,function(e,d){if(c==e.cb){a=e;b.splice(d,1);return false}});return a},dispatch:function(){var a=this,e,b=arguments,c,d=a.listeners,f;a.inDispatch=true;for(c=0;c<d.length;c++){f=d[c];e=f.cb.apply(f.scope,b.length>0?b:[f.scope]);if(e===false){break}}a.inDispatch=false;return e}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,i,d,c,h;e=tinymce.trim(e);g=f.settings=g||{};if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^[\w\-]*:?\/\//.test(e)){h=g.base_uri?g.base_uri.path:new tinymce.util.URI(location.href).directory;e=((g.base_uri&&g.base_uri.protocol)||"http")+"://mce_host"+f.toAbsPath(h,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});c=g.base_uri;if(c){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host==="mce_host"){f.port=c.port}if(!f.host||f.host==="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var d=this,f;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:d});if((b.host!="mce_host"&&d.host!=b.host&&b.host)||d.port!=b.port||d.protocol!=b.protocol){return b.getURI()}var c=d.getURI(),e=b.getURI();if(c==e||(c.charAt(c.length-1)=="/"&&c.substr(0,c.length-1)==e)){return c}f=d.toRelPath(d.path,b.path);if(b.query){f+="?"+b.query}if(b.anchor){f+="#"+b.anchor}return f},toAbsolute:function(b,c){b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f===1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,h=[],d,g;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(i){if(i){h.push(i)}});e=h;for(c=f.length-1,h=[];c>=0;c--){if(f[c].length===0||f[c]==="."){continue}if(f[c]===".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!==0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();(function(){function serialize(o,quote){var i,v,t,name;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&o instanceof Array){for(i=0,v="[";i<o.length;i++){v+=(i>0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(name in o){if(o.hasOwnProperty(name)){v+=typeof o[name]!="function"?(v.length>1?","+quote:quote)+name+quote+":"+serialize(o[name],quote):""}}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(b){return b.shiftKey||b.ctrlKey||b.altKey}}})(tinymce);tinymce.util.Quirks=function(d){var l=tinymce.VK,r=l.BACKSPACE,s=l.DELETE,o=d.dom,z=d.selection,q=d.settings;function c(D,C){try{d.getDoc().execCommand(D,false,C)}catch(B){}}function h(){function B(E){var C,G,D,F;C=z.getRng();G=o.getParent(C.startContainer,o.isBlock);if(E){G=o.getNext(G,o.isBlock)}if(G){D=G.firstChild;while(D&&D.nodeType==3&&D.nodeValue.length===0){D=D.nextSibling}if(D&&D.nodeName==="SPAN"){F=D.cloneNode(false)}}d.getDoc().execCommand(E?"ForwardDelete":"Delete",false,null);G=o.getParent(C.startContainer,o.isBlock);tinymce.each(o.select("span.Apple-style-span,font.Apple-style-span",G),function(H){var I=z.getBookmark();if(F){o.replace(F.cloneNode(false),H,true)}else{o.remove(H,true)}z.moveToBookmark(I)})}d.onKeyDown.add(function(C,E){var D;D=E.keyCode==s;if(!E.isDefaultPrevented()&&(D||E.keyCode==r)&&!l.modifierPressed(E)){E.preventDefault();B(D)}});d.addCommand("Delete",function(){B()})}function A(){function C(E,H){var D,G,F=H?"start":"end";D=E[F+"Container"];G=E[F+"Offset"];if(D.nodeType==1&&D.hasChildNodes()){D=D.childNodes[Math.min(H?G:(G>0?G-1:0),D.childNodes.length-1)]}return D}function B(G,K){var F,J,E,H,I=K?"start":"end",D;F=G[I+"Container"];J=G[I+"Offset"];E=o.getRoot();if(F.nodeType==1){D=J>=F.childNodes.length;F=C(G,K);if(F.nodeType==3){J=K&&!D?0:F.nodeValue.length}}if(F.nodeType==3&&((K&&J>0)||(!K&&J<F.nodeValue.length))){return false}while(F!==E){H=F.parentNode[K?"firstChild":"lastChild"];if(H.nodeName=="BR"){H=H[K?"nextSibling":"previousSibling"]||H}if(H!==F){return false}F=F.parentNode}return true}d.onKeyDown.addToTop(function(E,G){var D,F=G.keyCode;if(!G.isDefaultPrevented()&&(F==s||F==r)){D=z.getRng(true);if(B(D,true)&&B(D,false)&&(D.collapsed||o.findCommonAncestor(C(D,true),C(D))===o.getRoot())){E.setContent("");E.nodeChanged();G.preventDefault()}}})}function t(){if(!d.settings.content_editable){o.bind(d.getDoc(),"focusin",function(B){z.setRng(z.getRng())});o.bind(d.getDoc(),"mousedown",function(B){if(B.target==d.getDoc().documentElement){d.getWin().focus();z.setRng(z.getRng())}})}}function m(){d.onKeyDown.add(function(B,E){if(!E.isDefaultPrevented()&&E.keyCode===r){if(z.isCollapsed()&&z.getRng(true).startOffset===0){var D=z.getNode();var C=D.previousSibling;if(C&&C.nodeName&&C.nodeName.toLowerCase()==="hr"){o.remove(C);tinymce.dom.Event.cancel(E)}}}})}function b(){if(!Range.prototype.getClientRects){d.onMouseDown.add(function(C,D){if(D.target.nodeName==="HTML"){var B=C.getBody();B.blur();setTimeout(function(){B.focus()},0)}})}}function v(){d.onClick.add(function(B,C){C=C.target;if(/^(IMG|HR)$/.test(C.nodeName)){z.getSel().setBaseAndExtent(C,0,C,1)}if(C.nodeName=="A"&&o.hasClass(C,"mceItemAnchor")){z.select(C)}B.nodeChanged()})}function x(){function C(){var E=o.getAttribs(z.getStart().cloneNode(false));return function(){var F=z.getStart();if(F!==d.getBody()){o.setAttrib(F,"style",null);tinymce.each(E,function(G){F.setAttributeNode(G.cloneNode(true))})}}}function B(){return !z.isCollapsed()&&z.getStart()!=z.getEnd()}function D(E,F){F.preventDefault();return false}d.onKeyPress.add(function(E,G){var F;if((G.keyCode==8||G.keyCode==46)&&B()){F=C();E.getDoc().execCommand("delete",false,null);F();G.preventDefault();return false}});o.bind(d.getDoc(),"cut",function(F){var E;if(B()){E=C();d.onKeyUp.addToTop(D);setTimeout(function(){E();d.onKeyUp.remove(D)},0)}})}function i(){var C,B;o.bind(d.getDoc(),"selectionchange",function(){if(B){clearTimeout(B);B=0}B=window.setTimeout(function(){var D=z.getRng();if(!C||!tinymce.dom.RangeUtils.compareRanges(D,C)){d.nodeChanged();C=D}},50)})}function y(){document.body.setAttribute("role","application")}function u(){d.onKeyDown.add(function(B,D){if(!D.isDefaultPrevented()&&D.keyCode===r){if(z.isCollapsed()&&z.getRng(true).startOffset===0){var C=z.getNode().previousSibling;if(C&&C.nodeName&&C.nodeName.toLowerCase()==="table"){return tinymce.dom.Event.cancel(D)}}}})}function g(){var B=d.getDoc().documentMode;if(B&&B>7){return}c("RespectVisibilityInDesign",true);o.addClass(d.getBody(),"mceHideBrInPre");d.parser.addNodeFilter("pre",function(C,E){var F=C.length,H,D,I,G;while(F--){H=C[F].getAll("br");D=H.length;while(D--){I=H[D];G=I.prev;if(G&&G.type===3&&G.value.charAt(G.value-1)!="\n"){G.value+="\n"}else{I.parent.insert(new tinymce.html.Node("#text",3),I,true).value="\n"}}}});d.serializer.addNodeFilter("pre",function(C,E){var F=C.length,H,D,I,G;while(F--){H=C[F].getAll("br");D=H.length;while(D--){I=H[D];G=I.prev;if(G&&G.type==3){G.value=G.value.replace(/\r?\n$/,"")}}}})}function f(){o.bind(d.getBody(),"mouseup",function(D){var C,B=z.getNode();if(B.nodeName=="IMG"){if(C=o.getStyle(B,"width")){o.setAttrib(B,"width",C.replace(/[^0-9%]+/g,""));o.setStyle(B,"width","")}if(C=o.getStyle(B,"height")){o.setAttrib(B,"height",C.replace(/[^0-9%]+/g,""));o.setStyle(B,"height","")}}})}function p(){d.onKeyDown.add(function(H,I){var G,B,C,E,F,J,D;G=I.keyCode==s;if(!I.isDefaultPrevented()&&(G||I.keyCode==r)&&!l.modifierPressed(I)){B=z.getRng();C=B.startContainer;E=B.startOffset;D=B.collapsed;if(C.nodeType==3&&C.nodeValue.length>0&&((E===0&&!D)||(D&&E===(G?0:1)))){nonEmptyElements=H.schema.getNonEmptyElements();I.preventDefault();F=o.create("br",{id:"__tmp"});C.parentNode.insertBefore(F,C);H.getDoc().execCommand(G?"ForwardDelete":"Delete",false,null);C=z.getRng().startContainer;J=C.previousSibling;if(J&&J.nodeType==1&&!o.isBlock(J)&&o.isEmpty(J)&&!nonEmptyElements[J.nodeName.toLowerCase()]){o.remove(J)}o.remove("__tmp")}}})}function e(){d.onKeyDown.add(function(F,G){var D,C,H,B,E;if(G.isDefaultPrevented()||G.keyCode!=l.BACKSPACE){return}D=z.getRng();C=D.startContainer;H=D.startOffset;B=o.getRoot();E=C;if(!D.collapsed||H!==0){return}while(E&&E.parentNode&&E.parentNode.firstChild==E&&E.parentNode!=B){E=E.parentNode}if(E.tagName==="BLOCKQUOTE"){F.formatter.toggle("blockquote",null,E);D.setStart(C,0);D.setEnd(C,0);z.setRng(D);z.collapse(false)}})}function k(){function B(){d._refreshContentEditable();c("StyleWithCSS",false);c("enableInlineTableEditing",false);if(!q.object_resizing){c("enableObjectResizing",false)}}if(!q.readonly){d.onBeforeExecCommand.add(B);d.onMouseDown.add(B)}}function n(){function B(C,D){tinymce.each(o.select("a"),function(G){var E=G.parentNode,F=o.getRoot();if(E.lastChild===G){while(E&&!o.isBlock(E)){if(E.parentNode.lastChild!==E||E===F){return}E=E.parentNode}o.add(E,"br",{"data-mce-bogus":1})}})}d.onExecCommand.add(function(C,D){if(D==="CreateLink"){B(C)}});d.onSetContent.add(z.onSetContent.add(B))}function a(){function B(D,C){if(!D||!C.initial){d.execCommand("mceRepaint")}}d.onUndo.add(B);d.onRedo.add(B);d.onSetContent.add(B)}function j(){d.onKeyDown.add(function(B,C){if(!C.isDefaultPrevented()&&C.keyCode==8&&z.getNode().nodeName=="IMG"){C.preventDefault();B.undoManager.beforeChange();o.remove(z.getNode());B.undoManager.add()}})}u();e();A();if(tinymce.isWebKit){p();h();t();v();if(tinymce.isIDevice){i()}}if(tinymce.isIE){m();y();g();f();j()}if(tinymce.isGecko){m();b();x();k();n();a()}};(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;"};d={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n<m.length;n+=2){o=String.fromCharCode(parseInt(m[n],p));if(!g[o]){l="&"+m[n+1]+";";q[o]=l;q[l]=o}}return q}}a=e("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);j.html=j.html||{};j.html.Entities={encodeRaw:function(m,l){return m.replace(l?k:b,function(n){return g[n]||n})},encodeAllRaw:function(l){return(""+l).replace(f,function(m){return g[m]||m})},encodeNumeric:function(m,l){return m.replace(l?k:b,function(n){if(n.length>1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g<j.length;g++){a[j[g]]="\uFEFF"+g;a["\uFEFF"+g]=j[g]}function c(n,q,p,i){function o(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(s){var z={},q,n,x,r,v=d.url_converter,y=d.url_converter_scope||this;function p(D,G){var F,C,B,E;F=z[D+"-top"+G];if(!F){return}C=z[D+"-right"+G];if(F!=C){return}B=z[D+"-bottom"+G];if(C!=B){return}E=z[D+"-left"+G];if(B!=E){return}z[D+G]=E;delete z[D+"-top"+G];delete z[D+"-right"+G];delete z[D+"-bottom"+G];delete z[D+"-left"+G]}function u(C){var D=z[C],B;if(!D||D.indexOf(" ")<0){return}D=D.split(" ");B=D.length;while(B--){if(D[B]!==D[0]){return false}}z[C]=D[0];return true}function A(D,C,B,E){if(!u(C)){return}if(!u(B)){return}if(!u(E)){return}z[D]=z[C]+" "+z[B]+" "+z[E];delete z[C];delete z[B];delete z[E]}function t(B){r=true;return a[B]}function i(C,B){if(r){C=C.replace(/\uFEFF[0-9]/g,function(D){return a[D]})}if(!B){C=C.replace(/\\([\'\";:])/g,"$1")}return C}function o(C,B,F,E,G,D){G=G||D;if(G){G=i(G);return"'"+G.replace(/\'/g,"\\'")+"'"}B=i(B||F||E);if(v){B=v.call(y,B,"style")}return"url('"+B.replace(/\'/g,"\\'")+"')"}if(s){s=s.replace(/\\[\"\';:\uFEFF]/g,t).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(B){return B.replace(/[;:]/g,t)});while(q=b.exec(s)){n=q[1].replace(l,"").toLowerCase();x=q[2].replace(l,"");if(n&&x.length>0){if(n==="font-weight"&&x==="700"){x="bold"}else{if(n==="color"||n==="background-color"){x=x.toLowerCase()}}x=x.replace(k,c);x=x.replace(h,o);z[n]=r?i(x,true):x}b.lastIndex=q.index+q[0].length}p("border","");p("border","-width");p("border","-color");p("border","-style");p("padding","");p("margin","");A("border","border-width","border-style","border-color");if(z.border==="medium none"){delete z.border}}return z},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u<s;u++){t=x[u];v=p[t];if(v!==e&&v.length>0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(f){var a={},e=f.makeMap,g=f.each;function d(j,i){return j.split(i||",")}function h(m,l){var j,k={};function i(n){return n.replace(/[A-Z]+/g,function(o){return i(m[o])})}for(j in m){if(m.hasOwnProperty(j)){m[j]=i(m[j])}}i(l).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(q,o,n,p){n=d(n,"|");k[o]={attributes:e(n),attributesOrder:n,children:e(p,"|",{"#comment":{}})}});return k}function b(){var i=a.html5;if(!i){i=a.html5=h({A:"id|accesskey|class|dir|draggable|item|hidden|itemprop|role|spellcheck|style|subject|title",B:"#|a|abbr|area|audio|b|bdo|br|button|canvas|cite|code|command|datalist|del|dfn|em|embed|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|meta|meter|noscript|object|output|progress|q|ruby|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|var|video",C:"#|a|abbr|area|address|article|aside|audio|b|bdo|blockquote|br|button|canvas|cite|code|command|datalist|del|details|dfn|dialog|div|dl|em|embed|fieldset|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|menu|meta|meter|nav|noscript|ol|object|output|p|pre|progress|q|ruby|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|ul|var|video"},"html[A|manifest][body|head]head[A][base|command|link|meta|noscript|script|style|title]title[A][#]base[A|href|target][]link[A|href|rel|media|type|sizes][]meta[A|http-equiv|name|content|charset][]style[A|type|media|scoped][#]script[A|charset|type|src|defer|async][#]noscript[A][C]body[A][C]section[A][C]nav[A][C]article[A][C]aside[A][C]h1[A][B]h2[A][B]h3[A][B]h4[A][B]h5[A][B]h6[A][B]hgroup[A][h1|h2|h3|h4|h5|h6]header[A][C]footer[A][C]address[A][C]p[A][B]br[A][]pre[A][B]dialog[A][dd|dt]blockquote[A|cite][C]ol[A|start|reversed][li]ul[A][li]li[A|value][C]dl[A][dd|dt]dt[A][B]dd[A][C]a[A|href|target|ping|rel|media|type][C]em[A][B]strong[A][B]small[A][B]cite[A][B]q[A|cite][B]dfn[A][B]abbr[A][B]code[A][B]var[A][B]samp[A][B]kbd[A][B]sub[A][B]sup[A][B]i[A][B]b[A][B]mark[A][B]progress[A|value|max][B]meter[A|value|min|max|low|high|optimum][B]time[A|datetime][B]ruby[A][B|rt|rp]rt[A][B]rp[A][B]bdo[A][B]span[A][B]ins[A|cite|datetime][B]del[A|cite|datetime][B]figure[A][C|legend|figcaption]figcaption[A][C]img[A|alt|src|height|width|usemap|ismap][]iframe[A|name|src|height|width|sandbox|seamless][]embed[A|src|height|width|type][]object[A|data|type|height|width|usemap|name|form|classid][param]param[A|name|value][]details[A|open][C|legend]command[A|type|label|icon|disabled|checked|radiogroup][]menu[A|type|label][C|li]legend[A][C|B]div[A][C]source[A|src|type|media][]audio[A|src|autobuffer|autoplay|loop|controls][source]video[A|src|autobuffer|autoplay|loop|controls|width|height|poster][source]hr[A][]form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]fieldset[A|disabled|form|name][C|legend]label[A|form|for][B]input[A|type|accept|alt|autocomplete|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value][]button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]datalist[A][B|option]optgroup[A|disabled|label][option]option[A|disabled|selected|label|value][]textarea[A|autofocus|disabled|form|maxlength|name|placeholder|readonly|required|rows|cols|wrap][]keygen[A|autofocus|challenge|disabled|form|keytype|name][]output[A|for|form|name][B]canvas[A|width|height][]map[A|name][B|C]area[A|shape|coords|href|alt|target|media|rel|ping|type][]mathml[A][]svg[A][]table[A|summary][caption|colgroup|thead|tfoot|tbody|tr]caption[A][C]colgroup[A|span][col]col[A|span][]thead[A][tr]tfoot[A][tr]tbody[A][tr]tr[A][th|td]th[A|headers|rowspan|colspan|scope][B]td[A|headers|rowspan|colspan][C]")}return i}function c(){var i=a.html4;if(!i){i=a.html4=h({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]")}return i}f.html.Schema=function(A){var u=this,s={},k={},j=[],D,y;var o,q,z,r,v,n,p={};function m(F,E,H){var G=A[F];if(!G){G=a[F];if(!G){G=e(E," ",e(E.toUpperCase()," "));G=f.extend(G,H);a[F]=G}}else{G=e(G,",",e(G.toUpperCase()," "))}return G}A=A||{};y=A.schema=="html5"?b():c();if(A.verify_html===false){A.valid_elements="*[*]"}if(A.valid_styles){D={};g(A.valid_styles,function(F,E){D[E]=f.explode(F)})}o=m("whitespace_elements","pre script style textarea");q=m("self_closing_elements","colgroup dd dt li options p td tfoot th thead tr");z=m("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source");r=m("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls");n=m("non_empty_elements","td th iframe video audio object",z);v=m("block_elements","h1 h2 h3 h4 h5 h6 hr p div address pre form table tbody thead tfoot th tr td li ol ul caption blockquote center dl dt dd dir fieldset noscript menu isindex samp header footer article section hgroup aside nav figure");function i(E){return new RegExp("^"+E.replace(/([?+*])/g,".$1")+"$")}function C(L){var K,G,Z,V,aa,F,I,U,X,Q,Y,ac,O,J,W,E,S,H,ab,ad,P,T,N=/^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,R=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,M=/[*?+]/;if(L){L=d(L);if(s["@"]){S=s["@"].attributes;H=s["@"].attributesOrder}for(K=0,G=L.length;K<G;K++){F=N.exec(L[K]);if(F){W=F[1];Q=F[2];E=F[3];X=F[4];O={};J=[];I={attributes:O,attributesOrder:J};if(W==="#"){I.paddEmpty=true}if(W==="-"){I.removeEmpty=true}if(S){for(ad in S){O[ad]=S[ad]}J.push.apply(J,H)}if(X){X=d(X,"|");for(Z=0,V=X.length;Z<V;Z++){F=R.exec(X[Z]);if(F){U={};ac=F[1];Y=F[2].replace(/::/g,":");W=F[3];T=F[4];if(ac==="!"){I.attributesRequired=I.attributesRequired||[];I.attributesRequired.push(Y);U.required=true}if(ac==="-"){delete O[Y];J.splice(f.inArray(J,Y),1);continue}if(W){if(W==="="){I.attributesDefault=I.attributesDefault||[];I.attributesDefault.push({name:Y,value:T});U.defaultValue=T}if(W===":"){I.attributesForced=I.attributesForced||[];I.attributesForced.push({name:Y,value:T});U.forcedValue=T}if(W==="<"){U.validValues=e(T,"?")}}if(M.test(Y)){I.attributePatterns=I.attributePatterns||[];U.pattern=i(Y);I.attributePatterns.push(U)}else{if(!O[Y]){J.push(Y)}O[Y]=U}}}}if(!S&&Q=="@"){S=O;H=J}if(E){I.outputName=Q;s[E]=I}if(M.test(Q)){I.pattern=i(Q);j.push(I)}else{s[Q]=I}}}}}function t(E){s={};j=[];C(E);g(y,function(G,F){k[F]=G.children})}function l(F){var E=/^(~)?(.+)$/;if(F){g(d(F),function(J){var H=E.exec(J),I=H[1]==="~",K=I?"span":"div",G=H[2];k[G]=k[K];p[G]=K;if(!I){v[G]={}}g(k,function(L,M){if(L[K]){L[G]=L[K]}})})}}function x(F){var E=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(F){g(d(F),function(J){var I=E.exec(J),G,H;if(I){H=I[1];if(H){G=k[I[2]]}else{G=k[I[2]]={"#comment":{}}}G=k[I[2]];g(d(I[3],"|"),function(K){if(H==="-"){delete G[K]}else{G[K]={}}})}})}}function B(E){var G=s[E],F;if(G){return G}F=j.length;while(F--){G=j[F];if(G.pattern.test(E)){return G}}}if(!A.valid_elements){g(y,function(F,E){s[E]={attributes:F.attributes,attributesOrder:F.attributesOrder};k[E]=F.children});if(A.schema!="html5"){g(d("strong/b,em/i"),function(E){E=d(E,"/");s[E[1]].outputName=E[0]})}s.img.attributesDefault=[{name:"alt",value:""}];g(d("ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr,strong,em,b,i"),function(E){if(s[E]){s[E].removeEmpty=true}});g(d("p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption"),function(E){s[E].paddEmpty=true})}else{t(A.valid_elements)}l(A.custom_elements);x(A.valid_children);C(A.extended_valid_elements);x("+ol[ul|ol],+ul[ul|ol]");if(A.invalid_elements){f.each(f.explode(A.invalid_elements),function(E){if(s[E]){delete s[E]}})}if(!B("span")){C("span[!data-mce-type|*]")}u.children=k;u.styles=D;u.getBoolAttrs=function(){return r};u.getBlockElements=function(){return v};u.getShortEndedElements=function(){return z};u.getSelfClosingElements=function(){return q};u.getNonEmptyElements=function(){return n};u.getWhiteSpaceElements=function(){return o};u.isValidChild=function(E,G){var F=k[E];return !!(F&&F[G])};u.getElementRule=B;u.getCustomElements=function(){return p};u.addValidElements=C;u.setValidElements=t;u.addCustomElements=l;u.addValidChildren=x}})(tinymce);(function(a){a.html.SaxParser=function(c,e){var b=this,d=function(){};c=c||{};b.schema=e=e||new a.html.Schema();if(c.fix_self_closing!==false){c.fix_self_closing=true}a.each("comment cdata text start end pi doctype".split(" "),function(f){if(f){b[f]=c[f]||d}});b.parse=function(E){var n=this,g,G=0,I,B,A=[],N,Q,C,r,z,s,M,H,O,v,m,k,t,R,o,P,F,S,L,f,J,l,D,K,h,x=0,j=a.html.Entities.decode,y,q;function u(T){var V,U;V=A.length;while(V--){if(A[V].name===T){break}}if(V>=0){for(U=A.length-1;U>=V;U--){T=A[U];if(T.valid){n.end(T.name)}}A.length=V}}function p(U,T,Y,X,W){var Z,V;T=T.toLowerCase();Y=T in H?T:j(Y||X||W||"");if(v&&!z&&T.indexOf("data-")!==0){Z=P[T];if(!Z&&F){V=F.length;while(V--){Z=F[V];if(Z.pattern.test(T)){break}}if(V===-1){Z=null}}if(!Z){return}if(Z.validValues&&!(Y in Z.validValues)){return}}N.map[T]=Y;N.push({name:T,value:Y})}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-\\:]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g");D=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;K={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};M=e.getShortEndedElements();J=e.getSelfClosingElements();H=e.getBoolAttrs();v=c.validate;s=c.remove_internals;y=c.fix_self_closing;q=a.isIE;o=/^:/;while(g=l.exec(E)){if(G<g.index){n.text(j(E.substr(G,g.index-G)))}if(I=g[6]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}u(I)}else{if(I=g[7]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}O=I in M;if(y&&J[I]&&A.length>0&&A[A.length-1].name===I){u(I)}if(!v||(m=e.getElementRule(I))){k=true;if(v){P=m.attributes;F=m.attributePatterns}if(R=g[8]){z=R.indexOf("data-mce-type")!==-1;if(z&&s){k=false}N=[];N.map={};R.replace(D,p)}else{N=[];N.map={}}if(v&&!z){S=m.attributesRequired;L=m.attributesDefault;f=m.attributesForced;if(f){Q=f.length;while(Q--){t=f[Q];r=t.name;h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}if(L){Q=L.length;while(Q--){t=L[Q];r=t.name;if(!(r in N.map)){h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}}if(S){Q=S.length;while(Q--){if(S[Q] in N.map){break}}if(Q===-1){k=false}}if(N.map["data-mce-bogus"]){k=false}}if(k){n.start(I,N,O)}}else{k=false}if(B=K[I]){B.lastIndex=G=g.index+g[0].length;if(g=B.exec(E)){if(k){C=E.substr(G,g.index-G)}G=g.index+g[0].length}else{C=E.substr(G);G=E.length}if(k&&C.length>0){n.text(C,true)}if(k){n.end(I)}l.lastIndex=G;continue}if(!O){if(!R||R.indexOf("/")!=R.length-1){A.push({name:I,valid:k})}else{if(k){n.end(I)}}}}else{if(I=g[1]){n.comment(I)}else{if(I=g[2]){n.cdata(I)}else{if(I=g[3]){n.doctype(I)}else{if(I=g[4]){n.pi(I,g[5])}}}}}}G=g.index+g[0].length}if(G<E.length){n.text(j(E.substr(G)))}for(Q=A.length-1;Q>=0;Q--){I=A[Q];if(I.valid){n.end(I.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h<f;h++){j=m[h];if(j.name!=="id"){k[k.length]={name:j.name,value:j.value};k.map[j.name]=j.value}}n.attributes=k}n.value=g.value;n.shortEnded=g.shortEnded;return n},wrap:function(g){var f=this;f.parent.insert(g,f);g.append(f);return f},unwrap:function(){var f=this,h,g;for(h=f.firstChild;h;){g=h.next;f.insert(h,f,true);h=g}f.remove()},remove:function(){var f=this,h=f.parent,g=f.next,i=f.prev;if(h){if(h.firstChild===f){h.firstChild=g;if(g){g.prev=null}}else{i.next=g}if(h.lastChild===f){h.lastChild=i;if(i){i.next=null}}else{g.prev=i}f.parent=f.next=f.prev=null}return f},append:function(h){var f=this,g;if(h.parent){h.remove()}g=f.lastChild;if(g){g.next=h;h.prev=g;f.lastChild=h}else{f.lastChild=f.firstChild=h}h.parent=f;return h},insert:function(h,f,i){var g;if(h.parent){h.remove()}g=f.parent||this;if(i){if(f===g.firstChild){g.firstChild=h}else{f.prev.next=h}h.prev=f.prev;h.next=f;f.prev=h}else{if(f===g.lastChild){g.lastChild=h}else{f.next.prev=h}h.next=f.next;h.prev=f;f.next=h}h.parent=g;return h},getAll:function(g){var f=this,h,i=[];for(h=f.firstChild;h;h=a(h,f)){if(h.name===g){i.push(h)}}return i},empty:function(){var g=this,f,h,j;if(g.firstChild){f=[];for(j=g.firstChild;j;j=a(j,g)){f.push(j)}h=f.length;while(h--){j=f[h];j.parent=j.firstChild=j.lastChild=j.next=j.prev=null}}g.firstChild=g.lastChild=null;return g},isEmpty:function(k){var f=this,j=f.firstChild,h,g;if(j){do{if(j.type===1){if(j.attributes.map["data-mce-bogus"]){continue}if(k[j.name]){return false}h=j.attributes.length;while(h--){g=j.attributes[h].name;if(g==="name"||g.indexOf("data-")===0){return false}}}if(j.type===8){return false}if((j.type===3&&!c.test(j.value))){return false}}while(j=a(j,f))}return true},walk:function(f){return a(this,null,f)}});d.extend(b,{create:function(g,f){var i,h;i=new b(g,e[g]||1);if(f){for(h in f){i.attr(h,f[h])}}return i}});d.html.Node=b})(tinymce);(function(b){var a=b.html.Node;b.html.DomParser=function(g,h){var f=this,e={},d=[],i={},c={};g=g||{};g.validate="validate" in g?g.validate:true;g.root_name=g.root_name||"body";f.schema=h=h||new b.html.Schema();function j(m){var o,p,x,v,z,n,q,l,t,u,k,s,y,r;s=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();for(o=0;o<m.length;o++){p=m[o];if(!p.parent){continue}v=[p];for(x=p.parent;x&&!h.isValidChild(x.name,p.name)&&!s[x.name];x=x.parent){v.push(x)}if(x&&v.length>1){v.reverse();z=n=f.filterNode(v[0].clone());for(t=0;t<v.length-1;t++){if(h.isValidChild(n.name,v[t].name)){q=f.filterNode(v[t].clone());n.append(q)}else{q=n}for(l=v[t].firstChild;l&&l!=v[t+1];){r=l.next;q.append(l);l=r}n=q}if(!z.isEmpty(k)){x.insert(z,v[0],true);x.insert(p,z)}else{x.insert(p,v[0],true)}x=v[0];if(x.isEmpty(k)||x.firstChild===x.lastChild&&x.firstChild.name==="br"){x.empty().remove()}}else{if(p.parent){if(p.name==="li"){y=p.prev;if(y&&(y.name==="ul"||y.name==="ul")){y.append(p);continue}y=p.next;if(y&&(y.name==="ul"||y.name==="ul")){y.insert(p,y.firstChild,true);continue}p.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(p.parent.name,"div")&&h.isValidChild("div",p.name)){p.wrap(f.filterNode(new a("div",1)))}else{if(p.name==="style"||p.name==="script"){p.empty().remove()}else{p.unwrap()}}}}}}f.filterNode=function(m){var l,k,n;if(k in e){n=i[k];if(n){n.push(m)}else{i[k]=[m]}}l=d.length;while(l--){k=d[l].name;if(k in m.attributes.map){n=c[k];if(n){n.push(m)}else{c[k]=[m]}}}return m};f.addNodeFilter=function(k,l){b.each(b.explode(k),function(m){var n=e[m];if(!n){e[m]=n=[]}n.push(l)})};f.addAttributeFilter=function(k,l){b.each(b.explode(k),function(m){var n;for(n=0;n<d.length;n++){if(d[n].name===m){d[n].callbacks.push(l);return}}d.push({name:m,callbacks:[l]})})};f.parse=function(v,m){var n,I,B,A,D,C,x,r,F,M,z,o,E,L=[],K,t,k,y,s,p,u,q;m=m||{};i={};c={};o=b.extend(b.makeMap("script,style,head,html,body,title,meta,param"),h.getBlockElements());u=h.getNonEmptyElements();p=h.children;z=g.validate;q="forced_root_block" in m?m.forced_root_block:g.forced_root_block;s=h.getWhiteSpaceElements();E=/^[ \t\r\n]+/;t=/[ \t\r\n]+$/;k=/[ \t\r\n]+/g;y=/^[ \t\r\n]+$/;function G(){var N=I.firstChild,l,O;while(N){l=N.next;if(N.type==3||(N.type==1&&N.name!=="p"&&!o[N.name]&&!N.attr("data-mce-type"))){if(!O){O=J(q,1);I.insert(O,N);O.append(N)}else{O.append(N)}}else{O=null}N=l}}function J(l,N){var O=new a(l,N),P;if(l in e){P=i[l];if(P){P.push(O)}else{i[l]=[O]}}return O}function H(O){var P,l,N;for(P=O.prev;P&&P.type===3;){l=P.value.replace(t,"");if(l.length>0){P.value=l;P=P.prev}else{N=P.prev;P.remove();P=N}}}n=new b.html.SaxParser({validate:z,fix_self_closing:!z,cdata:function(l){B.append(J("#cdata",4)).value=l},text:function(O,l){var N;if(!K){O=O.replace(k," ");if(B.lastChild&&o[B.lastChild.name]){O=O.replace(E,"")}}if(O.length!==0){N=J("#text",3);N.raw=!!l;B.append(N).value=O}},comment:function(l){B.append(J("#comment",8)).value=l},pi:function(l,N){B.append(J(l,7)).value=N;H(B)},doctype:function(N){var l;l=B.append(J("#doctype",10));l.value=N;H(B)},start:function(l,V,O){var T,Q,P,N,R,W,U,S;P=z?h.getElementRule(l):{};if(P){T=J(P.outputName||l,1);T.attributes=V;T.shortEnded=O;B.append(T);S=p[B.name];if(S&&p[T.name]&&!S[T.name]){L.push(T)}Q=d.length;while(Q--){R=d[Q].name;if(R in V.map){F=c[R];if(F){F.push(T)}else{c[R]=[T]}}}if(o[l]){H(T)}if(!O){B=T}if(!K&&s[l]){K=true}}},end:function(l){var R,O,Q,N,P;O=z?h.getElementRule(l):{};if(O){if(o[l]){if(!K){R=B.firstChild;if(R&&R.type===3){Q=R.value.replace(E,"");if(Q.length>0){R.value=Q;R=R.next}else{N=R.next;R.remove();R=N}while(R&&R.type===3){Q=R.value;N=R.next;if(Q.length===0||y.test(Q)){R.remove();R=N}R=N}}R=B.lastChild;if(R&&R.type===3){Q=R.value.replace(t,"");if(Q.length>0){R.value=Q;R=R.prev}else{N=R.prev;R.remove();R=N}while(R&&R.type===3){Q=R.value;N=R.prev;if(Q.length===0||y.test(Q)){R.remove();R=N}R=N}}}R=B.prev;if(R&&R.type===3){Q=R.value.replace(E,"");if(Q.length>0){R.value=Q}else{R.remove()}}}if(K&&s[l]){K=false}if(O.removeEmpty||O.paddEmpty){if(B.isEmpty(u)){if(O.paddEmpty){B.empty().append(new a("#text","3")).value="\u00a0"}else{if(!B.attributes.map.name){P=B.parent;B.empty().remove();B=P;return}}}}B=B.parent}}},h);I=B=new a(m.context||g.root_name,11);n.parse(v);if(z&&L.length){if(!m.context){j(L)}else{m.invalid=true}}if(q&&I.name=="body"){G()}if(!m.invalid){for(M in i){F=e[M];A=i[M];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(D=0,C=F.length;D<C;D++){F[D](A,M,m)}}for(D=0,C=d.length;D<C;D++){F=d[D];if(F.name in c){A=c[F.name];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(x=0,r=F.callbacks.length;x<r;x++){F.callbacks[x](A,F.name,m)}}}}return I};if(g.remove_trailing_brs){f.addNodeFilter("br",function(n,m){var r,q=n.length,o,v=b.extend({},h.getBlockElements()),k=h.getNonEmptyElements(),t,s,p,u;v.body=1;for(r=0;r<q;r++){o=n[r];t=o.parent;if(v[o.parent.name]&&o===t.lastChild){p=o.prev;while(p){u=p.name;if(u!=="span"||p.attr("data-mce-type")!=="bookmark"){if(u!=="br"){break}if(u==="br"){o=null;break}}p=p.prev}if(o){o.remove();if(t.isEmpty(k)){elementRule=h.getElementRule(t.name);if(elementRule){if(elementRule.removeEmpty){t.remove()}else{if(elementRule.paddEmpty){t.empty().append(new b.html.Node("#text",3)).value="\u00a0"}}}}}}else{s=o;while(t.firstChild===s&&t.lastChild===s){s=t;if(v[t.name]){break}t=t.parent}if(s===t){textNode=new b.html.Node("#text",3);textNode.value="\u00a0";o.replace(textNode)}}}})}if(!g.allow_html_in_named_anchor){f.addAttributeFilter("name",function(k,l){var n=k.length,p,m,o,q;while(n--){q=k[n];if(q.name==="a"&&q.firstChild){o=q.parent;p=q.lastChild;do{m=p.prev;o.insert(p,q);p=m}while(p)}}})}}})(tinymce);tinymce.html.Writer=function(e){var c=[],a,b,d,f,g;e=e||{};a=e.indent;b=tinymce.makeMap(e.indent_before||"");d=tinymce.makeMap(e.indent_after||"");f=tinymce.html.Entities.getEncodeFunc(e.entity_encoding||"raw",e.entities);g=e.element_format=="html";return{start:function(m,k,p){var n,j,h,o;if(a&&b[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n<j;n++){h=k[n];c.push(" ",h.name,'="',f(h.value,true),'"')}}if(!p||g){c[c.length]=">"}else{c[c.length]=" />"}if(p&&a&&d[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("</",h,">");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("<![CDATA[",h,"]]>")},comment:function(h){c.push("<!--",h,"-->")},pi:function(h,i){if(i){c.push("<?",h," ",i,"?>")}else{c.push("<?",h,"?>")}if(a){c.push("\n")}},doctype:function(h){c.push("<!DOCTYPE",h,">",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n<m;n++){r=q.attributesOrder[n];if(r in s.map){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}for(n=0,m=s.length;n<m;n++){r=s[n].name;if(!(r in u.map)){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}s=u}e.start(k.name,s,o);if(!o){if((k=k.firstChild)){do{f(k)}while(k=k.next)}e.end(j)}}else{t(k)}}if(h.type==1&&!c.inner){f(h)}else{g[11](h)}return e.getContent()}}})(tinymce);tinymce.dom={};(function(b,h){var g=!!document.addEventListener;function c(k,j,l,i){if(k.addEventListener){k.addEventListener(j,l,i||false)}else{if(k.attachEvent){k.attachEvent("on"+j,l)}}}function e(k,j,l,i){if(k.removeEventListener){k.removeEventListener(j,l,i||false)}else{if(k.detachEvent){k.detachEvent("on"+j,l)}}}function a(n,l){var i,k=l||{};function j(){return false}function m(){return true}for(i in n){if(i!=="layerX"&&i!=="layerY"){k[i]=n[i]}}if(!k.target){k.target=k.srcElement||document}k.preventDefault=function(){k.isDefaultPrevented=m;if(n){if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}}};k.stopPropagation=function(){k.isPropagationStopped=m;if(n){if(n.stopPropagation){n.stopPropagation()}else{n.cancelBubble=true}}};k.stopImmediatePropagation=function(){k.isImmediatePropagationStopped=m;k.stopPropagation()};if(!k.isDefaultPrevented){k.isDefaultPrevented=j;k.isPropagationStopped=j;k.isImmediatePropagationStopped=j}return k}function d(m,n,l){var k=m.document,j={type:"ready"};function i(){if(!l.domLoaded){l.domLoaded=true;n(j)}}if(g){c(m,"DOMContentLoaded",i)}else{c(k,"readystatechange",function(){if(k.readyState==="complete"){e(k,"readystatechange",arguments.callee);i()}});if(k.documentElement.doScroll&&m===m.top){(function(){try{k.documentElement.doScroll("left")}catch(o){setTimeout(arguments.callee,0);return}i()})()}}c(m,"load",i)}function f(k){var q=this,p={},i,o,n,m,l;m="onmouseenter" in document.documentElement;n="onfocusin" in document.documentElement;l={mouseenter:"mouseover",mouseleave:"mouseout"};i=1;q.domLoaded=false;q.events=p;function j(t,x){var s,u,r,v;s=p[x][t.type];if(s){for(u=0,r=s.length;u<r;u++){v=s[u];if(v&&v.func.call(v.scope,t)===false){t.preventDefault()}if(t.isImmediatePropagationStopped()){return}}}}q.bind=function(x,A,D,E){var s,t,u,r,B,z,C,v=window;function y(F){j(a(F||v.event),s)}if(!x||x.nodeType===3||x.nodeType===8){return}if(!x[h]){s=i++;x[h]=s;p[s]={}}else{s=x[h];if(!p[s]){p[s]={}}}E=E||x;A=A.split(" ");u=A.length;while(u--){r=A[u];z=y;B=C=false;if(r==="DOMContentLoaded"){r="ready"}if((q.domLoaded||x.readyState=="complete")&&r==="ready"){q.domLoaded=true;D.call(E,a({type:r}));continue}if(!m){B=l[r];if(B){z=function(F){var H,G;H=F.currentTarget;G=F.relatedTarget;if(G&&H.contains){G=H.contains(G)}else{while(G&&G!==H){G=G.parentNode}}if(!G){F=a(F||v.event);F.type=F.type==="mouseout"?"mouseleave":"mouseenter";F.target=H;j(F,s)}}}}if(!n&&(r==="focusin"||r==="focusout")){C=true;B=r==="focusin"?"focus":"blur";z=function(F){F=a(F||v.event);F.type=F.type==="focus"?"focusin":"focusout";j(F,s)}}t=p[s][r];if(!t){p[s][r]=t=[{func:D,scope:E}];t.fakeName=B;t.capture=C;t.nativeHandler=z;if(!g){t.proxyHandler=k(s)}if(r==="ready"){d(x,z,q)}else{c(x,B||r,g?z:t.proxyHandler,C)}}else{t.push({func:D,scope:E})}}x=t=0;return D};q.unbind=function(x,z,A){var s,u,v,B,r,t;if(!x||x.nodeType===3||x.nodeType===8){return q}s=x[h];if(s){t=p[s];if(z){z=z.split(" ");v=z.length;while(v--){r=z[v];u=t[r];if(u){if(A){B=u.length;while(B--){if(u[B].func===A){u.splice(B,1)}}}if(!A||u.length===0){delete t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}}}}else{for(r in t){u=t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}t={}}for(r in t){return q}delete p[s];try{delete x[h]}catch(y){x[h]=null}}return q};q.fire=function(u,s,r){var v,t;if(!u||u.nodeType===3||u.nodeType===8){return q}t=a(null,r);t.type=s;do{v=u[h];if(v){j(t,v)}u=u.parentNode||u.ownerDocument||u.defaultView||u.parentWindow}while(u&&!t.isPropagationStopped());return q};q.clean=function(u){var s,r,t=q.unbind;if(!u||u.nodeType===3||u.nodeType===8){return q}if(u[h]){t(u)}if(!u.getElementsByTagName){u=u.document}if(u&&u.getElementsByTagName){t(u);r=u.getElementsByTagName("*");s=r.length;while(s--){u=r[s];if(u[h]){t(u)}}}return q};q.callNativeHandler=function(s,r){if(p){p[s][r.type].nativeHandler(r)}};q.destory=function(){p={}};q.add=function(v,s,u,t){if(typeof(v)==="string"){v=document.getElementById(v)}if(v&&v instanceof Array){var r=v;while(r--){q.add(v[r],s,u,t)}return}if(s==="init"){s="ready"}return q.bind(v,s instanceof Array?s.join(" "):s,u,t)};q.remove=function(v,s,u,t){if(!v){return q}if(typeof(v)==="string"){v=document.getElementById(v)}if(v instanceof Array){var r=v.length;while(r--){q.remove(v[r],s,u,t)}return q}return q.unbind(v,s instanceof Array?s.join(" "):s,u)};q.clear=function(r){if(typeof(r)==="string"){r=document.getElementById(r)}return q.clean(r)};q.cancel=function(r){if(r){q.prevent(r);q.stop(r)}return false};q.prevent=function(r){r.preventDefault();return false};q.stop=function(r){r.stopPropagation();return false}}b.EventUtils=f;b.Event=new f(function(i){return function(j){tinymce.dom.Event.callNativeHandler(i,j)}});b.Event.bind(window,"ready",function(){});b=0})(tinymce.dom,"data-mce-expando");tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","previousSibling",e))}};(function(e){var g=e.each,d=e.is,f=e.isWebKit,b=e.isIE,h=e.html.Entities,c=/^([a-z0-9],?)+$/i,a=/^[ \t\r\n]*$/;e.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(o,l){var k=this,i,j,n;k.doc=o;k.win=window;k.files={};k.cssFlicker=false;k.counter=0;k.stdMode=!e.isIE||o.documentMode>=8;k.boxModel=!e.isIE||o.compatMode=="CSS1Compat"||k.stdMode;k.hasOuterHTML="outerHTML" in o.createElement("a");k.settings=l=e.extend({keep_values:false,hex_colors:1},l);k.schema=l.schema;k.styles=new e.html.Styles({url_converter:l.url_converter,url_converter_scope:l.url_converter_scope},l.schema);if(e.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(m){k.cssFlicker=true}}k.fixDoc(o);k.events=l.ownEvents?new e.dom.EventUtils(l.proxy):e.dom.Event;e.addUnload(k.destroy,k);n=l.schema?l.schema.getBlockElements():{};k.isBlock=function(q){var p=q.nodeType;if(p){return !!(p===1&&n[q.nodeName])}return !!n[q]}},fixDoc:function(k){var j=this.settings,i;if(b&&j.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(l){k.createElement(l)});for(i in j.schema.getCustomElements()){k.createElement(i)}}},clone:function(k,i){var j=this,m,l;if(!b||k.nodeType!==1||i){return k.cloneNode(i)}l=j.doc;if(!i){m=l.createElement(k.nodeName);g(j.getAttribs(k),function(n){j.setAttrib(m,n.nodeName,j.getAttrib(k,n.nodeName))});return m}return m.firstChild},getRoot:function(){var i=this,j=i.settings;return(j&&i.get(j.root_element))||i.doc.body},getViewPort:function(j){var k,i;j=!j?this.win:j;k=j.document;i=this.boxModel?k.documentElement:k.body;return{x:j.pageXOffset||i.scrollLeft,y:j.pageYOffset||i.scrollTop,w:j.innerWidth||i.clientWidth,h:j.innerHeight||i.clientHeight}},getRect:function(l){var k,i=this,j;l=i.get(l);k=i.getPos(l);j=i.getSize(l);return{x:k.x,y:k.y,w:j.w,h:j.h}},getSize:function(l){var j=this,i,k;l=j.get(l);i=j.getStyle(l,"width");k=j.getStyle(l,"height");if(i.indexOf("px")===-1){i=0}if(k.indexOf("px")===-1){k=0}return{w:parseInt(i,10)||l.offsetWidth||l.clientWidth,h:parseInt(k,10)||l.offsetHeight||l.clientHeight}},getParent:function(k,j,i){return this.getParents(k,j,i,false)},getParents:function(s,m,k,q){var j=this,i,l=j.settings,p=[];s=j.get(s);q=q===undefined;if(l.strict_root){k=k||j.getRoot()}if(d(m,"string")){i=m;if(m==="*"){m=function(o){return o.nodeType==1}}else{m=function(o){return j.is(o,i)}}}while(s){if(s==k||!s.nodeType||s.nodeType===9){break}if(!m||m(s)){if(q){p.push(s)}else{return s}}s=s.parentNode}return q?p:null},get:function(i){var j;if(i&&this.doc&&typeof(i)=="string"){j=i;i=this.doc.getElementById(i);if(i&&i.id!==j){return this.doc.getElementsByName(j)[1]}}return i},getNext:function(j,i){return this._findSib(j,i,"nextSibling")},getPrev:function(j,i){return this._findSib(j,i,"previousSibling")},select:function(k,j){var i=this;return e.dom.Sizzle(k,i.get(j)||i.get(i.settings.root_element)||i.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(c.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return e.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(l,o,i,k,m){var j=this;return this.run(l,function(r){var q,n;q=d(o,"string")?j.doc.createElement(o):o;j.setAttribs(q,i);if(k){if(k.nodeType){q.appendChild(k)}else{j.setHTML(q,k)}}return !m?r.appendChild(q):q})},create:function(k,i,j){return this.add(this.doc.createElement(k),k,i,j,1)},createHTML:function(q,i,m){var p="",l=this,j;p+="<"+q;for(j in i){if(i.hasOwnProperty(j)){p+=" "+j+'="'+l.encode(i[j])+'"'}}if(typeof(m)!="undefined"){return p+">"+m+"</"+q+">"}return p+" />"},remove:function(i,j){return this.run(i,function(l){var m,k=l.parentNode;if(!k){return null}if(j){while(m=l.firstChild){if(!e.isIE||m.nodeType!==3||m.nodeValue){k.insertBefore(m,l)}else{l.removeChild(m)}}}return k.removeChild(l)})},setStyle:function(l,i,j){var k=this;return k.run(l,function(o){var n,m;n=o.style;i=i.replace(/-(\D)/g,function(q,p){return p.toUpperCase()});if(k.pixelStyles.test(i)&&(e.is(j,"number")||/^[\-0-9\.]+$/.test(j))){j+="px"}switch(i){case"opacity":if(b){n.filter=j===""?"":"alpha(opacity="+(j*100)+")";if(!l.currentStyle||!l.currentStyle.hasLayout){n.display="inline-block"}}n[i]=n["-moz-opacity"]=n["-khtml-opacity"]=j||"";break;case"float":b?n.styleFloat=j:n.cssFloat=j;break;default:n[i]=j||""}if(k.settings.update_styles){k.setAttrib(o,"data-mce-style")}})},getStyle:function(l,i,k){l=this.get(l);if(!l){return}if(this.doc.defaultView&&k){i=i.replace(/[A-Z]/g,function(m){return"-"+m});try{return this.doc.defaultView.getComputedStyle(l,null).getPropertyValue(i)}catch(j){return null}}i=i.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(i=="float"){i=b?"styleFloat":"cssFloat"}if(l.currentStyle&&k){return l.currentStyle[i]}return l.style?l.style[i]:undefined},setStyles:function(l,m){var j=this,k=j.settings,i;i=k.update_styles;k.update_styles=0;g(m,function(o,p){j.setStyle(l,p,o)});k.update_styles=i;if(k.update_styles){j.setAttrib(l,k.cssText)}},removeAllAttribs:function(i){return this.run(i,function(l){var k,j=l.attributes;for(k=j.length-1;k>=0;k--){l.removeAttributeNode(j.item(k))}})},setAttrib:function(k,l,i){var j=this;if(!k||!l){return}if(j.settings.strict){l=l.toLowerCase()}return this.run(k,function(p){var o=j.settings;var m=p.getAttribute(l);if(i!==null){switch(l){case"style":if(!d(i,"string")){g(i,function(q,r){j.setStyle(p,r,q)});return}if(o.keep_values){if(i&&!j._isRes(i)){p.setAttribute("data-mce-style",i,2)}else{p.removeAttribute("data-mce-style",2)}}p.style.cssText=i;break;case"class":p.className=i||"";break;case"src":case"href":if(o.keep_values){if(o.url_converter){i=o.url_converter.call(o.url_converter_scope||j,i,l,p)}j.setAttrib(p,"data-mce-"+l,i,2)}break;case"shape":p.setAttribute("data-mce-style",i);break}}if(d(i)&&i!==null&&i.length!==0){p.setAttribute(l,""+i,2)}else{p.removeAttribute(l,2)}if(tinyMCE.activeEditor&&m!=i){var n=tinyMCE.activeEditor;n.onSetAttrib.dispatch(n,p,l,i)}})},setAttribs:function(j,k){var i=this;return this.run(j,function(l){g(k,function(m,o){i.setAttrib(l,o,m)})})},getAttrib:function(m,o,k){var i,j=this,l;m=j.get(m);if(!m||m.nodeType!==1){return k===l?false:k}if(!d(k)){k=""}if(/^(src|href|style|coords|shape)$/.test(o)){i=m.getAttribute("data-mce-"+o);if(i){return i}}if(b&&j.props[o]){i=m[j.props[o]];i=i&&i.nodeValue?i.nodeValue:i}if(!i){i=m.getAttribute(o,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(o)){if(m[j.props[o]]===true&&i===""){return o}return i?o:""}if(m.nodeName==="FORM"&&m.getAttributeNode(o)){return m.getAttributeNode(o).nodeValue}if(o==="style"){i=i||m.style.cssText;if(i){i=j.serializeStyle(j.parseStyle(i),m.nodeName);if(j.settings.keep_values&&!j._isRes(i)){m.setAttribute("data-mce-style",i)}}}if(f&&o==="class"&&i){i=i.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(o){case"rowspan":case"colspan":if(i===1){i=""}break;case"size":if(i==="+0"||i===20||i===0){i=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(i===0){i=""}break;case"hspace":if(i===-1){i=""}break;case"maxlength":case"tabindex":if(i===32768||i===2147483647||i==="32768"){i=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(i===65535){return o}return k;case"shape":i=i.toLowerCase();break;default:if(o.indexOf("on")===0&&i){i=e._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+i)}}}return(i!==l&&i!==null&&i!=="")?""+i:k},getPos:function(q,l){var j=this,i=0,p=0,m,o=j.doc,k;q=j.get(q);l=l||o.body;if(q){if(q.getBoundingClientRect){q=q.getBoundingClientRect();m=j.boxModel?o.documentElement:o.body;i=q.left+(o.documentElement.scrollLeft||o.body.scrollLeft)-m.clientTop;p=q.top+(o.documentElement.scrollTop||o.body.scrollTop)-m.clientLeft;return{x:i,y:p}}k=q;while(k&&k!=l&&k.nodeType){i+=k.offsetLeft||0;p+=k.offsetTop||0;k=k.offsetParent}k=q.parentNode;while(k&&k!=l&&k.nodeType){i-=k.scrollLeft||0;p-=k.scrollTop||0;k=k.parentNode}}return{x:i,y:p}},parseStyle:function(i){return this.styles.parse(i)},serializeStyle:function(j,i){return this.styles.serialize(j,i)},loadCSS:function(i){var k=this,l=k.doc,j;if(!i){i=""}j=l.getElementsByTagName("head")[0];g(i.split(","),function(m){var n;if(k.files[m]){return}k.files[m]=true;n=k.create("link",{rel:"stylesheet",href:e._addVer(m)});if(b&&l.documentMode&&l.recalc){n.onload=function(){if(l.recalc){l.recalc()}n.onload=null}}j.appendChild(n)})},addClass:function(i,j){return this.run(i,function(k){var l;if(!j){return 0}if(this.hasClass(k,j)){return k.className}l=this.removeClass(k,j);return k.className=(l!=""?(l+" "):"")+j})},removeClass:function(k,l){var i=this,j;return i.run(k,function(n){var m;if(i.hasClass(n,l)){if(!j){j=new RegExp("(^|\\s+)"+l+"(\\s+|$)","g")}m=n.className.replace(j," ");m=e.trim(m!=" "?m:"");n.className=m;if(!m){n.removeAttribute("class");n.removeAttribute("className")}return m}return n.className})},hasClass:function(j,i){j=this.get(j);if(!j||!i){return false}return(" "+j.className+" ").indexOf(" "+i+" ")!==-1},show:function(i){return this.setStyle(i,"display","block")},hide:function(i){return this.setStyle(i,"display","none")},isHidden:function(i){i=this.get(i);return !i||i.style.display=="none"||this.getStyle(i,"display")=="none"},uniqueId:function(i){return(!i?"mce_":i)+(this.counter++)},setHTML:function(k,j){var i=this;return i.run(k,function(m){if(b){while(m.firstChild){m.removeChild(m.firstChild)}try{m.innerHTML="<br />"+j;m.removeChild(m.firstChild)}catch(l){m=i.create("div");m.innerHTML="<br />"+j;g(m.childNodes,function(o,n){if(n){m.appendChild(o)}})}}else{m.innerHTML=j}return j})},getOuterHTML:function(k){var j,i=this;k=i.get(k);if(!k){return null}if(k.nodeType===1&&i.hasOuterHTML){return k.outerHTML}j=(k.ownerDocument||i.doc).createElement("body");j.appendChild(k.cloneNode(true));return j.innerHTML},setOuterHTML:function(l,j,m){var i=this;function k(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){i.insertAfter(s.cloneNode(true),p);s=s.previousSibling}i.remove(p)}return this.run(l,function(o){o=i.get(o);if(o.nodeType==1){m=m||o.ownerDocument||i.doc;if(b){try{if(b&&o.nodeType==1){o.outerHTML=j}else{k(o,j,m)}}catch(n){k(o,j,m)}}else{k(o,j,m)}}})},decode:h.decode,encode:h.encodeAllRaw,insertAfter:function(i,j){j=this.get(j);return this.run(i,function(l){var k,m;k=j.parentNode;m=j.nextSibling;if(m){k.insertBefore(l,m)}else{k.appendChild(l)}return l})},replace:function(m,l,i){var j=this;if(d(l,"array")){m=m.cloneNode(true)}return j.run(l,function(k){if(i){g(e.grep(k.childNodes),function(n){m.appendChild(n)})}return k.parentNode.replaceChild(m,k)})},rename:function(l,i){var k=this,j;if(l.nodeName!=i.toUpperCase()){j=k.create(i);g(k.getAttribs(l),function(m){k.setAttrib(j,m.nodeName,k.getAttrib(l,m.nodeName))});k.replace(j,l,1)}return j||l},findCommonAncestor:function(k,i){var l=k,j;while(l){j=i;while(j&&l!=j){j=j.parentNode}if(l==j){break}l=l.parentNode}if(!l&&k.ownerDocument){return k.ownerDocument.documentElement}return l},toHex:function(i){var k=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(i);function j(l){l=parseInt(l,10).toString(16);return l.length>1?l:"0"+l}if(k){i="#"+j(k[1])+j(k[2])+j(k[3]);return i}return i},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(i){g(i.imports,function(s){q(s)});g(i.cssRules||i.rules,function(s){switch(s.type||1){case 1:if(s.selectorText){g(s.selectorText.split(","),function(r){r=r.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(r)||!/\.[\w\-]+$/.test(r)){return}l=r;r=e._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",r);if(p&&!(r=p(r,l))){return}if(!o[r]){j.push({"class":r});o[r]=1}})}break;case 3:q(s.styleSheet);break}})}try{g(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(l,k,j){var i=this,m;if(i.doc&&typeof(l)==="string"){l=i.get(l)}if(!l){return false}j=j||this;if(!l.nodeType&&(l.length||l.length===0)){m=[];g(l,function(o,n){if(o){if(typeof(o)=="string"){o=i.doc.getElementById(o)}m.push(k.call(j,o,n))}});return m}return k.call(j,l)},getAttribs:function(j){var i;j=this.get(j);if(!j){return[]}if(b){i=[];if(j.nodeName=="OBJECT"){return j.attributes}if(j.nodeName==="OPTION"&&this.getAttrib(j,"selected")){i.push({specified:1,nodeName:"selected"})}j.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(k){i.push({specified:1,nodeName:k})});return i}return j.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p=0;m=m.firstChild;if(m){j=new e.dom.TreeWalker(m,m.parentNode);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){if(l==="br"){p++;continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if(q==8){return false}if((q===3&&!a.test(m.nodeValue))){return false}}while(m=j.next())}return p<=1},destroy:function(j){var i=this;i.win=i.doc=i.root=i.events=i.frag=null;if(!j){e.removeUnload(i.destroy)}},createRng:function(){var i=this.doc;return i.createRange?i.createRange():new e.dom.Range(this)},nodeIndex:function(m,n){var i=0,k,l,j;if(m){for(k=m.nodeType,m=m.previousSibling,l=m;m;m=m.previousSibling){j=m.nodeType;if(n&&j==3){if(j==k||!m.nodeValue.length){continue}}i++;k=j}}return i},split:function(m,l,p){var q=this,i=q.createRng(),n,k,o;function j(v){var t,s=v.childNodes,u=v.nodeType;function x(A){var z=A.previousSibling&&A.previousSibling.nodeName=="SPAN";var y=A.nextSibling&&A.nextSibling.nodeName=="SPAN";return z&&y}if(u==1&&v.getAttribute("data-mce-type")=="bookmark"){return}for(t=s.length-1;t>=0;t--){j(s[t])}if(u!=9){if(u==3&&v.nodeValue.length>0){var r=e.trim(v.nodeValue).length;if(!q.isBlock(v.parentNode)||r>0||r===0&&x(v)){return}}else{if(u==1){s=v.childNodes;if(s.length==1&&s[0]&&s[0].nodeType==1&&s[0].getAttribute("data-mce-type")=="bookmark"){v.parentNode.insertBefore(s[0],v)}if(s.length||/^(br|hr|input|img)$/i.test(v.nodeName)){return}}}q.remove(v)}return v}if(m&&l){i.setStart(m.parentNode,q.nodeIndex(m));i.setEnd(l.parentNode,q.nodeIndex(l));n=i.extractContents();i=q.createRng();i.setStart(l.parentNode,q.nodeIndex(l)+1);i.setEnd(m.parentNode,q.nodeIndex(m)+1);k=i.extractContents();o=m.parentNode;o.insertBefore(j(n),m);if(p){o.replaceChild(p,l)}else{o.insertBefore(l,m)}o.insertBefore(j(k),m);q.remove(m);return p||l}},bind:function(l,i,k,j){return this.events.add(l,i,k,j||this)},unbind:function(k,i,j){return this.events.remove(k,i,j)},fire:function(k,j,i){return this.events.fire(k,j,i)},getContentEditable:function(j){var i;if(j.nodeType!=1){return null}i=j.getAttribute("data-mce-contenteditable");if(i&&i!=="inherit"){return i}return j.contentEditable!=="inherit"?j.contentEditable:null},_findSib:function(l,i,j){var k=this,m=i;if(l){if(d(m,"string")){m=function(n){return k.is(n,i)}}for(l=l[j];l;l=l[j]){if(m(l)){return l}}}return null},_isRes:function(i){return/^(top|left|bottom|right|width|height)/i.test(i)||/;\s*(top|left|bottom|right|width|height)/i.test(i)}});e.DOM=new e.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var O=this,e=c.doc,T=0,F=1,j=2,E=true,S=false,V="startOffset",h="startContainer",Q="endContainer",A="endOffset",k=tinymce.extend,n=c.nodeIndex;k(O,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:E,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:J,setEndBefore:K,setEndAfter:u,collapse:B,selectNode:y,selectNodeContents:G,compareBoundaryPoints:v,deleteContents:p,extractContents:I,cloneContents:d,insertNode:D,surroundContents:N,cloneRange:L});function x(){return e.createDocumentFragment()}function q(W,t){C(E,W,t)}function s(W,t){C(S,W,t)}function g(t){q(t.parentNode,n(t))}function J(t){q(t.parentNode,n(t)+1)}function K(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function B(t){if(t){O[Q]=O[h];O[A]=O[V]}else{O[h]=O[Q];O[V]=O[A]}O.collapsed=E}function y(t){g(t);u(t)}function G(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(Z,t){var ac=O[h],X=O[V],ab=O[Q],W=O[A],aa=t.startContainer,ae=t.startOffset,Y=t.endContainer,ad=t.endOffset;if(Z===0){return H(ac,X,aa,ae)}if(Z===1){return H(ab,W,aa,ae)}if(Z===2){return H(ab,W,Y,ad)}if(Z===3){return H(ac,X,Y,ad)}}function p(){l(j)}function I(){return l(T)}function d(){return l(F)}function D(Z){var W=this[h],t=this[V],Y,X;if((W.nodeType===3||W.nodeType===4)&&W.nodeValue){if(!t){W.parentNode.insertBefore(Z,W)}else{if(t>=W.nodeValue.length){c.insertAfter(Z,W)}else{Y=W.splitText(t);W.parentNode.insertBefore(Z,Y)}}}else{if(W.childNodes.length>0){X=W.childNodes[t]}if(X){W.insertBefore(Z,X)}else{W.appendChild(Z)}}}function N(W){var t=O.extractContents();O.insertNode(W);W.appendChild(t);O.selectNode(W)}function L(){return k(new b(c),{startContainer:O[h],startOffset:O[V],endContainer:O[Q],endOffset:O[A],collapsed:O.collapsed,commonAncestorContainer:O.commonAncestorContainer})}function P(t,W){var X;if(t.nodeType==3){return t}if(W<0){return t}X=t.firstChild;while(X&&W>0){--W;X=X.nextSibling}if(X){return X}return t}function m(){return(O[h]==O[Q]&&O[V]==O[A])}function H(Y,aa,W,Z){var ab,X,t,ac,ae,ad;if(Y==W){if(aa==Z){return 0}if(aa<Z){return -1}return 1}ab=W;while(ab&&ab.parentNode!=Y){ab=ab.parentNode}if(ab){X=0;t=Y.firstChild;while(t!=ab&&X<aa){X++;t=t.nextSibling}if(aa<=X){return -1}return 1}ab=Y;while(ab&&ab.parentNode!=W){ab=ab.parentNode}if(ab){X=0;t=W.firstChild;while(t!=ab&&X<Z){X++;t=t.nextSibling}if(X<Z){return -1}return 1}ac=c.findCommonAncestor(Y,W);ae=Y;while(ae&&ae.parentNode!=ac){ae=ae.parentNode}if(!ae){ae=ac}ad=W;while(ad&&ad.parentNode!=ac){ad=ad.parentNode}if(!ad){ad=ac}if(ae==ad){return 0}t=ac.firstChild;while(t){if(t==ae){return -1}if(t==ad){return 1}t=t.nextSibling}}function C(W,Z,Y){var t,X;if(W){O[h]=Z;O[V]=Y}else{O[Q]=Z;O[A]=Y}t=O[Q];while(t.parentNode){t=t.parentNode}X=O[h];while(X.parentNode){X=X.parentNode}if(X==t){if(H(O[h],O[V],O[Q],O[A])>0){O.collapse(W)}}else{O.collapse(W)}O.collapsed=m();O.commonAncestorContainer=c.findCommonAncestor(O[h],O[Q])}function l(ac){var ab,Y=0,ae=0,W,aa,X,Z,t,ad;if(O[h]==O[Q]){return f(ac)}for(ab=O[Q],W=ab.parentNode;W;ab=W,W=W.parentNode){if(W==O[h]){return r(ab,ac)}++Y}for(ab=O[h],W=ab.parentNode;W;ab=W,W=W.parentNode){if(W==O[Q]){return U(ab,ac)}++ae}aa=ae-Y;X=O[h];while(aa>0){X=X.parentNode;aa--}Z=O[Q];while(aa<0){Z=Z.parentNode;aa++}for(t=X.parentNode,ad=Z.parentNode;t!=ad;t=t.parentNode,ad=ad.parentNode){X=t;Z=ad}return o(X,Z,ac)}function f(ab){var ad,ae,t,X,Y,ac,Z,W,aa;if(ab!=j){ad=x()}if(O[V]==O[A]){return ad}if(O[h].nodeType==3){ae=O[h].nodeValue;t=ae.substring(O[V],O[A]);if(ab!=F){X=O[h];W=O[V];aa=O[A]-O[V];if(W===0&&aa>=X.nodeValue.length-1){X.parentNode.removeChild(X)}else{X.deleteData(W,aa)}O.collapse(E)}if(ab==j){return}if(t.length>0){ad.appendChild(e.createTextNode(t))}return ad}X=P(O[h],O[V]);Y=O[A]-O[V];while(X&&Y>0){ac=X.nextSibling;Z=z(X,ab);if(ad){ad.appendChild(Z)}--Y;X=ac}if(ab!=F){O.collapse(E)}return ad}function r(ac,Z){var ab,aa,W,t,Y,X;if(Z!=j){ab=x()}aa=i(ac,Z);if(ab){ab.appendChild(aa)}W=n(ac);t=W-O[V];if(t<=0){if(Z!=F){O.setEndBefore(ac);O.collapse(S)}return ab}aa=ac.previousSibling;while(t>0){Y=aa.previousSibling;X=z(aa,Z);if(ab){ab.insertBefore(X,ab.firstChild)}--t;aa=Y}if(Z!=F){O.setEndBefore(ac);O.collapse(S)}return ab}function U(aa,Z){var ac,W,ab,t,Y,X;if(Z!=j){ac=x()}ab=R(aa,Z);if(ac){ac.appendChild(ab)}W=n(aa);++W;t=O[A]-W;ab=aa.nextSibling;while(ab&&t>0){Y=ab.nextSibling;X=z(ab,Z);if(ac){ac.appendChild(X)}--t;ab=Y}if(Z!=F){O.setStartAfter(aa);O.collapse(E)}return ac}function o(aa,t,ad){var X,af,Z,ab,ac,W,ae,Y;if(ad!=j){af=x()}X=R(aa,ad);if(af){af.appendChild(X)}Z=aa.parentNode;ab=n(aa);ac=n(t);++ab;W=ac-ab;ae=aa.nextSibling;while(W>0){Y=ae.nextSibling;X=z(ae,ad);if(af){af.appendChild(X)}ae=Y;--W}X=i(t,ad);if(af){af.appendChild(X)}if(ad!=F){O.setStartAfter(aa);O.collapse(E)}return af}function i(ab,ac){var X=P(O[Q],O[A]-1),ad,aa,Z,t,W,Y=X!=O[Q];if(X==ab){return M(X,Y,S,ac)}ad=X.parentNode;aa=M(ad,S,S,ac);while(ad){while(X){Z=X.previousSibling;t=M(X,Y,S,ac);if(ac!=j){aa.insertBefore(t,aa.firstChild)}Y=E;X=Z}if(ad==ab){return aa}X=ad.previousSibling;ad=ad.parentNode;W=M(ad,S,S,ac);if(ac!=j){W.appendChild(aa)}aa=W}}function R(ab,ac){var Y=P(O[h],O[V]),Z=Y!=O[h],ad,aa,X,t,W;if(Y==ab){return M(Y,Z,E,ac)}ad=Y.parentNode;aa=M(ad,S,E,ac);while(ad){while(Y){X=Y.nextSibling;t=M(Y,Z,E,ac);if(ac!=j){aa.appendChild(t)}Z=E;Y=X}if(ad==ab){return aa}Y=ad.nextSibling;ad=ad.parentNode;W=M(ad,S,E,ac);if(ac!=j){W.appendChild(aa)}aa=W}}function M(t,Z,ac,ad){var Y,X,aa,W,ab;if(Z){return z(t,ad)}if(t.nodeType==3){Y=t.nodeValue;if(ac){W=O[V];X=Y.substring(W);aa=Y.substring(0,W)}else{W=O[A];X=Y.substring(0,W);aa=Y.substring(W)}if(ad!=F){t.nodeValue=aa}if(ad==j){return}ab=c.clone(t,S);ab.nodeValue=X;return ab}if(ad==j){return}return c.clone(t,S)}function z(W,t){if(t!=j){return t==F?c.clone(W,E):W}W.parentNode.removeChild(W)}}a.Range=b})(tinymce.dom);(function(){function a(d){var b=this,h=d.dom,c=true,f=false;function e(i,j){var k,t=0,q,n,m,l,o,r,p=-1,s;k=i.duplicate();k.collapse(j);s=k.parentElement();if(s.ownerDocument!==d.dom.doc){return}while(s.contentEditable==="false"){s=s.parentNode}if(!s.hasChildNodes()){return{node:s,inside:1}}m=s.children;q=m.length-1;while(t<=q){r=Math.floor((t+q)/2);l=m[r];k.moveToElementText(l);p=k.compareEndPoints(j?"StartToStart":"EndToEnd",i);if(p>0){q=r-1}else{if(p<0){t=r+1}else{return{node:l}}}}if(p<0){if(!l){k.moveToElementText(s);k.collapse(true);l=s;n=true}else{k.collapse(false)}o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",1)===0||s!=k.parentElement()){break}o++}}else{k.collapse(true);o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",-1)===0||s!=k.parentElement()){break}o++}}return{node:l,position:p,offset:o,inside:n}}function g(){var i=d.getRng(),r=h.createRng(),l,k,p,q,m,j;l=i.item?i.item(0):i.parentElement();if(l.ownerDocument!=h.doc){return r}k=d.isCollapsed();if(i.item){r.setStart(l.parentNode,h.nodeIndex(l));r.setEnd(r.startContainer,r.startOffset+1);return r}function o(A){var u=e(i,A),s,y,z=0,x,v,t;s=u.node;y=u.offset;if(u.inside&&!s.hasChildNodes()){r[A?"setStart":"setEnd"](s,0);return}if(y===v){r[A?"setStartBefore":"setEndAfter"](s);return}if(u.position<0){x=u.inside?s.firstChild:s.nextSibling;if(!x){r[A?"setStartAfter":"setEndAfter"](s);return}if(!y){if(x.nodeType==3){r[A?"setStart":"setEnd"](x,0)}else{r[A?"setStartBefore":"setEndBefore"](x)}return}while(x){t=x.nodeValue;z+=t.length;if(z>=y){s=x;z-=y;z=t.length-z;break}x=x.nextSibling}}else{x=s.previousSibling;if(!x){return r[A?"setStartBefore":"setEndBefore"](s)}if(!y){if(s.nodeType==3){r[A?"setStart":"setEnd"](x,s.nodeValue.length)}else{r[A?"setStartAfter":"setEndAfter"](x)}return}while(x){z+=x.nodeValue.length;if(z>=y){s=x;z-=y;break}x=x.previousSibling}}r[A?"setStart":"setEnd"](s,z)}try{o(true);if(!k){o()}}catch(n){if(n.number==-2147024809){m=b.getBookmark(2);p=i.duplicate();p.collapse(true);l=p.parentElement();if(!k){p=i.duplicate();p.collapse(false);q=p.parentElement();q.innerHTML=q.innerHTML}l.innerHTML=l.innerHTML;b.moveToBookmark(m);i=d.getRng();o(true);if(!k){o()}}else{throw n}}return r}this.getBookmark=function(m){var j=d.getRng(),o,i,l={};function n(u){var t,p,s,r,q=[];t=u.parentNode;p=h.getRoot().parentNode;while(t!=p&&t.nodeType!==9){s=t.children;r=s.length;while(r--){if(u===s[r]){q.push(r);break}}u=t;t=t.parentNode}return q}function k(q){var p;p=e(j,q);if(p){return{position:p.position,offset:p.offset,indexes:n(p.node),inside:p.inside}}}if(m===2){if(!j.item){l.start=k(true);if(!d.isCollapsed()){l.end=k()}}else{l.start={ctrl:true,indexes:n(j.item(0))}}}return l};this.moveToBookmark=function(k){var j,i=h.doc.body;function m(o){var r,q,n,p;r=h.getRoot();for(q=o.length-1;q>=0;q--){p=r.children;n=o[q];if(n<=p.length-1){r=p[n]}}return r}function l(r){var n=k[r?"start":"end"],q,p,o;if(n){q=n.position>0;p=i.createTextRange();p.moveToElementText(m(n.indexes));offset=n.offset;if(offset!==o){p.collapse(n.inside||q);p.moveStart("character",q?-offset:offset)}else{p.collapse(r)}j.setEndPoint(r?"StartToStart":"EndToStart",p);if(r){j.collapse(true)}}}if(k.start){if(k.start.ctrl){j=i.createControlRange();j.addElement(m(k.start.indexes));j.select()}else{j=i.createTextRange();l(true);l();j.select()}}};this.addRange=function(i){var n,l,k,p,s,q,r=d.dom.doc,m=r.body;function j(z){var u,y,t,x,v;t=h.create("a");u=z?k:s;y=z?p:q;x=n.duplicate();if(u==r||u==r.documentElement){u=m;y=0}if(u.nodeType==3){u.parentNode.insertBefore(t,u);x.moveToElementText(t);x.moveStart("character",y);h.remove(t);n.setEndPoint(z?"StartToStart":"EndToEnd",x)}else{v=u.childNodes;if(v.length){if(y>=v.length){h.insertAfter(t,v[v.length-1])}else{u.insertBefore(t,v[y])}x.moveToElementText(t)}else{if(u.canHaveHTML){u.innerHTML="<span>\uFEFF</span>";t=u.firstChild;x.moveToElementText(t);x.collapse(f)}}n.setEndPoint(z?"StartToStart":"EndToEnd",x);h.remove(t)}}k=i.startContainer;p=i.startOffset;s=i.endContainer;q=i.endOffset;n=m.createTextRange();if(k==s&&k.nodeType==1){if(p==q&&!k.hasChildNodes()){if(k.canHaveHTML){k.innerHTML="<span>\uFEFF</span><span>\uFEFF</span>";n.moveToElementText(k.lastChild);n.select();h.doc.selection.clear();k.innerHTML="";return}else{p=h.nodeIndex(k);k=k.parentNode}}if(p==q-1){try{l=m.createControlRange();l.addElement(k.childNodes[p]);l.select();return}catch(o){}}}j(true);j();n.select()};this.getRangeAt=g}tinymce.dom.TridentSelection=a})();(function(){var n=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i="sizcache",o=0,r=Object.prototype.toString,h=false,g=true,q=/\\/g,u=/\r\n/g,x=/\W/;[0,0].sort(function(){g=false;return 0});var d=function(C,e,F,G){F=F||[];e=e||document;var I=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!C||typeof C!=="string"){return F}var z,K,N,y,J,M,L,E,B=true,A=d.isXML(e),D=[],H=C;do{n.exec("");z=n.exec(H);if(z){H=z[3];D.push(z[1]);if(z[2]){y=z[3];break}}}while(z);if(D.length>1&&j.exec(C)){if(D.length===2&&k.relative[D[0]]){K=s(D[0]+D[1],e,G)}else{K=k.relative[D[0]]?[e]:d(D.shift(),e);while(D.length){C=D.shift();if(k.relative[C]){C+=D.shift()}K=s(C,K,G)}}}else{if(!G&&D.length>1&&e.nodeType===9&&!A&&k.match.ID.test(D[0])&&!k.match.ID.test(D[D.length-1])){J=d.find(D.shift(),e,A);e=J.expr?d.filter(J.expr,J.set)[0]:J.set[0]}if(e){J=G?{expr:D.pop(),set:l(G)}:d.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&e.parentNode?e.parentNode:e,A);K=J.expr?d.filter(J.expr,J.set):J.set;if(D.length>0){N=l(K)}else{B=false}while(D.length){M=D.pop();L=M;if(!k.relative[M]){M=""}else{L=D.pop()}if(L==null){L=e}k.relative[M](N,L,A)}}else{N=D=[]}}if(!N){N=K}if(!N){d.error(M||C)}if(r.call(N)==="[object Array]"){if(!B){F.push.apply(F,N)}else{if(e&&e.nodeType===1){for(E=0;N[E]!=null;E++){if(N[E]&&(N[E]===true||N[E].nodeType===1&&d.contains(e,N[E]))){F.push(K[E])}}}else{for(E=0;N[E]!=null;E++){if(N[E]&&N[E].nodeType===1){F.push(K[E])}}}}}else{l(N,F)}if(y){d(y,I,F,G);d.uniqueSort(F)}return F};d.uniqueSort=function(y){if(p){h=g;y.sort(p);if(h){for(var e=1;e<y.length;e++){if(y[e]===y[e-1]){y.splice(e--,1)}}}}return y};d.matches=function(e,y){return d(e,null,null,y)};d.matchesSelector=function(e,y){return d(y,null,null,[e]).length>0};d.find=function(E,e,F){var D,z,B,A,C,y;if(!E){return[]}for(z=0,B=k.order.length;z<B;z++){C=k.order[z];if((A=k.leftMatch[C].exec(E))){y=A[1];A.splice(1,1);if(y.substr(y.length-1)!=="\\"){A[1]=(A[1]||"").replace(q,"");D=k.find[C](A,e,F);if(D!=null){E=E.replace(k.match[C],"");break}}}}if(!D){D=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:D,expr:E}};d.filter=function(I,H,L,B){var D,e,G,N,K,y,A,C,J,z=I,M=[],F=H,E=H&&H[0]&&d.isXML(H[0]);while(I&&H.length){for(G in k.filter){if((D=k.leftMatch[G].exec(I))!=null&&D[2]){y=k.filter[G];A=D[1];e=false;D.splice(1,1);if(A.substr(A.length-1)==="\\"){continue}if(F===M){M=[]}if(k.preFilter[G]){D=k.preFilter[G](D,F,L,M,B,E);if(!D){e=N=true}else{if(D===true){continue}}}if(D){for(C=0;(K=F[C])!=null;C++){if(K){N=y(K,D,C,F);J=B^N;if(L&&N!=null){if(J){e=true}else{F[C]=false}}else{if(J){M.push(K);e=true}}}}}if(N!==undefined){if(!L){F=M}I=I.replace(k.match[G],"");if(!e){return[]}break}}}if(I===z){if(e==null){d.error(I)}else{break}}z=I}return F};d.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var b=d.getText=function(B){var z,A,e=B.nodeType,y="";if(e){if(e===1||e===9||e===11){if(typeof B.textContent==="string"){return B.textContent}else{if(typeof B.innerText==="string"){return B.innerText.replace(u,"")}else{for(B=B.firstChild;B;B=B.nextSibling){y+=b(B)}}}}else{if(e===3||e===4){return B.nodeValue}}}else{for(z=0;(A=B[z]);z++){if(A.nodeType!==8){y+=b(A)}}}return y};var k=d.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(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(D,y){var A=typeof y==="string",C=A&&!x.test(y),E=A&&!C;if(C){y=y.toLowerCase()}for(var z=0,e=D.length,B;z<e;z++){if((B=D[z])){while((B=B.previousSibling)&&B.nodeType!==1){}D[z]=E||B&&B.nodeName.toLowerCase()===y?B||false:B===y}}if(E){d.filter(y,D,true)}},">":function(D,y){var C,B=typeof y==="string",z=0,e=D.length;if(B&&!x.test(y)){y=y.toLowerCase();for(;z<e;z++){C=D[z];if(C){var A=C.parentNode;D[z]=A.nodeName.toLowerCase()===y?A:false}}}else{for(;z<e;z++){C=D[z];if(C){D[z]=B?C.parentNode:C.parentNode===y}}if(B){d.filter(y,D,true)}}},"":function(A,y,C){var B,z=o++,e=t;if(typeof y==="string"&&!x.test(y)){y=y.toLowerCase();B=y;e=a}e("parentNode",y,z,A,B,C)},"~":function(A,y,C){var B,z=o++,e=t;if(typeof y==="string"&&!x.test(y)){y=y.toLowerCase();B=y;e=a}e("previousSibling",y,z,A,B,C)}},find:{ID:function(y,z,A){if(typeof z.getElementById!=="undefined"&&!A){var e=z.getElementById(y[1]);return e&&e.parentNode?[e]:[]}},NAME:function(z,C){if(typeof C.getElementsByName!=="undefined"){var y=[],B=C.getElementsByName(z[1]);for(var A=0,e=B.length;A<e;A++){if(B[A].getAttribute("name")===z[1]){y.push(B[A])}}return y.length===0?null:y}},TAG:function(e,y){if(typeof y.getElementsByTagName!=="undefined"){return y.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(A,y,z,e,D,E){A=" "+A[1].replace(q,"")+" ";if(E){return A}for(var B=0,C;(C=y[B])!=null;B++){if(C){if(D^(C.className&&(" "+C.className+" ").replace(/[\t\n\r]/g," ").indexOf(A)>=0)){if(!z){e.push(C)}}else{if(z){y[B]=false}}}}return false},ID:function(e){return e[1].replace(q,"")},TAG:function(y,e){return y[1].replace(q,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){d.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var y=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(y[1]+(y[2]||1))-0;e[3]=y[3]-0}else{if(e[2]){d.error(e[0])}}e[0]=o++;return e},ATTR:function(B,y,z,e,C,D){var A=B[1]=B[1].replace(q,"");if(!D&&k.attrMap[A]){B[1]=k.attrMap[A]}B[4]=(B[4]||B[5]||"").replace(q,"");if(B[2]==="~="){B[4]=" "+B[4]+" "}return B},PSEUDO:function(B,y,z,e,C){if(B[1]==="not"){if((n.exec(B[3])||"").length>1||/^\w/.test(B[3])){B[3]=d(B[3],null,null,y)}else{var A=d.filter(B[3],y,z,true^C);if(!z){e.push.apply(e,A)}return false}}else{if(k.match.POS.test(B[0])||k.match.CHILD.test(B[0])){return true}}return B},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(z,y,e){return !!d(e[3],z).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(z){var e=z.getAttribute("type"),y=z.type;return z.nodeName.toLowerCase()==="input"&&"text"===y&&(e===y||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===y.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===y.type},button:function(y){var e=y.nodeName.toLowerCase();return e==="input"&&"button"===y.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(y,e){return e===0},last:function(z,y,e,A){return y===A.length-1},even:function(y,e){return e%2===0},odd:function(y,e){return e%2===1},lt:function(z,y,e){return y<e[3]-0},gt:function(z,y,e){return y>e[3]-0},nth:function(z,y,e){return e[3]-0===y},eq:function(z,y,e){return e[3]-0===y}},filter:{PSEUDO:function(z,E,D,F){var e=E[1],y=k.filters[e];if(y){return y(z,D,E,F)}else{if(e==="contains"){return(z.textContent||z.innerText||b([z])||"").indexOf(E[3])>=0}else{if(e==="not"){var A=E[3];for(var C=0,B=A.length;C<B;C++){if(A[C]===z){return false}}return true}else{d.error(e)}}}},CHILD:function(z,B){var A,H,D,G,e,C,F,E=B[1],y=z;switch(E){case"only":case"first":while((y=y.previousSibling)){if(y.nodeType===1){return false}}if(E==="first"){return true}y=z;case"last":while((y=y.nextSibling)){if(y.nodeType===1){return false}}return true;case"nth":A=B[2];H=B[3];if(A===1&&H===0){return true}D=B[0];G=z.parentNode;if(G&&(G[i]!==D||!z.nodeIndex)){C=0;for(y=G.firstChild;y;y=y.nextSibling){if(y.nodeType===1){y.nodeIndex=++C}}G[i]=D}F=z.nodeIndex-H;if(A===0){return F===0}else{return(F%A===0&&F/A>=0)}}},ID:function(y,e){return y.nodeType===1&&y.getAttribute("id")===e},TAG:function(y,e){return(e==="*"&&y.nodeType===1)||!!y.nodeName&&y.nodeName.toLowerCase()===e},CLASS:function(y,e){return(" "+(y.className||y.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(C,A){var z=A[1],e=d.attr?d.attr(C,z):k.attrHandle[z]?k.attrHandle[z](C):C[z]!=null?C[z]:C.getAttribute(z),D=e+"",B=A[2],y=A[4];return e==null?B==="!=":!B&&d.attr?e!=null:B==="="?D===y:B==="*="?D.indexOf(y)>=0:B==="~="?(" "+D+" ").indexOf(y)>=0:!y?D&&e!==false:B==="!="?D!==y:B==="^="?D.indexOf(y)===0:B==="$="?D.substr(D.length-y.length)===y:B==="|="?D===y||D.substr(0,y.length+1)===y+"-":false},POS:function(B,y,z,C){var e=y[2],A=k.setFilters[e];if(A){return A(B,z,y,C)}}}};var j=k.match.POS,c=function(y,e){return"\\"+(e-0+1)};for(var f in k.match){k.match[f]=new RegExp(k.match[f].source+(/(?![^\[]*\])(?![^\(]*\))/.source));k.leftMatch[f]=new RegExp(/(^(?:.|\r|\n)*?)/.source+k.match[f].source.replace(/\\(\d+)/g,c))}k.match.globalPOS=j;var l=function(y,e){y=Array.prototype.slice.call(y,0);if(e){e.push.apply(e,y);return e}return y};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(v){l=function(B,A){var z=0,y=A||[];if(r.call(B)==="[object Array]"){Array.prototype.push.apply(y,B)}else{if(typeof B.length==="number"){for(var e=B.length;z<e;z++){y.push(B[z])}}else{for(;B[z];z++){y.push(B[z])}}}return y}}var p,m;if(document.documentElement.compareDocumentPosition){p=function(y,e){if(y===e){h=true;return 0}if(!y.compareDocumentPosition||!e.compareDocumentPosition){return y.compareDocumentPosition?-1:1}return y.compareDocumentPosition(e)&4?-1:1}}else{p=function(F,E){if(F===E){h=true;return 0}else{if(F.sourceIndex&&E.sourceIndex){return F.sourceIndex-E.sourceIndex}}var C,y,z=[],e=[],B=F.parentNode,D=E.parentNode,G=B;if(B===D){return m(F,E)}else{if(!B){return -1}else{if(!D){return 1}}}while(G){z.unshift(G);G=G.parentNode}G=D;while(G){e.unshift(G);G=G.parentNode}C=z.length;y=e.length;for(var A=0;A<C&&A<y;A++){if(z[A]!==e[A]){return m(z[A],e[A])}}return A===C?m(F,e[A],-1):m(z[A],E,1)};m=function(y,e,z){if(y===e){return z}var A=y.nextSibling;while(A){if(A===e){return -1}A=A.nextSibling}return 1}}(function(){var y=document.createElement("div"),z="script"+(new Date()).getTime(),e=document.documentElement;y.innerHTML="<a name='"+z+"'/>";e.insertBefore(y,e.firstChild);if(document.getElementById(z)){k.find.ID=function(B,C,D){if(typeof C.getElementById!=="undefined"&&!D){var A=C.getElementById(B[1]);return A?A.id===B[1]||typeof A.getAttributeNode!=="undefined"&&A.getAttributeNode("id").nodeValue===B[1]?[A]:undefined:[]}};k.filter.ID=function(C,A){var B=typeof C.getAttributeNode!=="undefined"&&C.getAttributeNode("id");return C.nodeType===1&&B&&B.nodeValue===A}}e.removeChild(y);e=y=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){k.find.TAG=function(y,C){var B=C.getElementsByTagName(y[1]);if(y[1]==="*"){var A=[];for(var z=0;B[z];z++){if(B[z].nodeType===1){A.push(B[z])}}B=A}return B}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){k.attrHandle.href=function(y){return y.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=d,A=document.createElement("div"),z="__sizzle__";A.innerHTML="<p class='TEST'></p>";if(A.querySelectorAll&&A.querySelectorAll(".TEST").length===0){return}d=function(L,C,G,K){C=C||document;if(!K&&!d.isXML(C)){var J=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(L);if(J&&(C.nodeType===1||C.nodeType===9)){if(J[1]){return l(C.getElementsByTagName(L),G)}else{if(J[2]&&k.find.CLASS&&C.getElementsByClassName){return l(C.getElementsByClassName(J[2]),G)}}}if(C.nodeType===9){if(L==="body"&&C.body){return l([C.body],G)}else{if(J&&J[3]){var F=C.getElementById(J[3]);if(F&&F.parentNode){if(F.id===J[3]){return l([F],G)}}else{return l([],G)}}}try{return l(C.querySelectorAll(L),G)}catch(H){}}else{if(C.nodeType===1&&C.nodeName.toLowerCase()!=="object"){var D=C,E=C.getAttribute("id"),B=E||z,N=C.parentNode,M=/^\s*[+~]/.test(L);if(!E){C.setAttribute("id",B)}else{B=B.replace(/'/g,"\\$&")}if(M&&N){C=C.parentNode}try{if(!M||N){return l(C.querySelectorAll("[id='"+B+"'] "+L),G)}}catch(I){}finally{if(!E){D.removeAttribute("id")}}}}}return e(L,C,G,K)};for(var y in e){d[y]=e[y]}A=null})()}(function(){var e=document.documentElement,z=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(z){var B=!z.call(document.createElement("div"),"div"),y=false;try{z.call(document.documentElement,"[test!='']:sizzle")}catch(A){y=true}d.matchesSelector=function(D,F){F=F.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!d.isXML(D)){try{if(y||!k.match.PSEUDO.test(F)&&!/!=/.test(F)){var C=z.call(D,F);if(C||!B||D.document&&D.document.nodeType!==11){return C}}}catch(E){}}return d(F,null,null,[D]).length>0}}})();(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}k.order.splice(1,0,"CLASS");k.find.CLASS=function(y,z,A){if(typeof z.getElementsByClassName!=="undefined"&&!A){return z.getElementsByClassName(y[1])}};e=null})();function a(y,D,C,G,E,F){for(var A=0,z=G.length;A<z;A++){var e=G[A];if(e){var B=false;e=e[y];while(e){if(e[i]===C){B=G[e.sizset];break}if(e.nodeType===1&&!F){e[i]=C;e.sizset=A}if(e.nodeName.toLowerCase()===D){B=e;break}e=e[y]}G[A]=B}}}function t(y,D,C,G,E,F){for(var A=0,z=G.length;A<z;A++){var e=G[A];if(e){var B=false;e=e[y];while(e){if(e[i]===C){B=G[e.sizset];break}if(e.nodeType===1){if(!F){e[i]=C;e.sizset=A}if(typeof D!=="string"){if(e===D){B=true;break}}else{if(d.filter(D,[e]).length>0){B=e;break}}}e=e[y]}G[A]=B}}}if(document.documentElement.contains){d.contains=function(y,e){return y!==e&&(y.contains?y.contains(e):true)}}else{if(document.documentElement.compareDocumentPosition){d.contains=function(y,e){return !!(y.compareDocumentPosition(e)&16)}}else{d.contains=function(){return false}}}d.isXML=function(e){var y=(e?e.ownerDocument||e:0).documentElement;return y?y.nodeName!=="HTML":false};var s=function(z,e,D){var C,E=[],B="",F=e.nodeType?[e]:e;while((C=k.match.PSEUDO.exec(z))){B+=C[0];z=z.replace(k.match.PSEUDO,"")}z=k.relative[z]?z+"*":z;for(var A=0,y=F.length;A<y;A++){d(z,F[A],E,D)}return d.filter(B,E)};window.tinymce.dom.Sizzle=d})();(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j<arguments.length;j++){h.push(arguments[j])}h=e[g].apply(e,h);b.update(g);return h}});a.extend(b,{on:function(i,h,g){return a.dom.Event.add(b.id,i,h,g)},getXY:function(){return{x:parseInt(b.getStyle("left")),y:parseInt(b.getStyle("top"))}},getSize:function(){var g=e.get(b.id);return{w:parseInt(b.getStyle("width")||g.clientWidth),h:parseInt(b.getStyle("height")||g.clientHeight)}},moveTo:function(g,h){b.setStyles({left:g,top:h})},moveBy:function(g,i){var h=b.getXY();b.moveTo(h.x+g,h.y+i)},resizeTo:function(g,i){b.setStyles({width:g,height:i})},resizeBy:function(g,j){var i=b.getSize();b.resizeTo(i.w+g,i.h+j)},update:function(h){var g;if(a.isIE6&&d.blocker){h=h||"";if(h.indexOf("get")===0||h.indexOf("has")===0||h.indexOf("is")===0){return}if(h=="remove"){e.remove(b.blocker);return}if(!b.blocker){b.blocker=e.uniqueId();g=e.add(d.container||e.getRoot(),"iframe",{id:b.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});e.setStyle(g,"opacity",0)}else{g=e.get(b.blocker)}e.setStyles(g,{left:b.getStyle("left",1),top:b.getStyle("top",1),width:b.getStyle("width",1),height:b.getStyle("height",1),display:b.getStyle("display",1),zIndex:parseInt(b.getStyle("zIndex",1)||0)-1})}}})}})(tinymce);(function(d){function f(g){return g.replace(/[\n\r]+/g,"")}var c=d.is,b=d.isIE,e=d.each,a=d.dom.TreeWalker;d.create("tinymce.dom.Selection",{Selection:function(j,i,h){var g=this;g.dom=j;g.win=i;g.serializer=h;e(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(k){g[k]=new d.util.Dispatcher(g)});if(!g.win.getSelection){g.tridentSel=new d.dom.TridentSelection(g)}if(d.isIE&&j.boxModel){this._fixIESelection()}d.addUnload(g.destroy,g)},setCursorLocation:function(i,j){var g=this;var h=g.dom.createRng();h.setStart(i,j);h.setEnd(i,j);g.setRng(h);g.collapse(false)},getContent:function(h){var g=this,i=g.getRng(),m=g.dom.create("body"),k=g.getSel(),j,l,o;h=h||{};j=l="";h.get=true;h.format=h.format||"html";h.forced_root_block="";g.onBeforeGetContent.dispatch(g,h);if(h.format=="text"){return g.isCollapsed()?"":(i.text||(k.toString?k.toString():""))}if(i.cloneContents){o=i.cloneContents();if(o){m.appendChild(o)}}else{if(c(i.item)||c(i.htmlText)){m.innerHTML="<br>"+(i.item?i.item(0).outerHTML:i.htmlText);m.removeChild(m.firstChild)}else{m.innerHTML=i.toString()}}if(/^\s/.test(m.innerHTML)){j=" "}if(/\s+$/.test(m.innerHTML)){l=" "}h.getInner=true;h.content=g.isCollapsed()?"":j+g.serializer.serialize(m,h)+l;g.onGetContent.dispatch(g,h);return h.content},setContent:function(h,j){var o=this,g=o.getRng(),k,l=o.win.document,n,m;j=j||{format:"html"};j.set=true;h=j.content=h;if(!j.no_events){o.onBeforeSetContent.dispatch(o,j)}h=j.content;if(g.insertNode){h+='<span id="__caret">_</span>';if(g.startContainer==l&&g.endContainer==l){l.body.innerHTML=h}else{g.deleteContents();if(l.body.childNodes.length===0){l.body.innerHTML=h}else{if(g.createContextualFragment){g.insertNode(g.createContextualFragment(h))}else{n=l.createDocumentFragment();m=l.createElement("div");n.appendChild(m);m.outerHTML=h;g.insertNode(n)}}}k=o.dom.get("__caret");g=l.createRange();g.setStartBefore(k);g.setEndBefore(k);o.setRng(g);o.dom.remove("__caret");try{o.setRng(g)}catch(i){}}else{if(g.item){l.execCommand("Delete",false,null);g=o.getRng()}if(/^\s+/.test(h)){g.pasteHTML('<span id="__mce_tmp">_</span>'+h);o.dom.remove("__mce_tmp")}else{g.pasteHTML(h)}}if(!j.no_events){o.onSetContent.dispatch(o,j)}},getStart:function(){var h=this.getRng(),i,g,k,j;if(h.duplicate||h.item){if(h.item){return h.item(0)}k=h.duplicate();k.collapse(1);i=k.parentElement();g=j=h.parentElement();while(j=j.parentNode){if(j==i){i=g;break}}return i}else{i=h.startContainer;if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[Math.min(i.childNodes.length-1,h.startOffset)]}if(i&&i.nodeType==3){return i.parentNode}return i}},getEnd:function(){var h=this,i=h.getRng(),j,g;if(i.duplicate||i.item){if(i.item){return i.item(0)}i=i.duplicate();i.collapse(0);j=i.parentElement();if(j&&j.nodeName=="BODY"){return j.lastChild||j}return j}else{j=i.endContainer;g=i.endOffset;if(j.nodeType==1&&j.hasChildNodes()){j=j.childNodes[g>0?g-1:g]}if(j&&j.nodeType==3){return j.parentNode}return j}},getBookmark:function(s,v){var y=this,n=y.dom,h,k,j,o,i,p,q,m="\uFEFF",x;function g(z,A){var t=0;e(n.select(z),function(C,B){if(C==A){t=B}});return t}function u(t){function z(E){var A,D,C,B=E?"start":"end";A=t[B+"Container"];D=t[B+"Offset"];if(A.nodeType==1&&A.nodeName=="TR"){C=A.childNodes;A=C[Math.min(E?D:D-1,C.length-1)];if(A){D=E?0:A.childNodes.length;t["set"+(E?"Start":"End")](A,D)}}}z(true);z();return t}function l(){var z=y.getRng(true),t=n.getRoot(),A={};function B(E,J){var D=E[J?"startContainer":"endContainer"],I=E[J?"startOffset":"endOffset"],C=[],F,H,G=0;if(D.nodeType==3){if(v){for(F=D.previousSibling;F&&F.nodeType==3;F=F.previousSibling){I+=F.nodeValue.length}}C.push(I)}else{H=D.childNodes;if(I>=H.length&&H.length){G=1;I=Math.max(0,H.length-1)}C.push(y.dom.nodeIndex(H[I],v)+G)}for(;D&&D!=t;D=D.parentNode){C.push(y.dom.nodeIndex(D,v))}return C}A.start=B(z,true);if(!y.isCollapsed()){A.end=B(z)}return A}if(s==2){if(y.tridentSel){return y.tridentSel.getBookmark(s)}return l()}if(s){return{rng:y.getRng()}}h=y.getRng();j=n.uniqueId();o=tinyMCE.activeEditor.selection.isCollapsed();x="overflow:hidden;line-height:0px";if(h.duplicate||h.item){if(!h.item){k=h.duplicate();try{h.collapse();h.pasteHTML('<span data-mce-type="bookmark" id="'+j+'_start" style="'+x+'">'+m+"</span>");if(!o){k.collapse(false);h.moveToElementText(k.parentElement());if(h.compareEndPoints("StartToEnd",k)===0){k.move("character",-1)}k.pasteHTML('<span data-mce-type="bookmark" id="'+j+'_end" style="'+x+'">'+m+"</span>")}}catch(r){return null}}else{p=h.item(0);i=p.nodeName;return{name:i,index:g(i,p)}}}else{p=y.getNode();i=p.nodeName;if(i=="IMG"){return{name:i,index:g(i,p)}}k=u(h.cloneRange());if(!o){k.collapse(false);k.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_end",style:x},m))}h=u(h);h.collapse(true);h.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_start",style:x},m))}y.moveToBookmark({id:j,keep:1});return{id:j}},moveToBookmark:function(o){var s=this,m=s.dom,j,i,g,r,k,u,p,q;function h(A){var t=o[A?"start":"end"],x,y,z,v;if(t){z=t[0];for(y=r,x=t.length-1;x>=1;x--){v=y.childNodes;if(t[x]>v.length-1){return}y=v[t[x]]}if(y.nodeType===3){z=Math.min(t[0],y.nodeValue.length)}if(y.nodeType===1){z=Math.min(t[0],y.childNodes.length)}if(A){g.setStart(y,z)}else{g.setEnd(y,z)}}return true}function l(B){var v=m.get(o.id+"_"+B),A,t,y,z,x=o.keep;if(v){A=v.parentNode;if(B=="start"){if(!x){t=m.nodeIndex(v)}else{A=v.firstChild;t=1}k=u=A;p=q=t}else{if(!x){t=m.nodeIndex(v)}else{A=v.firstChild;t=1}u=A;q=t}if(!x){z=v.previousSibling;y=v.nextSibling;e(d.grep(v.childNodes),function(C){if(C.nodeType==3){C.nodeValue=C.nodeValue.replace(/\uFEFF/g,"")}});while(v=m.get(o.id+"_"+B)){m.remove(v,1)}if(z&&y&&z.nodeType==y.nodeType&&z.nodeType==3&&!d.isOpera){t=z.nodeValue.length;z.appendData(y.nodeValue);m.remove(y);if(B=="start"){k=u=z;p=q=t}else{u=z;q=t}}}}}function n(t){if(m.isBlock(t)&&!t.innerHTML&&!b){t.innerHTML='<br data-mce-bogus="1" />'}return t}if(o){if(o.start){g=m.createRng();r=m.getRoot();if(s.tridentSel){return s.tridentSel.moveToBookmark(o)}if(h(true)&&h()){s.setRng(g)}}else{if(o.id){l("start");l("end");if(k){g=m.createRng();g.setStart(n(k),p);g.setEnd(n(u),q);s.setRng(g)}}else{if(o.name){s.select(m.select(o.name)[o.index])}else{if(o.rng){s.setRng(o.rng)}}}}}},select:function(l,k){var j=this,m=j.dom,h=m.createRng(),g;function i(n,p){var o=new a(n,n);do{if(n.nodeType==3&&d.trim(n.nodeValue).length!==0){if(p){h.setStart(n,0)}else{h.setEnd(n,n.nodeValue.length)}return}if(n.nodeName=="BR"){if(p){h.setStartBefore(n)}else{h.setEndBefore(n)}return}}while(n=(p?o.next():o.prev()))}if(l){g=m.nodeIndex(l);h.setStart(l.parentNode,g);h.setEnd(l.parentNode,g+1);if(k){i(l,1);i(l)}j.setRng(h)}return l},isCollapsed:function(){var g=this,i=g.getRng(),h=g.getSel();if(!i||i.item){return false}if(i.compareEndPoints){return i.compareEndPoints("StartToEnd",i)===0}return !h||i.collapsed},collapse:function(g){var i=this,h=i.getRng(),j;if(h.item){j=h.item(0);h=i.win.document.body.createTextRange();h.moveToElementText(j)}h.collapse(!!g);i.setRng(h)},getSel:function(){var h=this,g=this.win;return g.getSelection?g.getSelection():g.document.selection},getRng:function(m){var h=this,j,g,l,k=h.win.document;if(m&&h.tridentSel){return h.tridentSel.getRangeAt(0)}try{if(j=h.getSel()){g=j.rangeCount>0?j.getRangeAt(0):(j.createRange?j.createRange():k.createRange())}}catch(i){}if(d.isIE&&g&&g.setStart&&k.selection.createRange().item){l=k.selection.createRange().item(0);g=k.createRange();g.setStartBefore(l);g.setEndAfter(l)}if(!g){g=k.createRange?k.createRange():k.body.createTextRange()}if(g.setStart&&g.startContainer.nodeType===9&&g.collapsed){l=h.dom.getRoot();g.setStart(l,0);g.setEnd(l,0)}if(h.selectedRange&&h.explicitRange){if(g.compareBoundaryPoints(g.START_TO_START,h.selectedRange)===0&&g.compareBoundaryPoints(g.END_TO_END,h.selectedRange)===0){g=h.explicitRange}else{h.selectedRange=null;h.explicitRange=null}}return g},setRng:function(k,g){var j,i=this;if(!i.tridentSel){j=i.getSel();if(j){i.explicitRange=k;try{j.removeAllRanges()}catch(h){}j.addRange(k);if(g===false&&j.extend){j.collapse(k.endContainer,k.endOffset);j.extend(k.startContainer,k.startOffset)}i.selectedRange=j.rangeCount>0?j.getRangeAt(0):null}}else{if(k.cloneRange){try{i.tridentSel.addRange(k);return}catch(h){}}try{k.select()}catch(h){}}},setNode:function(h){var g=this;g.setContent(g.dom.getOuterHTML(h));return h},getNode:function(){var i=this,h=i.getRng(),j=i.getSel(),m,l=h.startContainer,g=h.endContainer;function k(q,o){var p=q;while(q&&q.nodeType===3&&q.length===0){q=o?q.nextSibling:q.previousSibling}return q||p}if(!h){return i.dom.getRoot()}if(h.setStart){m=h.commonAncestorContainer;if(!h.collapsed){if(h.startContainer==h.endContainer){if(h.endOffset-h.startOffset<2){if(h.startContainer.hasChildNodes()){m=h.startContainer.childNodes[h.startOffset]}}}if(l.nodeType===3&&g.nodeType===3){if(l.length===h.startOffset){l=k(l.nextSibling,true)}else{l=l.parentNode}if(h.endOffset===0){g=k(g.previousSibling,false)}else{g=g.parentNode}if(l&&l===g){return l}}}if(m&&m.nodeType==3){return m.parentNode}return m}return h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(p,h){var o=this,k=o.dom,m,l,i,j=[];m=k.getParent(p||o.getStart(),k.isBlock);l=k.getParent(h||o.getEnd(),k.isBlock);if(m){j.push(m)}if(m&&l&&m!=l){i=m;var g=new a(m,k.getRoot());while((i=g.next())&&i!=l){if(k.isBlock(i)){j.push(i)}}}if(l&&m!=l){j.push(l)}return j},isForward:function(){var i=this.dom,g=this.getSel(),j,h;if(!g||g.anchorNode==null||g.focusNode==null){return true}j=i.createRng();j.setStart(g.anchorNode,g.anchorOffset);j.collapse(true);h=i.createRng();h.setStart(g.focusNode,g.focusOffset);h.collapse(true);return j.compareBoundaryPoints(j.START_TO_START,h)<=0},normalize:function(){var h=this,g,m,l,j,i;function k(p){var o,r,n,s=h.dom,u=s.getRoot(),q,t,v;function y(z,A){var B=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(z=B[A?"prev":"next"]()){if(z.nodeName==="BR"){return true}}}function x(B,z){var C,A;z=z||o;C=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(q=C[B?"prev":"next"]()){if(q.nodeType===3&&q.nodeValue.length>0){o=q;r=B?q.nodeValue.length:0;m=true;return}if(s.isBlock(q)||t[q.nodeName.toLowerCase()]){return}A=q}if(l&&A){o=A;m=true;r=0}}o=g[(p?"start":"end")+"Container"];r=g[(p?"start":"end")+"Offset"];t=s.schema.getNonEmptyElements();if(o.nodeType===9){o=s.getRoot();r=0}if(o===u){if(p){q=o.childNodes[r>0?r-1:0];if(q){v=q.nodeName.toLowerCase();if(t[q.nodeName]||q.nodeName=="TABLE"){return}}}if(o.hasChildNodes()){o=o.childNodes[Math.min(!p&&r>0?r-1:r,o.childNodes.length-1)];r=0;if(o.hasChildNodes()&&!/TABLE/.test(o.nodeName)){q=o;n=new a(o,u);do{if(q.nodeType===3&&q.nodeValue.length>0){r=p?0:q.nodeValue.length;o=q;m=true;break}if(t[q.nodeName.toLowerCase()]){r=s.nodeIndex(q);o=q.parentNode;if(q.nodeName=="IMG"&&!p){r++}m=true;break}}while(q=(p?n.next():n.prev()))}}}if(l){if(o.nodeType===3&&r===0){x(true)}if(o.nodeType===1){q=o.childNodes[r];if(q&&q.nodeName==="BR"&&!y(q)&&!y(q,true)){x(true,o.childNodes[r])}}}if(p&&!l&&o.nodeType===3&&r===o.nodeValue.length){x(false)}if(m){g["set"+(p?"Start":"End")](o,r)}}if(d.isIE){return}g=h.getRng();l=g.collapsed;k(true);if(!l){k()}if(m){if(l){g.collapse(true)}h.setRng(g,h.isForward())}},destroy:function(h){var g=this;g.win=null;if(!h){d.removeUnload(g.destroy)}},_fixIESelection:function(){var h=this.dom,n=h.doc,i=n.body,k,o,g;function j(p,s){var q=i.createTextRange();try{q.moveToPoint(p,s)}catch(r){q=null}return q}function m(q){var p;if(q.button){p=j(q.x,q.y);if(p){if(p.compareEndPoints("StartToStart",o)>0){p.setEndPoint("StartToStart",o)}else{p.setEndPoint("EndToEnd",o)}p.select()}}else{l()}}function l(){var p=n.selection.createRange();if(o&&!p.item&&p.compareEndPoints("StartToEnd",p)===0){o.select()}h.unbind(n,"mouseup",l);h.unbind(n,"mousemove",m);o=k=0}n.documentElement.unselectable=true;h.bind(n,["mousedown","contextmenu"],function(p){if(p.target.nodeName==="HTML"){if(k){l()}g=n.documentElement;if(g.scrollHeight>g.clientHeight){return}k=1;o=j(p.x,p.y);if(o){h.bind(n,"mouseup",l);h.bind(n,"mousemove",m);h.win.focus();o.select()}}})}})})(tinymce);(function(a){a.dom.Serializer=function(e,i,f){var h,b,d=a.isIE,g=a.each,c;if(!e.apply_source_formatting){e.indent=false}i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";e.remove_trailing_brs="remove_trailing_brs" in e?e.remove_trailing_brs:true;h=new a.util.Dispatcher(self);b=new a.util.Dispatcher(self);c=new a.html.DomParser(e,f);c.addAttributeFilter("src,href,style",function(k,j){var o=k.length,l,q,n="data-mce-"+j,p=e.url_converter,r=e.url_converter_scope,m;while(o--){l=k[o];q=l.attributes.map[n];if(q!==m){l.attr(j,q.length>0?q:null);l.attr(n,null)}else{q=l.attributes.map[j];if(j==="style"){q=i.serializeStyle(i.parseStyle(q),l.name)}else{if(p){q=p.call(r,q,j,l.name)}}l.attr(j,q.length>0?q:null)}}});c.addAttributeFilter("class",function(j,k){var l=j.length,m,n;while(l--){m=j[l];n=m.attr("class").replace(/(?:^|\s)mce(Item\w+|Selected)(?!\S)/g,"");m.attr("class",n.length>0?n:null)}});c.addAttributeFilter("data-mce-type",function(j,l,k){var m=j.length,n;while(m--){n=j[m];if(n.attributes.map["data-mce-type"]==="bookmark"&&!k.cleanup){n.remove()}}});c.addAttributeFilter("data-mce-expando",function(j,l,k){var m=j.length;while(m--){j[m].attr(l,null)}});c.addNodeFilter("script,style",function(k,l){var m=k.length,n,o;function j(p){return p.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}while(m--){n=k[m];o=n.firstChild?n.firstChild.value:"";if(l==="script"){n.attr("type",(n.attr("type")||"text/javascript").replace(/^mce\-/,""));if(o.length>0){n.firstChild.value="// <![CDATA[\n"+j(o)+"\n// ]]>"}}else{if(o.length>0){n.firstChild.value="<!--\n"+j(o)+"\n-->"}}}});c.addNodeFilter("#comment",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.value.indexOf("[CDATA[")===0){m.name="#cdata";m.type=4;m.value=m.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(m.value.indexOf("mce:protected ")===0){m.name="#text";m.type=3;m.raw=true;m.value=unescape(m.value).substr(14)}}}});c.addNodeFilter("xml:namespace,input",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.type===7){m.remove()}else{if(m.type===1){if(k==="input"&&!("type" in m.attributes.map)){m.attr("type","text")}}}}});if(e.fix_list_elements){c.addNodeFilter("ul,ol",function(k,l){var m=k.length,n,j;while(m--){n=k[m];j=n.parent;if(j.name==="ul"||j.name==="ol"){if(n.prev&&n.prev.name==="li"){n.prev.append(n)}}}})}c.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style",function(j,k){var l=j.length;while(l--){j[l].attr(k,null)}});return{schema:f,addNodeFilter:c.addNodeFilter,addAttributeFilter:c.addAttributeFilter,onPreProcess:h,onPostProcess:b,serialize:function(o,m){var l,p,k,j,n;if(d&&i.select("script,style,select,map").length>0){n=o.innerHTML;o=o.cloneNode(false);i.setHTML(o,n)}else{o=o.cloneNode(true)}l=o.ownerDocument.implementation;if(l.createHTMLDocument){p=l.createHTMLDocument("");g(o.nodeName=="BODY"?o.childNodes:[o],function(q){p.body.appendChild(p.importNode(q,true))});if(o.nodeName!="BODY"){o=p.body.firstChild}else{o=p.body}k=i.doc;i.doc=p}m=m||{};m.format=m.format||"html";if(!m.no_events){m.node=o;h.dispatch(self,m)}j=new a.html.Serializer(e,f);m.content=j.serialize(c.parse(a.trim(m.getInner?o.innerHTML:i.getOuterHTML(o)),m));if(!m.cleanup){m.content=m.content.replace(/\uFEFF|\u200B/g,"")}if(!m.no_events){b.dispatch(self,m)}if(k){i.doc=k}m.node=null;return m.content},addRules:function(j){f.addValidElements(j)},setRules:function(j){f.setValidElements(j)}}}})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],e={},d=[],g=0,f;function b(m,v){var x=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}v()}function u(){if(typeof(console)!=="undefined"&&console.log){console.log("Failed to load: "+m)}}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol&&o.protocol.toLowerCase()!="file"){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(y){var t=q.create("script",{type:"text/javascript"});t.text=y;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()},error:u});return}}s=q.create("script",{id:n,type:"text/javascript",src:a._addVer(m)});if(!a.isIE){s.onload=p}s.onerror=u;if(!a.isOpera){s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}}}(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==f){j.push(m);l[m]=c}if(q){if(!e[m]){e[m]=[]}e[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(e[r],function(s){s.func.call(s.scope)});e[r]=f}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,s){var i=d.startContainer,l=d.startOffset,t=d.endContainer,m=d.endOffset,j,g,o,h,r,q,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(u){s([u])});return}function f(u){var v;v=u[0];if(v.nodeType===3&&v===i&&l>=v.nodeValue.length){u.splice(0,1)}v=u[u.length-1];if(m===0&&u.length>0&&v===t&&v.nodeType===3){u.splice(u.length-1,1)}return u}function p(x,v,u){var y=[];for(;x&&x!=u;x=x[v]){y.push(x)}return y}function n(v,u){do{if(v.parentNode==u){return v}v=v.parentNode}while(v)}function k(x,v,y){var u=y?"nextSibling":"previousSibling";for(h=x,r=h.parentNode;h&&h!=v;h=r){r=h.parentNode;q=p(h==x?h:h[u],u);if(q.length){if(!y){q.reverse()}s(f(q))}}}if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[l]}if(t.nodeType==1&&t.hasChildNodes()){t=t.childNodes[Math.min(m-1,t.childNodes.length-1)]}if(i==t){return s(f([i]))}j=c.findCommonAncestor(i,t);for(h=i;h;h=h.parentNode){if(h===t){return k(i,j,true)}if(h===j){break}}for(h=t;h;h=h.parentNode){if(h===i){return k(t,j)}if(h===j){break}}g=n(i,j)||i;o=n(t,j)||t;k(i,g,true);q=p(g==i?g:g.nextSibling,"nextSibling",o==t?o.nextSibling:o);if(q.length){s(f(q))}k(t,o)};this.split=function(e){var h=e.startContainer,d=e.startOffset,i=e.endContainer,g=e.endOffset;function f(j,k){return j.splitText(k)}if(h==i&&h.nodeType==3){if(d>0&&d<h.nodeValue.length){i=f(h,d);h=i.previousSibling;if(g>d){g=g-d;h=i=f(i,g).previousSibling;g=i.nodeValue.length;d=0}else{g=0}}}else{if(h.nodeType==3&&d>0&&d<h.nodeValue.length){h=f(h,d);d=0}if(i.nodeType==3&&g>0&&g<i.nodeValue.length){i=f(i,g).previousSibling;g=i.nodeValue.length}}return{startContainer:h,startOffset:d,endContainer:i,endOffset:g}}};a.dom.RangeUtils.compareRanges=function(c,b){if(c&&b){if(c.item||c.duplicate){if(c.item&&b.item&&c.item(0)===b.item(0)){return true}if(c.isEqual&&b.isEqual&&b.isEqual(c)){return true}}else{return c.startContainer==b.startContainer&&c.startOffset==b.startOffset}}return false}})(tinymce);(function(b){var a=b.dom.Event,c=b.each;b.create("tinymce.ui.KeyboardNavigation",{KeyboardNavigation:function(e,f){var p=this,m=e.root,l=e.items,n=e.enableUpDown,i=e.enableLeftRight||!e.enableUpDown,k=e.excludeFromTabOrder,j,h,o,d,g;f=f||b.DOM;j=function(q){g=q.target.id};h=function(q){f.setAttrib(q.target.id,"tabindex","-1")};d=function(q){var r=f.get(g);f.setAttrib(r,"tabindex","0");r.focus()};p.focus=function(){f.get(g).focus()};p.destroy=function(){c(l,function(q){f.unbind(f.get(q.id),"focus",j);f.unbind(f.get(q.id),"blur",h)});f.unbind(f.get(m),"focus",d);f.unbind(f.get(m),"keydown",o);l=f=m=p.focus=j=h=o=d=null;p.destroy=function(){}};p.moveFocus=function(u,r){var q=-1,t=p.controls,s;if(!g){return}c(l,function(x,v){if(x.id===g){q=v;return false}});q+=u;if(q<0){q=l.length-1}else{if(q>=l.length){q=0}}s=l[q];f.setAttrib(g,"tabindex","-1");f.setAttrib(s.id,"tabindex","0");f.get(s.id).focus();if(e.actOnFocus){e.onAction(s.id)}if(r){a.cancel(r)}};o=function(y){var u=37,t=39,x=38,z=40,q=27,s=14,r=13,v=32;switch(y.keyCode){case u:if(i){p.moveFocus(-1)}break;case t:if(i){p.moveFocus(1)}break;case x:if(n){p.moveFocus(-1)}break;case z:if(n){p.moveFocus(1)}break;case q:if(e.onCancel){e.onCancel();a.cancel(y)}break;case s:case r:case v:if(e.onAction){e.onAction(g);a.cancel(y)}break}};c(l,function(s,q){var r;if(!s.id){s.id=f.uniqueId("_mce_item_")}if(k){f.bind(s.id,"blur",h);r="-1"}else{r=(q===0?"0":"-1")}f.setAttrib(s.id,"tabindex",r);f.bind(f.get(s.id),"focus",j)});if(l[0]){g=l[0].id}f.setAttrib(m,"tabindex","-1");f.bind(f.get(m),"focus",d);f.bind(f.get(m),"keydown",o)}})})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(f,e,d){this.id=f;this.settings=e=e||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=e.scope||this;this.disabled=0;this.active=0;this.editor=d},setAriaProperty:function(f,e){var d=b.get(this.id+"_aria")||b.get(this.id);if(d){b.setAttrib(d,"aria-"+f,!!e)}},focus:function(){b.get(this.id).focus()},setDisabled:function(d){if(d!=this.disabled){this.setAriaProperty("disabled",d);this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d;this.setAriaProperty("pressed",d)}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(c,b,a){this.parent(c,b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator";this.setDisabled(true)},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix,role:"separator","aria-orientation":"vertical",tabindex:"-1"})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.setAriaProperty("checked",!!f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;j.keyboard_focus=i.keyboard_focus;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},focus:function(){var g=this;if(g.keyboardNav){g.keyboardNav.focus()}},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.offsetWidth,j.max_width):g.offsetWidth;k=j.max_height?Math.min(g.offsetHeight,j.max_height):g.offsetHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return false}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}a.add(o,"keydown",z._keyHandler,z);z.onShowMenu.dispatch(z);if(A.keyboard_focus){z._setupKeyboardNav()}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(h,"mouseover",g.mouseOverFunc);a.remove(c.select("a",h),"focus",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);a.remove(h,"keydown",g._keyHandler);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{role:"listbox",id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000;outline:0"});if(i.settings.parent){c.setAttrib(g,"aria-parent","menu_"+i.settings.parent.id)}k=c.add(g,"div",{role:"presentation",id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{role:"presentation",id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_setupKeyboardNav:function(){var i,h,g=this;i=c.get("menu_"+g.id);h=c.select("a[role=option]","menu_"+g.id);h.splice(0,0,i);g.keyboardNav=new e.ui.KeyboardNavigation({root:"menu_"+g.id,items:h,onCancel:function(){g.hideMenu()},enableUpDown:true});i.focus()},_keyHandler:function(g){var h=this,i;switch(g.keyCode){case 37:if(h.settings.parent){h.hideMenu();h.settings.parent.focus();a.cancel(g)}break;case 39:if(h.mouseOverFunc){h.mouseOverFunc(g)}break}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,q.titleItem?"th":"td");i=p=c.add(i,"a",{id:h.id+"_aria",role:q.titleItem?"presentation":"option",href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});if(q.parent){c.setAttrib(p,"aria-haspopup","true");c.setAttrib(p,"aria-owns","menu_"+h.id)}c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){if(typeof h.settings.style=="function"){h.settings.style=h.settings.style()}c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(e,d,c){this.parent(e,d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a role="button" id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" aria-labelledby="'+this.id+'_voice" title="'+a.encode(e.title)+'">';if(e.image&&!(this.editor&&this.editor.forcedHighContrastMode)){d+='<img class="mceIcon" src="'+e.image+'" alt="'+a.encode(e.title)+'" />'+c}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}d+='<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="'+this.id+'_voice">'+e.title+"</span>";d+="</a>";return d},postRender:function(){var d=this,e=d.settings,c;if(b.isIE&&d.editor){b.dom.Event.add(d.id,"mousedown",function(f){var g=d.editor.selection.getNode().nodeName;c=g==="IMG"?d.editor.selection.getBookmark():null})}b.dom.Event.add(d.id,"click",function(f){if(!d.isDisabled()){if(b.isIE&&d.editor&&c!==null){d.editor.selection.moveToBookmark(c)}return e.onclick.call(e.scope,f)}});b.dom.Event.add(d.id,"keyup",function(f){if(!d.isDisabled()&&f.keyCode==b.VK.SPACEBAR){return e.onclick.call(e.scope,f)}})}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(j,i,g){var h=this;h.parent(j,i,g);h.items=[];h.onChange=new a(h);h.onPostRender=new a(h);h.onAdd=new a(h);h.onRenderMenu=new e.util.Dispatcher(this);h.classPrefix="mceListBox";h.marked={}},select:function(h){var g=this,j,i;g.marked={};if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){var i=this,j,k,h;i.marked={};if(g!=i.selectedIndex){j=d.get(i.id+"_text");h=d.get(i.id+"_voiceDesc");k=i.items[g];if(k){i.selectedValue=k.value;i.selectedIndex=g;d.setHTML(j,d.encode(k.title));d.setHTML(h,i.settings.title+" - "+k.title);d.removeClass(j,"mceTitle");d.setAttrib(i.id,"aria-valuenow",k.title)}else{d.setHTML(j,d.encode(i.settings.title));d.setHTML(h,d.encode(i.settings.title));d.addClass(j,"mceTitle");i.selectedValue=i.selectedIndex=null;d.setAttrib(i.id,"aria-valuenow",i.settings.title)}j=0}},mark:function(g){this.marked[g]=true},add:function(j,g,i){var h=this;i=i||{};i=e.extend(i,{title:j,value:g});h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var j="",g=this,i=g.settings,k=g.classPrefix;j='<span role="listbox" aria-haspopup="true" aria-labelledby="'+g.id+'_voiceDesc" aria-describedby="'+g.id+'_voiceDesc"><table role="presentation" tabindex="0" id="'+g.id+'" cellpadding="0" cellspacing="0" class="'+k+" "+k+"Enabled"+(i["class"]?(" "+i["class"]):"")+'"><tbody><tr>';j+="<td>"+d.createHTML("span",{id:g.id+"_voiceDesc","class":"voiceLabel",style:"display:none;"},g.settings.title);j+=d.createHTML("a",{id:g.id+"_text",tabindex:-1,href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},d.encode(g.settings.title))+"</td>";j+="<td>"+d.createHTML("a",{id:g.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},'<span><span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span></span>')+"</td>";j+="</tr></tbody></table></span>";return j},showMenu:function(){var h=this,j,i=d.get(this.id),g;if(h.isDisabled()||h.items.length===0){return}if(h.menu&&h.menu.isMenuVisible){return h.hideMenu()}if(!h.isMenuRendered){h.renderMenu();h.isMenuRendered=true}j=d.getPos(i);g=h.menu;g.settings.offset_x=j.x;g.settings.offset_y=j.y;g.settings.keyboard_focus=!e.isOpera;f(h.items,function(k){if(g.items[k.id]){g.items[k.id].setSelected(0)}});f(h.items,function(k){if(g.items[k.id]&&h.marked[k.value]){g.items[k.id].setSelected(1)}if(k.value===h.selectedValue){g.items[k.id].setSelected(1)}});g.showMenu(0,i.clientHeight);b.add(d.doc,"mousedown",h.hideMenu,h);d.addClass(h.id,h.classPrefix+"Selected")},hideMenu:function(h){var g=this;if(g.menu&&g.menu.isMenuVisible){d.removeClass(g.id,g.classPrefix+"Selected");if(h&&h.type=="mousedown"&&(h.target.id==g.id+"_text"||h.target.id==g.id+"_open")){return}if(!h||!d.getParent(h.target,".mceMenu")){d.removeClass(g.id,g.classPrefix+"Selected");b.remove(d.doc,"mousedown",g.hideMenu,g);g.menu.hideMenu()}}},renderMenu:function(){var h=this,g;g=h.settings.control_manager.createDropMenu(h.id+"_menu",{menu_line:1,"class":h.classPrefix+"Menu mceNoIcons",max_width:250,max_height:150});g.onHideMenu.add(function(){h.hideMenu();h.focus()});g.add({title:h.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}});f(h.items,function(i){if(i.value===c){g.add({title:i.title,role:"option","class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}})}else{i.id=d.uniqueId();i.role="option";i.onclick=function(){if(h.settings.onselect(i.value)!==false){h.select(i.value)}};g.add(i)}});h.onRenderMenu.dispatch(h,g);h.menu=g},postRender:function(){var g=this,h=g.classPrefix;b.add(g.id,"click",g.showMenu,g);b.add(g.id,"keydown",function(i){if(i.keyCode==32){g.showMenu(i);b.cancel(i)}});b.add(g.id,"focus",function(){if(!g._focused){g.keyDownHandler=b.add(g.id,"keydown",function(i){if(i.keyCode==40){g.showMenu();b.cancel(i)}});g.keyPressHandler=b.add(g.id,"keypress",function(j){var i;if(j.keyCode==13){i=g.selectedValue;g.selectedValue=null;b.cancel(j);g.settings.onselect(i)}})}g._focused=1});b.add(g.id,"blur",function(){b.remove(g.id,"keydown",g.keyDownHandler);b.remove(g.id,"keypress",g.keyPressHandler);g._focused=0});if(e.isIE6||!d.boxModel){b.add(g.id,"mouseover",function(){if(!d.hasClass(g.id,h+"Disabled")){d.addClass(g.id,h+"Hover")}});b.add(g.id,"mouseout",function(){if(!d.hasClass(g.id,h+"Disabled")){d.removeClass(g.id,h+"Hover")}})}g.onPostRender.dispatch(g,d.get(g.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(h,g){this.parent(h,g);this.classPrefix="mceNativeListBox"},setDisabled:function(g){d.get(this.id).disabled=g;this.setAriaProperty("disabled",g)},isDisabled:function(){return d.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){d.get(this.id).selectedIndex=g+1;this.selectedValue=this.items[g]?this.items[g].value:null},add:function(k,h,g){var j,i=this;g=g||{};g.value=h;if(i.isRendered()){d.add(d.get(this.id),"option",g,k)}j={title:k,value:h,attribs:g};i.items.push(j);i.onAdd.dispatch(i,j)},getLength:function(){return this.items.length},renderHTML:function(){var i,g=this;i=d.createHTML("option",{value:""},"-- "+g.settings.title+" --");f(g.items,function(h){i+=d.createHTML("option",{value:h.value},h.title)});i=d.createHTML("select",{id:g.id,"class":"mceNativeListBox","aria-labelledby":g.id+"_aria"},i);i+=d.createHTML("span",{id:g.id+"_aria",style:"display: none"},g.settings.title);return i},postRender:function(){var h=this,i,j=true;h.rendered=true;function g(l){var k=h.items[l.target.selectedIndex-1];if(k&&(k=k.value)){h.onChange.dispatch(h,k);if(h.settings.onselect){h.settings.onselect(k)}}}b.add(h.id,"change",g);b.add(h.id,"keydown",function(l){var k;b.remove(h.id,"change",i);j=false;k=b.add(h.id,"blur",function(){if(j){return}j=true;b.add(h.id,"change",g);b.remove(h.id,"blur",k)});if(e.isWebKit&&(l.keyCode==37||l.keyCode==39)){return b.prevent(l)}if(l.keyCode==13||l.keyCode==32){g(l);return b.cancel(l)}});h.onPostRender.dispatch(h,d.get(h.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(g,f,e){this.parent(g,f,e);this.onRenderMenu=new c.util.Dispatcher(this);f.menu_container=f.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.firstChild.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(function(){f.hideMenu();f.focus()});f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(g,f,e){this.parent(g,f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,role:"presentation","class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}e+=b.createHTML("span",{"class":"mceVoiceLabel mceIconOnly",id:f.id+"_voice",style:"display:none;"},g.title);i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_action",tabindex:"-1",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]},'<span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span>');i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_open",tabindex:"-1",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";i=b.createHTML("table",{role:"presentation","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("div",{id:f.id,role:"button",tabindex:"0","aria-labelledby":f.id+"_voice","aria-haspopup":"true"},i)},postRender:function(){var e=this,g=e.settings,f;if(g.onclick){f=function(h){if(!e.isDisabled()){g.onclick(e.value);a.cancel(h)}};a.add(e.id+"_action","click",f);a.add(e.id,["click","keydown"],function(h){var k=32,m=14,i=13,j=38,l=40;if((h.keyCode===32||h.keyCode===13||h.keyCode===14)&&!h.altKey&&!h.ctrlKey&&!h.metaKey){f();a.cancel(h)}else{if(h.type==="click"||h.keyCode===l){e.showMenu();a.cancel(h)}}})}a.add(e.id+"_open","click",function(h){e.showMenu();a.cancel(h)});a.add([e.id,e.id+"_open"],"focus",function(){e._focused=1});a.add([e.id,e.id+"_open"],"blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open");a.clear(this.id)}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(i,h,f){var g=this;g.parent(i,h,f);g.settings=h=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},g.settings);g.onShowMenu=new d.util.Dispatcher(g);g.onHideMenu=new d.util.Dispatcher(g);g.value=h.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.firstChild.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.isMenuVisible=1},hideMenu:function(g){var f=this;if(f.isMenuVisible){if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.isMenuVisible=0;f.onHideMenu.dispatch()}},renderMenu:function(){var p=this,h,k=0,q=p.settings,g,j,l,o,f;o=c.add(q.menu_container,"div",{role:"listbox",id:p.id+"_menu","class":q.menu_class+" "+q["class"],style:"position:absolute;left:0;top:-1000px;"});h=c.add(o,"div",{"class":q["class"]+" mceSplitButtonMenu"});c.add(h,"span",{"class":"mceMenuLine"});g=c.add(h,"table",{role:"presentation","class":"mceColorSplitMenu"});j=c.add(g,"tbody");k=0;e(b(q.colors,"array")?q.colors:q.colors.split(","),function(m){m=m.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");var i={href:"javascript:;",style:{backgroundColor:"#"+m},title:p.editor.getLang("colors."+m,m),"data-mce-color":"#"+m};if(!d.isIE){i.role="option"}g=c.add(g,"a",i);if(p.editor.forcedHighContrastMode){g=c.add(g,"canvas",{width:16,height:16,"aria-hidden":"true"});if(g.getContext&&(f=g.getContext("2d"))){f.fillStyle="#"+m;f.fillRect(0,0,16,16)}else{c.remove(g)}}});if(q.more_colors_func){g=c.add(j,"tr");g=c.add(g,"td",{colspan:q.grid_width,"class":"mceMoreColors"});g=c.add(g,"a",{role:"option",id:p.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},q.more_colors_title);a.add(g,"click",function(i){q.more_colors_func.call(q.more_colors_scope||this);return a.cancel(i)})}c.addClass(h,"mceColorSplitMenu");new d.ui.KeyboardNavigation({root:p.id+"_menu",items:c.select("a",p.id+"_menu"),onCancel:function(){p.hideMenu();p.focus()}});a.add(p.id+"_menu","mousedown",function(i){return a.cancel(i)});a.add(p.id+"_menu","click",function(i){var m;i=c.getParent(i.target,"a",j);if(i&&i.nodeName.toLowerCase()=="a"&&(m=i.getAttribute("data-mce-color"))){p.setColor(m)}return false});return o},setColor:function(f){this.displayColor(f);this.hideMenu();this.settings.onselect(f)},displayColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);(function(b){var d=b.DOM,c=b.each,a=b.dom.Event;b.create("tinymce.ui.ToolbarGroup:tinymce.ui.Container",{renderHTML:function(){var f=this,i=[],e=f.controls,j=b.each,g=f.settings;i.push('<div id="'+f.id+'" role="group" aria-labelledby="'+f.id+'_voice">');i.push("<span role='application'>");i.push('<span id="'+f.id+'_voice" class="mceVoiceLabel" style="display:none;">'+d.encode(g.name)+"</span>");j(e,function(h){i.push(h.renderHTML())});i.push("</span>");i.push("</div>");return i.join("")},focus:function(){var e=this;d.get(e.id).focus()},postRender:function(){var f=this,e=[];c(f.controls,function(g){c(g.controls,function(h){if(h.id){e.push(h)}})});f.keyNav=new b.ui.KeyboardNavigation({root:f.id,items:e,onCancel:function(){if(b.isWebKit){d.get(f.editor.id+"_ifr").focus()}f.editor.focus()},excludeFromTabOrder:!f.settings.tab_focus_toolbar})},destroy:function(){var e=this;e.parent();e.keyNav.destroy();a.clear(e.id)}})})(tinymce);(function(a){var c=a.DOM,b=a.each;a.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var m=this,f="",j,k,n=m.settings,e,d,g,l;l=m.controls;for(e=0;e<l.length;e++){k=l[e];d=l[e-1];g=l[e+1];if(e===0){j="mceToolbarStart";if(k.Button){j+=" mceToolbarStartButton"}else{if(k.SplitButton){j+=" mceToolbarStartSplitButton"}else{if(k.ListBox){j+=" mceToolbarStartListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,"<!-- IE -->"))}}if(c.stdMode){f+='<td style="position: relative">'+k.renderHTML()+"</td>"}else{f+="<td>"+k.renderHTML()+"</td>"}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,"<!-- IE -->"))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},"<tbody><tr>"+f+"</tr></tbody>")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){if(this.lookup[d]){return this.lookup[d].instance}else{return undefined}},dependencies:function(e){var d;if(this.lookup[e]){d=this.lookup[e].dependencies}return d||[]},requireLangPack:function(e){var d=b.settings;if(d&&d.language&&d.language_load!==false){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(f,e,d){this.items.push(e);this.lookup[f]={instance:e,dependencies:d};this.onAdd.dispatch(this,f,e);return e},createUrl:function(d,e){if(typeof e==="object"){return e}else{return{prefix:d.prefix,resource:e,suffix:d.suffix}}},addComponents:function(f,d){var e=this.urls[f];b.each(d,function(g){b.ScriptLoader.add(e+"/"+g)})},load:function(j,f,d,h){var g=this,e=f;function i(){var k=g.dependencies(j);b.each(k,function(m){var l=g.createUrl(f,m);g.load(l.resource,l,undefined,undefined)});if(d){if(h){d.call(h)}else{d.call(b.ScriptLoader)}}}if(g.urls[j]){return}if(typeof f==="object"){e=f.prefix+f.resource+f.suffix}if(e.indexOf("/")!==0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}g.urls[j]=e.substring(0,e.lastIndexOf("/"));if(g.lookup[j]){i()}else{b.ScriptLoader.add(e,i,h)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(x){var v=this,o,n=j.ScriptLoader,u,l=[],r;function q(t){var s=t.id;if(!s){s=t.name;if(s&&!k.get(s)){s=t.name}else{s=k.uniqueId()}t.setAttribute("id",s)}return s}function m(z,A,t){var y=z[A];if(!y){return}if(j.is(y,"string")){t=y.replace(/\.\w+$/,"");t=t?j.resolve(t):0;y=j.resolve(y)}return y.apply(t||this,Array.prototype.slice.call(arguments,2))}function p(t,s){return s.constructor===RegExp?s.test(t.className):k.hasClass(t,s)}x=d({theme:"simple",language:"en"},x);v.settings=x;i.bind(window,"ready",function(){var s,t;m(x,"onpageload");switch(x.mode){case"exact":s=x.elements||"";if(s.length>0){g(e(s),function(y){if(k.get(y)){r=new j.Editor(y,x);l.push(r);r.render(1)}else{g(document.forms,function(z){g(z.elements,function(A){if(A.name===y){y="mce_editor_"+c++;k.setAttrib(A,"id",y);r=new j.Editor(y,x);l.push(r);r.render(1)}})})}})}break;case"textareas":case"specific_textareas":g(k.select("textarea"),function(y){if(x.editor_deselector&&p(y,x.editor_deselector)){return}if(!x.editor_selector||p(y,x.editor_selector)){r=new j.Editor(q(y),x);l.push(r);r.render(1)}});break;default:if(x.types){g(x.types,function(y){g(k.select(y.selector),function(A){var z=new j.Editor(q(A),j.extend({},x,y));l.push(z);z.render(1)})})}else{if(x.selector){g(k.select(x.selector),function(z){var y=new j.Editor(q(z),x);l.push(y);y.render(1)})}}}if(x.oninit){s=t=0;g(l,function(y){t++;if(!y.initialized){y.onInit.add(function(){s++;if(s==t){m(x,"oninit")}})}else{s++}if(s==t){m(x,"oninit")}})}})},get:function(l){if(l===a){return this.editors}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l<o.length;l++){if(o[l]==n){o.splice(l,1);break}}if(m.activeEditor==n){m._setActive(o[0])}n.destroy();m.onRemoveEditor.dispatch(m,n);return n},execCommand:function(r,p,o){var q=this,n=q.get(o),l;function m(){n.destroy();l.detachEvent("onunload",m);l=l.tinyMCE=l.tinymce=null}switch(r){case"mceFocus":n.focus();return true;case"mceAddEditor":case"mceAddControl":if(!q.get(o)){new j.Editor(o,q.settings).render()}return true;case"mceAddFrameControl":l=o.window;l.tinyMCE=tinyMCE;l.tinymce=j;j.DOM.doc=l.document;j.DOM.win=l;n=new j.Editor(o.element_id,o);n.render();if(j.isIE){l.attachEvent("onunload",m)}o.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(n){n.remove()}return true;case"mceToggleEditor":if(!n){q.execCommand("mceAddControl",0,o);return true}if(n.isHidden()){n.show()}else{n.hide()}return true}if(q.activeEditor){return q.activeEditor.execCommand(r,p,o)}return false},execInstanceCommand:function(p,o,n,m){var l=this.get(p);if(l){return l.execCommand(o,n,m)}return false},triggerSave:function(){g(this.editors,function(l){l.save()})},addI18n:function(n,q){var l,m=this.i18n;if(!j.is(n,"string")){g(n,function(r,p){g(r,function(t,s){g(t,function(v,u){if(s==="common"){m[p+"."+u]=v}else{m[p+"."+s+"."+u]=v}})})})}else{g(q,function(r,p){m[n+"."+p]=r})}},_setActive:function(l){this.selectedInstance=this.activeEditor=l}})})(tinymce);(function(k){var l=k.DOM,j=k.dom.Event,f=k.extend,i=k.each,a=k.isGecko,b=k.isIE,e=k.isWebKit,d=k.is,h=k.ThemeManager,c=k.PluginManager,g=k.explode;k.create("tinymce.Editor",{Editor:function(p,o){var m=this,n=true;m.settings=o=f({id:p,language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:k.documentBaseURL,add_form_submit_trigger:n,submit_patch:n,add_unload_trigger:n,convert_urls:n,relative_urls:n,remove_script_host:n,table_inline_editing:false,object_resizing:n,accessibility_focus:n,doctype:k.isIE6?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">':"<!DOCTYPE>",visual:n,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",apply_source_formatting:n,directionality:"ltr",forced_root_block:"p",hidden_input:n,padd_empty_editor:n,render_ui:n,indentation:"30px",fix_table_elements:n,inline_styles:n,convert_fonts_to_spans:n,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure",validate:n,entity_encoding:"named",url_converter:m.convertURL,url_converter_scope:m,ie7_compat:n},o);m.id=m.editorId=p;m.isNotDirty=false;m.plugins={};m.documentBaseURI=new k.util.URI(o.document_base_url||k.documentBaseURL,{base_uri:tinyMCE.baseURI});m.baseURI=k.baseURI;m.contentCSS=[];m.setupEvents();m.execCommands={};m.queryStateCommands={};m.queryValueCommands={};m.execCallback("setup",m)},render:function(o){var p=this,q=p.settings,r=p.id,m=k.ScriptLoader;if(!j.domLoaded){j.add(window,"ready",function(){p.render()});return}tinyMCE.settings=q;if(!p.getElement()){return}if(k.isIDevice&&!k.isIOS5){return}if(!/TEXTAREA|INPUT/i.test(p.getElement().nodeName)&&q.hidden_input&&l.getParent(r,"form")){l.insertAfter(l.create("input",{type:"hidden",name:r}),r)}if(k.WindowManager){p.windowManager=new k.WindowManager(p)}if(q.encoding=="xml"){p.onGetContent.add(function(s,t){if(t.save){t.content=l.encode(t.content)}})}if(q.add_form_submit_trigger){p.onSubmit.addToTop(function(){if(p.initialized){p.save();p.isNotDirty=1}})}if(q.add_unload_trigger){p._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(p.initialized&&!p.destroyed&&!p.isHidden()){p.save({format:"raw",no_events:true})}})}k.addUnload(p.destroy,p);if(q.submit_patch){p.onBeforeRenderUI.add(function(){var s=p.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){p.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){k.triggerSave();p.isNotDirty=1;return p.formElement._mceOldSubmit(p.formElement)}}s=null})}function n(){if(q.language&&q.language_load!==false){m.add(k.baseURL+"/langs/"+q.language+".js")}if(q.theme&&q.theme.charAt(0)!="-"&&!h.urls[q.theme]){h.load(q.theme,"themes/"+q.theme+"/editor_template"+k.suffix+".js")}i(g(q.plugins),function(t){if(t&&!c.urls[t]){if(t.charAt(0)=="-"){t=t.substr(1,t.length);var s=c.dependencies(t);i(s,function(v){var u={prefix:"plugins/",resource:v,suffix:"/editor_plugin"+k.suffix+".js"};v=c.createUrl(u,v);c.load(v.resource,v)})}else{if(t=="safari"){return}c.load(t,{prefix:"plugins/",resource:t,suffix:"/editor_plugin"+k.suffix+".js"})}}});m.loadQueue(function(){if(!p.removed){p.init()}})}n()},init:function(){var q,F=this,G=F.settings,C,y,B=F.getElement(),p,m,D,v,A,E,x,r=[];k.add(F);G.aria_label=G.aria_label||l.getAttrib(B,"aria-label",F.getLang("aria.rich_text_area"));if(G.theme){G.theme=G.theme.replace(/-/,"");p=h.get(G.theme);F.theme=new p();if(F.theme.init){F.theme.init(F,h.urls[G.theme]||k.documentBaseURL.replace(/\/$/,""))}}function z(s){var t=c.get(s),o=c.urls[s]||k.documentBaseURL.replace(/\/$/,""),n;if(t&&k.inArray(r,s)===-1){i(c.dependencies(s),function(u){z(u)});n=new t(F,o);F.plugins[s]=n;if(n.init){n.init(F,o);r.push(s)}}}i(g(G.plugins.replace(/\-/g,"")),z);if(G.popup_css!==false){if(G.popup_css){G.popup_css=F.documentBaseURI.toAbsolute(G.popup_css)}else{G.popup_css=F.baseURI.toAbsolute("themes/"+G.theme+"/skins/"+G.skin+"/dialog.css")}}if(G.popup_css_add){G.popup_css+=","+F.documentBaseURI.toAbsolute(G.popup_css_add)}F.controlManager=new k.ControlManager(F);F.onExecCommand.add(function(n,o){if(!/^(FontName|FontSize)$/.test(o)){F.nodeChanged()}});F.onBeforeRenderUI.dispatch(F,F.controlManager);if(G.render_ui&&F.theme){C=G.width||B.style.width||B.offsetWidth;y=G.height||B.style.height||B.offsetHeight;F.orgDisplay=B.style.display;E=/^[0-9\.]+(|px)$/i;if(E.test(""+C)){C=Math.max(parseInt(C,10)+(p.deltaWidth||0),100)}if(E.test(""+y)){y=Math.max(parseInt(y,10)+(p.deltaHeight||0),100)}p=F.theme.renderUI({targetNode:B,width:C,height:y,deltaWidth:G.delta_width,deltaHeight:G.delta_height});F.editorContainer=p.editorContainer}if(G.content_css){i(g(G.content_css),function(n){F.contentCSS.push(F.documentBaseURI.toAbsolute(n))})}if(G.content_editable){B=q=p=null;return F.initContentBody()}if(document.domain&&location.hostname!=document.domain){k.relaxedDomain=document.domain}l.setStyles(p.sizeContainer||p.editorContainer,{width:C,height:y});y=(p.iframeHeight||y)+(typeof(y)=="number"?(p.deltaHeight||0):"");if(y<100){y=100}F.iframeHTML=G.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml">';if(G.document_base_url!=k.documentBaseURL){F.iframeHTML+='<base href="'+F.documentBaseURI.getURI()+'" />'}if(G.ie7_compat){F.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}else{F.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=edge" />'}F.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(x=0;x<F.contentCSS.length;x++){F.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+F.contentCSS[x]+'" />'}F.contentCSS=[];v=G.body_id||"tinymce";if(v.indexOf("=")!=-1){v=F.getParam("body_id","","hash");v=v[F.id]||v}A=G.body_class||"";if(A.indexOf("=")!=-1){A=F.getParam("body_class","","hash");A=A[F.id]||""}F.iframeHTML+='</head><body id="'+v+'" class="mceContentBody '+A+'" onload="window.parent.tinyMCE.get(\''+F.id+"').onLoad.dispatch();\"><br></body></html>";if(k.relaxedDomain&&(b||(k.isOpera&&parseFloat(opera.version())<11))){D='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+F.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody();})()'}q=l.add(p.iframeContainer,"iframe",{id:F.id+"_ifr",src:D||'javascript:""',frameBorder:"0",allowTransparency:"true",title:G.aria_label,style:{width:"100%",height:y,display:"block"}});F.contentAreaContainer=p.iframeContainer;l.get(p.editorContainer).style.display=F.orgDisplay;l.get(F.id).style.display="none";l.setAttrib(F.id,"aria-hidden",true);if(!k.relaxedDomain||!D){F.initContentBody()}B=q=p=null},initContentBody:function(){var n=this,p=n.settings,q=l.get(n.id),r=n.getDoc(),o,m;if((!b||!k.relaxedDomain)&&!p.content_editable){r.open();r.write(n.iframeHTML);r.close();if(k.relaxedDomain){r.domain=k.relaxedDomain}}if(p.content_editable){l.addClass(q,"mceContentBody");n.contentDocument=r=p.content_document||document;n.contentWindow=p.content_window||window;n.bodyElement=q;p.content_document=p.content_window=null}m=n.getBody();m.disabled=true;if(!p.readonly){m.contentEditable=n.getParam("content_editable_state",true)}m.disabled=false;n.schema=new k.html.Schema(p);n.dom=new k.dom.DOMUtils(r,{keep_values:true,url_converter:n.convertURL,url_converter_scope:n,hex_colors:p.force_hex_style_colors,class_filter:p.class_filter,update_styles:true,root_element:p.content_editable?n.id:null,schema:n.schema});n.parser=new k.html.DomParser(p,n.schema);n.parser.addAttributeFilter("src,href,style",function(s,t){var u=s.length,x,z=n.dom,y,v;while(u--){x=s[u];y=x.attr(t);v="data-mce-"+t;if(!x.attributes.map[v]){if(t==="style"){x.attr(v,z.serializeStyle(z.parseStyle(y),x.name))}else{x.attr(v,n.convertURL(y,t,x.name))}}}});n.parser.addNodeFilter("script",function(s,t){var u=s.length,v;while(u--){v=s[u];v.attr("type","mce-"+(v.attr("type")||"text/javascript"))}});n.parser.addNodeFilter("#cdata",function(s,t){var u=s.length,v;while(u--){v=s[u];v.type=8;v.name="#comment";v.value="[CDATA["+v.value+"]]"}});n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(t,u){var v=t.length,x,s=n.schema.getNonEmptyElements();while(v--){x=t[v];if(x.isEmpty(s)){x.empty().append(new k.html.Node("br",1)).shortEnded=true}}});n.serializer=new k.dom.Serializer(p,n.dom,n.schema);n.selection=new k.dom.Selection(n.dom,n.getWin(),n.serializer);n.formatter=new k.Formatter(n);n.undoManager=new k.UndoManager(n);n.forceBlocks=new k.ForceBlocks(n);n.enterKey=new k.EnterKey(n);n.editorCommands=new k.EditorCommands(n);n.serializer.onPreProcess.add(function(s,t){return n.onPreProcess.dispatch(n,t,s)});n.serializer.onPostProcess.add(function(s,t){return n.onPostProcess.dispatch(n,t,s)});n.onPreInit.dispatch(n);if(!p.gecko_spellcheck){r.body.spellcheck=false}if(!p.readonly){n.bindNativeEvents()}n.controlManager.onPostRender.dispatch(n,n.controlManager);n.onPostRender.dispatch(n);n.quirks=k.util.Quirks(n);if(p.directionality){m.dir=p.directionality}if(p.nowrap){m.style.whiteSpace="nowrap"}if(p.protect){n.onBeforeSetContent.add(function(s,t){i(p.protect,function(u){t.content=t.content.replace(u,function(v){return"<!--mce:protected "+escape(v)+"-->"})})})}n.onSetContent.add(function(){n.addVisual(n.getBody())});if(p.padd_empty_editor){n.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}n.load({initial:true,format:"html"});n.startContent=n.getContent({format:"raw"});n.initialized=true;n.onInit.dispatch(n);n.execCallback("setupcontent_callback",n.id,m,r);n.execCallback("init_instance_callback",n);n.focus(true);n.nodeChanged({initial:true});i(n.contentCSS,function(s){n.dom.loadCSS(s)});if(p.auto_focus){setTimeout(function(){var s=k.get(p.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getBody().focus();s.getWin().focus()},100)}q=r=m=null},focus:function(p){var o,u=this,t=u.selection,q=u.settings.content_editable,n,r,s=u.getDoc(),m;if(!p){n=t.getRng();if(n.item){r=n.item(0)}u._refreshContentEditable();if(!q){u.getWin().focus()}if(k.isGecko||q){m=u.getBody();if(m.setActive){m.setActive()}else{m.focus()}if(q){t.normalize()}}if(r&&r.ownerDocument==s){n=s.body.createControlRange();n.addElement(r);n.select()}}if(k.activeEditor!=u){if((o=k.activeEditor)!=null){o.onDeactivate.dispatch(o,u)}u.onActivate.dispatch(u,o)}k._setActive(u)},execCallback:function(q){var m=this,p=m.settings[q],o;if(!p){return}if(m.callbackLookup&&(o=m.callbackLookup[q])){p=o.func;o=o.scope}if(d(p,"string")){o=p.replace(/\.\w+$/,"");o=o?k.resolve(o):0;p=k.resolve(p);m.callbackLookup=m.callbackLookup||{};m.callbackLookup[q]={func:p,scope:o}}return p.apply(o||m,Array.prototype.slice.call(arguments,1))},translate:function(m){var o=this.settings.language||"en",n=k.i18n;if(!m){return""}return n[o+"."+m]||m.replace(/\{\#([^\}]+)\}/g,function(q,p){return n[o+"."+p]||"{#"+p+"}"})},getLang:function(o,m){return k.i18n[(this.settings.language||"en")+"."+o]||(d(m)?m:"{#"+o+"}")},getParam:function(t,q,m){var r=k.trim,p=d(this.settings[t])?this.settings[t]:q,s;if(m==="hash"){s={};if(d(p,"string")){i(p.indexOf("=")>0?p.split(/[;,](?![^=;,]*(?:[;,]|$))/):p.split(","),function(n){n=n.split("=");if(n.length>1){s[r(n[0])]=r(n[1])}else{s[r(n[0])]=r(n)}})}else{s=p}return s}return p},nodeChanged:function(q){var m=this,n=m.selection,p;if(m.initialized){q=q||{};p=n.getStart()||m.getBody();p=b&&p.ownerDocument!=m.getDoc()?m.getBody():p;q.parents=[];m.dom.getParent(p,function(o){if(o.nodeName=="BODY"){return true}q.parents.push(o)});m.onNodeChange.dispatch(m,q?q.controlManager||m.controlManager:m.controlManager,p,n.isCollapsed(),q)}},addButton:function(n,o){var m=this;m.buttons=m.buttons||{};m.buttons[n]=o},addCommand:function(m,o,n){this.execCommands[m]={func:o,scope:n||this}},addQueryStateHandler:function(m,o,n){this.queryStateCommands[m]={func:o,scope:n||this}},addQueryValueHandler:function(m,o,n){this.queryValueCommands[m]={func:o,scope:n||this}},addShortcut:function(o,q,m,p){var n=this,r;if(n.settings.custom_shortcuts===false){return false}n.shortcuts=n.shortcuts||{};if(d(m,"string")){r=m;m=function(){n.execCommand(r,false,null)}}if(d(m,"object")){r=m;m=function(){n.execCommand(r[0],r[1],r[2])}}i(g(o),function(s){var t={func:m,scope:p||this,desc:n.translate(q),alt:false,ctrl:false,shift:false};i(g(s,"+"),function(u){switch(u){case"alt":case"ctrl":case"shift":t[u]=true;break;default:t.charCode=u.charCodeAt(0);t.keyCode=u.toUpperCase().charCodeAt(0)}});n.shortcuts[(t.ctrl?"ctrl":"")+","+(t.alt?"alt":"")+","+(t.shift?"shift":"")+","+t.keyCode]=t});return true},execCommand:function(u,r,x,m){var p=this,q=0,v,n;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(u)&&(!m||!m.skip_focus)){p.focus()}m=f({},m);p.onBeforeExecCommand.dispatch(p,u,r,x,m);if(m.terminate){return false}if(p.execCallback("execcommand_callback",p.id,p.selection.getNode(),u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(v=p.execCommands[u]){n=v.func.call(v.scope,r,x);if(n!==true){p.onExecCommand.dispatch(p,u,r,x,m);return n}}i(p.plugins,function(o){if(o.execCommand&&o.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);q=1;return false}});if(q){return true}if(p.theme&&p.theme.execCommand&&p.theme.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(p.editorCommands.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}p.getDoc().execCommand(u,r,x);p.onExecCommand.dispatch(p,u,r,x,m)},queryCommandState:function(q){var n=this,r,p;if(n._isHidden()){return}if(r=n.queryStateCommands[q]){p=r.func.call(r.scope);if(p!==true){return p}}r=n.editorCommands.queryCommandState(q);if(r!==-1){return r}try{return this.getDoc().queryCommandState(q)}catch(m){}},queryCommandValue:function(r){var n=this,q,p;if(n._isHidden()){return}if(q=n.queryValueCommands[r]){p=q.func.call(q.scope);if(p!==true){return p}}q=n.editorCommands.queryCommandValue(r);if(d(q)){return q}try{return this.getDoc().queryCommandValue(r)}catch(m){}},show:function(){var m=this;l.show(m.getContainer());l.hide(m.id);m.load()},hide:function(){var m=this,n=m.getDoc();if(b&&n){n.execCommand("SelectAll")}m.save();l.hide(m.getContainer());l.setStyle(m.id,"display",m.orgDisplay)},isHidden:function(){return !l.isHidden(this.id)},setProgressState:function(m,n,p){this.onSetProgressState.dispatch(this,m,n,p);return m},load:function(q){var m=this,p=m.getElement(),n;if(p){q=q||{};q.load=true;n=m.setContent(d(p.value)?p.value:p.innerHTML,q);q.element=p;if(!q.no_events){m.onLoadContent.dispatch(m,q)}q.element=p=null;return n}},save:function(r){var m=this,q=m.getElement(),n,p;if(!q||!m.initialized){return}r=r||{};r.save=true;r.element=q;n=r.content=m.getContent(r);if(!r.no_events){m.onSaveContent.dispatch(m,r)}n=r.content;if(!/TEXTAREA|INPUT/i.test(q.nodeName)){q.innerHTML=n;if(p=l.getParent(m.id,"form")){i(p.elements,function(o){if(o.name==m.id){o.value=n;return false}})}}else{q.value=n}r.element=q=null;return n},setContent:function(r,p){var o=this,n,m=o.getBody(),q;p=p||{};p.format=p.format||"html";p.set=true;p.content=r;if(!p.no_events){o.onBeforeSetContent.dispatch(o,p)}r=p.content;if(!k.isIE&&(r.length===0||/^\s+$/.test(r))){q=o.settings.forced_root_block;if(q){r="<"+q+'><br data-mce-bogus="1"></'+q+">"}else{r='<br data-mce-bogus="1">'}m.innerHTML=r;o.selection.select(m,true);o.selection.collapse(true);return}if(p.format!=="raw"){r=new k.html.Serializer({},o.schema).serialize(o.parser.parse(r))}p.content=k.trim(r);o.dom.setHTML(m,p.content);if(!p.no_events){o.onSetContent.dispatch(o,p)}o.selection.normalize();return p.content},getContent:function(n){var m=this,o;n=n||{};n.format=n.format||"html";n.get=true;n.getInner=true;if(!n.no_events){m.onBeforeGetContent.dispatch(m,n)}if(n.format=="raw"){o=m.getBody().innerHTML}else{o=m.serializer.serialize(m.getBody(),n)}n.content=k.trim(o);if(!n.no_events){m.onGetContent.dispatch(m,n)}return n.content},isDirty:function(){var m=this;return k.trim(m.startContent)!=k.trim(m.getContent({format:"raw",no_events:1}))&&!m.isNotDirty},getContainer:function(){var m=this;if(!m.container){m.container=l.get(m.editorContainer||m.id+"_parent")}return m.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return l.get(this.settings.content_element||this.id)},getWin:function(){var m=this,n;if(!m.contentWindow){n=l.get(m.id+"_ifr");if(n){m.contentWindow=n.contentWindow}}return m.contentWindow},getDoc:function(){var m=this,n;if(!m.contentDocument){n=m.getWin();if(n){m.contentDocument=n.document}}return m.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(o,n,q){var m=this,p=m.settings;if(p.urlconverter_callback){return m.execCallback("urlconverter_callback",o,q,true,n)}if(!p.convert_urls||(q&&q.nodeName=="LINK")||o.indexOf("file:")===0){return o}if(p.relative_urls){return m.documentBaseURI.toRelative(o)}o=m.documentBaseURI.toAbsolute(o,p.remove_script_host);return o},addVisual:function(q){var n=this,o=n.settings,p=n.dom,m;q=q||n.getBody();if(!d(n.hasVisual)){n.hasVisual=o.visual}i(p.select("table,a",q),function(s){var r;switch(s.nodeName){case"TABLE":m=o.visual_table_class||"mceItemTable";r=p.getAttrib(s,"border");if(!r||r=="0"){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}return;case"A":r=p.getAttrib(s,"name");m="mceItemAnchor";if(r){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}return}});n.onVisualAid.dispatch(n,q,n.hasVisual)},remove:function(){var m=this,n=m.getContainer();if(!m.removed){m.removed=1;m.hide();if(!m.settings.content_editable){j.clear(m.getWin());j.clear(m.getDoc())}j.clear(m.getBody());j.clear(m.formElement);j.unbind(n);m.execCallback("remove_instance_callback",m);m.onRemove.dispatch(m);m.onExecCommand.listeners=[];k.remove(m);l.remove(n)}},destroy:function(n){var m=this;if(m.destroyed){return}if(a){j.unbind(m.getDoc());j.unbind(m.getWin());j.unbind(m.getBody())}if(!n){k.removeUnload(m.destroy);tinyMCE.onBeforeUnload.remove(m._beforeUnload);if(m.theme&&m.theme.destroy){m.theme.destroy()}m.controlManager.destroy();m.selection.destroy();m.dom.destroy()}if(m.formElement){m.formElement.submit=m.formElement._mceOldSubmit;m.formElement._mceOldSubmit=null}m.contentAreaContainer=m.formElement=m.container=m.settings.content_element=m.bodyElement=m.contentDocument=m.contentWindow=null;if(m.selection){m.selection=m.selection.win=m.selection.dom=m.selection.dom.doc=null}m.destroyed=1},_refreshContentEditable:function(){var n=this,m,o;if(n._isHidden()){m=n.getBody();o=m.parentNode;o.removeChild(m);o.appendChild(m);m.focus()}},_isHidden:function(){var m;if(!a){return 0}m=this.selection.getSel();return(!m||!m.rangeCount||m.rangeCount===0)}})})(tinymce);(function(a){var b=a.each;a.Editor.prototype.setupEvents=function(){var c=this,d=c.settings;b(["onPreInit","onBeforeRenderUI","onPostRender","onLoad","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState","onSetAttrib"],function(e){c[e]=new a.util.Dispatcher(c)});if(d.cleanup_callback){c.onBeforeSetContent.add(function(e,f){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)});c.onPreProcess.add(function(e,f){if(f.set){e.execCallback("cleanup_callback","insert_to_editor_dom",f.node,f)}if(f.get){e.execCallback("cleanup_callback","get_from_editor_dom",f.node,f)}});c.onPostProcess.add(function(e,f){if(f.set){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)}if(f.get){f.content=e.execCallback("cleanup_callback","get_from_editor",f.content,f)}})}if(d.save_callback){c.onGetContent.add(function(e,f){if(f.save){f.content=e.execCallback("save_callback",e.id,f.content,e.getBody())}})}if(d.handle_event_callback){c.onEvent.add(function(f,g,h){if(c.execCallback("handle_event_callback",g,f,h)===false){Event.cancel(g)}})}if(d.handle_node_change_callback){c.onNodeChange.add(function(f,e,g){f.execCallback("handle_node_change_callback",f.id,g,-1,-1,true,f.selection.isCollapsed())})}if(d.save_callback){c.onSaveContent.add(function(e,g){var f=e.execCallback("save_callback",e.id,g.content,e.getBody());if(f){g.content=f}})}if(d.onchange_callback){c.onChange.add(function(f,e){f.execCallback("onchange_callback",f,e)})}};a.Editor.prototype.bindNativeEvents=function(){var l=this,f,d=l.settings,e=l.dom,h;h={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function c(i,m){var n=i.type;if(l.removed){return}if(l.onEvent.dispatch(l,i,m)!==false){l[h[i.fakeType||i.type]].dispatch(l,i,m)}}function j(i){l.focus(true)}function k(){l.selection.normalize();l.nodeChanged()}b(h,function(m,n){var i=d.content_editable?l.getBody():l.getDoc();switch(n){case"contextmenu":e.bind(i,n,c);break;case"paste":e.bind(l.getBody(),n,c);break;case"submit":case"reset":e.bind(l.getElement().form||a.DOM.getParent(l.id,"form"),n,c);break;default:e.bind(i,n,c)}});e.bind(d.content_editable?l.getBody():(a.isGecko?l.getDoc():l.getWin()),"focus",function(i){l.focus(true)});if(d.content_editable&&a.isOpera){e.bind(l.getBody(),"click",j);e.bind(l.getBody(),"keydown",j)}l.onMouseUp.add(k);l.onKeyUp.add(function(i,n){var m=n.keyCode;if((m>=33&&m<=36)||(m>=37&&m<=40)||m==13||m==45||m==46||m==8||(a.isMac&&(m==91||m==93))||n.ctrlKey){k()}});l.onReset.add(function(){l.setContent(l.startContent,{format:"raw"})});function g(m,i){if(m.altKey||m.ctrlKey||m.metaKey){b(l.shortcuts,function(n){var o=a.isMac?m.metaKey:m.ctrlKey;if(n.ctrl!=o||n.alt!=m.altKey||n.shift!=m.shiftKey){return}if(m.keyCode==n.keyCode||(m.charCode&&m.charCode==n.charCode)){m.preventDefault();if(i){n.func.call(n.scope)}return true}})}}l.onKeyUp.add(function(i,m){g(m)});l.onKeyPress.add(function(i,m){g(m)});l.onKeyDown.add(function(i,m){g(m,true)});if(a.isOpera){l.onClick.add(function(i,m){m.preventDefault()})}}})(tinymce);(function(d){var e=d.each,b,a=true,c=false;d.EditorCommands=function(n){var m=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,q=n.formatter,o;function r(z,y,x){var v;z=z.toLowerCase();if(v=j.exec[z]){v(z,y,x);return a}return c}function l(x){var v;x=x.toLowerCase();if(v=j.state[x]){return v(x)}return -1}function h(x){var v;x=x.toLowerCase();if(v=j.value[x]){return v(x)}return c}function u(v,x){x=x||"exec";e(v,function(z,y){e(y.toLowerCase().split(","),function(A){j[x][A]=z})})}d.extend(this,{execCommand:r,queryCommandState:l,queryCommandValue:h,addCommands:u});function f(y,x,v){if(x===b){x=c}if(v===b){v=null}return n.getDoc().execCommand(y,x,v)}function t(v){return q.match(v)}function s(v,x){q.toggle(v,x?{value:x}:b)}function i(v){o=p.getBookmark(v)}function g(){p.moveToBookmark(o)}u({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(z){var y=n.getDoc(),v;try{f(z)}catch(x){v=a}if(v||!y.queryCommandSupported(z)){if(d.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(A){if(A){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(v){if(p.isCollapsed()){p.select(p.getNode())}f(v);p.collapse(c)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){var x=v.substring(7);e("left,center,right,full".split(","),function(y){if(x!=y){q.remove("align"+y)}});s("align"+x);r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(y){var v,x;f(y);v=m.getParent(p.getNode(),"ol,ul");if(v){x=v.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(x.nodeName)){i();m.split(x,v);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){s(v)},"ForeColor,HiliteColor,FontName":function(y,x,v){s(y,v)},FontSize:function(z,y,x){var v,A;if(x>=1&&x<=7){A=d.explode(k.font_size_style_values);v=d.explode(k.font_size_classes);if(v){x=v[x-1]||x}else{x=A[x-1]||x}}s(z,x)},RemoveFormat:function(v){q.remove(v)},mceBlockQuote:function(v){s("blockquote")},FormatBlock:function(y,x,v){return s(v||"p")},mceCleanup:function(){var v=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(v)},mceRemoveNode:function(z,y,x){var v=x||p.getNode();if(v!=n.getBody()){i();n.dom.remove(v,a);g()}},mceSelectNodeDepth:function(z,y,x){var v=0;m.getParent(p.getNode(),function(A){if(A.nodeType==1&&v++==x){p.select(A);return c}},n.getBody())},mceSelectNode:function(y,x,v){p.select(v)},mceInsertContent:function(B,I,K){var y,J,E,z,F,G,D,C,L,x,A,M,v,H;y=n.parser;J=new d.html.Serializer({},n.schema);v='<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';G={content:K,format:"html"};p.onBeforeSetContent.dispatch(p,G);K=G.content;if(K.indexOf("{$caret}")==-1){K+="{$caret}"}K=K.replace(/\{\$caret\}/,v);if(!p.isCollapsed()){n.getDoc().execCommand("Delete",false,null)}E=p.getNode();G={context:E.nodeName.toLowerCase()};F=y.parse(K,G);A=F.lastChild;if(A.attr("id")=="mce_marker"){D=A;for(A=A.prev;A;A=A.walk(true)){if(A.type==3||!m.isBlock(A.name)){A.parent.insert(D,A,A.name==="br");break}}}if(!G.invalid){K=J.serialize(F);A=E.firstChild;M=E.lastChild;if(!A||(A===M&&A.nodeName==="BR")){m.setHTML(E,K)}else{p.setContent(K)}}else{p.setContent(v);E=n.selection.getNode();z=n.getBody();if(E.nodeType==9){E=A=z}else{A=E}while(A!==z){E=A;A=A.parentNode}K=E==z?z.innerHTML:m.getOuterHTML(E);K=J.serialize(y.parse(K.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return J.serialize(F)})));if(E==z){m.setHTML(z,K)}else{m.setOuterHTML(E,K)}}D=m.get("mce_marker");C=m.getRect(D);L=m.getViewPort(n.getWin());if((C.y+C.h>L.y+L.h||C.y<L.y)||(C.x>L.x+L.w||C.x<L.x)){H=d.isIE?n.getDoc().documentElement:n.getBody();H.scrollLeft=C.x;H.scrollTop=C.y-L.h+25}x=m.createRng();A=D.previousSibling;if(A&&A.nodeType==3){x.setStart(A,A.nodeValue.length)}else{x.setStartBefore(D);x.setEndBefore(D)}m.remove(D);p.setRng(x);p.onSetContent.dispatch(p,G);n.addVisual()},mceInsertRawHTML:function(y,x,v){p.setContent("tiny_mce_marker");n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return v}))},mceSetContent:function(y,x,v){n.setContent(v)},"Indent,Outdent":function(z){var x,v,y;x=k.indentation;v=/[a-z%]+$/i.exec(x);x=parseInt(x);if(!l("InsertUnorderedList")&&!l("InsertOrderedList")){if(!k.forced_root_block&&!m.getParent(p.getNode(),m.isBlock)){q.apply("div")}e(p.getSelectedBlocks(),function(A){if(z=="outdent"){y=Math.max(0,parseInt(A.style.paddingLeft||0)-x);m.setStyle(A,"paddingLeft",y?y+v:"")}else{m.setStyle(A,"paddingLeft",(parseInt(A.style.paddingLeft||0)+x)+v)}})}else{f(z)}},mceRepaint:function(){var x;if(d.isGecko){try{i(a);if(p.getSel()){p.getSel().selectAllChildren(n.getBody())}p.collapse(a);g()}catch(v){}}},mceToggleFormat:function(y,x,v){q.toggle(v)},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(y,x,v){n.execCommand("mceInsertContent",false,v.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(z,y,x){var v;if(typeof(x)=="string"){x={href:x}}v=m.getParent(p.getNode(),"a");x.href=x.href.replace(" ","%20");if(!v||!x.href){q.remove("link")}if(x.href){q.apply("link",x,v)}},selectAll:function(){var x=m.getRoot(),v=m.createRng();v.setStart(x,0);v.setEnd(x,x.childNodes.length);n.selection.setRng(v)}});u({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(z){var x="align"+z.substring(7);var v=p.isCollapsed()?[m.getParent(p.getNode(),m.isBlock)]:p.getSelectedBlocks();var y=d.map(v,function(A){return !!q.matchNode(A,x)});return d.inArray(y,a)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){return t(v)},mceBlockQuote:function(){return t("blockquote")},Outdent:function(){var v;if(k.inline_styles){if((v=m.getParent(p.getStart(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}if((v=m.getParent(p.getEnd(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}}return l("InsertUnorderedList")||l("InsertOrderedList")||(!k.inline_styles&&!!m.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(v){return m.getParent(p.getNode(),v=="insertunorderedlist"?"UL":"OL")}},"state");u({"FontSize,FontName":function(y){var x=0,v;if(v=m.getParent(p.getNode(),"span")){if(y=="fontsize"){x=v.style.fontSize}else{x=v.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return x}},"value");u({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(h){var l,i=0,e=[],g,k,j,f;function c(){return b.trim(h.getContent({format:"raw",no_events:1}).replace(/<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g,""))}function d(){l.typing=false;l.add()}k=new a(l);j=new a(l);f=new a(l);k.add(function(m,n){if(m.hasUndo()){return h.onChange.dispatch(h,n,m)}});j.add(function(m,n){return h.onUndo.dispatch(h,n,m)});f.add(function(m,n){return h.onRedo.dispatch(h,n,m)});h.onInit.add(function(){l.add()});h.onBeforeExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.beforeChange()}});h.onExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.add()}});h.onSaveContent.add(d);h.dom.bind(h.dom.getRoot(),"dragend",d);h.dom.bind(h.getDoc(),b.isGecko?"blur":"focusout",function(m){if(!h.removed&&l.typing){d()}});h.onKeyUp.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45||n==13||o.ctrlKey){d()}});h.onKeyDown.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45){if(l.typing){d()}return}if((n<16||n>20)&&n!=224&&n!=91&&!l.typing){l.beforeChange();l.typing=true;l.add()}});h.onMouseDown.add(function(m,n){if(l.typing){d()}});h.addShortcut("ctrl+z","undo_desc","Undo");h.addShortcut("ctrl+y","redo_desc","Redo");l={data:e,typing:false,onAdd:k,onUndo:j,onRedo:f,beforeChange:function(){g=h.selection.getBookmark(2,true)},add:function(p){var m,n=h.settings,o;p=p||{};p.content=c();o=e[i];if(o&&o.content==p.content){return null}if(e[i]){e[i].beforeBookmark=g}if(n.custom_undo_redo_levels){if(e.length>n.custom_undo_redo_levels){for(m=0;m<e.length-1;m++){e[m]=e[m+1]}e.length--;i=e.length}}p.bookmark=h.selection.getBookmark(2,true);if(i<e.length-1){e.length=i+1}e.push(p);i=e.length-1;l.onAdd.dispatch(l,p);h.isNotDirty=0;return p},undo:function(){var n,m;if(l.typing){l.add();l.typing=false}if(i>0){n=e[--i];h.setContent(n.content,{format:"raw"});h.selection.moveToBookmark(n.beforeBookmark);l.onUndo.dispatch(l,n)}return n},redo:function(){var m;if(i<e.length-1){m=e[++i];h.setContent(m.content,{format:"raw"});h.selection.moveToBookmark(m.bookmark);l.onRedo.dispatch(l,m)}return m},clear:function(){e=[];i=0;l.typing=false},hasUndo:function(){return i>0||this.typing},hasRedo:function(){return i<e.length-1&&!this.typing}};return l}})(tinymce);tinymce.ForceBlocks=function(c){var b=c.settings,e=c.dom,a=c.selection,d=c.schema.getBlockElements();function f(){var j=a.getStart(),h=c.getBody(),g,k,o,r,q,i,l,m=-16777215,p;if(!j||j.nodeType!==1||!b.forced_root_block){return}while(j&&j!=h){if(d[j.nodeName]){return}j=j.parentNode}g=a.getRng();if(g.setStart){k=g.startContainer;o=g.startOffset;r=g.endContainer;q=g.endOffset}else{if(g.item){j=g.item(0);g=c.getDoc().body.createTextRange();g.moveToElementText(j)}tmpRng=g.duplicate();tmpRng.collapse(true);o=tmpRng.move("character",m)*-1;if(!tmpRng.collapsed){tmpRng=g.duplicate();tmpRng.collapse(false);q=(tmpRng.move("character",m)*-1)-o}}j=h.firstChild;while(j){if(j.nodeType===3||(j.nodeType==1&&!d[j.nodeName])){if(!i){i=e.create(b.forced_root_block);j.parentNode.insertBefore(i,j);p=true}l=j;j=j.nextSibling;i.appendChild(l)}else{i=null;j=j.nextSibling}}if(g.setStart){g.setStart(k,o);g.setEnd(r,q);a.setRng(g)}else{try{g=c.getDoc().body.createTextRange();g.moveToElementText(h);g.collapse(true);g.moveStart("character",o);if(q>0){g.moveEnd("character",q)}g.select()}catch(n){}}if(p){c.nodeChanged()}}if(b.forced_root_block){c.onKeyUp.add(f);c.onNodeChange.add(f)}};(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(i){var h,g=this,f=g.editor;d(f.plugins,function(j){if(j.createControl){h=j.createControl(i,g);if(h){return false}}});switch(i){case"|":case"separator":return g.createSeparator()}if(!h&&f.buttons&&(h=f.buttons[i])){return g.createButton(i,h)}return g.add(h)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}n["class"]+=i.settings.directionality=="rtl"?" mceRtl":"";f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){if(p.cmd){i.execCommand(p.cmd,p.ui||false,p.value)}}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(f,n,h){var l=this,j=l.editor,i,k,m;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,scope:n.scope,control_manager:l},n);f=l.prefix+f;function g(o){return o.settings.use_accessible_selects&&!c.isGecko}if(j.settings.use_native_selects||g(j)){k=new c.ui.NativeListBox(f,n)}else{m=h||l._cls.listbox||c.ui.ListBox;k=new m(f,n,j)}l.controls[f]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){j.bookmark=j.selection.getBookmark(1)});a.add(o,"focus",function(){j.selection.moveToBookmark(j.bookmark);j.bookmark=null})})}if(k.hideMenu){j.onMouseDown.add(k.hideMenu,k)}return l.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i,g);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i,g)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i,g));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n,j);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createToolbarGroup:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||this._cls.toolbarGroup||c.ui.ToolbarGroup;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},resizeBy:function(f,g,h){h.resizeBy(f,g)},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.Formatter=function(Y){var O={},R=a.each,c=Y.dom,r=Y.selection,t=a.dom.TreeWalker,M=new a.dom.RangeUtils(c),d=Y.schema.isValidChild,H=c.isBlock,m=Y.settings.forced_root_block,s=c.nodeIndex,G=a.isGecko?"\u200B":"\uFEFF",e=/^(src|href|style)$/,V=false,C=true,D,x=c.getContentEditable;function A(Z){return Z instanceof Array}function n(aa,Z){return c.getParents(aa,Z,c.getRoot())}function b(Z){return Z.nodeType===1&&Z.id==="_mce_caret"}function j(){l({alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignfull:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},wrap_links:false},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},wrap_links:false},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(Z){return true},onformat:function(ab,Z,aa){R(aa,function(ad,ac){c.setAttrib(ab,ac,ad)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});R("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(Z){l(Z,{block:Z,remove:"all"})});l(Y.settings.formats)}function U(){Y.addShortcut("ctrl+b","bold_desc","Bold");Y.addShortcut("ctrl+i","italic_desc","Italic");Y.addShortcut("ctrl+u","underline_desc","Underline");for(var Z=1;Z<=6;Z++){Y.addShortcut("ctrl+"+Z,"",["FormatBlock",false,"h"+Z])}Y.addShortcut("ctrl+7","",["FormatBlock",false,"p"]);Y.addShortcut("ctrl+8","",["FormatBlock",false,"div"]);Y.addShortcut("ctrl+9","",["FormatBlock",false,"address"])}function T(Z){return Z?O[Z]:O}function l(Z,aa){if(Z){if(typeof(Z)!=="string"){R(Z,function(ac,ab){l(ab,ac)})}else{aa=aa.length?aa:[aa];R(aa,function(ab){if(ab.deep===D){ab.deep=!ab.selector}if(ab.split===D){ab.split=!ab.selector||ab.inline}if(ab.remove===D&&ab.selector&&!ab.inline){ab.remove="none"}if(ab.selector&&ab.inline){ab.mixed=true;ab.block_expand=true}if(typeof(ab.classes)==="string"){ab.classes=ab.classes.split(/\s+/)}});O[Z]=aa}}}var i=function(aa){var Z;Y.dom.getParent(aa,function(ab){Z=Y.dom.getStyle(ab,"text-decoration");return Z&&Z!=="none"});return Z};var K=function(Z){var aa;if(Z.nodeType===1&&Z.parentNode&&Z.parentNode.nodeType===1){aa=i(Z.parentNode);if(Y.dom.getStyle(Z,"color")&&aa){Y.dom.setStyle(Z,"text-decoration",aa)}else{if(Y.dom.getStyle(Z,"textdecoration")===aa){Y.dom.setStyle(Z,"text-decoration",null)}}}};function W(ac,aj,ae){var af=T(ac),ak=af[0],ai,aa,ah,ag=r.isCollapsed();function Z(ao,an){an=an||ak;if(ao){if(an.onformat){an.onformat(ao,an,aj,ae)}R(an.styles,function(aq,ap){c.setStyle(ao,ap,q(aq,aj))});R(an.attributes,function(aq,ap){c.setAttrib(ao,ap,q(aq,aj))});R(an.classes,function(ap){ap=q(ap,aj);if(!c.hasClass(ao,ap)){c.addClass(ao,ap)}})}}function ad(){function ap(aw,au){var av=new t(au);for(ae=av.current();ae;ae=av.prev()){if(ae.childNodes.length>1||ae==aw||ae.tagName=="BR"){return ae}}}var ao=Y.selection.getRng();var at=ao.startContainer;var an=ao.endContainer;if(at!=an&&ao.endOffset===0){var ar=ap(at,an);var aq=ar.nodeType==3?ar.length:ar.childNodes.length;ao.setEnd(ar,aq)}return ao}function ab(aq,aw,au,at,ao){var an=[],ap=-1,av,ay=-1,ar=-1,ax;R(aq.childNodes,function(aA,az){if(aA.nodeName==="UL"||aA.nodeName==="OL"){ap=az;av=aA;return false}});R(aq.childNodes,function(aA,az){if(aA.nodeName==="SPAN"&&c.getAttrib(aA,"data-mce-type")=="bookmark"){if(aA.id==aw.id+"_start"){ay=az}else{if(aA.id==aw.id+"_end"){ar=az}}}});if(ap<=0||(ay<ap&&ar>ap)){R(a.grep(aq.childNodes),ao);return 0}else{ax=c.clone(au,V);R(a.grep(aq.childNodes),function(aA,az){if((ay<ap&&az<ap)||(ay>ap&&az>ap)){an.push(aA);aA.parentNode.removeChild(aA)}});if(ay<ap){aq.insertBefore(ax,av)}else{if(ay>ap){aq.insertBefore(ax,av.nextSibling)}}at.push(ax);R(an,function(az){ax.appendChild(az)});return ax}}function al(ao,aq,au){var an=[],at,ap,ar=true;at=ak.inline||ak.block;ap=c.create(at);Z(ap);M.walk(ao,function(av){var aw;function ax(ay){var aD,aB,az,aA,aC;aC=ar;aD=ay.nodeName.toLowerCase();aB=ay.parentNode.nodeName.toLowerCase();if(ay.nodeType===1&&x(ay)){aC=ar;ar=x(ay)==="true";aA=true}if(g(aD,"br")){aw=0;if(ak.block){c.remove(ay)}return}if(ak.wrapper&&y(ay,ac,aj)){aw=0;return}if(ar&&!aA&&ak.block&&!ak.wrapper&&I(aD)){ay=c.rename(ay,at);Z(ay);an.push(ay);aw=0;return}if(ak.selector){R(af,function(aE){if("collapsed" in aE&&aE.collapsed!==ag){return}if(c.is(ay,aE.selector)&&!b(ay)){Z(ay,aE);az=true}});if(!ak.inline||az){aw=0;return}}if(ar&&!aA&&d(at,aD)&&d(aB,at)&&!(!au&&ay.nodeType===3&&ay.nodeValue.length===1&&ay.nodeValue.charCodeAt(0)===65279)&&!b(ay)){if(!aw){aw=c.clone(ap,V);ay.parentNode.insertBefore(aw,ay);an.push(aw)}aw.appendChild(ay)}else{if(aD=="li"&&aq){aw=ab(ay,aq,ap,an,ax)}else{aw=0;R(a.grep(ay.childNodes),ax);if(aA){ar=aC}aw=0}}}R(av,ax)});if(ak.wrap_links===false){R(an,function(av){function aw(aA){var az,ay,ax;if(aA.nodeName==="A"){ay=c.clone(ap,V);an.push(ay);ax=a.grep(aA.childNodes);for(az=0;az<ax.length;az++){ay.appendChild(ax[az])}aA.appendChild(ay)}R(a.grep(aA.childNodes),aw)}aw(av)})}R(an,function(ax){var av;function ay(aA){var az=0;R(aA.childNodes,function(aB){if(!f(aB)&&!J(aB)){az++}});return az}function aw(az){var aB,aA;R(az.childNodes,function(aC){if(aC.nodeType==1&&!J(aC)&&!b(aC)){aB=aC;return V}});if(aB&&h(aB,ak)){aA=c.clone(aB,V);Z(aA);c.replace(aA,az,C);c.remove(aB,1)}return aA||az}av=ay(ax);if((an.length>1||!H(ax))&&av===0){c.remove(ax,1);return}if(ak.inline||ak.wrapper){if(!ak.exact&&av===1){ax=aw(ax)}R(af,function(az){R(c.select(az.inline,ax),function(aB){var aA;if(az.wrap_links===false){aA=aB.parentNode;do{if(aA.nodeName==="A"){return}}while(aA=aA.parentNode)}X(az,aj,aB,az.exact?aB:null)})});if(y(ax.parentNode,ac,aj)){c.remove(ax,1);ax=0;return C}if(ak.merge_with_parents){c.getParent(ax.parentNode,function(az){if(y(az,ac,aj)){c.remove(ax,1);ax=0;return C}})}if(ax&&ak.merge_siblings!==false){ax=u(E(ax),ax);ax=u(ax,E(ax,C))}}})}if(ak){if(ae){if(ae.nodeType){aa=c.createRng();aa.setStartBefore(ae);aa.setEndAfter(ae);al(p(aa,af),null,true)}else{al(ae,null,true)}}else{if(!ag||!ak.inline||c.select("td.mceSelected,th.mceSelected").length){var am=Y.selection.getNode();if(!m&&af[0].defaultBlock&&!c.getParent(am,c.isBlock)){W(af[0].defaultBlock)}Y.selection.setRng(ad());ai=r.getBookmark();al(p(r.getRng(C),af),ai);if(ak.styles&&(ak.styles.color||ak.styles.textDecoration)){a.walk(am,K,"childNodes");K(am)}r.moveToBookmark(ai);P(r.getRng(C));Y.nodeChanged()}else{S("apply",ac,aj)}}}}function B(ab,ak,ad){var ae=T(ab),am=ae[0],ai,ah,aa,aj=true;function ac(at){var ar,aq,ap,ao,av,au;if(at.nodeType===1&&x(at)){av=aj;aj=x(at)==="true";au=true}ar=a.grep(at.childNodes);if(aj&&!au){for(aq=0,ap=ae.length;aq<ap;aq++){if(X(ae[aq],ak,at,at)){break}}}if(am.deep){if(ar.length){for(aq=0,ap=ar.length;aq<ap;aq++){ac(ar[aq])}if(au){aj=av}}}}function af(ao){var ap;R(n(ao.parentNode).reverse(),function(aq){var ar;if(!ap&&aq.id!="_start"&&aq.id!="_end"){ar=y(aq,ab,ak);if(ar&&ar.split!==false){ap=aq}}});return ap}function Z(ar,ao,au,ax){var ay,aw,av,aq,at,ap;if(ar){ap=ar.parentNode;for(ay=ao.parentNode;ay&&ay!=ap;ay=ay.parentNode){aw=c.clone(ay,V);for(at=0;at<ae.length;at++){if(X(ae[at],ak,aw,aw)){aw=0;break}}if(aw){if(av){aw.appendChild(av)}if(!aq){aq=aw}av=aw}}if(ax&&(!am.mixed||!H(ar))){ao=c.split(ar,ao)}if(av){au.parentNode.insertBefore(av,au);aq.appendChild(au)}}return ao}function al(ao){return Z(af(ao),ao,ao,true)}function ag(aq){var ap=c.get(aq?"_start":"_end"),ao=ap[aq?"firstChild":"lastChild"];if(J(ao)){ao=ao[aq?"firstChild":"lastChild"]}c.remove(ap,true);return ao}function an(ao){var aq,ar,ap;ao=p(ao,ae,C);if(am.split){aq=L(ao,C);ar=L(ao);if(aq!=ar){if(/^(TR|TD)$/.test(aq.nodeName)&&aq.firstChild){aq=(aq.nodeName=="TD"?aq.firstChild:aq.firstChild.firstChild)||aq}aq=Q(aq,"span",{id:"_start","data-mce-type":"bookmark"});ar=Q(ar,"span",{id:"_end","data-mce-type":"bookmark"});al(aq);al(ar);aq=ag(C);ar=ag()}else{aq=ar=al(aq)}ao.startContainer=aq.parentNode;ao.startOffset=s(aq);ao.endContainer=ar.parentNode;ao.endOffset=s(ar)+1}M.walk(ao,function(at){R(at,function(au){ac(au);if(au.nodeType===1&&Y.dom.getStyle(au,"text-decoration")==="underline"&&au.parentNode&&i(au.parentNode)==="underline"){X({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,au)}})})}if(ad){if(ad.nodeType){aa=c.createRng();aa.setStartBefore(ad);aa.setEndAfter(ad);an(aa)}else{an(ad)}return}if(!r.isCollapsed()||!am.inline||c.select("td.mceSelected,th.mceSelected").length){ai=r.getBookmark();an(r.getRng(C));r.moveToBookmark(ai);if(am.inline&&k(ab,ak,r.getStart())){P(r.getRng(true))}Y.nodeChanged()}else{S("remove",ab,ak)}}function F(aa,ac,ab){var Z=T(aa);if(k(aa,ac,ab)&&(!("toggle" in Z[0])||Z[0].toggle)){B(aa,ac,ab)}else{W(aa,ac,ab)}}function y(aa,Z,af,ad){var ab=T(Z),ag,ae,ac;function ah(al,an,ao){var ak,am,ai=an[ao],aj;if(an.onmatch){return an.onmatch(al,an,ao)}if(ai){if(ai.length===D){for(ak in ai){if(ai.hasOwnProperty(ak)){if(ao==="attributes"){am=c.getAttrib(al,ak)}else{am=N(al,ak)}if(ad&&!am&&!an.exact){return}if((!ad||an.exact)&&!g(am,q(ai[ak],af))){return}}}}else{for(aj=0;aj<ai.length;aj++){if(ao==="attributes"?c.getAttrib(al,ai[aj]):N(al,ai[aj])){return an}}}}return an}if(ab&&aa){for(ae=0;ae<ab.length;ae++){ag=ab[ae];if(h(aa,ag)&&ah(aa,ag,"attributes")&&ah(aa,ag,"styles")){if(ac=ag.classes){for(ae=0;ae<ac.length;ae++){if(!c.hasClass(aa,ac[ae])){return}}}return ag}}}}function k(ab,ad,ac){var aa;function Z(ae){ae=c.getParent(ae,function(af){return !!y(af,ab,ad,true)});return y(ae,ab,ad)}if(ac){return Z(ac)}ac=r.getNode();if(Z(ac)){return C}aa=r.getStart();if(aa!=ac){if(Z(aa)){return C}}return V}function v(ag,af){var ad,ae=[],ac={},ab,aa,Z;ad=r.getStart();c.getParent(ad,function(aj){var ai,ah;for(ai=0;ai<ag.length;ai++){ah=ag[ai];if(!ac[ah]&&y(aj,ah,af)){ac[ah]=true;ae.push(ah)}}});return ae}function z(ad){var af=T(ad),ac,ab,ae,aa,Z;if(af){ac=r.getStart();ab=n(ac);for(aa=af.length-1;aa>=0;aa--){Z=af[aa].selector;if(!Z){return C}for(ae=ab.length-1;ae>=0;ae--){if(c.is(ab[ae],Z)){return C}}}}return V}a.extend(this,{get:T,register:l,apply:W,remove:B,toggle:F,match:k,matchAll:v,matchNode:y,canApply:z});j();U();function h(Z,aa){if(g(Z,aa.inline)){return C}if(g(Z,aa.block)){return C}if(aa.selector){return c.is(Z,aa.selector)}}function g(aa,Z){aa=aa||"";Z=Z||"";aa=""+(aa.nodeName||aa);Z=""+(Z.nodeName||Z);return aa.toLowerCase()==Z.toLowerCase()}function N(aa,Z){var ab=c.getStyle(aa,Z);if(Z=="color"||Z=="backgroundColor"){ab=c.toHex(ab)}if(Z=="fontWeight"&&ab==700){ab="bold"}return""+ab}function q(Z,aa){if(typeof(Z)!="string"){Z=Z(aa)}else{if(aa){Z=Z.replace(/%(\w+)/g,function(ac,ab){return aa[ab]||ac})}}return Z}function f(Z){return Z&&Z.nodeType===3&&/^([\t \r\n]+|)$/.test(Z.nodeValue)}function Q(ab,aa,Z){var ac=c.create(aa,Z);ab.parentNode.insertBefore(ac,ab);ac.appendChild(ab);return ac}function p(Z,ak,ac){var an,al,af,aj,ab=Z.startContainer,ag=Z.startOffset,ap=Z.endContainer,ai=Z.endOffset;function am(ax){var ar,av,aw,au,at,aq;ar=av=ax?ab:ap;at=ax?"previousSibling":"nextSibling";aq=c.getRoot();if(ar.nodeType==3&&!f(ar)){if(ax?ag>0:ai<ar.nodeValue.length){return ar}}for(;;){if(!ak[0].block_expand&&H(av)){return av}for(au=av[at];au;au=au[at]){if(!J(au)&&!f(au)){return av}}if(av.parentNode==aq){ar=av;break}av=av.parentNode}return ar}function ae(aq,ar){if(ar===D){ar=aq.nodeType===3?aq.length:aq.childNodes.length}while(aq&&aq.hasChildNodes()){aq=aq.childNodes[ar];if(aq){ar=aq.nodeType===3?aq.length:aq.childNodes.length}}return{node:aq,offset:ar}}if(ab.nodeType==1&&ab.hasChildNodes()){al=ab.childNodes.length-1;ab=ab.childNodes[ag>al?al:ag];if(ab.nodeType==3){ag=0}}if(ap.nodeType==1&&ap.hasChildNodes()){al=ap.childNodes.length-1;ap=ap.childNodes[ai>al?al:ai-1];if(ap.nodeType==3){ai=ap.nodeValue.length}}function ao(ar){var aq=ar;while(aq){if(aq.nodeType===1&&x(aq)){return x(aq)==="false"?aq:ar}aq=aq.parentNode}return ar}function ah(ar,aw,ay){var av,at,ax,aq;function au(aA,aC){var aD,az,aB=aA.nodeValue;if(typeof(aC)=="undefined"){aC=ay?aB.length:0}if(ay){aD=aB.lastIndexOf(" ",aC);az=aB.lastIndexOf("\u00a0",aC);aD=aD>az?aD:az;if(aD!==-1&&!ac){aD++}}else{aD=aB.indexOf(" ",aC);az=aB.indexOf("\u00a0",aC);aD=aD!==-1&&(az===-1||aD<az)?aD:az}return aD}if(ar.nodeType===3){ax=au(ar,aw);if(ax!==-1){return{container:ar,offset:ax}}aq=ar}av=new t(ar,c.getParent(ar,H)||Y.getBody());while(at=av[ay?"prev":"next"]()){if(at.nodeType===3){aq=at;ax=au(at);if(ax!==-1){return{container:at,offset:ax}}}else{if(H(at)){break}}}if(aq){if(ay){aw=0}else{aw=aq.length}return{container:aq,offset:aw}}}function ad(ar,aq){var at,au,aw,av;if(ar.nodeType==3&&ar.nodeValue.length===0&&ar[aq]){ar=ar[aq]}at=n(ar);for(au=0;au<at.length;au++){for(aw=0;aw<ak.length;aw++){av=ak[aw];if("collapsed" in av&&av.collapsed!==Z.collapsed){continue}if(c.is(at[au],av.selector)){return at[au]}}}return ar}function aa(ar,aq,au){var at;if(!ak[0].wrapper){at=c.getParent(ar,ak[0].block)}if(!at){at=c.getParent(ar.nodeType==3?ar.parentNode:ar,H)}if(at&&ak[0].wrapper){at=n(at,"ul,ol").reverse()[0]||at}if(!at){at=ar;while(at[aq]&&!H(at[aq])){at=at[aq];if(g(at,"br")){break}}}return at||ar}ab=ao(ab);ap=ao(ap);if(J(ab.parentNode)||J(ab)){ab=J(ab)?ab:ab.parentNode;ab=ab.nextSibling||ab;if(ab.nodeType==3){ag=0}}if(J(ap.parentNode)||J(ap)){ap=J(ap)?ap:ap.parentNode;ap=ap.previousSibling||ap;if(ap.nodeType==3){ai=ap.length}}if(ak[0].inline){if(Z.collapsed){aj=ah(ab,ag,true);if(aj){ab=aj.container;ag=aj.offset}aj=ah(ap,ai);if(aj){ap=aj.container;ai=aj.offset}}af=ae(ap,ai);if(af.node){while(af.node&&af.offset===0&&af.node.previousSibling){af=ae(af.node.previousSibling)}if(af.node&&af.offset>0&&af.node.nodeType===3&&af.node.nodeValue.charAt(af.offset-1)===" "){if(af.offset>1){ap=af.node;ap.splitText(af.offset-1)}}}}if(ak[0].inline||ak[0].block_expand){if(!ak[0].inline||(ab.nodeType!=3||ag===0)){ab=am(true)}if(!ak[0].inline||(ap.nodeType!=3||ai===ap.nodeValue.length)){ap=am()}}if(ak[0].selector&&ak[0].expand!==V&&!ak[0].inline){ab=ad(ab,"previousSibling");ap=ad(ap,"nextSibling")}if(ak[0].block||ak[0].selector){ab=aa(ab,"previousSibling");ap=aa(ap,"nextSibling");if(ak[0].block){if(!H(ab)){ab=am(true)}if(!H(ap)){ap=am()}}}if(ab.nodeType==1){ag=s(ab);ab=ab.parentNode}if(ap.nodeType==1){ai=s(ap)+1;ap=ap.parentNode}return{startContainer:ab,startOffset:ag,endContainer:ap,endOffset:ai}}function X(af,ae,ac,Z){var ab,aa,ad;if(!h(ac,af)){return V}if(af.remove!="all"){R(af.styles,function(ah,ag){ah=q(ah,ae);if(typeof(ag)==="number"){ag=ah;Z=0}if(!Z||g(N(Z,ag),ah)){c.setStyle(ac,ag,"")}ad=1});if(ad&&c.getAttrib(ac,"style")==""){ac.removeAttribute("style");ac.removeAttribute("data-mce-style")}R(af.attributes,function(ai,ag){var ah;ai=q(ai,ae);if(typeof(ag)==="number"){ag=ai;Z=0}if(!Z||g(c.getAttrib(Z,ag),ai)){if(ag=="class"){ai=c.getAttrib(ac,ag);if(ai){ah="";R(ai.split(/\s+/),function(aj){if(/mce\w+/.test(aj)){ah+=(ah?" ":"")+aj}});if(ah){c.setAttrib(ac,ag,ah);return}}}if(ag=="class"){ac.removeAttribute("className")}if(e.test(ag)){ac.removeAttribute("data-mce-"+ag)}ac.removeAttribute(ag)}});R(af.classes,function(ag){ag=q(ag,ae);if(!Z||c.hasClass(Z,ag)){c.removeClass(ac,ag)}});aa=c.getAttribs(ac);for(ab=0;ab<aa.length;ab++){if(aa[ab].nodeName.indexOf("_")!==0){return V}}}if(af.remove!="none"){o(ac,af);return C}}function o(ab,ac){var Z=ab.parentNode,aa;function ad(af,ae,ag){af=E(af,ae,ag);return !af||(af.nodeName=="BR"||H(af))}if(ac.block){if(!m){if(H(ab)&&!H(Z)){if(!ad(ab,V)&&!ad(ab.firstChild,C,1)){ab.insertBefore(c.create("br"),ab.firstChild)}if(!ad(ab,C)&&!ad(ab.lastChild,V,1)){ab.appendChild(c.create("br"))}}}else{if(Z==c.getRoot()){if(!ac.list_block||!g(ab,ac.list_block)){R(a.grep(ab.childNodes),function(ae){if(d(m,ae.nodeName.toLowerCase())){if(!aa){aa=Q(ae,m)}else{aa.appendChild(ae)}}else{aa=0}})}}}}if(ac.selector&&ac.inline&&!g(ac.inline,ab)){return}c.remove(ab,1)}function E(aa,Z,ab){if(aa){Z=Z?"nextSibling":"previousSibling";for(aa=ab?aa:aa[Z];aa;aa=aa[Z]){if(aa.nodeType==1||!f(aa)){return aa}}}}function J(Z){return Z&&Z.nodeType==1&&Z.getAttribute("data-mce-type")=="bookmark"}function u(ad,ac){var Z,ab,aa;function af(ai,ah){if(ai.nodeName!=ah.nodeName){return V}function ag(ak){var al={};R(c.getAttribs(ak),function(am){var an=am.nodeName.toLowerCase();if(an.indexOf("_")!==0&&an!=="style"){al[an]=c.getAttrib(ak,an)}});return al}function aj(an,am){var al,ak;for(ak in an){if(an.hasOwnProperty(ak)){al=am[ak];if(al===D){return V}if(an[ak]!=al){return V}delete am[ak]}}for(ak in am){if(am.hasOwnProperty(ak)){return V}}return C}if(!aj(ag(ai),ag(ah))){return V}if(!aj(c.parseStyle(c.getAttrib(ai,"style")),c.parseStyle(c.getAttrib(ah,"style")))){return V}return C}function ae(ah,ag){for(ab=ah;ab;ab=ab[ag]){if(ab.nodeType==3&&ab.nodeValue.length!==0){return ah}if(ab.nodeType==1&&!J(ab)){return ab}}return ah}if(ad&&ac){ad=ae(ad,"previousSibling");ac=ae(ac,"nextSibling");if(af(ad,ac)){for(ab=ad.nextSibling;ab&&ab!=ac;){aa=ab;ab=ab.nextSibling;ad.appendChild(aa)}c.remove(ac);R(a.grep(ac.childNodes),function(ag){ad.appendChild(ag)});return ad}}return ac}function I(Z){return/^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(Z)}function L(aa,ae){var Z,ad,ab,ac;Z=aa[ae?"startContainer":"endContainer"];ad=aa[ae?"startOffset":"endOffset"];if(Z.nodeType==1){ab=Z.childNodes.length-1;if(!ae&&ad){ad--}Z=Z.childNodes[ad>ab?ab:ad]}if(Z.nodeType===3&&ae&&ad>=Z.nodeValue.length){Z=new t(Z,Y.getBody()).next()||Z}if(Z.nodeType===3&&!ae&&ad===0){Z=new t(Z,Y.getBody()).prev()||Z}return Z}function S(ai,Z,ag){var aj="_mce_caret",aa=Y.settings.caret_debug;function ab(am){var al=c.create("span",{id:aj,"data-mce-bogus":true,style:aa?"color:red":""});if(am){al.appendChild(Y.getDoc().createTextNode(G))}return al}function ah(am,al){while(am){if((am.nodeType===3&&am.nodeValue!==G)||am.childNodes.length>1){return false}if(al&&am.nodeType===1){al.push(am)}am=am.firstChild}return true}function ae(al){while(al){if(al.id===aj){return al}al=al.parentNode}}function ad(al){var am;if(al){am=new t(al,al);for(al=am.current();al;al=am.next()){if(al.nodeType===3){return al}}}}function ac(an,am){var ao,al;if(!an){an=ae(r.getStart());if(!an){while(an=c.get(aj)){ac(an,false)}}}else{al=r.getRng(true);if(ah(an)){if(am!==false){al.setStartBefore(an);al.setEndBefore(an)}c.remove(an)}else{ao=ad(an);if(ao.nodeValue.charAt(0)===G){ao=ao.deleteData(0,1)}c.remove(an,1)}r.setRng(al)}}function af(){var an,al,ar,aq,ao,am,ap;an=r.getRng(true);aq=an.startOffset;am=an.startContainer;ap=am.nodeValue;al=ae(r.getStart());if(al){ar=ad(al)}if(ap&&aq>0&&aq<ap.length&&/\w/.test(ap.charAt(aq))&&/\w/.test(ap.charAt(aq-1))){ao=r.getBookmark();an.collapse(true);an=p(an,T(Z));an=M.split(an);W(Z,ag,an);r.moveToBookmark(ao)}else{if(!al||ar.nodeValue!==G){al=ab(true);ar=al.firstChild;an.insertNode(al);aq=1;W(Z,ag,al)}else{W(Z,ag,al)}r.setCursorLocation(ar,aq)}}function ak(){var al=r.getRng(true),am,ao,ar,aq,an,av,au=[],ap,at;am=al.startContainer;ao=al.startOffset;an=am;if(am.nodeType==3){if(ao!=am.nodeValue.length||am.nodeValue===G){aq=true}an=an.parentNode}while(an){if(y(an,Z,ag)){av=an;break}if(an.nextSibling){aq=true}au.push(an);an=an.parentNode}if(!av){return}if(aq){ar=r.getBookmark();al.collapse(true);al=p(al,T(Z),true);al=M.split(al);B(Z,ag,al);r.moveToBookmark(ar)}else{at=ab();an=at;for(ap=au.length-1;ap>=0;ap--){an.appendChild(c.clone(au[ap],false));an=an.firstChild}an.appendChild(c.doc.createTextNode(G));an=an.firstChild;c.insertAfter(at,av);r.setCursorLocation(an,1)}}if(!self._hasCaretEvents){Y.onBeforeGetContent.addToTop(function(){var al=[],am;if(ah(ae(r.getStart()),al)){am=al.length;while(am--){c.setAttrib(al[am],"data-mce-bogus","1")}}});a.each("onMouseUp onKeyUp".split(" "),function(al){Y[al].addToTop(function(){ac()})});Y.onKeyDown.addToTop(function(al,an){var am=an.keyCode;if(am==8||am==37||am==39){ac(ae(r.getStart()))}});r.onSetContent.add(function(){c.getParent(r.getStart(),function(al){if(al.id!==aj&&c.getAttrib(al,"data-mce-bogus")&&!c.isEmpty(al)){c.setAttrib(al,"data-mce-bogus",null)}})});self._hasCaretEvents=true}if(ai=="apply"){af()}else{ak()}}function P(aa){var Z=aa.startContainer,ag=aa.startOffset,ac,af,ae,ab,ad;if(Z.nodeType==3&&ag>=Z.nodeValue.length){ag=s(Z);Z=Z.parentNode;ac=true}if(Z.nodeType==1){ab=Z.childNodes;Z=ab[Math.min(ag,ab.length-1)];af=new t(Z,c.getParent(Z,c.isBlock));if(ag>ab.length-1||ac){af.next()}for(ae=af.current();ae;ae=af.next()){if(ae.nodeType==3&&!f(ae)){ad=c.create("a",null,G);ae.parentNode.insertBefore(ad,ae);aa.setStart(ae,0);r.setRng(aa);c.remove(ad);return}}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}if(c.inline_styles){h=e.explode(c.font_size_legacy_values);d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size,10)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});(function(b){var a=b.dom.TreeWalker;b.EnterKey=function(e){var h=e.dom,d=e.selection,c=e.settings,g=e.undoManager;function f(y){var u=d.getRng(true),C,i,x,t,o,H,n,j,l,s,E,v,z;function B(I){return I&&h.isBlock(I)&&!/^(TD|TH|CAPTION)$/.test(I.nodeName)&&!/^(fixed|absolute)/i.test(I.style.position)&&h.getContentEditable(I)!=="true"}function m(J){var O,M,I,P,N,L=J,K;I=h.createRng();if(J.hasChildNodes()){O=new a(J,J);while(M=O.current()){if(M.nodeType==3){I.setStart(M,0);I.setEnd(M,0);break}if(/^(BR|IMG)$/.test(M.nodeName)){I.setStartBefore(M);I.setEndBefore(M);break}L=M;M=O.next()}if(!M){I.setStart(L,0);I.setEnd(L,0)}}else{if(J.nodeName=="BR"){if(J.nextSibling&&h.isBlock(J.nextSibling)){if(!H||H<9){K=h.create("br");J.parentNode.insertBefore(K,J)}I.setStartBefore(J);I.setEndBefore(J)}else{I.setStartAfter(J);I.setEndAfter(J)}}else{I.setStart(J,0);I.setEnd(J,0)}}d.setRng(I);h.remove(K);N=h.getViewPort(e.getWin());P=h.getPos(J).y;if(P<N.y||P+25>N.y+N.h){e.getWin().scrollTo(0,P<N.y?P:P-N.h+25)}}function q(J){var K=x,M,L,I;M=J||s=="TABLE"?h.create(J||v):o.cloneNode(false);I=M;if(c.keep_styles!==false){do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(K.nodeName)){L=K.cloneNode(false);h.setAttrib(L,"id","");if(M.hasChildNodes()){L.appendChild(M.firstChild);M.appendChild(L)}else{I=L;M.appendChild(L)}}}while(K=K.parentNode)}if(!b.isIE){I.innerHTML="<br>"}return M}function p(L){var K,J,I;if(x.nodeType==3&&(L?t>0:t<x.nodeValue.length)){return false}if(x.parentNode==o&&z&&!L){return true}if(x.nodeName==="TABLE"||(x.previousSibling&&x.previousSibling.nodeName=="TABLE")){return(z&&!L)||(!z&&L)}K=new a(x,o);while(J=(L?K.prev():K.next())){if(J.nodeType===1){if(J.getAttribute("data-mce-bogus")){continue}I=J.nodeName.toLowerCase();if(I==="IMG"){return false}}else{if(J.nodeType===3&&!/^[ \t\r\n]*$/.test(J.nodeValue)){return false}}}return true}function k(I,O){var P,N,K,M,L,J=v||"P";N=h.getParent(I,h.isBlock);if(!N||!B(N)){N=N||i;if(!N.hasChildNodes()){P=h.create(J);N.appendChild(P);u.setStart(P,0);u.setEnd(P,0);return P}M=I;while(M.parentNode!=N){M=M.parentNode}while(M&&!h.isBlock(M)){K=M;M=M.previousSibling}if(K){P=h.create(J);K.parentNode.insertBefore(P,K);M=K;while(M&&!h.isBlock(M)){L=M.nextSibling;P.appendChild(M);M=L}u.setStart(I,O);u.setEnd(I,O)}}return I}function D(){function I(K){var J=l[K?"firstChild":"lastChild"];while(J){if(J.nodeType==1){break}J=J[K?"nextSibling":"previousSibling"]}return J===o}n=v?q(v):h.create("BR");if(I(true)&&I()){h.replace(n,l)}else{if(I(true)){l.parentNode.insertBefore(n,l)}else{if(I()){h.insertAfter(n,l)}else{C=u.cloneRange();C.setStartAfter(o);C.setEndAfter(l);j=C.extractContents();h.insertAfter(j,l);h.insertAfter(n,l)}}}h.remove(o);m(n);g.add()}function A(){var J=new a(x,o),I;while(I=J.current()){if(I.nodeName=="BR"){return true}I=J.next()}}function G(){var J,I;if(x&&x.nodeType==3&&t>=x.nodeValue.length){if(!b.isIE&&!A()){J=h.create("br");u.insertNode(J);u.setStartAfter(J);u.setEndAfter(J);I=true}}J=h.create("br");u.insertNode(J);if(b.isIE&&s=="PRE"&&(!H||H<8)){J.parentNode.insertBefore(h.doc.createTextNode("\r"),J)}if(!I){u.setStartAfter(J);u.setEndAfter(J)}else{u.setStartBefore(J);u.setEndBefore(J)}d.setRng(u);g.add()}function r(I){do{if(I.nodeType===3){I.nodeValue=I.nodeValue.replace(/^[\r\n]+/,"")}I=I.firstChild}while(I)}function F(K){var I=h.getRoot(),J,L;J=K;while(J!==I&&h.getContentEditable(J)!=="false"){if(h.getContentEditable(J)==="true"){L=J}J=J.parentNode}return J!==I?L:I}if(!u.collapsed){e.execCommand("Delete");return}if(y.isDefaultPrevented()){return}x=u.startContainer;t=u.startOffset;v=c.forced_root_block;v=v?v.toUpperCase():"";H=h.doc.documentMode;if(x.nodeType==1&&x.hasChildNodes()){z=t>x.childNodes.length-1;x=x.childNodes[Math.min(t,x.childNodes.length-1)]||x;t=0}i=F(x);if(!i){return}g.beforeChange();if(!h.isBlock(i)&&i!=h.getRoot()){if(!v||y.shiftKey){G()}return}if((v&&!y.shiftKey)||(!v&&y.shiftKey)){x=k(x,t)}o=h.getParent(x,h.isBlock);l=o?h.getParent(o.parentNode,h.isBlock):null;s=o?o.nodeName.toUpperCase():"";E=l?l.nodeName.toUpperCase():"";if(s=="LI"&&h.isEmpty(o)){if(/^(UL|OL|LI)$/.test(l.parentNode.nodeName)){return false}D();return}if(s=="PRE"&&c.br_in_pre!==false){if(!y.shiftKey){G();return}}else{if((!v&&!y.shiftKey&&s!="LI")||(v&&y.shiftKey)){G();return}}v=v||"P";if(p()){if(/^(H[1-6]|PRE)$/.test(s)&&E!="HGROUP"){n=q(v)}else{n=q()}if(c.end_container_on_empty_block&&B(l)&&h.isEmpty(o)){n=h.split(l,o)}else{h.insertAfter(n,o)}}else{if(p(true)){n=o.parentNode.insertBefore(q(),o)}else{C=u.cloneRange();C.setEndAfter(o);j=C.extractContents();r(j);n=j.firstChild;h.insertAfter(j,o)}}h.setAttrib(n,"id","");m(n);g.add()}e.onKeyDown.add(function(j,i){if(i.keyCode==13){if(f(i)!==false){i.preventDefault()}}})}})(tinymce); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js b/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js
index 42f01a58c..a0e114bea 100644
--- a/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js
+++ b/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js
@@ -1,13 +1,14 @@
+// FILE IS GENERATED BY COMBINING THE SOURCES IN THE "classes" DIRECTORY SO DON'T MODIFY THIS FILE DIRECTLY
(function(win) {
var whiteSpaceRe = /^\s*|\s*$/g,
- undefined, isRegExpBroken = 'B'.replace(/A(.)|B/, '$1') === '$1';
+ undef, isRegExpBroken = 'B'.replace(/A(.)|B/, '$1') === '$1';
var tinymce = {
majorVersion : '3',
- minorVersion : '5b2',
+ minorVersion : '5.0.1',
- releaseDate : '2012-03-15',
+ releaseDate : '2012-05-10',
_init : function() {
var t = this, d = document, na = navigator, ua = na.userAgent, i, nl, n, base, p, v;
@@ -50,7 +51,8 @@
// If base element found, add that infront of baseURL
nl = d.getElementsByTagName('base');
for (i=0; i<nl.length; i++) {
- if (v = nl[i].href) {
+ v = nl[i].href;
+ if (v) {
// Host only value like http://site.com or http://site.com:8008
if (/^https?:\/\/[^\/]+$/.test(v))
v += '/';
@@ -103,7 +105,7 @@
is : function(o, t) {
if (!t)
- return o !== undefined;
+ return o !== undef;
if (t == 'array' && (o.hasOwnProperty && o instanceof Array))
return true;
@@ -137,7 +139,7 @@
s = s || o;
- if (o.length !== undefined) {
+ if (o.length !== undef) {
// Indexed arrays, needed for Safari
for (n=0, l = o.length; n < l; n++) {
if (cb.call(s, o[n], n, o) === false)
@@ -191,19 +193,23 @@
return -1;
},
- extend : function(o, e) {
- var i, l, a = arguments;
+ extend : function(obj, ext) {
+ var i, l, name, args = arguments, value;
- for (i = 1, l = a.length; i < l; i++) {
- e = a[i];
+ for (i = 1, l = args.length; i < l; i++) {
+ ext = args[i];
+ for (name in ext) {
+ if (ext.hasOwnProperty(name)) {
+ value = ext[name];
- tinymce.each(e, function(v, n) {
- if (v !== undefined)
- o[n] = v;
- });
+ if (value !== undef) {
+ obj[name] = value;
+ }
+ }
+ }
}
- return o;
+ return obj;
},
@@ -346,69 +352,69 @@
},
addUnload : function(f, s) {
- var t = this;
+ var t = this, unload;
- f = {func : f, scope : s || this};
+ unload = function() {
+ var li = t.unloads, o, n;
- if (!t.unloads) {
- function unload() {
- var li = t.unloads, o, n;
+ if (li) {
+ // Call unload handlers
+ for (n in li) {
+ o = li[n];
- if (li) {
- // Call unload handlers
- for (n in li) {
- o = li[n];
+ if (o && o.func)
+ o.func.call(o.scope, 1); // Send in one arg to distinct unload and user destroy
+ }
- if (o && o.func)
- o.func.call(o.scope, 1); // Send in one arg to distinct unload and user destroy
- }
+ // Detach unload function
+ if (win.detachEvent) {
+ win.detachEvent('onbeforeunload', fakeUnload);
+ win.detachEvent('onunload', unload);
+ } else if (win.removeEventListener)
+ win.removeEventListener('unload', unload, false);
- // Detach unload function
- if (win.detachEvent) {
- win.detachEvent('onbeforeunload', fakeUnload);
- win.detachEvent('onunload', unload);
- } else if (win.removeEventListener)
- win.removeEventListener('unload', unload, false);
+ // Destroy references
+ t.unloads = o = li = w = unload = 0;
- // Destroy references
- t.unloads = o = li = w = unload = 0;
+ // Run garbarge collector on IE
+ if (win.CollectGarbage)
+ CollectGarbage();
+ }
+ };
- // Run garbarge collector on IE
- if (win.CollectGarbage)
- CollectGarbage();
- }
- };
+ function fakeUnload() {
+ var d = document;
- function fakeUnload() {
- var d = document;
+ function stop() {
+ // Prevent memory leak
+ d.detachEvent('onstop', stop);
- // Is there things still loading, then do some magic
- if (d.readyState == 'interactive') {
- function stop() {
- // Prevent memory leak
- d.detachEvent('onstop', stop);
+ // Call unload handler
+ if (unload)
+ unload();
- // Call unload handler
- if (unload)
- unload();
+ d = 0;
+ };
- d = 0;
- };
+ // Is there things still loading, then do some magic
+ if (d.readyState == 'interactive') {
+ // Fire unload when the currently loading page is stopped
+ if (d)
+ d.attachEvent('onstop', stop);
- // Fire unload when the currently loading page is stopped
+ // Remove onstop listener after a while to prevent the unload function
+ // to execute if the user presses cancel in an onbeforeunload
+ // confirm dialog and then presses the browser stop button
+ win.setTimeout(function() {
if (d)
- d.attachEvent('onstop', stop);
-
- // Remove onstop listener after a while to prevent the unload function
- // to execute if the user presses cancel in an onbeforeunload
- // confirm dialog and then presses the browser stop button
- win.setTimeout(function() {
- if (d)
- d.detachEvent('onstop', stop);
- }, 0);
- }
- };
+ d.detachEvent('onstop', stop);
+ }, 0);
+ }
+ };
+
+ f = {func : f, scope : s || this};
+ if (!t.unloads) {
// Attach unload handler
if (win.attachEvent) {
win.attachEvent('onunload', unload);
@@ -439,7 +445,11 @@
},
explode : function(s, d) {
- return s ? tinymce.map(s.split(d || ','), tinymce.trim) : s;
+ if (!s || tinymce.is(s, 'array')) {
+ return s;
+ }
+
+ return tinymce.map(s.split(d || ','), tinymce.trim);
},
_addVer : function(u) {
@@ -465,7 +475,7 @@
var val = replace, args = arguments, i;
for (i = 0; i < args.length - 2; i++) {
- if (args[i] === undefined) {
+ if (args[i] === undef) {
val = val.replace(new RegExp('\\$' + i, 'g'), '');
} else {
val = val.replace(new RegExp('\\$' + i, 'g'), args[i]);
@@ -496,52 +506,64 @@
tinymce.create('tinymce.util.Dispatcher', {
scope : null,
listeners : null,
+ inDispatch: false,
- Dispatcher : function(s) {
- this.scope = s || this;
+ Dispatcher : function(scope) {
+ this.scope = scope || this;
this.listeners = [];
},
- add : function(cb, s) {
- this.listeners.push({cb : cb, scope : s || this.scope});
+ add : function(callback, scope) {
+ this.listeners.push({cb : callback, scope : scope || this.scope});
- return cb;
+ return callback;
},
- addToTop : function(cb, s) {
- this.listeners.unshift({cb : cb, scope : s || this.scope});
+ addToTop : function(callback, scope) {
+ var self = this, listener = {cb : callback, scope : scope || self.scope};
+
+ // Create new listeners if addToTop is executed in a dispatch loop
+ if (self.inDispatch) {
+ self.listeners = [listener].concat(self.listeners);
+ } else {
+ self.listeners.unshift(listener);
+ }
- return cb;
+ return callback;
},
- remove : function(cb) {
- var l = this.listeners, o = null;
+ remove : function(callback) {
+ var listeners = this.listeners, output = null;
- tinymce.each(l, function(c, i) {
- if (cb == c.cb) {
- o = cb;
- l.splice(i, 1);
+ tinymce.each(listeners, function(listener, i) {
+ if (callback == listener.cb) {
+ output = listener;
+ listeners.splice(i, 1);
return false;
}
});
- return o;
+ return output;
},
dispatch : function() {
- var s, a = arguments, i, li = this.listeners, c;
+ var self = this, returnValue, args = arguments, i, listeners = self.listeners, listener;
+ self.inDispatch = true;
+
// Needs to be a real loop since the listener count might change while looping
// And this is also more efficient
- for (i = 0; i<li.length; i++) {
- c = li[i];
- s = c.cb.apply(c.scope, a.length > 0 ? a : [c.scope]);
+ for (i = 0; i < listeners.length; i++) {
+ listener = listeners[i];
+ returnValue = listener.cb.apply(listener.scope, args.length > 0 ? args : [listener.scope]);
- if (s === false)
+ if (returnValue === false)
break;
}
- return s;
+ self.inDispatch = false;
+
+ return returnValue;
}
});
@@ -571,7 +593,7 @@ tinymce.create('tinymce.util.Dispatcher', {
u = (s.base_uri ? s.base_uri.protocol || 'http' : 'http') + '://mce_host' + u;
// Relative path http:// or protocol relative //path
- if (!/^[\w-]*:?\/\//.test(u)) {
+ if (!/^[\w\-]*:?\/\//.test(u)) {
base_url = s.base_uri ? s.base_uri.path : new tinymce.util.URI(location.href).directory;
u = ((s.base_uri && s.base_uri.protocol) || 'http') + '://mce_host' + t.toAbsPath(base_url, u);
}
@@ -589,17 +611,18 @@ tinymce.create('tinymce.util.Dispatcher', {
t[v] = s;
});
- if (b = s.base_uri) {
+ b = s.base_uri;
+ if (b) {
if (!t.protocol)
t.protocol = b.protocol;
if (!t.userInfo)
t.userInfo = b.userInfo;
- if (!t.port && t.host == 'mce_host')
+ if (!t.port && t.host === 'mce_host')
t.port = b.port;
- if (!t.host || t.host == 'mce_host')
+ if (!t.host || t.host === 'mce_host')
t.host = b.host;
t.source = '';
@@ -635,6 +658,12 @@ tinymce.create('tinymce.util.Dispatcher', {
if ((u.host != 'mce_host' && t.host != u.host && u.host) || t.port != u.port || t.protocol != u.protocol)
return u.getURI();
+ var tu = t.getURI(), uu = u.getURI();
+
+ // Allow usage of the base_uri when relative_urls = true
+ if(tu == uu || (tu.charAt(tu.length - 1) == "/" && tu.substr(0, tu.length - 1) == uu))
+ return tu;
+
o = t.toRelPath(t.path, u.path);
// Add query
@@ -649,7 +678,7 @@ tinymce.create('tinymce.util.Dispatcher', {
},
toAbsolute : function(u, nh) {
- var u = new tinymce.util.URI(u, {base_uri : this});
+ u = new tinymce.util.URI(u, {base_uri : this});
return u.getURI(this.host == u.host && this.protocol == u.protocol ? nh : 0);
},
@@ -680,7 +709,7 @@ tinymce.create('tinymce.util.Dispatcher', {
}
}
- if (bp == 1)
+ if (bp === 1)
return path;
for (i = 0, l = base.length - (bp - 1); i < l; i++)
@@ -715,11 +744,11 @@ tinymce.create('tinymce.util.Dispatcher', {
// Merge relURLParts chunks
for (i = path.length - 1, o = []; i >= 0; i--) {
// Ignore empty or .
- if (path[i].length == 0 || path[i] == ".")
+ if (path[i].length === 0 || path[i] === ".")
continue;
// Is parent
- if (path[i] == '..') {
+ if (path[i] === '..') {
nb++;
continue;
}
@@ -830,7 +859,7 @@ tinymce.create('tinymce.util.Dispatcher', {
if (b == -1) {
b = c.indexOf(p);
- if (b != 0)
+ if (b !== 0)
return null;
} else
b += 2;
@@ -863,7 +892,7 @@ tinymce.create('tinymce.util.Dispatcher', {
(function() {
function serialize(o, quote) {
- var i, v, t;
+ var i, v, t, name;
quote = quote || '"';
@@ -901,9 +930,9 @@ tinymce.create('tinymce.util.Dispatcher', {
v = '{';
- for (i in o) {
- if (o.hasOwnProperty(i)) {
- v += typeof o[i] != 'function' ? (v.length > 1 ? ',' + quote : quote) + i + quote +':' + serialize(o[i], quote) : '';
+ for (name in o) {
+ if (o.hasOwnProperty(name)) {
+ v += typeof o[name] != 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote +':' + serialize(o[name], quote) : '';
}
}
@@ -931,6 +960,18 @@ tinymce.create('static tinymce.util.XHR', {
send : function(o) {
var x, t, w = window, c = 0;
+ function ready() {
+ if (!o.async || x.readyState == 4 || c++ > 10000) {
+ if (o.success && c < 10000 && x.status == 200)
+ o.success.call(o.success_scope, '' + x.responseText, x, o);
+ else if (o.error)
+ o.error.call(o.error_scope, c > 10000 ? 'TIMED_OUT' : 'GENERAL', x, o);
+
+ x = null;
+ } else
+ w.setTimeout(ready, 10);
+ };
+
// Default settings
o.scope = o.scope || this;
o.success_scope = o.success_scope || o.scope;
@@ -964,18 +1005,6 @@ tinymce.create('static tinymce.util.XHR', {
x.send(o.data);
- function ready() {
- if (!o.async || x.readyState == 4 || c++ > 10000) {
- if (o.success && c < 10000 && x.status == 200)
- o.success.call(o.success_scope, '' + x.responseText, x, o);
- else if (o.error)
- o.error.call(o.error_scope, c > 10000 ? 'TIMED_OUT' : 'GENERAL', x, o);
-
- x = null;
- } else
- w.setTimeout(ready, 10);
- };
-
// Syncronous request
if (!o.async)
return ready();
@@ -1055,13 +1084,13 @@ tinymce.create('static tinymce.util.XHR', {
modifierPressed: function (e) {
return e.shiftKey || e.ctrlKey || e.altKey;
}
- }
+ };
})(tinymce);
-(function(tinymce) {
- var VK = tinymce.VK, BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE;
+tinymce.util.Quirks = function(editor) {
+ var VK = tinymce.VK, BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings;
- function setEditorCommandState(editor, cmd, state) {
+ function setEditorCommandState(cmd, state) {
try {
editor.getDoc().execCommand(cmd, false, state);
} catch (ex) {
@@ -1069,107 +1098,163 @@ tinymce.create('static tinymce.util.XHR', {
}
}
- function cleanupStylesWhenDeleting(ed) {
- var dom = ed.dom, selection = ed.selection;
+ function cleanupStylesWhenDeleting() {
+ function removeMergedFormatSpans(isDelete) {
+ var rng, blockElm, node, clonedSpan;
+
+ rng = selection.getRng();
- ed.onKeyDown.add(function(ed, e) {
- var rng, blockElm, node, clonedSpan, isDelete;
+ // Find root block
+ blockElm = dom.getParent(rng.startContainer, dom.isBlock);
- if (e.isDefaultPrevented()) {
- return;
+ // On delete clone the root span of the next block element
+ if (isDelete)
+ blockElm = dom.getNext(blockElm, dom.isBlock);
+
+ // Locate root span element and clone it since it would otherwise get merged by the "apple-style-span" on delete/backspace
+ if (blockElm) {
+ node = blockElm.firstChild;
+
+ // Ignore empty text nodes
+ while (node && node.nodeType == 3 && node.nodeValue.length === 0)
+ node = node.nextSibling;
+
+ if (node && node.nodeName === 'SPAN') {
+ clonedSpan = node.cloneNode(false);
+ }
}
+ // Do the backspace/delete action
+ editor.getDoc().execCommand(isDelete ? 'ForwardDelete' : 'Delete', false, null);
+
+ // Find all odd apple-style-spans
+ blockElm = dom.getParent(rng.startContainer, dom.isBlock);
+ tinymce.each(dom.select('span.Apple-style-span,font.Apple-style-span', blockElm), function(span) {
+ var bm = selection.getBookmark();
+
+ if (clonedSpan) {
+ dom.replace(clonedSpan.cloneNode(false), span, true);
+ } else {
+ dom.remove(span, true);
+ }
+
+ // Restore the selection
+ selection.moveToBookmark(bm);
+ });
+ };
+
+ editor.onKeyDown.add(function(editor, e) {
+ var isDelete;
+
isDelete = e.keyCode == DELETE;
- if ((isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {
+ if (!e.isDefaultPrevented() && (isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {
e.preventDefault();
- rng = selection.getRng();
+ removeMergedFormatSpans(isDelete);
+ }
+ });
- // Find root block
- blockElm = dom.getParent(rng.startContainer, dom.isBlock);
+ editor.addCommand('Delete', function() {removeMergedFormatSpans();});
+ };
+
+ function emptyEditorWhenDeleting() {
+ function getEndPointNode(rng, start) {
+ var container, offset, prefix = start ? 'start' : 'end';
- // On delete clone the root span of the next block element
- if (isDelete)
- blockElm = dom.getNext(blockElm, dom.isBlock);
+ container = rng[prefix + 'Container'];
+ offset = rng[prefix + 'Offset'];
- // Locate root span element and clone it since it would otherwise get merged by the "apple-style-span" on delete/backspace
- if (blockElm) {
- node = blockElm.firstChild;
+ // Resolve indexed container
+ if (container.nodeType == 1 && container.hasChildNodes()) {
+ container = container.childNodes[Math.min(start ? offset : (offset > 0 ? offset - 1 : 0), container.childNodes.length - 1)]
+ }
- // Ignore empty text nodes
- while (node && node.nodeType == 3 && node.nodeValue.length == 0)
- node = node.nextSibling;
+ return container;
+ };
- if (node && node.nodeName === 'SPAN') {
- clonedSpan = node.cloneNode(false);
- }
- }
+ function isAtStartEndOfBody(rng, start) {
+ var container, offset, root, childNode, prefix = start ? 'start' : 'end', isAfter;
- // Do the backspace/delete action
- ed.getDoc().execCommand(isDelete ? 'ForwardDelete' : 'Delete', false, null);
+ container = rng[prefix + 'Container'];
+ offset = rng[prefix + 'Offset'];
+ root = dom.getRoot();
- // Find all odd apple-style-spans
- blockElm = dom.getParent(rng.startContainer, dom.isBlock);
- tinymce.each(dom.select('span.Apple-style-span,font.Apple-style-span', blockElm), function(span) {
- var bm = selection.getBookmark();
+ // Resolve indexed container
+ if (container.nodeType == 1) {
+ isAfter = offset >= container.childNodes.length;
+ container = getEndPointNode(rng, start);
- if (clonedSpan) {
- dom.replace(clonedSpan.cloneNode(false), span, true);
- } else {
- dom.remove(span, true);
- }
+ if (container.nodeType == 3) {
+ offset = start && !isAfter ? 0 : container.nodeValue.length;
+ }
+ }
- // Restore the selection
- selection.moveToBookmark(bm);
- });
+ // Check if start/end is in the middle of text
+ if (container.nodeType == 3 && ((start && offset > 0) || (!start && offset < container.nodeValue.length))) {
+ return false;
}
- });
- };
- function emptyEditorWhenDeleting(ed) {
- function serializeRng(rng) {
- var body = ed.dom.create("body");
- var contents = rng.cloneContents();
- body.appendChild(contents);
- return ed.selection.serializer.serialize(body, {format: 'html'});
- }
+ // Walk up the DOM tree to see if the endpoint is at the beginning/end of body
+ while (container !== root) {
+ childNode = container.parentNode[start ? 'firstChild' : 'lastChild'];
- function allContentsSelected(rng) {
- var selection = serializeRng(rng);
+ // If first/last element is a BR then jump to it's sibling in case: <p>x<br></p>
+ if (childNode.nodeName == "BR") {
+ childNode = childNode[start ? 'nextSibling' : 'previousSibling'] || childNode;
+ }
- var allRng = ed.dom.createRng();
- allRng.selectNode(ed.getBody());
+ // If the childNode isn't the container node then break in case <p><span>A</span>[X]</p>
+ if (childNode !== container) {
+ return false;
+ }
- var allSelection = serializeRng(allRng);
- return selection === allSelection;
- }
+ container = container.parentNode;
+ }
- ed.onKeyDown.addToTop(function(ed, e) {
- var keyCode = e.keyCode;
- if (keyCode == DELETE || keyCode == BACKSPACE) {
- var rng = ed.selection.getRng(true);
- if (!rng.collapsed && allContentsSelected(rng)) {
- ed.setContent('', {format : 'raw'});
- ed.nodeChanged();
+ return true;
+ };
+
+ editor.onKeyDown.addToTop(function(editor, e) {
+ var rng, keyCode = e.keyCode;
+
+ if (!e.isDefaultPrevented() && (keyCode == DELETE || keyCode == BACKSPACE)) {
+ rng = selection.getRng(true);
+
+ if (isAtStartEndOfBody(rng, true) && isAtStartEndOfBody(rng, false) &&
+ (rng.collapsed || dom.findCommonAncestor(getEndPointNode(rng, true), getEndPointNode(rng)) === dom.getRoot())) {
+ editor.setContent('');
+ editor.nodeChanged();
e.preventDefault();
}
}
});
};
- function inputMethodFocus(ed) {
- ed.dom.bind(ed.getDoc(), 'focusin', function() {
- ed.selection.setRng(ed.selection.getRng());
- });
+ function inputMethodFocus() {
+ if (!editor.settings.content_editable) {
+ // Case 1 IME doesn't initialize if you focus the document
+ dom.bind(editor.getDoc(), 'focusin', function(e) {
+ selection.setRng(selection.getRng());
+ });
+
+ // Case 2 IME doesn't initialize if you click the documentElement it also doesn't properly fire the focusin event
+ dom.bind(editor.getDoc(), 'mousedown', function(e) {
+ if (e.target == editor.getDoc().documentElement) {
+ editor.getWin().focus();
+ selection.setRng(selection.getRng());
+ }
+ });
+ }
};
- function removeHrOnBackspace(ed) {
- ed.onKeyDown.add(function(ed, e) {
- if (e.keyCode === BACKSPACE) {
- if (ed.selection.isCollapsed() && ed.selection.getRng(true).startOffset === 0) {
- var node = ed.selection.getNode();
+ function removeHrOnBackspace() {
+ editor.onKeyDown.add(function(editor, e) {
+ if (!e.isDefaultPrevented() && e.keyCode === BACKSPACE) {
+ if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
+ var node = selection.getNode();
var previousSibling = node.previousSibling;
+
if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "hr") {
- ed.dom.remove(previousSibling);
+ dom.remove(previousSibling);
tinymce.dom.Event.cancel(e);
}
}
@@ -1177,13 +1262,13 @@ tinymce.create('static tinymce.util.XHR', {
})
}
- function focusBody(ed) {
+ function focusBody() {
// Fix for a focus bug in FF 3.x where the body element
// wouldn't get proper focus if the user clicked on the HTML element
if (!Range.prototype.getClientRects) { // Detect getClientRects got introduced in FF 4
- ed.onMouseDown.add(function(ed, e) {
+ editor.onMouseDown.add(function(editor, e) {
if (e.target.nodeName === "HTML") {
- var body = ed.getBody();
+ var body = editor.getBody();
// Blur the body it's focused but not correctly focused
body.blur();
@@ -1197,38 +1282,38 @@ tinymce.create('static tinymce.util.XHR', {
}
};
- function selectControlElements(ed) {
- ed.onClick.add(function(ed, e) {
+ function selectControlElements() {
+ editor.onClick.add(function(editor, e) {
e = e.target;
// Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
// WebKit can't even do simple things like selecting an image
// Needs tobe the setBaseAndExtend or it will fail to select floated images
- if (/^(IMG|HR)$/.test(e.nodeName))
- ed.selection.getSel().setBaseAndExtent(e, 0, e, 1);
+ if (/^(IMG|HR)$/.test(e.nodeName)) {
+ selection.getSel().setBaseAndExtent(e, 0, e, 1);
+ }
- if (e.nodeName == 'A' && ed.dom.hasClass(e, 'mceItemAnchor'))
- ed.selection.select(e);
+ if (e.nodeName == 'A' && dom.hasClass(e, 'mceItemAnchor')) {
+ selection.select(e);
+ }
- ed.nodeChanged();
+ editor.nodeChanged();
});
};
- function removeStylesWhenDeletingAccrossBlockElements(ed) {
- var selection = ed.selection, dom = ed.dom;
-
+ function removeStylesWhenDeletingAccrossBlockElements() {
function getAttributeApplyFunction() {
var template = dom.getAttribs(selection.getStart().cloneNode(false));
return function() {
var target = selection.getStart();
- if (target !== ed.getBody()) {
+ if (target !== editor.getBody()) {
dom.setAttrib(target, "style", null);
- tinymce.each(template, function(attr) {
- target.setAttributeNode(attr.cloneNode(true));
- });
+ tinymce.each(template, function(attr) {
+ target.setAttributeNode(attr.cloneNode(true));
+ });
}
};
}
@@ -1237,91 +1322,68 @@ tinymce.create('static tinymce.util.XHR', {
return !selection.isCollapsed() && selection.getStart() != selection.getEnd();
}
- function blockEvent(ed, e) {
+ function blockEvent(editor, e) {
e.preventDefault();
return false;
}
- ed.onKeyPress.add(function(ed, e) {
+ editor.onKeyPress.add(function(editor, e) {
var applyAttributes;
if ((e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) {
applyAttributes = getAttributeApplyFunction();
- ed.getDoc().execCommand('delete', false, null);
+ editor.getDoc().execCommand('delete', false, null);
applyAttributes();
e.preventDefault();
return false;
}
});
- dom.bind(ed.getDoc(), 'cut', function(e) {
+ dom.bind(editor.getDoc(), 'cut', function(e) {
var applyAttributes;
if (isSelectionAcrossElements()) {
applyAttributes = getAttributeApplyFunction();
- ed.onKeyUp.addToTop(blockEvent);
+ editor.onKeyUp.addToTop(blockEvent);
setTimeout(function() {
applyAttributes();
- ed.onKeyUp.remove(blockEvent);
- }, 0);
- }
- });
- }
-
- /*
- function removeStylesOnPTagsInheritedFromHeadingTag(ed) {
- ed.onKeyDown.add(function(ed, event) {
- function checkInHeadingTag(ed) {
- var currentNode = ed.selection.getNode();
- var headingTags = 'h1,h2,h3,h4,h5,h6';
- return ed.dom.is(currentNode, headingTags) || ed.dom.getParent(currentNode, headingTags) !== null;
- }
-
- if (event.keyCode === VK.ENTER && !VK.modifierPressed(event) && checkInHeadingTag(ed)) {
- setTimeout(function() {
- var currentNode = ed.selection.getNode();
- if (ed.dom.is(currentNode, 'p')) {
- ed.dom.setAttrib(currentNode, 'style', null);
- // While tiny's content is correct after this method call, the content shown is not representative of it and needs to be 'repainted'
- ed.execCommand('mceCleanup');
- }
+ editor.onKeyUp.remove(blockEvent);
}, 0);
}
});
}
- */
- function selectionChangeNodeChanged(ed) {
+ function selectionChangeNodeChanged() {
var lastRng, selectionTimer;
- ed.dom.bind(ed.getDoc(), 'selectionchange', function() {
+ dom.bind(editor.getDoc(), 'selectionchange', function() {
if (selectionTimer) {
clearTimeout(selectionTimer);
selectionTimer = 0;
}
selectionTimer = window.setTimeout(function() {
- var rng = ed.selection.getRng();
+ var rng = selection.getRng();
// Compare the ranges to see if it was a real change or not
if (!lastRng || !tinymce.dom.RangeUtils.compareRanges(rng, lastRng)) {
- ed.nodeChanged();
+ editor.nodeChanged();
lastRng = rng;
}
}, 50);
});
}
- function ensureBodyHasRoleApplication(ed) {
+ function ensureBodyHasRoleApplication() {
document.body.setAttribute("role", "application");
}
-
- function disableBackspaceIntoATable(ed) {
- ed.onKeyDown.add(function(ed, e) {
- if (e.keyCode === BACKSPACE) {
- if (ed.selection.isCollapsed() && ed.selection.getRng(true).startOffset === 0) {
- var previousSibling = ed.selection.getNode().previousSibling;
+
+ function disableBackspaceIntoATable() {
+ editor.onKeyDown.add(function(editor, e) {
+ if (!e.isDefaultPrevented() && e.keyCode === BACKSPACE) {
+ if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
+ var previousSibling = selection.getNode().previousSibling;
if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "table") {
return tinymce.dom.Event.cancel(e);
}
@@ -1330,7 +1392,7 @@ tinymce.create('static tinymce.util.XHR', {
})
}
- function addNewLinesBeforeBrInPre(editor) {
+ function addNewLinesBeforeBrInPre() {
var documentMode = editor.getDoc().documentMode;
// IE8+ rendering mode does the right thing with BR in PRE
@@ -1340,8 +1402,8 @@ tinymce.create('static tinymce.util.XHR', {
// Enable display: none in area and add a specific class that hides all BR elements in PRE to
// avoid the caret from getting stuck at the BR elements while pressing the right arrow key
- setEditorCommandState(editor, 'RespectVisibilityInDesign', true);
- editor.dom.addClass(editor.getBody(), 'mceHideBrInPre');
+ setEditorCommandState('RespectVisibilityInDesign', true);
+ dom.addClass(editor.getBody(), 'mceHideBrInPre');
// Adds a \n before all BR elements in PRE to get them visual
editor.parser.addNodeFilter('pre', function(nodes, name) {
@@ -1382,43 +1444,210 @@ tinymce.create('static tinymce.util.XHR', {
});
}
- tinymce.create('tinymce.util.Quirks', {
- Quirks: function(ed) {
- // All browsers
- disableBackspaceIntoATable(ed);
+ function removePreSerializedStylesWhenSelectingControls() {
+ dom.bind(editor.getBody(), 'mouseup', function(e) {
+ var value, node = selection.getNode();
- // WebKit
- if (tinymce.isWebKit) {
- cleanupStylesWhenDeleting(ed);
- emptyEditorWhenDeleting(ed);
- inputMethodFocus(ed);
- selectControlElements(ed);
+ // Moved styles to attributes on IMG eements
+ if (node.nodeName == 'IMG') {
+ // Convert style width to width attribute
+ if (value = dom.getStyle(node, 'width')) {
+ dom.setAttrib(node, 'width', value.replace(/[^0-9%]+/g, ''));
+ dom.setStyle(node, 'width', '');
+ }
- // iOS
- if (tinymce.isIDevice) {
- selectionChangeNodeChanged(ed);
+ // Convert style height to height attribute
+ if (value = dom.getStyle(node, 'height')) {
+ dom.setAttrib(node, 'height', value.replace(/[^0-9%]+/g, ''));
+ dom.setStyle(node, 'height', '');
}
}
+ });
+ }
- // IE
- if (tinymce.isIE) {
- removeHrOnBackspace(ed);
- emptyEditorWhenDeleting(ed);
- ensureBodyHasRoleApplication(ed);
- //removeStylesOnPTagsInheritedFromHeadingTag(ed)
- addNewLinesBeforeBrInPre(ed);
+ function keepInlineElementOnDeleteBackspace() {
+ editor.onKeyDown.add(function(editor, e) {
+ var isDelete, rng, container, offset, brElm, sibling, collapsed;
+
+ isDelete = e.keyCode == DELETE;
+ if (!e.isDefaultPrevented() && (isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {
+ rng = selection.getRng();
+ container = rng.startContainer;
+ offset = rng.startOffset;
+ collapsed = rng.collapsed;
+
+ // Override delete if the start container is a text node and is at the beginning of text or
+ // just before/after the last character to be deleted in collapsed mode
+ if (container.nodeType == 3 && container.nodeValue.length > 0 && ((offset === 0 && !collapsed) || (collapsed && offset === (isDelete ? 0 : 1)))) {
+ nonEmptyElements = editor.schema.getNonEmptyElements();
+
+ // Prevent default logic since it's broken
+ e.preventDefault();
+
+ // Insert a BR before the text node this will prevent the containing element from being deleted/converted
+ brElm = dom.create('br', {id: '__tmp'});
+ container.parentNode.insertBefore(brElm, container);
+
+ // Do the browser delete
+ editor.getDoc().execCommand(isDelete ? 'ForwardDelete' : 'Delete', false, null);
+
+ // Check if the previous sibling is empty after deleting for example: <p><b></b>|</p>
+ container = selection.getRng().startContainer;
+ sibling = container.previousSibling;
+ if (sibling && sibling.nodeType == 1 && !dom.isBlock(sibling) && dom.isEmpty(sibling) && !nonEmptyElements[sibling.nodeName.toLowerCase()]) {
+ dom.remove(sibling);
+ }
+
+ // Remove the temp element we inserted
+ dom.remove('__tmp');
+ }
}
+ });
+ }
- // Gecko
- if (tinymce.isGecko) {
- removeHrOnBackspace(ed);
- focusBody(ed);
- removeStylesWhenDeletingAccrossBlockElements(ed);
+ function removeBlockQuoteOnBackSpace() {
+ // Add block quote deletion handler
+ editor.onKeyDown.add(function(editor, e) {
+ var rng, container, offset, root, parent;
+
+ if (e.isDefaultPrevented() || e.keyCode != VK.BACKSPACE) {
+ return;
}
+
+ rng = selection.getRng();
+ container = rng.startContainer;
+ offset = rng.startOffset;
+ root = dom.getRoot();
+ parent = container;
+
+ if (!rng.collapsed || offset !== 0) {
+ return;
+ }
+
+ while (parent && parent.parentNode && parent.parentNode.firstChild == parent && parent.parentNode != root) {
+ parent = parent.parentNode;
+ }
+
+ // Is the cursor at the beginning of a blockquote?
+ if (parent.tagName === 'BLOCKQUOTE') {
+ // Remove the blockquote
+ editor.formatter.toggle('blockquote', null, parent);
+
+ // Move the caret to the beginning of container
+ rng.setStart(container, 0);
+ rng.setEnd(container, 0);
+ selection.setRng(rng);
+ selection.collapse(false);
+ }
+ });
+ };
+
+ function setGeckoEditingOptions() {
+ function setOpts() {
+ editor._refreshContentEditable();
+
+ setEditorCommandState("StyleWithCSS", false);
+ setEditorCommandState("enableInlineTableEditing", false);
+
+ if (!settings.object_resizing) {
+ setEditorCommandState("enableObjectResizing", false);
+ }
+ };
+
+ if (!settings.readonly) {
+ editor.onBeforeExecCommand.add(setOpts);
+ editor.onMouseDown.add(setOpts);
}
- });
-})(tinymce);
+ };
+
+ function addBrAfterLastLinks() {
+ function fixLinks(editor, o) {
+ tinymce.each(dom.select('a'), function(node) {
+ var parentNode = node.parentNode, root = dom.getRoot();
+
+ if (parentNode.lastChild === node) {
+ while (parentNode && !dom.isBlock(parentNode)) {
+ if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {
+ return;
+ }
+
+ parentNode = parentNode.parentNode;
+ }
+
+ dom.add(parentNode, 'br', {'data-mce-bogus' : 1});
+ }
+ });
+ };
+
+ editor.onExecCommand.add(function(editor, cmd) {
+ if (cmd === 'CreateLink') {
+ fixLinks(editor);
+ }
+ });
+
+ editor.onSetContent.add(selection.onSetContent.add(fixLinks));
+ };
+
+ function removeGhostSelection() {
+ function repaint(sender, args) {
+ if (!sender || !args.initial) {
+ editor.execCommand('mceRepaint');
+ }
+ };
+
+ editor.onUndo.add(repaint);
+ editor.onRedo.add(repaint);
+ editor.onSetContent.add(repaint);
+ };
+
+ function deleteImageOnBackSpace() {
+ editor.onKeyDown.add(function(editor, e) {
+ if (!e.isDefaultPrevented() && e.keyCode == 8 && selection.getNode().nodeName == 'IMG') {
+ e.preventDefault();
+ editor.undoManager.beforeChange();
+ dom.remove(selection.getNode());
+ editor.undoManager.add();
+ }
+ });
+ };
+
+ // All browsers
+ disableBackspaceIntoATable();
+ removeBlockQuoteOnBackSpace();
+ emptyEditorWhenDeleting();
+
+ // WebKit
+ if (tinymce.isWebKit) {
+ keepInlineElementOnDeleteBackspace();
+ cleanupStylesWhenDeleting();
+ inputMethodFocus();
+ selectControlElements();
+
+ // iOS
+ if (tinymce.isIDevice) {
+ selectionChangeNodeChanged();
+ }
+ }
+
+ // IE
+ if (tinymce.isIE) {
+ removeHrOnBackspace();
+ ensureBodyHasRoleApplication();
+ addNewLinesBeforeBrInPre();
+ removePreSerializedStylesWhenSelectingControls();
+ deleteImageOnBackSpace();
+ }
+ // Gecko
+ if (tinymce.isGecko) {
+ removeHrOnBackspace();
+ focusBody();
+ removeStylesWhenDeletingAccrossBlockElements();
+ setGeckoEditingOptions();
+ addBrAfterLastLinks();
+ removeGhostSelection();
+ }
+};
(function(tinymce) {
var namedEntities, baseEntities, reverseEntities,
attrsCharsRegExp = /[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
@@ -1511,8 +1740,7 @@ tinymce.create('static tinymce.util.XHR', {
'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' +
'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' +
'80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' +
- '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro'
- , 32);
+ '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);
tinymce.html = tinymce.html || {};
@@ -1723,7 +1951,27 @@ tinymce.html.Styles = function(settings, schema) {
str = str.replace(/\\([\'\";:])/g, "$1");
return str;
- }
+ };
+
+ function processUrl(match, url, url2, url3, str, str2) {
+ str = str || str2;
+
+ if (str) {
+ str = decode(str);
+
+ // Force strings into single quote format
+ return "'" + str.replace(/\'/g, "\\'") + "'";
+ }
+
+ url = decode(url || url2 || url3);
+
+ // Convert the URL to relative/absolute depending on config
+ if (urlConverter)
+ url = urlConverter.call(urlConverterScope, url, 'style');
+
+ // Output new URL format
+ return "url('" + url.replace(/\'/g, "\\'") + "')";
+ };
if (css) {
// Encode \" \' % and ; and : inside strings so they don't interfere with the style parsing
@@ -1747,26 +1995,7 @@ tinymce.html.Styles = function(settings, schema) {
value = value.replace(rgbRegExp, toHex);
// Convert URLs and force them into url('value') format
- value = value.replace(urlOrStrRegExp, function(match, url, url2, url3, str, str2) {
- str = str || str2;
-
- if (str) {
- str = decode(str);
-
- // Force strings into single quote format
- return "'" + str.replace(/\'/g, "\\'") + "'";
- }
-
- url = decode(url || url2 || url3);
-
- // Convert the URL to relative/absolute depending on config
- if (urlConverter)
- url = urlConverter.call(urlConverterScope, url, 'style');
-
- // Output new URL format
- return "url('" + url.replace(/\'/g, "\\'") + "')";
- });
-
+ value = value.replace(urlOrStrRegExp, processUrl);
styles[name] = isEncoded ? decode(value, true) : value;
}
@@ -1934,7 +2163,8 @@ tinymce.html.Styles = function(settings, schema) {
'span[A][B]' +
'ins[A|cite|datetime][B]' +
'del[A|cite|datetime][B]' +
- 'figure[A][C|legend]' +
+ 'figure[A][C|legend|figcaption]' +
+ 'figcaption[A][C]' +
'img[A|alt|src|height|width|usemap|ismap][]' +
'iframe[A|name|src|height|width|sandbox|seamless][]' +
'embed[A|src|height|width|type][]' +
@@ -2161,7 +2391,7 @@ tinymce.html.Styles = function(settings, schema) {
nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object', shortEndedElementsMap);
blockElementsMap = createLookupTable('block_elements', 'h1 h2 h3 h4 h5 h6 hr p div address pre form table tbody thead tfoot ' +
'th tr td li ol ul caption blockquote center dl dt dd dir fieldset ' +
- 'noscript menu isindex samp header footer article section hgroup aside nav');
+ 'noscript menu isindex samp header footer article section hgroup aside nav figure');
// Converts a wildcard expression string to a regexp for example *a will become /.*a/.
function patternToRegExp(str) {
@@ -2173,7 +2403,7 @@ tinymce.html.Styles = function(settings, schema) {
function addValidElements(valid_elements) {
var ei, el, ai, al, yl, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder,
prefix, outputName, globalAttributes, globalAttributesOrder, transElement, key, childKey, value,
- elementRuleRegExp = /^([#+-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,
+ elementRuleRegExp = /^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,
attrRuleRegExp = /^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,
hasPatternsRegExp = /[*?+]/;
@@ -2546,6 +2776,47 @@ tinymce.html.Styles = function(settings, schema) {
}
};
+ function parseAttribute(match, name, value, val2, val3) {
+ var attrRule, i;
+
+ name = name.toLowerCase();
+ value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); // Handle boolean attribute than value attribute
+
+ // Validate name and value
+ if (validate && !isInternalElement && name.indexOf('data-') !== 0) {
+ attrRule = validAttributesMap[name];
+
+ // Find rule by pattern matching
+ if (!attrRule && validAttributePatterns) {
+ i = validAttributePatterns.length;
+ while (i--) {
+ attrRule = validAttributePatterns[i];
+ if (attrRule.pattern.test(name))
+ break;
+ }
+
+ // No rule matched
+ if (i === -1)
+ attrRule = null;
+ }
+
+ // No attribute rule found
+ if (!attrRule)
+ return;
+
+ // Validate value
+ if (attrRule.validValues && !(value in attrRule.validValues))
+ return;
+ }
+
+ // Add attribute to list and map
+ attrList.map[name] = value;
+ attrList.push({
+ name: name,
+ value: value
+ });
+ };
+
// Precompile RegExps and map objects
tokenRegExp = new RegExp('<(?:' +
'(?:!--([\\w\\W]*?)-->)|' + // Comment
@@ -2553,7 +2824,7 @@ tinymce.html.Styles = function(settings, schema) {
'(?:!DOCTYPE([\\w\\W]*?)>)|' + // DOCTYPE
'(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + // PI
'(?:\\/([^>]+)>)|' + // End element
- '(?:([A-Za-z0-9\-\:]+)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + // Start element
+ '(?:([A-Za-z0-9\\-\\:]+)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + // Start element
')', 'g');
attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;
@@ -2620,46 +2891,7 @@ tinymce.html.Styles = function(settings, schema) {
attrList = [];
attrList.map = {};
- attribsValue.replace(attrRegExp, function(match, name, value, val2, val3) {
- var attrRule, i;
-
- name = name.toLowerCase();
- value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); // Handle boolean attribute than value attribute
-
- // Validate name and value
- if (validate && !isInternalElement && name.indexOf('data-') !== 0) {
- attrRule = validAttributesMap[name];
-
- // Find rule by pattern matching
- if (!attrRule && validAttributePatterns) {
- i = validAttributePatterns.length;
- while (i--) {
- attrRule = validAttributePatterns[i];
- if (attrRule.pattern.test(name))
- break;
- }
-
- // No rule matched
- if (i === -1)
- attrRule = null;
- }
-
- // No attribute rule found
- if (!attrRule)
- return;
-
- // Validate value
- if (attrRule.validValues && !(value in attrRule.validValues))
- return;
- }
-
- // Add attribute to list and map
- attrList.map[name] = value;
- attrList.push({
- name: name,
- value: value
- });
- });
+ attribsValue.replace(attrRegExp, parseAttribute);
} else {
attrList = [];
attrList.map = {};
@@ -3281,7 +3513,7 @@ tinymce.html.Styles = function(settings, schema) {
self.parse = function(html, args) {
var parser, rootNode, node, nodes, i, l, fi, fl, list, name, validate,
blockElements, startWhiteSpaceRegExp, invalidChildren = [], isInWhiteSpacePreservedElement,
- endWhiteSpaceRegExp, allWhiteSpaceRegExp, whiteSpaceElements, children, nonEmptyElements, rootBlockName;
+ endWhiteSpaceRegExp, allWhiteSpaceRegExp, isAllWhiteSpaceRegExp, whiteSpaceElements, children, nonEmptyElements, rootBlockName;
args = args || {};
matchedNodes = {};
@@ -3296,6 +3528,7 @@ tinymce.html.Styles = function(settings, schema) {
startWhiteSpaceRegExp = /^[ \t\r\n]+/;
endWhiteSpaceRegExp = /[ \t\r\n]+$/;
allWhiteSpaceRegExp = /[ \t\r\n]+/g;
+ isAllWhiteSpaceRegExp = /^[ \t\r\n]+$/;
function addRootBlocks() {
var node = rootNode.firstChild, next, rootBlockNode;
@@ -3448,10 +3681,12 @@ tinymce.html.Styles = function(settings, schema) {
if (elementRule) {
if (blockElements[name]) {
if (!isInWhiteSpacePreservedElement) {
- // Trim whitespace at beginning of block
- for (textNode = node.firstChild; textNode && textNode.type === 3; ) {
+ // Trim whitespace of the first node in a block
+ textNode = node.firstChild;
+ if (textNode && textNode.type === 3) {
text = textNode.value.replace(startWhiteSpaceRegExp, '');
+ // Any characters left after trim or should we remove it
if (text.length > 0) {
textNode.value = text;
textNode = textNode.next;
@@ -3460,12 +3695,27 @@ tinymce.html.Styles = function(settings, schema) {
textNode.remove();
textNode = sibling;
}
+
+ // Remove any pure whitespace siblings
+ while (textNode && textNode.type === 3) {
+ text = textNode.value;
+ sibling = textNode.next;
+
+ if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
+ textNode.remove();
+ textNode = sibling;
+ }
+
+ textNode = sibling;
+ }
}
- // Trim whitespace at end of block
- for (textNode = node.lastChild; textNode && textNode.type === 3; ) {
+ // Trim whitespace of the last node in a block
+ textNode = node.lastChild;
+ if (textNode && textNode.type === 3) {
text = textNode.value.replace(endWhiteSpaceRegExp, '');
+ // Any characters left after trim or should we remove it
if (text.length > 0) {
textNode.value = text;
textNode = textNode.prev;
@@ -3474,6 +3724,19 @@ tinymce.html.Styles = function(settings, schema) {
textNode.remove();
textNode = sibling;
}
+
+ // Remove any pure whitespace siblings
+ while (textNode && textNode.type === 3) {
+ text = textNode.value;
+ sibling = textNode.prev;
+
+ if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
+ textNode.remove();
+ textNode = sibling;
+ }
+
+ textNode = sibling;
+ }
}
}
@@ -3578,8 +3841,8 @@ tinymce.html.Styles = function(settings, schema) {
// these elements and keep br elements that where intended to be there intact
if (settings.remove_trailing_brs) {
self.addNodeFilter('br', function(nodes, name) {
- var i, l = nodes.length, node, blockElements = schema.getBlockElements(),
- nonEmptyElements = schema.getNonEmptyElements(), parent, prev, prevName;
+ var i, l = nodes.length, node, blockElements = tinymce.extend({}, schema.getBlockElements()),
+ nonEmptyElements = schema.getNonEmptyElements(), parent, lastParent, prev, prevName;
// Remove brs from body element as well
blockElements.body = 1;
@@ -3590,7 +3853,7 @@ tinymce.html.Styles = function(settings, schema) {
parent = node.parent;
if (blockElements[node.parent.name] && node === parent.lastChild) {
- // Loop all nodes to the right of the current node and check for other BR elements
+ // Loop all nodes to the left of the current node and check for other BR elements
// excluding bookmarks since they are invisible
prev = node.prev;
while (prev) {
@@ -3628,6 +3891,46 @@ tinymce.html.Styles = function(settings, schema) {
}
}
}
+ } else {
+ // Replaces BR elements inside inline elements like <p><b><i><br></i></b></p> so they become <p><b><i>&nbsp;</i></b></p>
+ lastParent = node;
+ while (parent.firstChild === lastParent && parent.lastChild === lastParent) {
+ lastParent = parent;
+
+ if (blockElements[parent.name]) {
+ break;
+ }
+
+ parent = parent.parent;
+ }
+
+ if (lastParent === parent) {
+ textNode = new tinymce.html.Node('#text', 3);
+ textNode.value = '\u00a0';
+ node.replace(textNode);
+ }
+ }
+ }
+ });
+ }
+
+ // Force anchor names closed, unless the setting "allow_html_in_named_anchor" is explicitly included.
+ if (!settings.allow_html_in_named_anchor) {
+ self.addAttributeFilter('name', function(nodes, name) {
+ var i = nodes.length, sibling, prevSibling, parent, node;
+
+ while (i--) {
+ node = nodes[i];
+ if (node.name === 'a' && node.firstChild) {
+ parent = node.parent;
+
+ // Move children after current node
+ sibling = node.lastChild;
+ do {
+ prevSibling = sibling.prev;
+ parent.insert(sibling, node);
+ sibling = prevSibling;
+ } while (sibling);
}
}
});
@@ -3776,7 +4079,7 @@ tinymce.html.Writer = function(settings) {
writer.cdata(node.value);
},
- // Document fragment
+ // Document fragment
11: function(node) {
if ((node = node.firstChild)) {
do {
@@ -4314,7 +4617,11 @@ tinymce.dom = {};
return self.bind(target, events instanceof Array ? events.join(' ') : events, func, scope);
};
- self.remove = function(target, events, func) {
+ self.remove = function(target, events, func, scope) {
+ if (!target) {
+ return self;
+ }
+
// Old API supported direct ID assignment
if (typeof(target) === "string") {
target = document.getElementById(target);
@@ -4322,7 +4629,7 @@ tinymce.dom = {};
// Old API supported multiple targets
if (target instanceof Array) {
- var i = target;
+ var i = target.length;
while (i--) {
self.remove(target[i], events, func, scope);
@@ -4379,6 +4686,46 @@ tinymce.dom = {};
namespace = 0;
})(tinymce.dom, 'data-mce-expando'); // Namespace and expando
+tinymce.dom.TreeWalker = function(start_node, root_node) {
+ var node = start_node;
+
+ function findSibling(node, start_name, sibling_name, shallow) {
+ var sibling, parent;
+
+ if (node) {
+ // Walk into nodes if it has a start
+ if (!shallow && node[start_name])
+ return node[start_name];
+
+ // Return the sibling if it has one
+ if (node != root_node) {
+ sibling = node[sibling_name];
+ if (sibling)
+ return sibling;
+
+ // Walk up the parents to look for siblings
+ for (parent = node.parentNode; parent && parent != root_node; parent = parent.parentNode) {
+ sibling = parent[sibling_name];
+ if (sibling)
+ return sibling;
+ }
+ }
+ }
+ };
+
+ this.current = function() {
+ return node;
+ };
+
+ this.next = function(shallow) {
+ return (node = findSibling(node, 'firstChild', 'nextSibling', shallow));
+ };
+
+ this.prev = function(shallow) {
+ return (node = findSibling(node, 'lastChild', 'previousSibling', shallow));
+ };
+};
+
(function(tinymce) {
// Shorten names
var each = tinymce.each,
@@ -4568,8 +4915,8 @@ tinymce.dom = {};
h = 0;
return {
- w : parseInt(w) || e.offsetWidth || e.clientWidth,
- h : parseInt(h) || e.offsetHeight || e.clientHeight
+ w : parseInt(w, 10) || e.offsetWidth || e.clientWidth,
+ h : parseInt(h, 10) || e.offsetHeight || e.clientHeight
};
},
@@ -5093,7 +5440,7 @@ tinymce.dom = {};
if (!u)
u = '';
- head = t.select('head')[0];
+ head = d.getElementsByTagName('head')[0];
each(u.split(','), function(u) {
var link;
@@ -5369,7 +5716,7 @@ tinymce.dom = {};
var c = /^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);
function hex(s) {
- s = parseInt(s).toString(16);
+ s = parseInt(s, 10).toString(16);
return s.length > 1 ? s : '0' + s; // 0 -> 00
};
@@ -5622,7 +5969,7 @@ tinymce.dom = {};
// Also keep text nodes with only spaces if surrounded by spans.
// eg. "<p><span>a</span> <span>b</span></p>" should keep space between a and b
var trimmedLength = tinymce.trim(node.nodeValue).length;
- if (!t.isBlock(node.parentNode) || trimmedLength > 0 || trimmedLength == 0 && surroundedBySpans(node))
+ if (!t.isBlock(node.parentNode) || trimmedLength > 0 || trimmedLength === 0 && surroundedBySpans(node))
return;
} else if (type == 1) {
// If the only child is a bookmark then move it up
@@ -5683,6 +6030,25 @@ tinymce.dom = {};
return this.events.fire(target, name, evt);
},
+ // Returns the content editable state of a node
+ getContentEditable: function(node) {
+ var contentEditable;
+
+ // Check type
+ if (node.nodeType != 1) {
+ return null;
+ }
+
+ // Check for fake content editable
+ contentEditable = node.getAttribute("data-mce-contenteditable");
+ if (contentEditable && contentEditable !== "inherit") {
+ return contentEditable;
+ }
+
+ // Check for real content editable
+ return node.contentEditable !== "inherit" ? node.contentEditable : null;
+ },
+
_findSib : function(node, selector, name) {
var t = this, f = selector;
@@ -6502,7 +6868,7 @@ tinymce.dom = {};
// We need to walk char by char since rng.text or rng.htmlText will trim line endings
offset = 0;
while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {
- if (checkRng.move('character', 1) == 0 || parent != checkRng.parentElement()) {
+ if (checkRng.move('character', 1) === 0 || parent != checkRng.parentElement()) {
break;
}
@@ -6515,7 +6881,7 @@ tinymce.dom = {};
// Walk character by character in text node until we hit the selected range endpoint, hit the end of document or parent isn't the right one
offset = 0;
while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {
- if (checkRng.move('character', -1) == 0 || parent != checkRng.parentElement()) {
+ if (checkRng.move('character', -1) === 0 || parent != checkRng.parentElement()) {
break;
}
@@ -6681,7 +7047,7 @@ tinymce.dom = {};
var rng = selection.getRng(), start, end, bookmark = {};
function getIndexes(node) {
- var node, parent, root, children, i, indexes = [];
+ var parent, root, children, i, indexes = [];
parent = node.parentNode;
root = dom.getRoot().parentNode;
@@ -6846,13 +7212,18 @@ tinymce.dom = {};
// If single element selection then try making a control selection out of it
if (startContainer == endContainer && startContainer.nodeType == 1) {
// Trick to place the caret inside an empty block element like <p></p>
- if (!startContainer.hasChildNodes()) {
- startContainer.innerHTML = '<span>\uFEFF</span><span>\uFEFF</span>';
- ieRng.moveToElementText(startContainer.lastChild);
- ieRng.select();
- dom.doc.selection.clear();
- startContainer.innerHTML = '';
- return;
+ if (startOffset == endOffset && !startContainer.hasChildNodes()) {
+ if (startContainer.canHaveHTML) {
+ startContainer.innerHTML = '<span>\uFEFF</span><span>\uFEFF</span>';
+ ieRng.moveToElementText(startContainer.lastChild);
+ ieRng.select();
+ dom.doc.selection.clear();
+ startContainer.innerHTML = '';
+ return;
+ } else {
+ startOffset = dom.nodeIndex(startContainer);
+ startContainer = startContainer.parentNode;
+ }
}
if (startOffset == endOffset - 1) {
@@ -6885,29 +7256,33 @@ tinymce.dom = {};
/*
- * Sizzle CSS Selector Engine - v1.0
- * Copyright 2009, The Dojo Foundation
+ * Sizzle CSS Selector Engine
+ * Copyright, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
* More information: http://sizzlejs.com/
*/
(function(){
var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+ expando = "sizcache",
done = 0,
toString = Object.prototype.toString,
hasDuplicate = false,
- baseHasDuplicate = true;
+ baseHasDuplicate = true,
+ rBackslash = /\\/g,
+ rReturn = /\r\n/g,
+ rNonWord = /\W/;
// Here we check if the JavaScript engine is using some sort of
// optimization where it does not always call our comparision
// function. If that is the case, discard the hasDuplicate value.
// Thus far that includes Google Chrome.
-[0, 0].sort(function(){
+[0, 0].sort(function() {
baseHasDuplicate = false;
return 0;
});
-var Sizzle = function(selector, context, results, seed) {
+var Sizzle = function( selector, context, results, seed ) {
results = results || [];
context = context || document;
@@ -6916,24 +7291,27 @@ var Sizzle = function(selector, context, results, seed) {
if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
return [];
}
-
+
if ( !selector || typeof selector !== "string" ) {
return results;
}
- var parts = [], m, set, checkSet, extra, prune = true, contextXML = Sizzle.isXML(context),
- soFar = selector, ret, cur, pop, i;
-
+ var m, set, checkSet, extra, ret, cur, pop, i,
+ prune = true,
+ contextXML = Sizzle.isXML( context ),
+ parts = [],
+ soFar = selector;
+
// Reset the position of the chunker regexp (start from head)
do {
- chunker.exec("");
- m = chunker.exec(soFar);
+ chunker.exec( "" );
+ m = chunker.exec( soFar );
if ( m ) {
soFar = m[3];
-
+
parts.push( m[1] );
-
+
if ( m[2] ) {
extra = m[3];
break;
@@ -6942,8 +7320,10 @@ var Sizzle = function(selector, context, results, seed) {
} while ( m );
if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
- set = posProcess( parts[0] + parts[1], context );
+ set = posProcess( parts[0] + parts[1], context, seed );
+
} else {
set = Expr.relative[ parts[0] ] ?
[ context ] :
@@ -6955,27 +7335,35 @@ var Sizzle = function(selector, context, results, seed) {
if ( Expr.relative[ selector ] ) {
selector += parts.shift();
}
-
- set = posProcess( selector, set );
+
+ set = posProcess( selector, set, seed );
}
}
+
} else {
// Take a shortcut and set the context if the root selector is an ID
// (but not if it'll be faster if the inner selector is an ID)
if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
ret = Sizzle.find( parts.shift(), context, contextXML );
- context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
+ context = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set )[0] :
+ ret.set[0];
}
if ( context ) {
ret = seed ?
{ expr: parts.pop(), set: makeArray(seed) } :
Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
- set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
+
+ set = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set ) :
+ ret.set;
if ( parts.length > 0 ) {
- checkSet = makeArray(set);
+ checkSet = makeArray( set );
+
} else {
prune = false;
}
@@ -6996,6 +7384,7 @@ var Sizzle = function(selector, context, results, seed) {
Expr.relative[ cur ]( checkSet, pop, contextXML );
}
+
} else {
checkSet = parts = [];
}
@@ -7012,12 +7401,14 @@ var Sizzle = function(selector, context, results, seed) {
if ( toString.call(checkSet) === "[object Array]" ) {
if ( !prune ) {
results.push.apply( results, checkSet );
+
} else if ( context && context.nodeType === 1 ) {
for ( i = 0; checkSet[i] != null; i++ ) {
if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
results.push( set[i] );
}
}
+
} else {
for ( i = 0; checkSet[i] != null; i++ ) {
if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
@@ -7025,6 +7416,7 @@ var Sizzle = function(selector, context, results, seed) {
}
}
}
+
} else {
makeArray( checkSet, results );
}
@@ -7037,15 +7429,15 @@ var Sizzle = function(selector, context, results, seed) {
return results;
};
-Sizzle.uniqueSort = function(results){
+Sizzle.uniqueSort = function( results ) {
if ( sortOrder ) {
hasDuplicate = baseHasDuplicate;
- results.sort(sortOrder);
+ results.sort( sortOrder );
if ( hasDuplicate ) {
for ( var i = 1; i < results.length; i++ ) {
- if ( results[i] === results[i-1] ) {
- results.splice(i--, 1);
+ if ( results[i] === results[ i - 1 ] ) {
+ results.splice( i--, 1 );
}
}
}
@@ -7054,27 +7446,32 @@ Sizzle.uniqueSort = function(results){
return results;
};
-Sizzle.matches = function(expr, set){
- return Sizzle(expr, null, null, set);
+Sizzle.matches = function( expr, set ) {
+ return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+ return Sizzle( expr, null, null, [node] ).length > 0;
};
-Sizzle.find = function(expr, context, isXML){
- var set;
+Sizzle.find = function( expr, context, isXML ) {
+ var set, i, len, match, type, left;
if ( !expr ) {
return [];
}
- for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
- var type = Expr.order[i], match;
-
+ for ( i = 0, len = Expr.order.length; i < len; i++ ) {
+ type = Expr.order[i];
+
if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
- var left = match[1];
- match.splice(1,1);
+ left = match[1];
+ match.splice( 1, 1 );
if ( left.substr( left.length - 1 ) !== "\\" ) {
- match[1] = (match[1] || "").replace(/\\/g, "");
+ match[1] = (match[1] || "").replace( rBackslash, "" );
set = Expr.find[ type ]( match, context, isXML );
+
if ( set != null ) {
expr = expr.replace( Expr.match[ type ], "" );
break;
@@ -7084,20 +7481,29 @@ Sizzle.find = function(expr, context, isXML){
}
if ( !set ) {
- set = context.getElementsByTagName("*");
+ set = typeof context.getElementsByTagName !== "undefined" ?
+ context.getElementsByTagName( "*" ) :
+ [];
}
- return {set: set, expr: expr};
+ return { set: set, expr: expr };
};
-Sizzle.filter = function(expr, set, inplace, not){
- var old = expr, result = [], curLoop = set, match, anyFound,
- isXMLFilter = set && set[0] && Sizzle.isXML(set[0]);
+Sizzle.filter = function( expr, set, inplace, not ) {
+ var match, anyFound,
+ type, found, item, filter, left,
+ i, pass,
+ old = expr,
+ result = [],
+ curLoop = set,
+ isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
while ( expr && set.length ) {
- for ( var type in Expr.filter ) {
+ for ( type in Expr.filter ) {
if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
- var filter = Expr.filter[ type ], found, item, left = match[1];
+ filter = Expr.filter[ type ];
+ left = match[1];
+
anyFound = false;
match.splice(1,1);
@@ -7115,23 +7521,26 @@ Sizzle.filter = function(expr, set, inplace, not){
if ( !match ) {
anyFound = found = true;
+
} else if ( match === true ) {
continue;
}
}
if ( match ) {
- for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ for ( i = 0; (item = curLoop[i]) != null; i++ ) {
if ( item ) {
found = filter( item, match, i, curLoop );
- var pass = not ^ !!found;
+ pass = not ^ found;
if ( inplace && found != null ) {
if ( pass ) {
anyFound = true;
+
} else {
curLoop[i] = false;
}
+
} else if ( pass ) {
result.push( item );
anyFound = true;
@@ -7160,6 +7569,7 @@ Sizzle.filter = function(expr, set, inplace, not){
if ( expr === old ) {
if ( anyFound == null ) {
Sizzle.error( expr );
+
} else {
break;
}
@@ -7172,35 +7582,78 @@ Sizzle.filter = function(expr, set, inplace, not){
};
Sizzle.error = function( msg ) {
- throw "Syntax error, unrecognized expression: " + msg;
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+var getText = Sizzle.getText = function( elem ) {
+ var i, node,
+ nodeType = elem.nodeType,
+ ret = "";
+
+ if ( nodeType ) {
+ if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent || innerText for elements
+ if ( typeof elem.textContent === 'string' ) {
+ return elem.textContent;
+ } else if ( typeof elem.innerText === 'string' ) {
+ // Replace IE's carriage returns
+ return elem.innerText.replace( rReturn, '' );
+ } else {
+ // Traverse it's children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ } else {
+
+ // If no nodeType, this is expected to be an array
+ for ( i = 0; (node = elem[i]); i++ ) {
+ // Do not traverse comment nodes
+ if ( node.nodeType !== 8 ) {
+ ret += getText( node );
+ }
+ }
+ }
+ return ret;
};
var Expr = Sizzle.selectors = {
order: [ "ID", "NAME", "TAG" ],
+
match: {
ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
- CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
+ 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(elem){
- return elem.getAttribute("href");
+ href: function( elem ) {
+ return elem.getAttribute( "href" );
+ },
+ type: function( elem ) {
+ return elem.getAttribute( "type" );
}
},
+
relative: {
"+": function(checkSet, part){
var isPartStr = typeof part === "string",
- isTag = isPartStr && !/\W/.test(part),
+ isTag = isPartStr && !rNonWord.test( part ),
isPartStrNotTag = isPartStr && !isTag;
if ( isTag ) {
@@ -7221,23 +7674,29 @@ var Expr = Sizzle.selectors = {
Sizzle.filter( part, checkSet, true );
}
},
- ">": function(checkSet, part){
- var isPartStr = typeof part === "string",
- elem, i = 0, l = checkSet.length;
- if ( isPartStr && !/\W/.test(part) ) {
+ ">": function( checkSet, part ) {
+ var elem,
+ isPartStr = typeof part === "string",
+ i = 0,
+ l = checkSet.length;
+
+ if ( isPartStr && !rNonWord.test( part ) ) {
part = part.toLowerCase();
for ( ; i < l; i++ ) {
elem = checkSet[i];
+
if ( elem ) {
var parent = elem.parentNode;
checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
}
}
+
} else {
for ( ; i < l; i++ ) {
elem = checkSet[i];
+
if ( elem ) {
checkSet[i] = isPartStr ?
elem.parentNode :
@@ -7250,39 +7709,50 @@ var Expr = Sizzle.selectors = {
}
}
},
+
"": function(checkSet, part, isXML){
- var doneName = done++, checkFn = dirCheck, nodeCheck;
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
- if ( typeof part === "string" && !/\W/.test(part) ) {
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
part = part.toLowerCase();
nodeCheck = part;
checkFn = dirNodeCheck;
}
- checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
+ checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
},
- "~": function(checkSet, part, isXML){
- var doneName = done++, checkFn = dirCheck, nodeCheck;
- if ( typeof part === "string" && !/\W/.test(part) ) {
+ "~": function( checkSet, part, isXML ) {
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
part = part.toLowerCase();
nodeCheck = part;
checkFn = dirNodeCheck;
}
- checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
+ checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
}
},
+
find: {
- ID: function(match, context, isXML){
+ ID: function( match, context, isXML ) {
if ( typeof context.getElementById !== "undefined" && !isXML ) {
var m = context.getElementById(match[1]);
- return m ? [m] : [];
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
}
},
- NAME: function(match, context){
+
+ NAME: function( match, context ) {
if ( typeof context.getElementsByName !== "undefined" ) {
- var ret = [], results = context.getElementsByName(match[1]);
+ var ret = [],
+ results = context.getElementsByName( match[1] );
for ( var i = 0, l = results.length; i < l; i++ ) {
if ( results[i].getAttribute("name") === match[1] ) {
@@ -7293,13 +7763,16 @@ var Expr = Sizzle.selectors = {
return ret.length === 0 ? null : ret;
}
},
- TAG: function(match, context){
- return context.getElementsByTagName(match[1]);
+
+ TAG: function( match, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( match[1] );
+ }
}
},
preFilter: {
- CLASS: function(match, curLoop, inplace, result, not, isXML){
- match = " " + match[1].replace(/\\/g, "") + " ";
+ CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+ match = " " + match[1].replace( rBackslash, "" ) + " ";
if ( isXML ) {
return match;
@@ -7307,10 +7780,11 @@ var Expr = Sizzle.selectors = {
for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
if ( elem ) {
- if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
if ( !inplace ) {
result.push( elem );
}
+
} else if ( inplace ) {
curLoop[i] = false;
}
@@ -7319,16 +7793,25 @@ var Expr = Sizzle.selectors = {
return false;
},
- ID: function(match){
- return match[1].replace(/\\/g, "");
+
+ ID: function( match ) {
+ return match[1].replace( rBackslash, "" );
},
- TAG: function(match, curLoop){
- return match[1].toLowerCase();
+
+ TAG: function( match, curLoop ) {
+ return match[1].replace( rBackslash, "" ).toLowerCase();
},
- CHILD: function(match){
+
+ CHILD: function( match ) {
if ( match[1] === "nth" ) {
+ if ( !match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ match[2] = match[2].replace(/^\+|\s*/g, '');
+
// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+ var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
@@ -7336,141 +7819,196 @@ var Expr = Sizzle.selectors = {
match[2] = (test[1] + (test[2] || 1)) - 0;
match[3] = test[3] - 0;
}
+ else if ( match[2] ) {
+ Sizzle.error( match[0] );
+ }
// TODO: Move to normal caching system
match[0] = done++;
return match;
},
- ATTR: function(match, curLoop, inplace, result, not, isXML){
- var name = match[1].replace(/\\/g, "");
-
+
+ ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+ var name = match[1] = match[1].replace( rBackslash, "" );
+
if ( !isXML && Expr.attrMap[name] ) {
match[1] = Expr.attrMap[name];
}
+ // Handle if an un-quoted value was used
+ match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
+
if ( match[2] === "~=" ) {
match[4] = " " + match[4] + " ";
}
return match;
},
- PSEUDO: function(match, curLoop, inplace, result, not){
+
+ PSEUDO: function( match, curLoop, inplace, result, not ) {
if ( match[1] === "not" ) {
// If we're dealing with a complex expression, or a simple one
if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
match[3] = Sizzle(match[3], null, null, curLoop);
+
} else {
var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
if ( !inplace ) {
result.push.apply( result, ret );
}
+
return false;
}
+
} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
return true;
}
-
+
return match;
},
- POS: function(match){
+
+ POS: function( match ) {
match.unshift( true );
+
return match;
}
},
+
filters: {
- enabled: function(elem){
+ enabled: function( elem ) {
return elem.disabled === false && elem.type !== "hidden";
},
- disabled: function(elem){
+
+ disabled: function( elem ) {
return elem.disabled === true;
},
- checked: function(elem){
+
+ checked: function( elem ) {
return elem.checked === true;
},
- selected: function(elem){
+
+ selected: function( elem ) {
// Accessing this property makes selected-by-default
// options in Safari work properly
- elem.parentNode.selectedIndex;
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
return elem.selected === true;
},
- parent: function(elem){
+
+ parent: function( elem ) {
return !!elem.firstChild;
},
- empty: function(elem){
+
+ empty: function( elem ) {
return !elem.firstChild;
},
- has: function(elem, i, match){
+
+ has: function( elem, i, match ) {
return !!Sizzle( match[3], elem ).length;
},
- header: function(elem){
+
+ header: function( elem ) {
return (/h\d/i).test( elem.nodeName );
},
- text: function(elem){
- return "text" === elem.type;
+
+ text: function( elem ) {
+ var attr = elem.getAttribute( "type" ), type = elem.type;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
},
- radio: function(elem){
- return "radio" === elem.type;
+
+ radio: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
},
- checkbox: function(elem){
- return "checkbox" === elem.type;
+
+ checkbox: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
+ },
+
+ file: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
},
- file: function(elem){
- return "file" === elem.type;
+
+ password: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
},
- password: function(elem){
- return "password" === elem.type;
+
+ submit: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "submit" === elem.type;
},
- submit: function(elem){
- return "submit" === elem.type;
+
+ image: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
},
- image: function(elem){
- return "image" === elem.type;
+
+ reset: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "reset" === elem.type;
},
- reset: function(elem){
- return "reset" === elem.type;
+
+ button: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && "button" === elem.type || name === "button";
},
- button: function(elem){
- return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
+
+ input: function( elem ) {
+ return (/input|select|textarea|button/i).test( elem.nodeName );
},
- input: function(elem){
- return (/input|select|textarea|button/i).test(elem.nodeName);
+
+ focus: function( elem ) {
+ return elem === elem.ownerDocument.activeElement;
}
},
setFilters: {
- first: function(elem, i){
+ first: function( elem, i ) {
return i === 0;
},
- last: function(elem, i, match, array){
+
+ last: function( elem, i, match, array ) {
return i === array.length - 1;
},
- even: function(elem, i){
+
+ even: function( elem, i ) {
return i % 2 === 0;
},
- odd: function(elem, i){
+
+ odd: function( elem, i ) {
return i % 2 === 1;
},
- lt: function(elem, i, match){
+
+ lt: function( elem, i, match ) {
return i < match[3] - 0;
},
- gt: function(elem, i, match){
+
+ gt: function( elem, i, match ) {
return i > match[3] - 0;
},
- nth: function(elem, i, match){
+
+ nth: function( elem, i, match ) {
return match[3] - 0 === i;
},
- eq: function(elem, i, match){
+
+ eq: function( elem, i, match ) {
return match[3] - 0 === i;
}
},
filter: {
- PSEUDO: function(elem, match, i, array){
- var name = match[1], filter = Expr.filters[ name ];
+ PSEUDO: function( elem, match, i, array ) {
+ var name = match[1],
+ filter = Expr.filters[ name ];
if ( filter ) {
return filter( elem, i, match, array );
+
} else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
+ return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
} else if ( name === "not" ) {
var not = match[3];
@@ -7481,72 +8019,96 @@ var Expr = Sizzle.selectors = {
}
return true;
+
} else {
- Sizzle.error( "Syntax error, unrecognized expression: " + name );
+ Sizzle.error( name );
}
},
- CHILD: function(elem, match){
- var type = match[1], node = elem;
- switch (type) {
- case 'only':
- case 'first':
- while ( (node = node.previousSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
+
+ CHILD: function( elem, match ) {
+ var first, last,
+ doneName, parent, cache,
+ count, diff,
+ type = match[1],
+ node = elem;
+
+ switch ( type ) {
+ case "only":
+ case "first":
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
}
}
- if ( type === "first" ) {
- return true;
+
+ if ( type === "first" ) {
+ return true;
}
+
node = elem;
- case 'last':
- while ( (node = node.nextSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
+
+ /* falls through */
+ case "last":
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
}
}
+
return true;
- case 'nth':
- var first = match[2], last = match[3];
+
+ case "nth":
+ first = match[2];
+ last = match[3];
if ( first === 1 && last === 0 ) {
return true;
}
-
- var doneName = match[0],
- parent = elem.parentNode;
-
- if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
- var count = 0;
+
+ doneName = match[0];
+ parent = elem.parentNode;
+
+ if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
+ count = 0;
+
for ( node = parent.firstChild; node; node = node.nextSibling ) {
if ( node.nodeType === 1 ) {
node.nodeIndex = ++count;
}
- }
- parent.sizcache = doneName;
+ }
+
+ parent[ expando ] = doneName;
}
-
- var diff = elem.nodeIndex - last;
+
+ diff = elem.nodeIndex - last;
+
if ( first === 0 ) {
return diff === 0;
+
} else {
return ( diff % first === 0 && diff / first >= 0 );
}
}
},
- ID: function(elem, match){
+
+ ID: function( elem, match ) {
return elem.nodeType === 1 && elem.getAttribute("id") === match;
},
- TAG: function(elem, match){
- return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
+
+ TAG: function( elem, match ) {
+ return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
},
- CLASS: function(elem, match){
+
+ CLASS: function( elem, match ) {
return (" " + (elem.className || elem.getAttribute("class")) + " ")
.indexOf( match ) > -1;
},
- ATTR: function(elem, match){
+
+ ATTR: function( elem, match ) {
var name = match[1],
- result = Expr.attrHandle[ name ] ?
+ result = Sizzle.attr ?
+ Sizzle.attr( elem, name ) :
+ Expr.attrHandle[ name ] ?
Expr.attrHandle[ name ]( elem ) :
elem[ name ] != null ?
elem[ name ] :
@@ -7557,6 +8119,8 @@ var Expr = Sizzle.selectors = {
return result == null ?
type === "!=" :
+ !type && Sizzle.attr ?
+ result != null :
type === "=" ?
value === check :
type === "*=" ?
@@ -7575,8 +8139,10 @@ var Expr = Sizzle.selectors = {
value === check || value.substr(0, check.length + 1) === check + "-" :
false;
},
- POS: function(elem, match, i, array){
- var name = match[2], filter = Expr.setFilters[ name ];
+
+ POS: function( elem, match, i, array ) {
+ var name = match[2],
+ filter = Expr.setFilters[ name ];
if ( filter ) {
return filter( elem, i, match, array );
@@ -7594,15 +8160,18 @@ for ( var type in Expr.match ) {
Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
}
+// Expose origPOS
+// "global" as in regardless of relation to brackets/parens
+Expr.match.globalPOS = origPOS;
-var makeArray = function(array, results) {
+var makeArray = function( array, results ) {
array = Array.prototype.slice.call( array, 0 );
if ( results ) {
results.push.apply( results, array );
return results;
}
-
+
return array;
};
@@ -7614,17 +8183,20 @@ try {
Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
// Provide a fallback method if it does not work
-} catch(e){
- makeArray = function(array, results) {
- var ret = results || [], i = 0;
+} catch( e ) {
+ makeArray = function( array, results ) {
+ var i = 0,
+ ret = results || [];
if ( toString.call(array) === "[object Array]" ) {
Array.prototype.push.apply( ret, array );
+
} else {
if ( typeof array.length === "number" ) {
for ( var l = array.length; i < l; i++ ) {
ret.push( array[i] );
}
+
} else {
for ( ; array[i]; i++ ) {
ret.push( array[i] );
@@ -7636,110 +8208,141 @@ try {
};
}
-var sortOrder;
+var sortOrder, siblingCheck;
if ( document.documentElement.compareDocumentPosition ) {
sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
- if ( a == b ) {
- hasDuplicate = true;
- }
return a.compareDocumentPosition ? -1 : 1;
}
- var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
- if ( ret === 0 ) {
- hasDuplicate = true;
- }
- return ret;
+ return a.compareDocumentPosition(b) & 4 ? -1 : 1;
};
-} else if ( "sourceIndex" in document.documentElement ) {
+
+} else {
sortOrder = function( a, b ) {
- if ( !a.sourceIndex || !b.sourceIndex ) {
- if ( a == b ) {
- hasDuplicate = true;
- }
- return a.sourceIndex ? -1 : 1;
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Fallback to using sourceIndex (in IE) if it's available on both nodes
+ } else if ( a.sourceIndex && b.sourceIndex ) {
+ return a.sourceIndex - b.sourceIndex;
}
- var ret = a.sourceIndex - b.sourceIndex;
- if ( ret === 0 ) {
- hasDuplicate = true;
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
}
- return ret;
- };
-} else if ( document.createRange ) {
- sortOrder = function( a, b ) {
- if ( !a.ownerDocument || !b.ownerDocument ) {
- if ( a == b ) {
- hasDuplicate = true;
- }
- return a.ownerDocument ? -1 : 1;
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
}
- var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
- aRange.setStart(a, 0);
- aRange.setEnd(a, 0);
- bRange.setStart(b, 0);
- bRange.setEnd(b, 0);
- var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
- if ( ret === 0 ) {
- hasDuplicate = true;
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
}
- return ret;
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
+ }
+ }
+
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
};
-}
-// Utility function for retreiving the text value of an array of DOM nodes
-Sizzle.getText = function( elems ) {
- var ret = "", elem;
+ siblingCheck = function( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
+ }
- for ( var i = 0; elems[i]; i++ ) {
- elem = elems[i];
+ var cur = a.nextSibling;
- // Get the text from text nodes and CDATA nodes
- if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
- ret += elem.nodeValue;
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
- // Traverse everything else, except comment nodes
- } else if ( elem.nodeType !== 8 ) {
- ret += Sizzle.getText( elem.childNodes );
+ cur = cur.nextSibling;
}
- }
- return ret;
-};
+ return 1;
+ };
+}
// Check to see if the browser returns elements by name when
// querying by getElementById (and provide a workaround)
(function(){
// We're going to inject a fake input element with a specified name
var form = document.createElement("div"),
- id = "script" + (new Date()).getTime();
+ id = "script" + (new Date()).getTime(),
+ root = document.documentElement;
+
form.innerHTML = "<a name='" + id + "'/>";
// Inject it into the root element, check its status, and remove it quickly
- var root = document.documentElement;
root.insertBefore( form, root.firstChild );
// The workaround has to do additional checks after a getElementById
// Which slows things down for other browsers (hence the branching)
if ( document.getElementById( id ) ) {
- Expr.find.ID = function(match, context, isXML){
+ Expr.find.ID = function( match, context, isXML ) {
if ( typeof context.getElementById !== "undefined" && !isXML ) {
var m = context.getElementById(match[1]);
- return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
+
+ return m ?
+ m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+ [m] :
+ undefined :
+ [];
}
};
- Expr.filter.ID = function(elem, match){
+ Expr.filter.ID = function( elem, match ) {
var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
return elem.nodeType === 1 && node && node.nodeValue === match;
};
}
root.removeChild( form );
- root = form = null; // release memory in IE
+
+ // release memory in IE
+ root = form = null;
})();
(function(){
@@ -7752,8 +8355,8 @@ Sizzle.getText = function( elems ) {
// Make sure no comments are found
if ( div.getElementsByTagName("*").length > 0 ) {
- Expr.find.TAG = function(match, context){
- var results = context.getElementsByTagName(match[1]);
+ Expr.find.TAG = function( match, context ) {
+ var results = context.getElementsByTagName( match[1] );
// Filter out possible comments
if ( match[1] === "*" ) {
@@ -7774,19 +8377,25 @@ Sizzle.getText = function( elems ) {
// Check to see if an attribute returns normalized href attributes
div.innerHTML = "<a href='#'></a>";
+
if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
div.firstChild.getAttribute("href") !== "#" ) {
- Expr.attrHandle.href = function(elem){
- return elem.getAttribute("href", 2);
+
+ Expr.attrHandle.href = function( elem ) {
+ return elem.getAttribute( "href", 2 );
};
}
- div = null; // release memory in IE
+ // release memory in IE
+ div = null;
})();
if ( document.querySelectorAll ) {
(function(){
- var oldSizzle = Sizzle, div = document.createElement("div");
+ var oldSizzle = Sizzle,
+ div = document.createElement("div"),
+ id = "__sizzle__";
+
div.innerHTML = "<p class='TEST'></p>";
// Safari can't handle uppercase or unicode characters when
@@ -7794,18 +8403,89 @@ if ( document.querySelectorAll ) {
if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
return;
}
-
- Sizzle = function(query, context, extra, seed){
+
+ Sizzle = function( query, context, extra, seed ) {
context = context || document;
// Only use querySelectorAll on non-XML documents
// (ID selectors don't work in non-HTML documents)
- if ( !seed && context.nodeType === 9 && !Sizzle.isXML(context) ) {
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(e){}
+ if ( !seed && !Sizzle.isXML(context) ) {
+ // See if we find a selector to speed up
+ var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
+
+ if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
+ // Speed-up: Sizzle("TAG")
+ if ( match[1] ) {
+ return makeArray( context.getElementsByTagName( query ), extra );
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
+ return makeArray( context.getElementsByClassName( match[2] ), extra );
+ }
+ }
+
+ if ( context.nodeType === 9 ) {
+ // Speed-up: Sizzle("body")
+ // The body element only exists once, optimize finding it
+ if ( query === "body" && context.body ) {
+ return makeArray( [ context.body ], extra );
+
+ // Speed-up: Sizzle("#ID")
+ } else if ( match && match[3] ) {
+ var elem = context.getElementById( match[3] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id === match[3] ) {
+ return makeArray( [ elem ], extra );
+ }
+
+ } else {
+ return makeArray( [], extra );
+ }
+ }
+
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(qsaError) {}
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ var oldContext = context,
+ old = context.getAttribute( "id" ),
+ nid = old || id,
+ hasParent = context.parentNode,
+ relativeHierarchySelector = /^\s*[+~]/.test( query );
+
+ if ( !old ) {
+ context.setAttribute( "id", nid );
+ } else {
+ nid = nid.replace( /'/g, "\\$&" );
+ }
+ if ( relativeHierarchySelector && hasParent ) {
+ context = context.parentNode;
+ }
+
+ try {
+ if ( !relativeHierarchySelector || hasParent ) {
+ return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
+ }
+
+ } catch(pseudoError) {
+ } finally {
+ if ( !old ) {
+ oldContext.removeAttribute( "id" );
+ }
+ }
+ }
}
-
+
return oldSizzle(query, context, extra, seed);
};
@@ -7813,11 +8493,56 @@ if ( document.querySelectorAll ) {
Sizzle[ prop ] = oldSizzle[ prop ];
}
- div = null; // release memory in IE
+ // release memory in IE
+ div = null;
})();
}
(function(){
+ var html = document.documentElement,
+ matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
+
+ if ( matches ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9 fails this)
+ var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
+ pseudoWorks = false;
+
+ try {
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( document.documentElement, "[test!='']:sizzle" );
+
+ } catch( pseudoError ) {
+ pseudoWorks = true;
+ }
+
+ Sizzle.matchesSelector = function( node, expr ) {
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+ if ( !Sizzle.isXML( node ) ) {
+ try {
+ if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+ var ret = matches.call( node, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || !disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9, so check for that
+ node.document && node.document.nodeType !== 11 ) {
+ return ret;
+ }
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle(expr, null, null, [node]).length > 0;
+ };
+ }
+})();
+
+(function(){
var div = document.createElement("div");
div.innerHTML = "<div class='test e'></div><div class='test'></div>";
@@ -7834,32 +8559,35 @@ if ( document.querySelectorAll ) {
if ( div.getElementsByClassName("e").length === 1 ) {
return;
}
-
+
Expr.order.splice(1, 0, "CLASS");
- Expr.find.CLASS = function(match, context, isXML) {
+ Expr.find.CLASS = function( match, context, isXML ) {
if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
return context.getElementsByClassName(match[1]);
}
};
- div = null; // release memory in IE
+ // release memory in IE
+ div = null;
})();
function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
+
if ( elem ) {
- elem = elem[dir];
var match = false;
+ elem = elem[dir];
+
while ( elem ) {
- if ( elem.sizcache === doneName ) {
+ if ( elem[ expando ] === doneName ) {
match = checkSet[elem.sizset];
break;
}
if ( elem.nodeType === 1 && !isXML ){
- elem.sizcache = doneName;
+ elem[ expando ] = doneName;
elem.sizset = i;
}
@@ -7879,21 +8607,24 @@ function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
+
if ( elem ) {
- elem = elem[dir];
var match = false;
+ elem = elem[dir];
+
while ( elem ) {
- if ( elem.sizcache === doneName ) {
+ if ( elem[ expando ] === doneName ) {
match = checkSet[elem.sizset];
break;
}
if ( elem.nodeType === 1 ) {
if ( !isXML ) {
- elem.sizcache = doneName;
+ elem[ expando ] = doneName;
elem.sizset = i;
}
+
if ( typeof cur !== "string" ) {
if ( elem === cur ) {
match = true;
@@ -7914,21 +8645,34 @@ function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
}
}
-Sizzle.contains = document.compareDocumentPosition ? function(a, b){
- return !!(a.compareDocumentPosition(b) & 16);
-} : function(a, b){
- return a !== b && (a.contains ? a.contains(b) : true);
-};
+if ( document.documentElement.contains ) {
+ Sizzle.contains = function( a, b ) {
+ return a !== b && (a.contains ? a.contains(b) : true);
+ };
-Sizzle.isXML = function(elem){
+} else if ( document.documentElement.compareDocumentPosition ) {
+ Sizzle.contains = function( a, b ) {
+ return !!(a.compareDocumentPosition(b) & 16);
+ };
+
+} else {
+ Sizzle.contains = function() {
+ return false;
+ };
+}
+
+Sizzle.isXML = function( elem ) {
// documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
+ // (such as loading iframes in IE - #4833)
var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
return documentElement ? documentElement.nodeName !== "HTML" : false;
};
-var posProcess = function(selector, context){
- var tmpSet = [], later = "", match,
+var posProcess = function( selector, context, seed ) {
+ var match,
+ tmpSet = [],
+ later = "",
root = context.nodeType ? [context] : context;
// Position selectors must be done after the filter
@@ -7941,7 +8685,7 @@ var posProcess = function(selector, context){
selector = Expr.relative[selector] ? selector + "*" : selector;
for ( var i = 0, l = root.length; i < l; i++ ) {
- Sizzle( selector, root[i], tmpSet );
+ Sizzle( selector, root[i], tmpSet, seed );
}
return Sizzle.filter( later, tmpSet );
@@ -7970,20 +8714,20 @@ window.tinymce.dom.Sizzle = Sizzle;
('getPos,getRect,getParent,add,setStyle,getStyle,setStyles,' +
'setAttrib,setAttribs,getAttrib,addClass,removeClass,' +
'hasClass,getOuterHTML,setOuterHTML,remove,show,hide,' +
- 'isHidden,setHTML,get').split(/,/)
- , function(k) {
- t[k] = function() {
- var a = [id], i;
+ 'isHidden,setHTML,get').split(/,/), function(k) {
+ t[k] = function() {
+ var a = [id], i;
- for (i = 0; i < arguments.length; i++)
- a.push(arguments[i]);
+ for (i = 0; i < arguments.length; i++)
+ a.push(arguments[i]);
- a = dom[k].apply(dom, a);
- t.update(k);
+ a = dom[k].apply(dom, a);
+ t.update(k);
- return a;
- };
- });
+ return a;
+ };
+ }
+ );
tinymce.extend(t, {
on : function(n, f, s) {
@@ -8069,7 +8813,7 @@ window.tinymce.dom.Sizzle = Sizzle;
};
// Shorten names
- var is = tinymce.is, isIE = tinymce.isIE, each = tinymce.each;
+ var is = tinymce.is, isIE = tinymce.isIE, each = tinymce.each, TreeWalker = tinymce.dom.TreeWalker;
tinymce.create('tinymce.dom.Selection', {
Selection : function(dom, win, serializer) {
@@ -8176,7 +8920,7 @@ window.tinymce.dom.Sizzle = Sizzle;
} else {
rng.deleteContents();
- if (doc.body.childNodes.length == 0) {
+ if (doc.body.childNodes.length === 0) {
doc.body.innerHTML = content;
} else {
// createContextualFragment doesn't exists in IE 9 DOMRanges
@@ -8312,46 +9056,69 @@ window.tinymce.dom.Sizzle = Sizzle;
return index;
};
- if (type == 2) {
- function getLocation() {
- var rng = t.getRng(true), root = dom.getRoot(), bookmark = {};
+ function normalizeTableCellSelection(rng) {
+ function moveEndPoint(start) {
+ var container, offset, childNodes, prefix = start ? 'start' : 'end';
- function getPoint(rng, start) {
- var container = rng[start ? 'startContainer' : 'endContainer'],
- offset = rng[start ? 'startOffset' : 'endOffset'], point = [], node, childNodes, after = 0;
+ container = rng[prefix + 'Container'];
+ offset = rng[prefix + 'Offset'];
- if (container.nodeType == 3) {
- if (normalized) {
- for (node = container.previousSibling; node && node.nodeType == 3; node = node.previousSibling)
- offset += node.nodeValue.length;
- }
+ if (container.nodeType == 1 && container.nodeName == "TR") {
+ childNodes = container.childNodes;
+ container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];
+ if (container) {
+ offset = start ? 0 : container.childNodes.length;
+ rng['set' + (start ? 'Start' : 'End')](container, offset);
+ }
+ }
+ };
- point.push(offset);
- } else {
- childNodes = container.childNodes;
+ moveEndPoint(true);
+ moveEndPoint();
- if (offset >= childNodes.length && childNodes.length) {
- after = 1;
- offset = Math.max(0, childNodes.length - 1);
- }
+ return rng;
+ };
+
+ function getLocation() {
+ var rng = t.getRng(true), root = dom.getRoot(), bookmark = {};
+
+ function getPoint(rng, start) {
+ var container = rng[start ? 'startContainer' : 'endContainer'],
+ offset = rng[start ? 'startOffset' : 'endOffset'], point = [], node, childNodes, after = 0;
- point.push(t.dom.nodeIndex(childNodes[offset], normalized) + after);
+ if (container.nodeType == 3) {
+ if (normalized) {
+ for (node = container.previousSibling; node && node.nodeType == 3; node = node.previousSibling)
+ offset += node.nodeValue.length;
}
- for (; container && container != root; container = container.parentNode)
- point.push(t.dom.nodeIndex(container, normalized));
+ point.push(offset);
+ } else {
+ childNodes = container.childNodes;
- return point;
- };
+ if (offset >= childNodes.length && childNodes.length) {
+ after = 1;
+ offset = Math.max(0, childNodes.length - 1);
+ }
- bookmark.start = getPoint(rng, true);
+ point.push(t.dom.nodeIndex(childNodes[offset], normalized) + after);
+ }
- if (!t.isCollapsed())
- bookmark.end = getPoint(rng);
+ for (; container && container != root; container = container.parentNode)
+ point.push(t.dom.nodeIndex(container, normalized));
- return bookmark;
+ return point;
};
+ bookmark.start = getPoint(rng, true);
+
+ if (!t.isCollapsed())
+ bookmark.end = getPoint(rng);
+
+ return bookmark;
+ };
+
+ if (type == 2) {
if (t.tridentSel)
return t.tridentSel.getBookmark(type);
@@ -8384,7 +9151,7 @@ window.tinymce.dom.Sizzle = Sizzle;
// Detect the empty space after block elements in IE and move the end back one character <p></p>] becomes <p>]</p>
rng.moveToElementText(rng2.parentElement());
- if (rng.compareEndPoints('StartToEnd', rng2) == 0)
+ if (rng.compareEndPoints('StartToEnd', rng2) === 0)
rng2.move('character', -1);
rng2.pasteHTML('<span data-mce-type="bookmark" id="' + id + '_end" style="' + styles + '">' + chr + '</span>');
@@ -8406,13 +9173,8 @@ window.tinymce.dom.Sizzle = Sizzle;
if (name == 'IMG')
return {name : name, index : findIndex(name, element)};
- // Can't insert a node into the root of document WebKit defaults to document
- if (rng.startContainer.nodeType == 9) {
- return;
- }
-
// W3C method
- rng2 = rng.cloneRange();
+ rng2 = normalizeTableCellSelection(rng.cloneRange());
// Insert end marker
if (!collapsed) {
@@ -8420,6 +9182,7 @@ window.tinymce.dom.Sizzle = Sizzle;
rng2.insertNode(dom.create('span', {'data-mce-type' : "bookmark", id : id + '_end', style : styles}, chr));
}
+ rng = normalizeTableCellSelection(rng);
rng.collapse(true);
rng.insertNode(dom.create('span', {'data-mce-type' : "bookmark", id : id + '_start', style : styles}, chr));
}
@@ -8432,122 +9195,122 @@ window.tinymce.dom.Sizzle = Sizzle;
moveToBookmark : function(bookmark) {
var t = this, dom = t.dom, marker1, marker2, rng, root, startContainer, endContainer, startOffset, endOffset;
- if (bookmark) {
- if (bookmark.start) {
- rng = dom.createRng();
- root = dom.getRoot();
+ function setEndPoint(start) {
+ var point = bookmark[start ? 'start' : 'end'], i, node, offset, children;
- function setEndPoint(start) {
- var point = bookmark[start ? 'start' : 'end'], i, node, offset, children;
+ if (point) {
+ offset = point[0];
- if (point) {
- offset = point[0];
+ // Find container node
+ for (node = root, i = point.length - 1; i >= 1; i--) {
+ children = node.childNodes;
- // Find container node
- for (node = root, i = point.length - 1; i >= 1; i--) {
- children = node.childNodes;
+ if (point[i] > children.length - 1)
+ return;
- if (point[i] > children.length - 1)
- return;
+ node = children[point[i]];
+ }
- node = children[point[i]];
- }
+ // Move text offset to best suitable location
+ if (node.nodeType === 3)
+ offset = Math.min(point[0], node.nodeValue.length);
- // Move text offset to best suitable location
- if (node.nodeType === 3)
- offset = Math.min(point[0], node.nodeValue.length);
+ // Move element offset to best suitable location
+ if (node.nodeType === 1)
+ offset = Math.min(point[0], node.childNodes.length);
- // Move element offset to best suitable location
- if (node.nodeType === 1)
- offset = Math.min(point[0], node.childNodes.length);
+ // Set offset within container node
+ if (start)
+ rng.setStart(node, offset);
+ else
+ rng.setEnd(node, offset);
+ }
- // Set offset within container node
- if (start)
- rng.setStart(node, offset);
- else
- rng.setEnd(node, offset);
- }
+ return true;
+ };
- return true;
- };
+ function restoreEndPoint(suffix) {
+ var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev, keep = bookmark.keep;
- if (t.tridentSel)
- return t.tridentSel.moveToBookmark(bookmark);
+ if (marker) {
+ node = marker.parentNode;
- if (setEndPoint(true) && setEndPoint()) {
- t.setRng(rng);
+ if (suffix == 'start') {
+ if (!keep) {
+ idx = dom.nodeIndex(marker);
+ } else {
+ node = marker.firstChild;
+ idx = 1;
+ }
+
+ startContainer = endContainer = node;
+ startOffset = endOffset = idx;
+ } else {
+ if (!keep) {
+ idx = dom.nodeIndex(marker);
+ } else {
+ node = marker.firstChild;
+ idx = 1;
+ }
+
+ endContainer = node;
+ endOffset = idx;
}
- } else if (bookmark.id) {
- function restoreEndPoint(suffix) {
- var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev, keep = bookmark.keep;
- if (marker) {
- node = marker.parentNode;
+ if (!keep) {
+ prev = marker.previousSibling;
+ next = marker.nextSibling;
- if (suffix == 'start') {
- if (!keep) {
- idx = dom.nodeIndex(marker);
- } else {
- node = marker.firstChild;
- idx = 1;
- }
+ // Remove all marker text nodes
+ each(tinymce.grep(marker.childNodes), function(node) {
+ if (node.nodeType == 3)
+ node.nodeValue = node.nodeValue.replace(/\uFEFF/g, '');
+ });
+
+ // Remove marker but keep children if for example contents where inserted into the marker
+ // Also remove duplicated instances of the marker for example by a split operation or by WebKit auto split on paste feature
+ while (marker = dom.get(bookmark.id + '_' + suffix))
+ dom.remove(marker, 1);
- startContainer = endContainer = node;
+ // If siblings are text nodes then merge them unless it's Opera since it some how removes the node
+ // and we are sniffing since adding a lot of detection code for a browser with 3% of the market isn't worth the effort. Sorry, Opera but it's just a fact
+ if (prev && next && prev.nodeType == next.nodeType && prev.nodeType == 3 && !tinymce.isOpera) {
+ idx = prev.nodeValue.length;
+ prev.appendData(next.nodeValue);
+ dom.remove(next);
+
+ if (suffix == 'start') {
+ startContainer = endContainer = prev;
startOffset = endOffset = idx;
} else {
- if (!keep) {
- idx = dom.nodeIndex(marker);
- } else {
- node = marker.firstChild;
- idx = 1;
- }
-
- endContainer = node;
+ endContainer = prev;
endOffset = idx;
}
+ }
+ }
+ }
+ };
- if (!keep) {
- prev = marker.previousSibling;
- next = marker.nextSibling;
-
- // Remove all marker text nodes
- each(tinymce.grep(marker.childNodes), function(node) {
- if (node.nodeType == 3)
- node.nodeValue = node.nodeValue.replace(/\uFEFF/g, '');
- });
+ function addBogus(node) {
+ // Adds a bogus BR element for empty block elements
+ if (dom.isBlock(node) && !node.innerHTML && !isIE)
+ node.innerHTML = '<br data-mce-bogus="1" />';
- // Remove marker but keep children if for example contents where inserted into the marker
- // Also remove duplicated instances of the marker for example by a split operation or by WebKit auto split on paste feature
- while (marker = dom.get(bookmark.id + '_' + suffix))
- dom.remove(marker, 1);
-
- // If siblings are text nodes then merge them unless it's Opera since it some how removes the node
- // and we are sniffing since adding a lot of detection code for a browser with 3% of the market isn't worth the effort. Sorry, Opera but it's just a fact
- if (prev && next && prev.nodeType == next.nodeType && prev.nodeType == 3 && !tinymce.isOpera) {
- idx = prev.nodeValue.length;
- prev.appendData(next.nodeValue);
- dom.remove(next);
-
- if (suffix == 'start') {
- startContainer = endContainer = prev;
- startOffset = endOffset = idx;
- } else {
- endContainer = prev;
- endOffset = idx;
- }
- }
- }
- }
- };
+ return node;
+ };
- function addBogus(node) {
- // Adds a bogus BR element for empty block elements or just a space on IE since it renders BR elements incorrectly
- if (dom.isBlock(node) && !node.innerHTML)
- node.innerHTML = !isIE ? '<br data-mce-bogus="1" />' : ' ';
+ if (bookmark) {
+ if (bookmark.start) {
+ rng = dom.createRng();
+ root = dom.getRoot();
- return node;
- };
+ if (t.tridentSel)
+ return t.tridentSel.moveToBookmark(bookmark);
+ if (setEndPoint(true) && setEndPoint()) {
+ t.setRng(rng);
+ }
+ } else if (bookmark.id) {
// Restore start/end points
restoreEndPoint('start');
restoreEndPoint('end');
@@ -8568,6 +9331,32 @@ window.tinymce.dom.Sizzle = Sizzle;
select : function(node, content) {
var t = this, dom = t.dom, rng = dom.createRng(), idx;
+ function setPoint(node, start) {
+ var walker = new TreeWalker(node, node);
+
+ do {
+ // Text node
+ if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length !== 0) {
+ if (start)
+ rng.setStart(node, 0);
+ else
+ rng.setEnd(node, node.nodeValue.length);
+
+ return;
+ }
+
+ // BR element
+ if (node.nodeName == 'BR') {
+ if (start)
+ rng.setStartBefore(node);
+ else
+ rng.setEndBefore(node);
+
+ return;
+ }
+ } while (node = (start ? walker.next() : walker.prev()));
+ };
+
if (node) {
idx = dom.nodeIndex(node);
rng.setStart(node.parentNode, idx);
@@ -8575,32 +9364,6 @@ window.tinymce.dom.Sizzle = Sizzle;
// Find first/last text node or BR element
if (content) {
- function setPoint(node, start) {
- var walker = new tinymce.dom.TreeWalker(node, node);
-
- do {
- // Text node
- if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) {
- if (start)
- rng.setStart(node, 0);
- else
- rng.setEnd(node, node.nodeValue.length);
-
- return;
- }
-
- // BR element
- if (node.nodeName == 'BR') {
- if (start)
- rng.setStartBefore(node);
- else
- rng.setEndBefore(node);
-
- return;
- }
- } while (node = (start ? walker.next() : walker.prev()));
- };
-
setPoint(node, 1);
setPoint(node);
}
@@ -8644,48 +9407,58 @@ window.tinymce.dom.Sizzle = Sizzle;
},
getRng : function(w3c) {
- var t = this, s, r, elm, doc = t.win.document;
+ var self = this, selection, rng, elm, doc = self.win.document;
// Found tridentSel object then we need to use that one
- if (w3c && t.tridentSel)
- return t.tridentSel.getRangeAt(0);
+ if (w3c && self.tridentSel) {
+ return self.tridentSel.getRangeAt(0);
+ }
try {
- if (s = t.getSel())
- r = s.rangeCount > 0 ? s.getRangeAt(0) : (s.createRange ? s.createRange() : doc.createRange());
+ if (selection = self.getSel()) {
+ rng = selection.rangeCount > 0 ? selection.getRangeAt(0) : (selection.createRange ? selection.createRange() : doc.createRange());
+ }
} catch (ex) {
// IE throws unspecified error here if TinyMCE is placed in a frame/iframe
}
// We have W3C ranges and it's IE then fake control selection since IE9 doesn't handle that correctly yet
- if (tinymce.isIE && r && r.setStart && doc.selection.createRange().item) {
+ if (tinymce.isIE && rng && rng.setStart && doc.selection.createRange().item) {
elm = doc.selection.createRange().item(0);
- r = doc.createRange();
- r.setStartBefore(elm);
- r.setEndAfter(elm);
+ rng = doc.createRange();
+ rng.setStartBefore(elm);
+ rng.setEndAfter(elm);
}
// No range found then create an empty one
// This can occur when the editor is placed in a hidden container element on Gecko
// Or on IE when there was an exception
- if (!r)
- r = doc.createRange ? doc.createRange() : doc.body.createTextRange();
+ if (!rng) {
+ rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();
+ }
+
+ // If range is at start of document then move it to start of body
+ if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {
+ elm = self.dom.getRoot();
+ rng.setStart(elm, 0);
+ rng.setEnd(elm, 0);
+ }
- if (t.selectedRange && t.explicitRange) {
- if (r.compareBoundaryPoints(r.START_TO_START, t.selectedRange) === 0 && r.compareBoundaryPoints(r.END_TO_END, t.selectedRange) === 0) {
+ if (self.selectedRange && self.explicitRange) {
+ if (rng.compareBoundaryPoints(rng.START_TO_START, self.selectedRange) === 0 && rng.compareBoundaryPoints(rng.END_TO_END, self.selectedRange) === 0) {
// Safari, Opera and Chrome only ever select text which causes the range to change.
// This lets us use the originally set range if the selection hasn't been changed by the user.
- r = t.explicitRange;
+ rng = self.explicitRange;
} else {
- t.selectedRange = null;
- t.explicitRange = null;
+ self.selectedRange = null;
+ self.explicitRange = null;
}
}
- return r;
+ return rng;
},
- setRng : function(r) {
+ setRng : function(r, forward) {
var s, t = this;
if (!t.tridentSel) {
@@ -8701,6 +9474,13 @@ window.tinymce.dom.Sizzle = Sizzle;
}
s.addRange(r);
+
+ // Forward is set to false and we have an extend function
+ if (forward === false && s.extend) {
+ s.collapse(r.endContainer, r.endOffset);
+ s.extend(r.startContainer, r.startOffset);
+ }
+
// adding range isn't always successful so we need to check range count otherwise an exception can occur
t.selectedRange = s.rangeCount > 0 ? s.getRangeAt(0) : null;
}
@@ -8735,6 +9515,14 @@ window.tinymce.dom.Sizzle = Sizzle;
getNode : function() {
var t = this, rng = t.getRng(), sel = t.getSel(), elm, start = rng.startContainer, end = rng.endContainer;
+ function skipEmptyTextNodes(n, forwards) {
+ var orig = n;
+ while (n && n.nodeType === 3 && n.length === 0) {
+ n = forwards ? n.nextSibling : n.previousSibling;
+ }
+ return n || orig;
+ };
+
// Range maybe lost after the editor is made visible again
if (!rng)
return t.dom.getRoot();
@@ -8758,13 +9546,6 @@ window.tinymce.dom.Sizzle = Sizzle;
// Handle cases where the selection is immediately wrapped around a node and return that node instead of it's parent.
// This happens when you double click an underlined word in FireFox.
if (start.nodeType === 3 && end.nodeType === 3) {
- function skipEmptyTextNodes(n, forwards) {
- var orig = n;
- while (n && n.nodeType === 3 && n.length === 0) {
- n = forwards ? n.nextSibling : n.previousSibling;
- }
- return n || orig;
- }
if (start.length === rng.startOffset) {
start = skipEmptyTextNodes(start.nextSibling, true);
} else {
@@ -8802,7 +9583,7 @@ window.tinymce.dom.Sizzle = Sizzle;
if (sb && eb && sb != eb) {
n = sb;
- var walker = new tinymce.dom.TreeWalker(sb, dom.getRoot());
+ var walker = new TreeWalker(sb, dom.getRoot());
while ((n = walker.next()) && n != eb) {
if (dom.isBlock(n))
bl.push(n);
@@ -8815,54 +9596,120 @@ window.tinymce.dom.Sizzle = Sizzle;
return bl;
},
- normalize : function() {
- var self = this, rng, normalized;
+ isForward: function(){
+ var dom = this.dom, sel = this.getSel(), anchorRange, focusRange;
- // TODO:
- // Retain selection direction.
- // Lean left/right on Gecko for inline elements.
- // Run this on mouse up/key up when the user manually moves the selection
+ // No support for selection direction then always return true
+ if (!sel || sel.anchorNode == null || sel.focusNode == null) {
+ return true;
+ }
- // Normalize only on non IE browsers for now
- if (tinymce.isIE)
- return;
+ anchorRange = dom.createRng();
+ anchorRange.setStart(sel.anchorNode, sel.anchorOffset);
+ anchorRange.collapse(true);
+
+ focusRange = dom.createRng();
+ focusRange.setStart(sel.focusNode, sel.focusOffset);
+ focusRange.collapse(true);
+
+ return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;
+ },
+
+ normalize : function() {
+ var self = this, rng, normalized, collapsed, node, sibling;
function normalizeEndPoint(start) {
- var container, offset, walker, dom = self.dom, body = dom.getRoot(), node;
+ var container, offset, walker, dom = self.dom, body = dom.getRoot(), node, nonEmptyElementsMap, nodeName;
+
+ function hasBrBeforeAfter(node, left) {
+ var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || body);
+
+ while (node = walker[left ? 'prev' : 'next']()) {
+ if (node.nodeName === "BR") {
+ return true;
+ }
+ }
+ };
+
+ // Walks the dom left/right to find a suitable text node to move the endpoint into
+ // It will only walk within the current parent block or body and will stop if it hits a block or a BR/IMG
+ function findTextNodeRelative(left, startNode) {
+ var walker, lastInlineElement;
+
+ startNode = startNode || container;
+ walker = new TreeWalker(startNode, dom.getParent(startNode.parentNode, dom.isBlock) || body);
+
+ // Walk left until we hit a text node we can move to or a block/br/img
+ while (node = walker[left ? 'prev' : 'next']()) {
+ // Found text node that has a length
+ if (node.nodeType === 3 && node.nodeValue.length > 0) {
+ container = node;
+ offset = left ? node.nodeValue.length : 0;
+ normalized = true;
+ return;
+ }
+
+ // Break if we find a block or a BR/IMG/INPUT etc
+ if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
+ return;
+ }
+
+ lastInlineElement = node;
+ }
+
+ // Only fetch the last inline element when in caret mode for now
+ if (collapsed && lastInlineElement) {
+ container = lastInlineElement;
+ normalized = true;
+ offset = 0;
+ }
+ };
container = rng[(start ? 'start' : 'end') + 'Container'];
offset = rng[(start ? 'start' : 'end') + 'Offset'];
+ nonEmptyElementsMap = dom.schema.getNonEmptyElements();
// If the container is a document move it to the body element
if (container.nodeType === 9) {
- container = container.body;
+ container = dom.getRoot();
offset = 0;
}
// If the container is body try move it into the closest text node or position
- // TODO: Add more logic here to handle element selection cases
if (container === body) {
+ // If start is before/after a image, table etc
+ if (start) {
+ node = container.childNodes[offset > 0 ? offset - 1 : 0];
+ if (node) {
+ nodeName = node.nodeName.toLowerCase();
+ if (nonEmptyElementsMap[node.nodeName] || node.nodeName == "TABLE") {
+ return;
+ }
+ }
+ }
+
// Resolve the index
if (container.hasChildNodes()) {
container = container.childNodes[Math.min(!start && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1)];
offset = 0;
// Don't walk into elements that doesn't have any child nodes like a IMG
- if (container.hasChildNodes()) {
+ if (container.hasChildNodes() && !/TABLE/.test(container.nodeName)) {
// Walk the DOM to find a text node to place the caret at or a BR
node = container;
- walker = new tinymce.dom.TreeWalker(container, body);
+ walker = new TreeWalker(container, body);
+
do {
// Found a text node use that position
- if (node.nodeType === 3) {
- offset = start ? 0 : node.nodeValue.length - 1;
+ if (node.nodeType === 3 && node.nodeValue.length > 0) {
+ offset = start ? 0 : node.nodeValue.length;
container = node;
normalized = true;
break;
}
// Found a BR/IMG element that we can place the caret before
- if (/^(BR|IMG)$/.test(node.nodeName)) {
+ if (nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
offset = dom.nodeIndex(node);
container = node.parentNode;
@@ -8879,23 +9726,61 @@ window.tinymce.dom.Sizzle = Sizzle;
}
}
+ // Lean the caret to the left if possible
+ if (collapsed) {
+ // So this: <b>x</b><i>|x</i>
+ // Becomes: <b>x|</b><i>x</i>
+ // Seems that only gecko has issues with this
+ if (container.nodeType === 3 && offset === 0) {
+ findTextNodeRelative(true);
+ }
+
+ // Lean left into empty inline elements when the caret is before a BR
+ // So this: <i><b></b><i>|<br></i>
+ // Becomes: <i><b>|</b><i><br></i>
+ // Seems that only gecko has issues with this
+ if (container.nodeType === 1) {
+ node = container.childNodes[offset];
+ if(node && node.nodeName === 'BR' && !hasBrBeforeAfter(node) && !hasBrBeforeAfter(node, true)) {
+ findTextNodeRelative(true, container.childNodes[offset]);
+ }
+ }
+ }
+
+ // Lean the start of the selection right if possible
+ // So this: x[<b>x]</b>
+ // Becomes: x<b>[x]</b>
+ if (start && !collapsed && container.nodeType === 3 && offset === container.nodeValue.length) {
+ findTextNodeRelative(false);
+ }
+
// Set endpoint if it was normalized
if (normalized)
rng['set' + (start ? 'Start' : 'End')](container, offset);
};
+ // Normalize only on non IE browsers for now
+ if (tinymce.isIE)
+ return;
+
rng = self.getRng();
+ collapsed = rng.collapsed;
// Normalize the end points
normalizeEndPoint(true);
- if (!rng.collapsed)
+ if (!collapsed)
normalizeEndPoint();
// Set the selection if it was normalized
if (normalized) {
+ // If it was collapsed then make sure it still is
+ if (collapsed) {
+ rng.collapse(true);
+ }
+
//console.log(self.dom.dumpRng(rng));
- self.setRng(rng);
+ self.setRng(rng, self.isForward());
}
},
@@ -8913,9 +9798,6 @@ window.tinymce.dom.Sizzle = Sizzle;
_fixIESelection : function() {
var dom = this.dom, doc = dom.doc, body = doc.body, started, startRng, htmlElm;
- // Make HTML element unselectable since we are going to handle selection by hand
- doc.documentElement.unselectable = true;
-
// Return range from point or null if it failed
function rngFromPoint(x, y) {
var rng = body.createTextRange();
@@ -8965,6 +9847,9 @@ window.tinymce.dom.Sizzle = Sizzle;
startRng = started = 0;
};
+ // Make HTML element unselectable since we are going to handle selection by hand
+ doc.documentElement.unselectable = true;
+
// Detect when user selects outside BODY
dom.bind(doc, ['mousedown', 'contextmenu'], function(e) {
if (e.target.nodeName === 'HTML') {
@@ -9039,13 +9924,13 @@ window.tinymce.dom.Sizzle = Sizzle;
}
});
- // Remove internal classes mceItem<..>
+ // Remove internal classes mceItem<..> or mceSelected
htmlParser.addAttributeFilter('class', function(nodes, name) {
var i = nodes.length, node, value;
while (i--) {
node = nodes[i];
- value = node.attr('class').replace(/\s*mce(Item\w+|Selected)\s*/g, '');
+ value = node.attr('class').replace(/(?:^|\s)mce(Item\w+|Selected)(?!\S)/g, '');
node.attr('class', value.length > 0 ? value : null);
}
});
@@ -9223,7 +10108,7 @@ window.tinymce.dom.Sizzle = Sizzle;
// Parse and serialize HTML
args.content = htmlSerializer.serialize(
- htmlParser.parse(args.getInner ? node.innerHTML : tinymce.trim(dom.getOuterHTML(node), args), args)
+ htmlParser.parse(tinymce.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node)), args)
);
// Replace all BOM characters for now until we can find a better solution
@@ -9263,7 +10148,7 @@ window.tinymce.dom.Sizzle = Sizzle;
scriptLoadedCallbacks = {},
queueLoadedCallbacks = [],
loading = 0,
- undefined;
+ undef;
function loadScript(url, callback) {
var t = this, dom = tinymce.DOM, elm, uri, loc, id;
@@ -9372,7 +10257,7 @@ window.tinymce.dom.Sizzle = Sizzle;
var item, state = states[url];
// Add url to load queue
- if (state == undefined) {
+ if (state == undef) {
queue.push(url);
states[url] = QUEUED;
}
@@ -9402,7 +10287,7 @@ window.tinymce.dom.Sizzle = Sizzle;
callback.func.call(callback.scope);
});
- scriptLoadedCallbacks[url] = undefined;
+ scriptLoadedCallbacks[url] = undef;
};
queueLoadedCallbacks.push({
@@ -9459,46 +10344,6 @@ window.tinymce.dom.Sizzle = Sizzle;
tinymce.ScriptLoader = new tinymce.dom.ScriptLoader();
})(tinymce);
-tinymce.dom.TreeWalker = function(start_node, root_node) {
- var node = start_node;
-
- function findSibling(node, start_name, sibling_name, shallow) {
- var sibling, parent;
-
- if (node) {
- // Walk into nodes if it has a start
- if (!shallow && node[start_name])
- return node[start_name];
-
- // Return the sibling if it has one
- if (node != root_node) {
- sibling = node[sibling_name];
- if (sibling)
- return sibling;
-
- // Walk up the parents to look for siblings
- for (parent = node.parentNode; parent && parent != root_node; parent = parent.parentNode) {
- sibling = parent[sibling_name];
- if (sibling)
- return sibling;
- }
- }
- }
- };
-
- this.current = function() {
- return node;
- };
-
- this.next = function(shallow) {
- return (node = findSibling(node, 'firstChild', 'nextSibling', shallow));
- };
-
- this.prev = function(shallow) {
- return (node = findSibling(node, 'lastChild', 'previousSibling', shallow));
- };
-};
-
(function(tinymce) {
tinymce.dom.RangeUtils = function(dom) {
var INVISIBLE_CHAR = '\uFEFF';
@@ -10159,8 +11004,8 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
update : function() {
var t = this, s = t.settings, tb = DOM.get('menu_' + t.id + '_tbl'), co = DOM.get('menu_' + t.id + '_co'), tw, th;
- tw = s.max_width ? Math.min(tb.clientWidth, s.max_width) : tb.clientWidth;
- th = s.max_height ? Math.min(tb.clientHeight, s.max_height) : tb.clientHeight;
+ tw = s.max_width ? Math.min(tb.offsetWidth, s.max_width) : tb.offsetWidth;
+ th = s.max_height ? Math.min(tb.offsetHeight, s.max_height) : tb.offsetHeight;
if (!DOM.boxModel)
t.element.setStyles({width : tw + 2, height : th + 2});
@@ -10519,7 +11364,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
})(tinymce);
(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher;
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, undef;
tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control', {
ListBox : function(id, s, ed) {
@@ -10546,7 +11391,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
t.marked = {};
- if (va == undefined)
+ if (va == undef)
return t.selectByIndex(-1);
// Is string or number make function selector
@@ -10638,7 +11483,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
showMenu : function() {
var t = this, p2, e = DOM.get(this.id), m;
- if (t.isDisabled() || t.items.length == 0)
+ if (t.isDisabled() || t.items.length === 0)
return;
if (t.menu && t.menu.isMenuVisible)
@@ -10705,7 +11550,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
m = t.settings.control_manager.createDropMenu(t.id + '_menu', {
menu_line : 1,
'class' : t.classPrefix + 'Menu mceNoIcons',
- max_width : 150,
+ max_width : 250,
max_height : 150
});
@@ -10725,7 +11570,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
each(t.items, function(o) {
// No value then treat it as a title
- if (o.value === undefined) {
+ if (o.value === undef) {
m.add({
title : o.title,
role : "option",
@@ -10815,7 +11660,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
})(tinymce);
(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher;
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, undef;
tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox', {
NativeListBox : function(id, s) {
@@ -10835,7 +11680,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
select : function(va) {
var t = this, fv, f;
- if (va == undefined)
+ if (va == undef)
return t.selectByIndex(-1);
// Is string or number make function selector
@@ -10988,7 +11833,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
m.settings.vp_offset_x = p2.x;
m.settings.vp_offset_y = p2.y;
m.settings.keyboard_focus = t._focused;
- m.showMenu(0, e.clientHeight);
+ m.showMenu(0, e.firstChild.clientHeight);
Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
t.setState('Selected', 1);
@@ -11172,7 +12017,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
p2 = DOM.getPos(e);
DOM.setStyles(t.id + '_menu', {
left : p2.x,
- top : p2.y + e.clientHeight,
+ top : p2.y + e.firstChild.clientHeight,
zIndex : 200000
});
e = 0;
@@ -11215,7 +12060,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
renderMenu : function() {
var t = this, m, i = 0, s = t.settings, n, tb, tr, w, context;
- w = DOM.add(s.menu_container, 'div', {role: 'listbox', id : t.id + '_menu', 'class' : s['menu_class'] + ' ' + s['class'], style : 'position:absolute;left:0;top:-1000px;'});
+ w = DOM.add(s.menu_container, 'div', {role: 'listbox', id : t.id + '_menu', 'class' : s.menu_class + ' ' + s['class'], style : 'position:absolute;left:0;top:-1000px;'});
m = DOM.add(w, 'div', {'class' : s['class'] + ' mceSplitButtonMenu'});
DOM.add(m, 'span', {'class' : 'mceMenuLine'});
@@ -11244,7 +12089,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
// adding a proper ARIA role = button causes JAWS to read things incorrectly on IE.
if (!tinymce.isIE ) {
- settings['role']= 'option';
+ settings.role = 'option';
}
n = DOM.add(n, 'a', settings);
@@ -11540,7 +12385,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
if (typeof u === "object")
url = u.prefix + u.resource + u.suffix;
- if (url.indexOf('/') != 0 && url.indexOf('://') == -1)
+ if (url.indexOf('/') !== 0 && url.indexOf('://') == -1)
url = tinymce.baseURL + '/' + url;
t.urls[n] = url.substring(0, url.lastIndexOf('/'));
@@ -11564,7 +12409,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
DOM = tinymce.DOM, Event = tinymce.dom.Event,
ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,
explode = tinymce.explode,
- Dispatcher = tinymce.util.Dispatcher, undefined, instanceCounter = 0;
+ Dispatcher = tinymce.util.Dispatcher, undef, instanceCounter = 0;
// Setup some URLs where the editor API is located and where the document is
tinymce.documentBaseURL = window.location.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
@@ -11634,6 +12479,10 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
return f.apply(s || this, Array.prototype.slice.call(arguments, 2));
};
+ function hasClass(n, c) {
+ return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c);
+ };
+
s = extend({
theme : "simple",
language : "en"
@@ -11677,10 +12526,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
case "textareas":
case "specific_textareas":
- function hasClass(n, c) {
- return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c);
- };
-
each(DOM.select('textarea'), function(elm) {
if (s.editor_deselector && hasClass(elm, s.editor_deselector))
return;
@@ -11741,7 +12586,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
},
get : function(id) {
- if (id === undefined)
+ if (id === undef)
return this.editors;
return this.editors[id];
@@ -11794,6 +12639,12 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
execCommand : function(c, u, v) {
var t = this, ed = t.get(v), w;
+ function clr() {
+ ed.destroy();
+ w.detachEvent('onunload', clr);
+ w = w.tinyMCE = w.tinymce = null; // IE leak
+ };
+
// Manager commands
switch (c) {
case "mceFocus":
@@ -11822,12 +12673,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
// Fix IE memory leaks
if (tinymce.isIE) {
- function clr() {
- ed.destroy();
- w.detachEvent('onunload', clr);
- w = w.tinyMCE = w.tinymce = null; // IE leak
- };
-
w.attachEvent('onunload', clr);
}
@@ -11910,108 +12755,18 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
(function(tinymce) {
// Shorten these names
var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend,
- Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isGecko = tinymce.isGecko,
+ each = tinymce.each, isGecko = tinymce.isGecko,
isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, is = tinymce.is,
ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,
- inArray = tinymce.inArray, grep = tinymce.grep, explode = tinymce.explode, VK = tinymce.VK;
+ explode = tinymce.explode;
tinymce.create('tinymce.Editor', {
- Editor : function(id, s) {
- var t = this;
-
- t.id = t.editorId = id;
-
- t.execCommands = {};
- t.queryStateCommands = {};
- t.queryValueCommands = {};
-
- t.isNotDirty = false;
-
- t.plugins = {};
-
- // Add events to the editor
- each([
- 'onPreInit',
-
- 'onBeforeRenderUI',
-
- 'onPostRender',
-
- 'onLoad',
-
- 'onInit',
-
- 'onRemove',
-
- 'onActivate',
-
- 'onDeactivate',
-
- 'onClick',
-
- 'onEvent',
-
- 'onMouseUp',
-
- 'onMouseDown',
-
- 'onDblClick',
-
- 'onKeyDown',
-
- 'onKeyUp',
-
- 'onKeyPress',
+ Editor : function(id, settings) {
+ var self = this, TRUE = true;
- 'onContextMenu',
-
- 'onSubmit',
-
- 'onReset',
-
- 'onPaste',
-
- 'onPreProcess',
-
- 'onPostProcess',
-
- 'onBeforeSetContent',
-
- 'onBeforeGetContent',
-
- 'onSetContent',
-
- 'onGetContent',
-
- 'onLoadContent',
-
- 'onSaveContent',
-
- 'onNodeChange',
-
- 'onChange',
-
- 'onBeforeExecCommand',
-
- 'onExecCommand',
-
- 'onUndo',
-
- 'onRedo',
-
- 'onVisualAid',
-
- 'onSetProgressState',
-
- 'onSetAttrib'
- ], function(e) {
- t[e] = new Dispatcher(t);
- });
-
- t.settings = s = extend({
+ self.settings = settings = extend({
id : id,
language : 'en',
- docs_language : 'en',
theme : 'simple',
skin : 'default',
delta_width : 0,
@@ -12019,58 +12774,63 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
popup_css : '',
plugins : '',
document_base_url : tinymce.documentBaseURL,
- add_form_submit_trigger : 1,
- submit_patch : 1,
- add_unload_trigger : 1,
- convert_urls : 1,
- relative_urls : 1,
- remove_script_host : 1,
- table_inline_editing : 0,
- object_resizing : 1,
- cleanup : 1,
- accessibility_focus : 1,
- custom_shortcuts : 1,
- custom_undo_redo_keyboard_shortcuts : 1,
- custom_undo_redo_restore_selection : 1,
- custom_undo_redo : 1,
+ add_form_submit_trigger : TRUE,
+ submit_patch : TRUE,
+ add_unload_trigger : TRUE,
+ convert_urls : TRUE,
+ relative_urls : TRUE,
+ remove_script_host : TRUE,
+ table_inline_editing : false,
+ object_resizing : TRUE,
+ accessibility_focus : TRUE,
doctype : tinymce.isIE6 ? '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' : '<!DOCTYPE>', // Use old doctype on IE 6 to avoid horizontal scroll
- visual_table_class : 'mceItemTable',
- visual : 1,
+ visual : TRUE,
font_size_style_values : 'xx-small,x-small,small,medium,large,x-large,xx-large',
font_size_legacy_values : 'xx-small,small,medium,large,x-large,xx-large,300%', // See: http://www.w3.org/TR/CSS2/fonts.html#propdef-font-size
- apply_source_formatting : 1,
+ apply_source_formatting : TRUE,
directionality : 'ltr',
forced_root_block : 'p',
- hidden_input : 1,
- padd_empty_editor : 1,
- render_ui : 1,
- init_theme : 1,
- force_p_newlines : 1,
+ hidden_input : TRUE,
+ padd_empty_editor : TRUE,
+ render_ui : TRUE,
indentation : '30px',
- keep_styles : 1,
- fix_table_elements : 1,
- inline_styles : 1,
- convert_fonts_to_spans : true,
+ fix_table_elements : TRUE,
+ inline_styles : TRUE,
+ convert_fonts_to_spans : TRUE,
indent : 'simple',
- indent_before : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside',
- indent_after : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside',
- validate : true,
+ indent_before : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure',
+ indent_after : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure',
+ validate : TRUE,
entity_encoding : 'named',
- url_converter : t.convertURL,
- url_converter_scope : t,
- ie7_compat : true
- }, s);
+ url_converter : self.convertURL,
+ url_converter_scope : self,
+ ie7_compat : TRUE
+ }, settings);
+
+ self.id = self.editorId = id;
+
+ self.isNotDirty = false;
+
+ self.plugins = {};
- t.documentBaseURI = new tinymce.util.URI(s.document_base_url || tinymce.documentBaseURL, {
+ self.documentBaseURI = new tinymce.util.URI(settings.document_base_url || tinymce.documentBaseURL, {
base_uri : tinyMCE.baseURI
});
- t.baseURI = tinymce.baseURI;
+ self.baseURI = tinymce.baseURI;
- t.contentCSS = [];
+ self.contentCSS = [];
+
+ // Creates all events like onClick, onSetContent etc see Editor.Events.js for the actual logic
+ self.setupEvents();
+
+ // Internal command handler objects
+ self.execCommands = {};
+ self.queryStateCommands = {};
+ self.queryValueCommands = {};
// Call setup
- t.execCallback('setup', t);
+ self.execCallback('setup', self);
},
render : function(nst) {
@@ -12091,8 +12851,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
return;
// Is a iPad/iPhone and not on iOS5, then skip initialization. We need to sniff
- // here since the browser says it has contentEditable support but there is no visible
- // caret We will remove this check ones Apple implements full contentEditable support
+ // here since the browser says it has contentEditable support but there is no visible caret.
if (tinymce.isIDevice && !tinymce.isIOS5)
return;
@@ -12171,9 +12930,8 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
var dependencies = PluginManager.dependencies(p);
each(dependencies, function(dep) {
var defaultSettings = {prefix:'plugins/', resource: dep, suffix:'/editor_plugin' + tinymce.suffix + '.js'};
- var dep = PluginManager.createUrl(defaultSettings, dep);
+ dep = PluginManager.createUrl(defaultSettings, dep);
PluginManager.load(dep.resource, dep);
-
});
} else {
// Skip safari plugin, since it is removed as of 3.3b1
@@ -12207,7 +12965,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
o = ThemeManager.get(s.theme);
t.theme = new o();
- if (t.theme.init && s.init_theme)
+ if (t.theme.init)
t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, ''));
}
function initPlugin(p) {
@@ -12243,51 +13001,27 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
t.controlManager = new tinymce.ControlManager(t);
- if (s.custom_undo_redo) {
- t.onBeforeExecCommand.add(function(ed, cmd, ui, val, a) {
- if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo))
- t.undoManager.beforeChange();
- });
-
- t.onExecCommand.add(function(ed, cmd, ui, val, a) {
- if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo))
- t.undoManager.add();
- });
- }
-
t.onExecCommand.add(function(ed, c) {
// Don't refresh the select lists until caret move
if (!/^(FontName|FontSize)$/.test(c))
t.nodeChanged();
});
- // Remove ghost selections on images and tables in Gecko
- if (isGecko) {
- function repaint(a, o) {
- if (!o || !o.initial)
- t.execCommand('mceRepaint');
- };
-
- t.onUndo.add(repaint);
- t.onRedo.add(repaint);
- t.onSetContent.add(repaint);
- }
-
// Enables users to override the control factory
t.onBeforeRenderUI.dispatch(t, t.controlManager);
// Measure box
- if (s.render_ui) {
+ if (s.render_ui && t.theme) {
w = s.width || e.style.width || e.offsetWidth;
h = s.height || e.style.height || e.offsetHeight;
t.orgDisplay = e.style.display;
re = /^[0-9\.]+(|px)$/i;
if (re.test('' + w))
- w = Math.max(parseInt(w) + (o.deltaWidth || 0), 100);
+ w = Math.max(parseInt(w, 10) + (o.deltaWidth || 0), 100);
if (re.test('' + h))
- h = Math.max(parseInt(h) + (o.deltaHeight || 0), 100);
+ h = Math.max(parseInt(h, 10) + (o.deltaHeight || 0), 100);
// Render UI
o = t.theme.renderUI({
@@ -12301,6 +13035,18 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
t.editorContainer = o.editorContainer;
}
+ // Load specified content CSS last
+ if (s.content_css) {
+ each(explode(s.content_css), function(u) {
+ t.contentCSS.push(t.documentBaseURI.toAbsolute(u));
+ });
+ }
+
+ // Content editable mode ends here
+ if (s.content_editable) {
+ e = n = o = null; // Fix IE leak
+ return t.initContentBody();
+ }
// User specified a document.domain value
if (document.domain && location.hostname != document.domain)
@@ -12312,13 +13058,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
height : h
});
- // Load specified content CSS last
- if (s.content_css) {
- tinymce.each(explode(s.content_css), function(u) {
- t.contentCSS.push(t.documentBaseURI.toAbsolute(u));
- });
- }
-
h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : '');
if (h < 100)
h = 100;
@@ -12362,7 +13101,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
// Domain relaxing enabled, then set document domain
if (tinymce.relaxedDomain && (isIE || (tinymce.isOpera && parseFloat(opera.version()) < 11))) {
// We need to write the contents here in IE since multiple writes messes up refresh button and back button
- u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';
+ u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.initContentBody();})()';
}
// Create iframe
@@ -12386,73 +13125,61 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
DOM.setAttrib(t.id, 'aria-hidden', true);
if (!tinymce.relaxedDomain || !u)
- t.setupIframe();
+ t.initContentBody();
e = n = o = null; // Cleanup
},
- setupIframe : function() {
- var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b;
+ initContentBody : function() {
+ var self = this, settings = self.settings, targetElm = DOM.get(self.id), doc = self.getDoc(), html, body;
// Setup iframe body
- if (!isIE || !tinymce.relaxedDomain) {
- d.open();
- d.write(t.iframeHTML);
- d.close();
+ if ((!isIE || !tinymce.relaxedDomain) && !settings.content_editable) {
+ doc.open();
+ doc.write(self.iframeHTML);
+ doc.close();
if (tinymce.relaxedDomain)
- d.domain = tinymce.relaxedDomain;
+ doc.domain = tinymce.relaxedDomain;
+ }
+
+ if (settings.content_editable) {
+ DOM.addClass(targetElm, 'mceContentBody');
+ self.contentDocument = doc = settings.content_document || document;
+ self.contentWindow = settings.content_window || window;
+ self.bodyElement = targetElm;
+
+ // Prevent leak in IE
+ settings.content_document = settings.content_window = null;
}
// It will not steal focus while setting contentEditable
- b = t.getBody();
- b.disabled = true;
+ body = self.getBody();
+ body.disabled = true;
- if (!s.readonly)
- b.contentEditable = true;
+ if (!settings.readonly)
+ body.contentEditable = self.getParam('content_editable_state', true);
- b.disabled = false;
+ body.disabled = false;
- t.schema = new tinymce.html.Schema(s);
+ self.schema = new tinymce.html.Schema(settings);
- t.dom = new tinymce.dom.DOMUtils(t.getDoc(), {
+ self.dom = new tinymce.dom.DOMUtils(doc, {
keep_values : true,
- url_converter : t.convertURL,
- url_converter_scope : t,
- hex_colors : s.force_hex_style_colors,
- class_filter : s.class_filter,
- update_styles : 1,
- fix_ie_paragraphs : 1,
- schema : t.schema
+ url_converter : self.convertURL,
+ url_converter_scope : self,
+ hex_colors : settings.force_hex_style_colors,
+ class_filter : settings.class_filter,
+ update_styles : true,
+ root_element : settings.content_editable ? self.id : null,
+ schema : self.schema
});
- t.parser = new tinymce.html.DomParser(s, t.schema);
-
- // Force anchor names closed, unless the setting "allow_html_in_named_anchor" is explicitly included.
- if (!t.settings.allow_html_in_named_anchor) {
- t.parser.addAttributeFilter('name', function(nodes, name) {
- var i = nodes.length, sibling, prevSibling, parent, node;
-
- while (i--) {
- node = nodes[i];
- if (node.name === 'a' && node.firstChild) {
- parent = node.parent;
-
- // Move children after current node
- sibling = node.lastChild;
- do {
- prevSibling = sibling.prev;
- parent.insert(sibling, node);
- sibling = prevSibling;
- } while (sibling);
- }
- }
- });
- }
+ self.parser = new tinymce.html.DomParser(settings, self.schema);
// Convert src and href into data-mce-src, data-mce-href and data-mce-style
- t.parser.addAttributeFilter('src,href,style', function(nodes, name) {
- var i = nodes.length, node, dom = t.dom, value, internalName;
+ self.parser.addAttributeFilter('src,href,style', function(nodes, name) {
+ var i = nodes.length, node, dom = self.dom, value, internalName;
while (i--) {
node = nodes[i];
@@ -12464,13 +13191,13 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
if (name === "style")
node.attr(internalName, dom.serializeStyle(dom.parseStyle(value), node.name));
else
- node.attr(internalName, t.convertURL(value, name, node.name));
+ node.attr(internalName, self.convertURL(value, name, node.name));
}
}
});
// Keep scripts from executing
- t.parser.addNodeFilter('script', function(nodes, name) {
+ self.parser.addNodeFilter('script', function(nodes, name) {
var i = nodes.length, node;
while (i--) {
@@ -12479,7 +13206,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
}
});
- t.parser.addNodeFilter('#cdata', function(nodes, name) {
+ self.parser.addNodeFilter('#cdata', function(nodes, name) {
var i = nodes.length, node;
while (i--) {
@@ -12490,8 +13217,8 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
}
});
- t.parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function(nodes, name) {
- var i = nodes.length, node, nonEmptyElements = t.schema.getNonEmptyElements();
+ self.parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function(nodes, name) {
+ var i = nodes.length, node, nonEmptyElements = self.schema.getNonEmptyElements();
while (i--) {
node = nodes[i];
@@ -12501,306 +13228,89 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
}
});
- t.serializer = new tinymce.dom.Serializer(s, t.dom, t.schema);
-
- t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer);
-
- t.formatter = new tinymce.Formatter(this);
-
- // Register default formats
- t.formatter.register({
- alignleft : [
- {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}, defaultBlock: 'div'},
- {selector : 'img,table', collapsed : false, styles : {'float' : 'left'}}
- ],
-
- aligncenter : [
- {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}, defaultBlock: 'div'},
- {selector : 'img', collapsed : false, styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}},
- {selector : 'table', collapsed : false, styles : {marginLeft : 'auto', marginRight : 'auto'}}
- ],
-
- alignright : [
- {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}, defaultBlock: 'div'},
- {selector : 'img,table', collapsed : false, styles : {'float' : 'right'}}
- ],
+ self.serializer = new tinymce.dom.Serializer(settings, self.dom, self.schema);
- alignfull : [
- {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}, defaultBlock: 'div'}
- ],
+ self.selection = new tinymce.dom.Selection(self.dom, self.getWin(), self.serializer);
- bold : [
- {inline : 'strong', remove : 'all'},
- {inline : 'span', styles : {fontWeight : 'bold'}},
- {inline : 'b', remove : 'all'}
- ],
+ self.formatter = new tinymce.Formatter(self);
- italic : [
- {inline : 'em', remove : 'all'},
- {inline : 'span', styles : {fontStyle : 'italic'}},
- {inline : 'i', remove : 'all'}
- ],
+ self.undoManager = new tinymce.UndoManager(self);
- underline : [
- {inline : 'span', styles : {textDecoration : 'underline'}, exact : true},
- {inline : 'u', remove : 'all'}
- ],
-
- strikethrough : [
- {inline : 'span', styles : {textDecoration : 'line-through'}, exact : true},
- {inline : 'strike', remove : 'all'}
- ],
-
- forecolor : {inline : 'span', styles : {color : '%value'}, wrap_links : false},
- hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}, wrap_links : false},
- fontname : {inline : 'span', styles : {fontFamily : '%value'}},
- fontsize : {inline : 'span', styles : {fontSize : '%value'}},
- fontsize_class : {inline : 'span', attributes : {'class' : '%value'}},
- blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'},
- subscript : {inline : 'sub'},
- superscript : {inline : 'sup'},
-
- link : {inline : 'a', selector : 'a', remove : 'all', split : true, deep : true,
- onmatch : function(node) {
- return true;
- },
-
- onformat : function(elm, fmt, vars) {
- each(vars, function(value, key) {
- t.dom.setAttrib(elm, key, value);
- });
- }
- },
-
- removeformat : [
- {selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true},
- {selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true},
- {selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true}
- ]
- });
-
- // Register default block formats
- each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) {
- t.formatter.register(name, {block : name, remove : 'all'});
- });
-
- // Register user defined formats
- t.formatter.register(t.settings.formats);
-
- t.undoManager = new tinymce.UndoManager(t);
+ self.forceBlocks = new tinymce.ForceBlocks(self);
+ self.enterKey = new tinymce.EnterKey(self);
+ self.editorCommands = new tinymce.EditorCommands(self);
// Pass through
- t.undoManager.onAdd.add(function(um, l) {
- if (um.hasUndo())
- return t.onChange.dispatch(t, l, um);
- });
-
- t.undoManager.onUndo.add(function(um, l) {
- return t.onUndo.dispatch(t, l, um);
+ self.serializer.onPreProcess.add(function(se, o) {
+ return self.onPreProcess.dispatch(self, o, se);
});
- t.undoManager.onRedo.add(function(um, l) {
- return t.onRedo.dispatch(t, l, um);
+ self.serializer.onPostProcess.add(function(se, o) {
+ return self.onPostProcess.dispatch(self, o, se);
});
- t.forceBlocks = new tinymce.ForceBlocks(t);
- t.enterKey = new tinymce.EnterKey(t);
+ self.onPreInit.dispatch(self);
- t.editorCommands = new tinymce.EditorCommands(t);
+ if (!settings.gecko_spellcheck)
+ doc.body.spellcheck = false;
- // Pass through
- t.serializer.onPreProcess.add(function(se, o) {
- return t.onPreProcess.dispatch(t, o, se);
- });
-
- t.serializer.onPostProcess.add(function(se, o) {
- return t.onPostProcess.dispatch(t, o, se);
- });
-
- t.onPreInit.dispatch(t);
-
- if (!s.gecko_spellcheck)
- t.getBody().spellcheck = 0;
-
- if (!s.readonly)
- t._addEvents();
-
- t.controlManager.onPostRender.dispatch(t, t.controlManager);
- t.onPostRender.dispatch(t);
-
- t.quirks = new tinymce.util.Quirks(this);
-
- if (s.directionality)
- t.getBody().dir = s.directionality;
-
- if (s.nowrap)
- t.getBody().style.whiteSpace = "nowrap";
-
- if (s.handle_node_change_callback) {
- t.onNodeChange.add(function(ed, cm, n) {
- t.execCallback('handle_node_change_callback', t.id, n, -1, -1, true, t.selection.isCollapsed());
- });
+ if (!settings.readonly) {
+ self.bindNativeEvents();
}
- if (s.save_callback) {
- t.onSaveContent.add(function(ed, o) {
- var h = t.execCallback('save_callback', t.id, o.content, t.getBody());
+ self.controlManager.onPostRender.dispatch(self, self.controlManager);
+ self.onPostRender.dispatch(self);
- if (h)
- o.content = h;
- });
- }
-
- if (s.onchange_callback) {
- t.onChange.add(function(ed, l) {
- t.execCallback('onchange_callback', t, l);
- });
- }
-
- if (s.protect) {
- t.onBeforeSetContent.add(function(ed, o) {
- if (s.protect) {
- each(s.protect, function(pattern) {
- o.content = o.content.replace(pattern, function(str) {
- return '<!--mce:protected ' + escape(str) + '-->';
- });
- });
- }
- });
- }
-
- if (s.convert_newlines_to_brs) {
- t.onBeforeSetContent.add(function(ed, o) {
- if (o.initial)
- o.content = o.content.replace(/\r?\n/g, '<br />');
- });
- }
-
- if (s.preformatted) {
- t.onPostProcess.add(function(ed, o) {
- o.content = o.content.replace(/^\s*<pre.*?>/, '');
- o.content = o.content.replace(/<\/pre>\s*$/, '');
-
- if (o.set)
- o.content = '<pre class="mceItemHidden">' + o.content + '</pre>';
- });
- }
-
- if (s.verify_css_classes) {
- t.serializer.attribValueFilter = function(n, v) {
- var s, cl;
-
- if (n == 'class') {
- // Build regexp for classes
- if (!t.classesRE) {
- cl = t.dom.getClasses();
-
- if (cl.length > 0) {
- s = '';
-
- each (cl, function(o) {
- s += (s ? '|' : '') + o['class'];
- });
-
- t.classesRE = new RegExp('(' + s + ')', 'gi');
- }
- }
-
- return !t.classesRE || /(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v) || t.classesRE.test(v) ? v : '';
- }
-
- return v;
- };
- }
-
- if (s.cleanup_callback) {
- t.onBeforeSetContent.add(function(ed, o) {
- o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
- });
+ self.quirks = tinymce.util.Quirks(self);
- t.onPreProcess.add(function(ed, o) {
- if (o.set)
- t.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o);
-
- if (o.get)
- t.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o);
- });
-
- t.onPostProcess.add(function(ed, o) {
- if (o.set)
- o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
-
- if (o.get)
- o.content = t.execCallback('cleanup_callback', 'get_from_editor', o.content, o);
- });
- }
+ if (settings.directionality)
+ body.dir = settings.directionality;
- if (s.save_callback) {
- t.onGetContent.add(function(ed, o) {
- if (o.save)
- o.content = t.execCallback('save_callback', t.id, o.content, t.getBody());
- });
- }
+ if (settings.nowrap)
+ body.style.whiteSpace = "nowrap";
- if (s.handle_event_callback) {
- t.onEvent.add(function(ed, e, o) {
- if (t.execCallback('handle_event_callback', e, ed, o) === false)
- Event.cancel(e);
+ if (settings.protect) {
+ self.onBeforeSetContent.add(function(ed, o) {
+ each(settings.protect, function(pattern) {
+ o.content = o.content.replace(pattern, function(str) {
+ return '<!--mce:protected ' + escape(str) + '-->';
+ });
+ });
});
}
// Add visual aids when new contents is added
- t.onSetContent.add(function() {
- t.addVisual(t.getBody());
+ self.onSetContent.add(function() {
+ self.addVisual(self.getBody());
});
// Remove empty contents
- if (s.padd_empty_editor) {
- t.onPostProcess.add(function(ed, o) {
+ if (settings.padd_empty_editor) {
+ self.onPostProcess.add(function(ed, o) {
o.content = o.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');
});
}
- if (isGecko) {
- // Fix gecko link bug, when a link is placed at the end of block elements there is
- // no way to move the caret behind the link. This fix adds a bogus br element after the link
- function fixLinks(ed, o) {
- each(ed.dom.select('a'), function(n) {
- var pn = n.parentNode;
-
- if (ed.dom.isBlock(pn) && pn.lastChild === n)
- ed.dom.add(pn, 'br', {'data-mce-bogus' : 1});
- });
- };
-
- t.onExecCommand.add(function(ed, cmd) {
- if (cmd === 'CreateLink')
- fixLinks(ed);
- });
-
- t.onSetContent.add(t.selection.onSetContent.add(fixLinks));
- }
+ self.load({initial : true, format : 'html'});
+ self.startContent = self.getContent({format : 'raw'});
- t.load({initial : true, format : 'html'});
- t.startContent = t.getContent({format : 'raw'});
- t.undoManager.add();
- t.initialized = true;
+ self.initialized = true;
- t.onInit.dispatch(t);
- t.execCallback('setupcontent_callback', t.id, t.getBody(), t.getDoc());
- t.execCallback('init_instance_callback', t);
- t.focus(true);
- t.nodeChanged({initial : 1});
+ self.onInit.dispatch(self);
+ self.execCallback('setupcontent_callback', self.id, body, doc);
+ self.execCallback('init_instance_callback', self);
+ self.focus(true);
+ self.nodeChanged({initial : true});
// Load specified content CSS last
- each(t.contentCSS, function(u) {
- t.dom.loadCSS(u);
+ each(self.contentCSS, function(url) {
+ self.dom.loadCSS(url);
});
// Handle auto focus
- if (s.auto_focus) {
+ if (settings.auto_focus) {
setTimeout(function () {
- var ed = tinymce.get(s.auto_focus);
+ var ed = tinymce.get(settings.auto_focus);
ed.selection.select(ed.getBody(), 1);
ed.selection.collapse(1);
@@ -12809,29 +13319,41 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
}, 100);
}
- e = null;
+ // Clean up references for IE
+ targetElm = doc = body = null;
},
+ focus : function(skip_focus) {
+ var oed, self = this, selection = self.selection, contentEditable = self.settings.content_editable, ieRng, controlElm, doc = self.getDoc(), body;
- focus : function(sf) {
- var oed, t = this, selection = t.selection, ce = t.settings.content_editable, ieRng, controlElm, doc = t.getDoc();
-
- if (!sf) {
+ if (!skip_focus) {
// Get selected control element
ieRng = selection.getRng();
if (ieRng.item) {
controlElm = ieRng.item(0);
}
- t._refreshContentEditable();
+ self._refreshContentEditable();
- // Is not content editable
- if (!ce)
- t.getWin().focus();
+ // Focus the window iframe
+ if (!contentEditable) {
+ self.getWin().focus();
+ }
// Focus the body as well since it's contentEditable
- if (tinymce.isGecko) {
- t.getBody().focus();
+ if (tinymce.isGecko || contentEditable) {
+ body = self.getBody();
+
+ // Check for setActive since it doesn't scroll to the element
+ if (body.setActive) {
+ body.setActive();
+ } else {
+ body.focus();
+ }
+
+ if (contentEditable) {
+ selection.normalize();
+ }
}
// Restore selected control element
@@ -12842,17 +13364,16 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
ieRng.addElement(controlElm);
ieRng.select();
}
-
}
- if (tinymce.activeEditor != t) {
+ if (tinymce.activeEditor != self) {
if ((oed = tinymce.activeEditor) != null)
- oed.onDeactivate.dispatch(oed, t);
+ oed.onDeactivate.dispatch(oed, self);
- t.onActivate.dispatch(t, oed);
+ self.onActivate.dispatch(self, oed);
}
- tinymce._setActive(t);
+ tinymce._setActive(self);
},
execCallback : function(n) {
@@ -12884,7 +13405,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
if (!s)
return '';
- return i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) {
+ return i18n[c + '.' + s] || s.replace(/\{\#([^\}]+)\}/g, function(a, b) {
return i18n[c + '.' + b] || '{#' + b + '}';
});
},
@@ -12918,37 +13439,40 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
},
nodeChanged : function(o) {
- var t = this, s = t.selection, n = s.getStart() || t.getBody();
+ var self = this, selection = self.selection, node;
// Fix for bug #1896577 it seems that this can not be fired while the editor is loading
- if (t.initialized) {
+ if (self.initialized) {
o = o || {};
- n = isIE && n.ownerDocument != t.getDoc() ? t.getBody() : n; // Fix for IE initial state
+
+ // Get start node
+ node = selection.getStart() || self.getBody();
+ node = isIE && node.ownerDocument != self.getDoc() ? self.getBody() : node; // Fix for IE initial state
// Get parents and add them to object
o.parents = [];
- t.dom.getParent(n, function(node) {
+ self.dom.getParent(node, function(node) {
if (node.nodeName == 'BODY')
return true;
o.parents.push(node);
});
- t.onNodeChange.dispatch(
- t,
- o ? o.controlManager || t.controlManager : t.controlManager,
- n,
- s.isCollapsed(),
+ self.onNodeChange.dispatch(
+ self,
+ o ? o.controlManager || self.controlManager : self.controlManager,
+ node,
+ selection.isCollapsed(),
o
);
}
},
- addButton : function(n, s) {
- var t = this;
+ addButton : function(name, settings) {
+ var self = this;
- t.buttons = t.buttons || {};
- t.buttons[n] = s;
+ self.buttons = self.buttons || {};
+ self.buttons[name] = settings;
},
addCommand : function(name, callback, scope) {
@@ -12966,7 +13490,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
addShortcut : function(pa, desc, cmd_func, sc) {
var t = this, c;
- if (!t.settings.custom_shortcuts)
+ if (t.settings.custom_shortcuts === false)
return false;
t.shortcuts = t.shortcuts || {};
@@ -12991,7 +13515,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
var o = {
func : cmd_func,
scope : sc || this,
- desc : desc,
+ desc : t.translate(desc),
alt : false,
ctrl : false,
shift : false
@@ -13133,24 +13657,24 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
},
show : function() {
- var t = this;
+ var self = this;
- DOM.show(t.getContainer());
- DOM.hide(t.id);
- t.load();
+ DOM.show(self.getContainer());
+ DOM.hide(self.id);
+ self.load();
},
hide : function() {
- var t = this, d = t.getDoc();
+ var self = this, doc = self.getDoc();
// Fixed bug where IE has a blinking cursor left from the editor
- if (isIE && d)
- d.execCommand('SelectAll');
+ if (isIE && doc)
+ doc.execCommand('SelectAll');
// We must save before we hide so Safari doesn't crash
- t.save();
- DOM.hide(t.getContainer());
- DOM.setStyle(t.id, 'display', t.orgDisplay);
+ self.save();
+ DOM.hide(self.getContainer());
+ DOM.setStyle(self.id, 'display', self.orgDisplay);
},
isHidden : function() {
@@ -13192,12 +13716,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
o = o || {};
o.save = true;
- // Add undo level will trigger onchange event
- if (!o.no_events) {
- t.undoManager.typing = false;
- t.undoManager.add();
- }
-
o.element = e;
h = o.content = t.getContent(o);
@@ -13283,6 +13801,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
args = args || {};
args.format = args.format || 'html';
args.get = true;
+ args.getInner = true;
// Do preprocessing
if (!args.no_events)
@@ -13310,12 +13829,12 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
},
getContainer : function() {
- var t = this;
+ var self = this;
- if (!t.container)
- t.container = DOM.get(t.editorContainer || t.id + '_parent');
+ if (!self.container)
+ self.container = DOM.get(self.editorContainer || self.id + '_parent');
- return t.container;
+ return self.container;
},
getContentAreaContainer : function() {
@@ -13327,125 +13846,125 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
},
getWin : function() {
- var t = this, e;
+ var self = this, elm;
- if (!t.contentWindow) {
- e = DOM.get(t.id + "_ifr");
+ if (!self.contentWindow) {
+ elm = DOM.get(self.id + "_ifr");
- if (e)
- t.contentWindow = e.contentWindow;
+ if (elm)
+ self.contentWindow = elm.contentWindow;
}
- return t.contentWindow;
+ return self.contentWindow;
},
getDoc : function() {
- var t = this, w;
+ var self = this, win;
- if (!t.contentDocument) {
- w = t.getWin();
+ if (!self.contentDocument) {
+ win = self.getWin();
- if (w)
- t.contentDocument = w.document;
+ if (win)
+ self.contentDocument = win.document;
}
- return t.contentDocument;
+ return self.contentDocument;
},
getBody : function() {
return this.bodyElement || this.getDoc().body;
},
- convertURL : function(u, n, e) {
- var t = this, s = t.settings;
+ convertURL : function(url, name, elm) {
+ var self = this, settings = self.settings;
// Use callback instead
- if (s.urlconverter_callback)
- return t.execCallback('urlconverter_callback', u, e, true, n);
+ if (settings.urlconverter_callback)
+ return self.execCallback('urlconverter_callback', url, elm, true, name);
// Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs
- if (!s.convert_urls || (e && e.nodeName == 'LINK') || u.indexOf('file:') === 0)
- return u;
+ if (!settings.convert_urls || (elm && elm.nodeName == 'LINK') || url.indexOf('file:') === 0)
+ return url;
// Convert to relative
- if (s.relative_urls)
- return t.documentBaseURI.toRelative(u);
+ if (settings.relative_urls)
+ return self.documentBaseURI.toRelative(url);
// Convert to absolute
- u = t.documentBaseURI.toAbsolute(u, s.remove_script_host);
+ url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);
- return u;
+ return url;
},
- addVisual : function(e) {
- var t = this, s = t.settings;
+ addVisual : function(elm) {
+ var self = this, settings = self.settings, dom = self.dom, cls;
- e = e || t.getBody();
+ elm = elm || self.getBody();
- if (!is(t.hasVisual))
- t.hasVisual = s.visual;
+ if (!is(self.hasVisual))
+ self.hasVisual = settings.visual;
- each(t.dom.select('table,a', e), function(e) {
- var v;
+ each(dom.select('table,a', elm), function(elm) {
+ var value;
- switch (e.nodeName) {
+ switch (elm.nodeName) {
case 'TABLE':
- v = t.dom.getAttrib(e, 'border');
+ cls = settings.visual_table_class || 'mceItemTable';
+ value = dom.getAttrib(elm, 'border');
- if (!v || v == '0') {
- if (t.hasVisual)
- t.dom.addClass(e, s.visual_table_class);
+ if (!value || value == '0') {
+ if (self.hasVisual)
+ dom.addClass(elm, cls);
else
- t.dom.removeClass(e, s.visual_table_class);
+ dom.removeClass(elm, cls);
}
return;
case 'A':
- v = t.dom.getAttrib(e, 'name');
+ value = dom.getAttrib(elm, 'name');
+ cls = 'mceItemAnchor';
- if (v) {
- if (t.hasVisual)
- t.dom.addClass(e, 'mceItemAnchor');
+ if (value) {
+ if (self.hasVisual)
+ dom.addClass(elm, cls);
else
- t.dom.removeClass(e, 'mceItemAnchor');
+ dom.removeClass(elm, cls);
}
return;
}
});
- t.onVisualAid.dispatch(t, e, t.hasVisual);
+ self.onVisualAid.dispatch(self, elm, self.hasVisual);
},
remove : function() {
- var t = this, e = t.getContainer();
-
- if (!t.removed) {
- t.removed = 1; // Cancels post remove event execution
- t.hide();
+ var self = this, elm = self.getContainer();
- // Remove all events
+ if (!self.removed) {
+ self.removed = 1; // Cancels post remove event execution
+ self.hide();
// Don't clear the window or document if content editable
// is enabled since other instances might still be present
- if (!t.settings.content_editable) {
- Event.clear(t.getWin());
- Event.clear(t.getDoc());
+ if (!self.settings.content_editable) {
+ Event.clear(self.getWin());
+ Event.clear(self.getDoc());
}
- Event.clear(t.getBody());
- Event.clear(t.formElement);
- Event.unbind(e);
+ Event.clear(self.getBody());
+ Event.clear(self.formElement);
+ Event.unbind(elm);
- t.execCallback('remove_instance_callback', t);
- t.onRemove.dispatch(t);
+ self.execCallback('remove_instance_callback', self);
+ self.onRemove.dispatch(self);
// Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command
- t.onExecCommand.listeners = [];
+ self.onExecCommand.listeners = [];
- tinymce.remove(t);
- DOM.remove(e);
+ tinymce.remove(self);
+ DOM.remove(elm);
}
},
@@ -13492,374 +14011,317 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
// Internal functions
- _addEvents : function() {
- // 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset
- var t = this, i, s = t.settings, dom = t.dom, lo = {
- mouseup : 'onMouseUp',
- mousedown : 'onMouseDown',
- click : 'onClick',
- keyup : 'onKeyUp',
- keydown : 'onKeyDown',
- keypress : 'onKeyPress',
- submit : 'onSubmit',
- reset : 'onReset',
- contextmenu : 'onContextMenu',
- dblclick : 'onDblClick',
- paste : 'onPaste' // Doesn't work in all browsers yet
- };
+ _refreshContentEditable : function() {
+ var self = this, body, parent;
- function eventHandler(e, o) {
- var ty = e.type;
+ // Check if the editor was hidden and the re-initalize contentEditable mode by removing and adding the body again
+ if (self._isHidden()) {
+ body = self.getBody();
+ parent = body.parentNode;
- // Don't fire events when it's removed
- if (t.removed)
- return;
+ parent.removeChild(body);
+ parent.appendChild(body);
- // Generic event handler
- if (t.onEvent.dispatch(t, e, o) !== false) {
- // Specific event handler
- t[lo[e.fakeType || e.type]].dispatch(t, e, o);
- }
- };
+ body.focus();
+ }
+ },
- // Add DOM events
- each(lo, function(v, k) {
- switch (k) {
- case 'contextmenu':
- dom.bind(t.getDoc(), k, eventHandler);
- break;
+ _isHidden : function() {
+ var s;
- case 'paste':
- dom.bind(t.getBody(), k, function(e) {
- eventHandler(e);
- });
- break;
+ if (!isGecko)
+ return 0;
- case 'submit':
- case 'reset':
- dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler);
- break;
+ // Weird, wheres that cursor selection?
+ s = this.selection.getSel();
+ return (!s || !s.rangeCount || s.rangeCount === 0);
+ }
+ });
+})(tinymce);
+(function(tinymce) {
+ var each = tinymce.each;
- default:
- dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler);
- }
- });
+ tinymce.Editor.prototype.setupEvents = function() {
+ var self = this, settings = self.settings;
- dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) {
- t.focus(true);
- });
+ // Add events to the editor
+ each([
+ 'onPreInit',
+ 'onBeforeRenderUI',
- // Fixes bug where a specified document_base_uri could result in broken images
- // This will also fix drag drop of images in Gecko
- if (tinymce.isGecko) {
- dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) {
- var v;
+ 'onPostRender',
- e = e.target;
+ 'onLoad',
- if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('data-mce-src')))
- e.src = t.documentBaseURI.toAbsolute(v);
- });
- }
+ 'onInit',
- // Set various midas options in Gecko
- if (isGecko) {
- function setOpts() {
- var t = this, d = t.getDoc(), s = t.settings;
+ 'onRemove',
- if (isGecko && !s.readonly) {
- t._refreshContentEditable();
+ 'onActivate',
- try {
- // Try new Gecko method
- d.execCommand("styleWithCSS", 0, false);
- } catch (ex) {
- // Use old method
- if (!t._isHidden())
- try {d.execCommand("useCSS", 0, true);} catch (ex) {}
- }
+ 'onDeactivate',
- if (!s.table_inline_editing)
- try {d.execCommand('enableInlineTableEditing', false, false);} catch (ex) {}
+ 'onClick',
- if (!s.object_resizing)
- try {d.execCommand('enableObjectResizing', false, false);} catch (ex) {}
- }
- };
+ 'onEvent',
- t.onBeforeExecCommand.add(setOpts);
- t.onMouseDown.add(setOpts);
- }
+ 'onMouseUp',
- // Add node change handlers
- t.onMouseUp.add(t.nodeChanged);
- //t.onClick.add(t.nodeChanged);
- t.onKeyUp.add(function(ed, e) {
- var c = e.keyCode;
+ 'onMouseDown',
- if ((c >= 33 && c <= 36) || (c >= 37 && c <= 40) || c == 13 || c == 45 || c == 46 || c == 8 || (tinymce.isMac && (c == 91 || c == 93)) || e.ctrlKey)
- t.nodeChanged();
- });
+ 'onDblClick',
+ 'onKeyDown',
- // Add block quote deletion handler
- t.onKeyDown.add(function(ed, e) {
- if (e.keyCode != VK.BACKSPACE)
- return;
+ 'onKeyUp',
- var rng = ed.selection.getRng();
- if (!rng.collapsed)
- return;
+ 'onKeyPress',
- var n = rng.startContainer;
- var offset = rng.startOffset;
+ 'onContextMenu',
- while (n && n.nodeType && n.nodeType != 1 && n.parentNode)
- n = n.parentNode;
+ 'onSubmit',
- // Is the cursor at the beginning of a blockquote?
- if (n && n.parentNode && n.parentNode.tagName === 'BLOCKQUOTE' && n.parentNode.firstChild == n && offset == 0) {
- // Remove the blockquote
- ed.formatter.toggle('blockquote', null, n.parentNode);
+ 'onReset',
- // Move the caret to the beginning of n
- rng.setStart(n, 0);
- rng.setEnd(n, 0);
- ed.selection.setRng(rng);
- ed.selection.collapse(false);
- }
- });
+ 'onPaste',
+ 'onPreProcess',
+ 'onPostProcess',
- // Add reset handler
- t.onReset.add(function() {
- t.setContent(t.startContent, {format : 'raw'});
- });
+ 'onBeforeSetContent',
- // Add shortcuts
- if (s.custom_shortcuts) {
- if (s.custom_undo_redo_keyboard_shortcuts) {
- t.addShortcut('ctrl+z', t.getLang('undo_desc'), 'Undo');
- t.addShortcut('ctrl+y', t.getLang('redo_desc'), 'Redo');
- }
+ 'onBeforeGetContent',
- // Add default shortcuts for gecko
- t.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold');
- t.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic');
- t.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline');
+ 'onSetContent',
- // BlockFormat shortcuts keys
- for (i=1; i<=6; i++)
- t.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]);
+ 'onGetContent',
- t.addShortcut('ctrl+7', '', ['FormatBlock', false, 'p']);
- t.addShortcut('ctrl+8', '', ['FormatBlock', false, 'div']);
- t.addShortcut('ctrl+9', '', ['FormatBlock', false, 'address']);
+ 'onLoadContent',
- function find(e) {
- var v = null;
+ 'onSaveContent',
- if (!e.altKey && !e.ctrlKey && !e.metaKey)
- return v;
+ 'onNodeChange',
- each(t.shortcuts, function(o) {
- if (tinymce.isMac && o.ctrl != e.metaKey)
- return;
- else if (!tinymce.isMac && o.ctrl != e.ctrlKey)
- return;
+ 'onChange',
- if (o.alt != e.altKey)
- return;
+ 'onBeforeExecCommand',
- if (o.shift != e.shiftKey)
- return;
+ 'onExecCommand',
- if (e.keyCode == o.keyCode || (e.charCode && e.charCode == o.charCode)) {
- v = o;
- return false;
- }
- });
+ 'onUndo',
- return v;
- };
+ 'onRedo',
- t.onKeyUp.add(function(ed, e) {
- var o = find(e);
+ 'onVisualAid',
- if (o)
- return Event.cancel(e);
- });
+ 'onSetProgressState',
- t.onKeyPress.add(function(ed, e) {
- var o = find(e);
+ 'onSetAttrib'
+ ], function(name) {
+ self[name] = new tinymce.util.Dispatcher(self);
+ });
- if (o)
- return Event.cancel(e);
- });
+ // Handle legacy cleanup_callback option
+ if (settings.cleanup_callback) {
+ self.onBeforeSetContent.add(function(ed, o) {
+ o.content = ed.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
+ });
- t.onKeyDown.add(function(ed, e) {
- var o = find(e);
+ self.onPreProcess.add(function(ed, o) {
+ if (o.set)
+ ed.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o);
- if (o) {
- o.func.call(o.scope);
- return Event.cancel(e);
- }
- });
- }
+ if (o.get)
+ ed.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o);
+ });
- if (tinymce.isIE) {
- // Fix so resize will only update the width and height attributes not the styles of an image
- // It will also block mceItemNoResize items
- dom.bind(t.getDoc(), 'controlselect', function(e) {
- var re = t.resizeInfo, cb;
+ self.onPostProcess.add(function(ed, o) {
+ if (o.set)
+ o.content = ed.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
- e = e.target;
+ if (o.get)
+ o.content = ed.execCallback('cleanup_callback', 'get_from_editor', o.content, o);
+ });
+ }
- // Don't do this action for non image elements
- if (e.nodeName !== 'IMG')
- return;
+ // Handle legacy save_callback option
+ if (settings.save_callback) {
+ self.onGetContent.add(function(ed, o) {
+ if (o.save)
+ o.content = ed.execCallback('save_callback', ed.id, o.content, ed.getBody());
+ });
+ }
- if (re)
- dom.unbind(re.node, re.ev, re.cb);
+ // Handle legacy handle_event_callback option
+ if (settings.handle_event_callback) {
+ self.onEvent.add(function(ed, e, o) {
+ if (self.execCallback('handle_event_callback', e, ed, o) === false)
+ Event.cancel(e);
+ });
+ }
- if (!dom.hasClass(e, 'mceItemNoResize')) {
- ev = 'resizeend';
- cb = dom.bind(e, ev, function(e) {
- var v;
+ // Handle legacy handle_node_change_callback option
+ if (settings.handle_node_change_callback) {
+ self.onNodeChange.add(function(ed, cm, n) {
+ ed.execCallback('handle_node_change_callback', ed.id, n, -1, -1, true, ed.selection.isCollapsed());
+ });
+ }
- e = e.target;
+ // Handle legacy save_callback option
+ if (settings.save_callback) {
+ self.onSaveContent.add(function(ed, o) {
+ var h = ed.execCallback('save_callback', ed.id, o.content, ed.getBody());
- if (v = dom.getStyle(e, 'width')) {
- dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, ''));
- dom.setStyle(e, 'width', '');
- }
+ if (h)
+ o.content = h;
+ });
+ }
- if (v = dom.getStyle(e, 'height')) {
- dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, ''));
- dom.setStyle(e, 'height', '');
- }
- });
- } else {
- ev = 'resizestart';
- cb = dom.bind(e, 'resizestart', Event.cancel, Event);
- }
+ // Handle legacy onchange_callback option
+ if (settings.onchange_callback) {
+ self.onChange.add(function(ed, l) {
+ ed.execCallback('onchange_callback', ed, l);
+ });
+ }
+ };
- re = t.resizeInfo = {
- node : e,
- ev : ev,
- cb : cb
- };
- });
- }
+ tinymce.Editor.prototype.bindNativeEvents = function() {
+ // 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset
+ var self = this, i, settings = self.settings, dom = self.dom, nativeToDispatcherMap;
+
+ nativeToDispatcherMap = {
+ mouseup : 'onMouseUp',
+ mousedown : 'onMouseDown',
+ click : 'onClick',
+ keyup : 'onKeyUp',
+ keydown : 'onKeyDown',
+ keypress : 'onKeyPress',
+ submit : 'onSubmit',
+ reset : 'onReset',
+ contextmenu : 'onContextMenu',
+ dblclick : 'onDblClick',
+ paste : 'onPaste' // Doesn't work in all browsers yet
+ };
- if (tinymce.isOpera) {
- t.onClick.add(function(ed, e) {
- Event.prevent(e);
- });
+ // Handler that takes a native event and sends it out to a dispatcher like onKeyDown
+ function eventHandler(evt, args) {
+ var type = evt.type;
+
+ // Don't fire events when it's removed
+ if (self.removed)
+ return;
+
+ // Sends the native event out to a global dispatcher then to the specific event dispatcher
+ if (self.onEvent.dispatch(self, evt, args) !== false) {
+ self[nativeToDispatcherMap[evt.fakeType || evt.type]].dispatch(self, evt, args);
}
+ };
- // Add custom undo/redo handlers
- if (s.custom_undo_redo) {
- function addUndo() {
- t.undoManager.typing = false;
- t.undoManager.add();
- };
+ // Opera doesn't support focus event for contentEditable elements so we need to fake it
+ function doOperaFocus(e) {
+ self.focus(true);
+ };
- var focusLostFunc = tinymce.isGecko ? 'blur' : 'focusout';
- dom.bind(t.getDoc(), focusLostFunc, function(e){
- if (!t.removed && t.undoManager.typing)
- addUndo();
- });
+ function nodeChanged() {
+ // Normalize selection for example <b>a</b><i>|a</i> becomes <b>a|</b><i>a</i>
+ self.selection.normalize();
+ self.nodeChanged();
+ }
- // Add undo level when contents is drag/dropped within the editor
- t.dom.bind(t.dom.getRoot(), 'dragend', function(e) {
- addUndo();
- });
+ // Add DOM events
+ each(nativeToDispatcherMap, function(dispatcherName, nativeName) {
+ var root = settings.content_editable ? self.getBody() : self.getDoc();
- t.onKeyUp.add(function(ed, e) {
- var keyCode = e.keyCode;
+ switch (nativeName) {
+ case 'contextmenu':
+ dom.bind(root, nativeName, eventHandler);
+ break;
- if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 13 || keyCode == 45 || e.ctrlKey)
- addUndo();
- });
+ case 'paste':
+ dom.bind(self.getBody(), nativeName, eventHandler);
+ break;
- t.onKeyDown.add(function(ed, e) {
- var keyCode = e.keyCode, sel;
+ case 'submit':
+ case 'reset':
+ dom.bind(self.getElement().form || tinymce.DOM.getParent(self.id, 'form'), nativeName, eventHandler);
+ break;
- if (keyCode == 8) {
- sel = t.getDoc().selection;
+ default:
+ dom.bind(root, nativeName, eventHandler);
+ }
+ });
- // Fix IE control + backspace browser bug
- if (sel && sel.createRange && sel.createRange().item) {
- t.undoManager.beforeChange();
- ed.dom.remove(sel.createRange().item(0));
- addUndo();
+ // Set the editor as active when focused
+ dom.bind(settings.content_editable ? self.getBody() : (tinymce.isGecko ? self.getDoc() : self.getWin()), 'focus', function(e) {
+ self.focus(true);
+ });
- return Event.cancel(e);
- }
- }
+ if (settings.content_editable && tinymce.isOpera) {
+ dom.bind(self.getBody(), 'click', doOperaFocus);
+ dom.bind(self.getBody(), 'keydown', doOperaFocus);
+ }
- // Is caracter positon keys left,right,up,down,home,end,pgdown,pgup,enter
- if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 13 || keyCode == 45) {
- // Add position before enter key is pressed, used by IE since it still uses the default browser behavior
- // Todo: Remove this once we normalize enter behavior on IE
- if (tinymce.isIE && keyCode == 13)
- t.undoManager.beforeChange();
+ // Add node change handler
+ self.onMouseUp.add(nodeChanged);
- if (t.undoManager.typing)
- addUndo();
+ self.onKeyUp.add(function(ed, e) {
+ var keyCode = e.keyCode;
- return;
- }
+ if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 13 || keyCode == 45 || keyCode == 46 || keyCode == 8 || (tinymce.isMac && (keyCode == 91 || keyCode == 93)) || e.ctrlKey)
+ nodeChanged();
+ });
- // If key isn't shift,ctrl,alt,capslock,metakey
- if ((keyCode < 16 || keyCode > 20) && keyCode != 224 && keyCode != 91 && !t.undoManager.typing) {
- t.undoManager.beforeChange();
- t.undoManager.typing = true;
- t.undoManager.add();
- }
- });
+ // Add reset handler
+ self.onReset.add(function() {
+ self.setContent(self.startContent, {format : 'raw'});
+ });
- t.onMouseDown.add(function() {
- if (t.undoManager.typing)
- addUndo();
- });
- }
- },
+ // Add shortcuts
+ function handleShortcut(e, execute) {
+ if (e.altKey || e.ctrlKey || e.metaKey) {
+ each(self.shortcuts, function(shortcut) {
+ var ctrlState = tinymce.isMac ? e.metaKey : e.ctrlKey;
- _refreshContentEditable : function() {
- var self = this, body, parent;
+ if (shortcut.ctrl != ctrlState || shortcut.alt != e.altKey || shortcut.shift != e.shiftKey)
+ return;
- // Check if the editor was hidden and the re-initalize contentEditable mode by removing and adding the body again
- if (self._isHidden()) {
- body = self.getBody();
- parent = body.parentNode;
+ if (e.keyCode == shortcut.keyCode || (e.charCode && e.charCode == shortcut.charCode)) {
+ e.preventDefault();
- parent.removeChild(body);
- parent.appendChild(body);
+ if (execute) {
+ shortcut.func.call(shortcut.scope);
+ }
- body.focus();
+ return true;
+ }
+ });
}
- },
+ };
- _isHidden : function() {
- var s;
+ self.onKeyUp.add(function(ed, e) {
+ handleShortcut(e);
+ });
- if (!isGecko)
- return 0;
+ self.onKeyPress.add(function(ed, e) {
+ handleShortcut(e);
+ });
- // Weird, wheres that cursor selection?
- s = this.selection.getSel();
- return (!s || !s.rangeCount || s.rangeCount == 0);
+ self.onKeyDown.add(function(ed, e) {
+ handleShortcut(e, true);
+ });
+
+ if (tinymce.isOpera) {
+ self.onClick.add(function(ed, e) {
+ e.preventDefault();
+ });
}
- });
+ };
})(tinymce);
-
(function(tinymce) {
// Added for compression purposes
- var each = tinymce.each, undefined, TRUE = true, FALSE = false;
+ var each = tinymce.each, undef, TRUE = true, FALSE = false;
tinymce.EditorCommands = function(editor) {
var dom = editor.dom,
@@ -13922,10 +14384,10 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
// Private methods
function execNativeCommand(command, ui, value) {
- if (ui === undefined)
+ if (ui === undef)
ui = FALSE;
- if (value === undefined)
+ if (value === undef)
value = null;
return editor.getDoc().execCommand(command, ui, value);
@@ -13936,7 +14398,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
};
function toggleFormat(name, value) {
- formatter.toggle(name, value ? {value : value} : undefined);
+ formatter.toggle(name, value ? {value : value} : undef);
};
function storeSelection(type) {
@@ -14336,9 +14798,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
// Override justify commands
'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) {
var name = 'align' + command.substring(7);
- // Use Formatter.matchNode instead of Formatter.match so that we don't match on parent node. This fixes bug where for both left
- // and right align buttons can be active. This could occur when selected nodes have align right and the parent has align left.
- var nodes = selection.isCollapsed() ? [selection.getNode()] : selection.getSelectedBlocks();
+ var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks();
var matches = tinymce.map(nodes, function(node) {
return !!formatter.matchNode(node, name);
});
@@ -14389,17 +14849,15 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
}, 'value');
// Add undo manager logic
- if (settings.custom_undo_redo) {
- addCommands({
- Undo : function() {
- editor.undoManager.undo();
- },
+ addCommands({
+ Undo : function() {
+ editor.undoManager.undo();
+ },
- Redo : function() {
- editor.undoManager.redo();
- }
- });
- }
+ Redo : function() {
+ editor.undoManager.redo();
+ }
+ });
};
})(tinymce);
@@ -14407,21 +14865,116 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
var Dispatcher = tinymce.util.Dispatcher;
tinymce.UndoManager = function(editor) {
- var self, index = 0, data = [], beforeBookmark;
+ var self, index = 0, data = [], beforeBookmark, onAdd, onUndo, onRedo;
function getContent() {
// Remove whitespace before/after and remove pure bogus nodes
return tinymce.trim(editor.getContent({format : 'raw', no_events : 1}).replace(/<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g, ''));
};
- return self = {
+ function addNonTypingUndoLevel() {
+ self.typing = false;
+ self.add();
+ };
+
+ // Create event instances
+ onAdd = new Dispatcher(self);
+ onUndo = new Dispatcher(self);
+ onRedo = new Dispatcher(self);
+
+ // Pass though onAdd event from UndoManager to Editor as onChange
+ onAdd.add(function(undoman, level) {
+ if (undoman.hasUndo())
+ return editor.onChange.dispatch(editor, level, undoman);
+ });
+
+ // Pass though onUndo event from UndoManager to Editor
+ onUndo.add(function(undoman, level) {
+ return editor.onUndo.dispatch(editor, level, undoman);
+ });
+
+ // Pass though onRedo event from UndoManager to Editor
+ onRedo.add(function(undoman, level) {
+ return editor.onRedo.dispatch(editor, level, undoman);
+ });
+
+ // Add initial undo level when the editor is initialized
+ editor.onInit.add(function() {
+ self.add();
+ });
+
+ // Get position before an execCommand is processed
+ editor.onBeforeExecCommand.add(function(ed, cmd, ui, val, args) {
+ if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!args || !args.skip_undo)) {
+ self.beforeChange();
+ }
+ });
+
+ // Add undo level after an execCommand call was made
+ editor.onExecCommand.add(function(ed, cmd, ui, val, args) {
+ if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!args || !args.skip_undo)) {
+ self.add();
+ }
+ });
+
+ // Add undo level on save contents, drag end and blur/focusout
+ editor.onSaveContent.add(addNonTypingUndoLevel);
+ editor.dom.bind(editor.dom.getRoot(), 'dragend', addNonTypingUndoLevel);
+ editor.dom.bind(editor.getDoc(), tinymce.isGecko ? 'blur' : 'focusout', function(e) {
+ if (!editor.removed && self.typing) {
+ addNonTypingUndoLevel();
+ }
+ });
+
+ editor.onKeyUp.add(function(editor, e) {
+ var keyCode = e.keyCode;
+
+ if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45 || keyCode == 13 || e.ctrlKey) {
+ addNonTypingUndoLevel();
+ }
+ });
+
+ editor.onKeyDown.add(function(editor, e) {
+ var keyCode = e.keyCode;
+
+ // Is caracter positon keys left,right,up,down,home,end,pgdown,pgup,enter
+ if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45) {
+ if (self.typing) {
+ addNonTypingUndoLevel();
+ }
+
+ return;
+ }
+
+ // If key isn't shift,ctrl,alt,capslock,metakey
+ if ((keyCode < 16 || keyCode > 20) && keyCode != 224 && keyCode != 91 && !self.typing) {
+ self.beforeChange();
+ self.typing = true;
+ self.add();
+ }
+ });
+
+ editor.onMouseDown.add(function(editor, e) {
+ if (self.typing) {
+ addNonTypingUndoLevel();
+ }
+ });
+
+ // Add keyboard shortcuts for undo/redo keys
+ editor.addShortcut('ctrl+z', 'undo_desc', 'Undo');
+ editor.addShortcut('ctrl+y', 'redo_desc', 'Redo');
+
+ self = {
+ // Explose for debugging reasons
+ data : data,
+
typing : false,
- onAdd : new Dispatcher(self),
+ onAdd : onAdd,
- onUndo : new Dispatcher(self),
+ onUndo : onUndo,
- onRedo : new Dispatcher(self),
+ onRedo : onRedo,
beforeChange : function() {
beforeBookmark = editor.selection.getBookmark(2, true);
@@ -14518,96 +15071,103 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
return index < data.length - 1 && !this.typing;
}
};
+
+ return self;
};
})(tinymce);
tinymce.ForceBlocks = function(editor) {
var settings = editor.settings, dom = editor.dom, selection = editor.selection, blockElements = editor.schema.getBlockElements();
- // Force root blocks
- if (settings.forced_root_block) {
- function addRootBlocks() {
- var node = selection.getStart(), rootNode = editor.getBody(), rng, startContainer, startOffset, endContainer, endOffset, rootBlockNode, tempNode, offset = -0xFFFFFF;
+ function addRootBlocks() {
+ var node = selection.getStart(), rootNode = editor.getBody(), rng, startContainer, startOffset, endContainer, endOffset, rootBlockNode, tempNode, offset = -0xFFFFFF, wrapped;
+
+ if (!node || node.nodeType !== 1 || !settings.forced_root_block)
+ return;
- if (!node || node.nodeType !== 1 || !settings.forced_root_block)
+ // Check if node is wrapped in block
+ while (node && node != rootNode) {
+ if (blockElements[node.nodeName])
return;
- // Check if node is wrapped in block
- while (node != rootNode) {
- if (blockElements[node.nodeName])
- return;
+ node = node.parentNode;
+ }
- node = node.parentNode;
+ // Get current selection
+ rng = selection.getRng();
+ if (rng.setStart) {
+ startContainer = rng.startContainer;
+ startOffset = rng.startOffset;
+ endContainer = rng.endContainer;
+ endOffset = rng.endOffset;
+ } else {
+ // Force control range into text range
+ if (rng.item) {
+ node = rng.item(0);
+ rng = editor.getDoc().body.createTextRange();
+ rng.moveToElementText(node);
}
- // Get current selection
- rng = selection.getRng();
- if (rng.setStart) {
- startContainer = rng.startContainer;
- startOffset = rng.startOffset;
- endContainer = rng.endContainer;
- endOffset = rng.endOffset;
- } else {
- // Force control range into text range
- if (rng.item) {
- node = rng.item(0);
- rng = editor.getDoc().body.createTextRange();
- rng.moveToElementText(node);
- }
+ tmpRng = rng.duplicate();
+ tmpRng.collapse(true);
+ startOffset = tmpRng.move('character', offset) * -1;
+ if (!tmpRng.collapsed) {
tmpRng = rng.duplicate();
- tmpRng.collapse(true);
- startOffset = tmpRng.move('character', offset) * -1;
-
- if (!tmpRng.collapsed) {
- tmpRng = rng.duplicate();
- tmpRng.collapse(false);
- endOffset = (tmpRng.move('character', offset) * -1) - startOffset;
- }
+ tmpRng.collapse(false);
+ endOffset = (tmpRng.move('character', offset) * -1) - startOffset;
}
+ }
- // Wrap non block elements and text nodes
- for (node = rootNode.firstChild; node; node) {
- if (node.nodeType === 3 || (node.nodeType == 1 && !blockElements[node.nodeName])) {
- if (!rootBlockNode) {
- rootBlockNode = dom.create(settings.forced_root_block);
- node.parentNode.insertBefore(rootBlockNode, node);
- }
-
- tempNode = node;
- node = node.nextSibling;
- rootBlockNode.appendChild(tempNode);
- } else {
- rootBlockNode = null;
- node = node.nextSibling;
+ // Wrap non block elements and text nodes
+ node = rootNode.firstChild;
+ while (node) {
+ if (node.nodeType === 3 || (node.nodeType == 1 && !blockElements[node.nodeName])) {
+ if (!rootBlockNode) {
+ rootBlockNode = dom.create(settings.forced_root_block);
+ node.parentNode.insertBefore(rootBlockNode, node);
+ wrapped = true;
}
- }
- if (rng.setStart) {
- rng.setStart(startContainer, startOffset);
- rng.setEnd(endContainer, endOffset);
- selection.setRng(rng);
+ tempNode = node;
+ node = node.nextSibling;
+ rootBlockNode.appendChild(tempNode);
} else {
- try {
- rng = editor.getDoc().body.createTextRange();
- rng.moveToElementText(rootNode);
- rng.collapse(true);
- rng.moveStart('character', startOffset);
+ rootBlockNode = null;
+ node = node.nextSibling;
+ }
+ }
- if (endOffset > 0)
- rng.moveEnd('character', endOffset);
+ if (rng.setStart) {
+ rng.setStart(startContainer, startOffset);
+ rng.setEnd(endContainer, endOffset);
+ selection.setRng(rng);
+ } else {
+ try {
+ rng = editor.getDoc().body.createTextRange();
+ rng.moveToElementText(rootNode);
+ rng.collapse(true);
+ rng.moveStart('character', startOffset);
- rng.select();
- } catch (ex) {
- // Ignore
- }
+ if (endOffset > 0)
+ rng.moveEnd('character', endOffset);
+
+ rng.select();
+ } catch (ex) {
+ // Ignore
}
+ }
+ // Only trigger nodeChange when we wrapped nodes to prevent a forever loop
+ if (wrapped) {
editor.nodeChanged();
- };
+ }
+ };
+ // Force root blocks
+ if (settings.forced_root_block) {
editor.onKeyUp.add(addRootBlocks);
- editor.onClick.add(addRootBlocks);
+ editor.onNodeChange.add(addRootBlocks);
}
};
@@ -14703,6 +15263,8 @@ tinymce.ForceBlocks = function(editor) {
if (v = ed.getParam('skin_variant'))
s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1);
+ s['class'] += ed.settings.directionality == "rtl" ? ' mceRtl' : '';
+
id = t.prefix + id;
cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu;
c = t.controls[id] = new cls(id, s);
@@ -15121,20 +15683,8 @@ tinymce.ForceBlocks = function(editor) {
MCE_ATTR_RE = /^(src|href|style)$/,
FALSE = false,
TRUE = true,
- undefined;
-
- // Returns the content editable state of a node
- function getContentEditable(node) {
- var contentEditable = node.getAttribute("data-mce-contenteditable");
-
- // Check for fake content editable
- if (contentEditable && contentEditable !== "inherit") {
- return contentEditable;
- }
-
- // Check for real content editable
- return node.contentEditable !== "inherit" ? node.contentEditable : null;
- };
+ undef,
+ getContentEditable = dom.getContentEditable;
function isArray(obj) {
return obj instanceof Array;
@@ -15148,6 +15698,103 @@ tinymce.ForceBlocks = function(editor) {
return node.nodeType === 1 && node.id === '_mce_caret';
};
+ function defaultFormats() {
+ register({
+ alignleft : [
+ {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}, defaultBlock: 'div'},
+ {selector : 'img,table', collapsed : false, styles : {'float' : 'left'}}
+ ],
+
+ aligncenter : [
+ {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}, defaultBlock: 'div'},
+ {selector : 'img', collapsed : false, styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}},
+ {selector : 'table', collapsed : false, styles : {marginLeft : 'auto', marginRight : 'auto'}}
+ ],
+
+ alignright : [
+ {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}, defaultBlock: 'div'},
+ {selector : 'img,table', collapsed : false, styles : {'float' : 'right'}}
+ ],
+
+ alignfull : [
+ {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}, defaultBlock: 'div'}
+ ],
+
+ bold : [
+ {inline : 'strong', remove : 'all'},
+ {inline : 'span', styles : {fontWeight : 'bold'}},
+ {inline : 'b', remove : 'all'}
+ ],
+
+ italic : [
+ {inline : 'em', remove : 'all'},
+ {inline : 'span', styles : {fontStyle : 'italic'}},
+ {inline : 'i', remove : 'all'}
+ ],
+
+ underline : [
+ {inline : 'span', styles : {textDecoration : 'underline'}, exact : true},
+ {inline : 'u', remove : 'all'}
+ ],
+
+ strikethrough : [
+ {inline : 'span', styles : {textDecoration : 'line-through'}, exact : true},
+ {inline : 'strike', remove : 'all'}
+ ],
+
+ forecolor : {inline : 'span', styles : {color : '%value'}, wrap_links : false},
+ hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}, wrap_links : false},
+ fontname : {inline : 'span', styles : {fontFamily : '%value'}},
+ fontsize : {inline : 'span', styles : {fontSize : '%value'}},
+ fontsize_class : {inline : 'span', attributes : {'class' : '%value'}},
+ blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'},
+ subscript : {inline : 'sub'},
+ superscript : {inline : 'sup'},
+
+ link : {inline : 'a', selector : 'a', remove : 'all', split : true, deep : true,
+ onmatch : function(node) {
+ return true;
+ },
+
+ onformat : function(elm, fmt, vars) {
+ each(vars, function(value, key) {
+ dom.setAttrib(elm, key, value);
+ });
+ }
+ },
+
+ removeformat : [
+ {selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true},
+ {selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true},
+ {selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true}
+ ]
+ });
+
+ // Register default block formats
+ each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) {
+ register(name, {block : name, remove : 'all'});
+ });
+
+ // Register user defined formats
+ register(ed.settings.formats);
+ };
+
+ function addKeyboardShortcuts() {
+ // Add some inline shortcuts
+ ed.addShortcut('ctrl+b', 'bold_desc', 'Bold');
+ ed.addShortcut('ctrl+i', 'italic_desc', 'Italic');
+ ed.addShortcut('ctrl+u', 'underline_desc', 'Underline');
+
+ // BlockFormat shortcuts keys
+ for (var i = 1; i <= 6; i++) {
+ ed.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]);
+ }
+
+ ed.addShortcut('ctrl+7', '', ['FormatBlock', false, 'p']);
+ ed.addShortcut('ctrl+8', '', ['FormatBlock', false, 'div']);
+ ed.addShortcut('ctrl+9', '', ['FormatBlock', false, 'address']);
+ };
+
// Public functions
function get(name) {
@@ -15167,15 +15814,15 @@ tinymce.ForceBlocks = function(editor) {
each(format, function(format) {
// Set deep to false by default on selector formats this to avoid removing
// alignment on images inside paragraphs when alignment is changed on paragraphs
- if (format.deep === undefined)
+ if (format.deep === undef)
format.deep = !format.selector;
// Default to true
- if (format.split === undefined)
+ if (format.split === undef)
format.split = !format.selector || format.inline;
// Default to true
- if (format.remove === undefined && format.selector && !format.inline)
+ if (format.remove === undef && format.selector && !format.inline)
format.remove = 'none';
// Mark format as a mixed format inline + block level
@@ -15248,7 +15895,7 @@ tinymce.ForceBlocks = function(editor) {
function findSelectionEnd(start, end) {
var walker = new TreeWalker(end);
for (node = walker.current(); node; node = walker.prev()) {
- if (node.childNodes.length > 1 || node == start) {
+ if (node.childNodes.length > 1 || node == start || node.tagName == 'BR') {
return node;
}
}
@@ -15260,7 +15907,7 @@ tinymce.ForceBlocks = function(editor) {
var start = rng.startContainer;
var end = rng.endContainer;
- if (start != end && rng.endOffset == 0) {
+ if (start != end && rng.endOffset === 0) {
var newEnd = findSelectionEnd(start, end);
var endOffset = newEnd.nodeType == 3 ? newEnd.length : newEnd.childNodes.length;
@@ -15720,7 +16367,7 @@ tinymce.ForceBlocks = function(editor) {
};
function removeRngStyle(rng) {
- var startContainer, endContainer;
+ var startContainer, endContainer, node;
rng = expandRng(rng, formatList, TRUE);
@@ -15729,6 +16376,12 @@ tinymce.ForceBlocks = function(editor) {
endContainer = getContainer(rng);
if (startContainer != endContainer) {
+ // WebKit will render the table incorrectly if we wrap a TD in a SPAN so lets see if the can use the first child instead
+ // This will happen if you tripple click a table cell and use remove formatting
+ if (/^(TR|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {
+ startContainer = (startContainer.nodeName == "TD" ? startContainer.firstChild : startContainer.firstChild.firstChild) || startContainer;
+ }
+
// Wrap start/end nodes in span element since these might be cloned/moved
startContainer = wrap(startContainer, 'span', {id : '_start', 'data-mce-type' : 'bookmark'});
endContainer = wrap(endContainer, 'span', {id : '_end', 'data-mce-type' : 'bookmark'});
@@ -15790,20 +16443,12 @@ tinymce.ForceBlocks = function(editor) {
ed.nodeChanged();
} else
performCaretAction('remove', name, vars);
-
- // Removed this logic since it breaks unit tests and produces empty caret elements since they will be destroyed in the cleanup process
- // Also there must be a better way to rerender a table and I couldn't reproduce the case causing this might be some old WebKit
- /*
- // When you remove formatting from a table cell in WebKit (cell, not the contents of a cell) there is a rendering issue with column width
- if (tinymce.isWebKit) {
- ed.execCommand('mceCleanup');
- }*/
};
function toggle(name, vars, node) {
var fmt = get(name);
- if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0]['toggle']))
+ if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle))
remove(name, vars, node);
else
apply(name, vars, node);
@@ -15823,7 +16468,7 @@ tinymce.ForceBlocks = function(editor) {
// Check all items
if (items) {
// Non indexed object
- if (items.length === undefined) {
+ if (items.length === undef) {
for (key in items) {
if (items.hasOwnProperty(key)) {
if (item_name === 'attributes')
@@ -15961,6 +16606,10 @@ tinymce.ForceBlocks = function(editor) {
canApply : canApply
});
+ // Initialize
+ defaultFormats();
+ addKeyboardShortcuts();
+
// Private functions
function matchName(node, format) {
@@ -16027,15 +16676,15 @@ tinymce.ForceBlocks = function(editor) {
};
function expandRng(rng, format, remove) {
- var sibling, lastIdx, leaf,
+ var sibling, lastIdx, leaf, endPoint,
startContainer = rng.startContainer,
startOffset = rng.startOffset,
endContainer = rng.endContainer,
- endOffset = rng.endOffset, sibling, lastIdx, leaf, endPoint;
+ endOffset = rng.endOffset;
// This function walks up the tree if there is no siblings before/after the node
function findParentContainer(start) {
- var container, parent, child, sibling, siblingName;
+ var container, parent, child, sibling, siblingName, root;
container = parent = start ? startContainer : endContainer;
siblingName = start ? 'previousSibling' : 'nextSibling';
@@ -16075,7 +16724,7 @@ tinymce.ForceBlocks = function(editor) {
// This function walks down the tree to find the leaf at the selection.
// The offset is also returned as if node initially a leaf, the offset may be in the middle of the text node.
function findLeaf(node, offset) {
- if (offset === undefined)
+ if (offset === undef)
offset = node.nodeType === 3 ? node.length : node.childNodes.length;
while (node && node.hasChildNodes()) {
node = node.childNodes[offset];
@@ -16118,6 +16767,125 @@ tinymce.ForceBlocks = function(editor) {
return node;
};
+ function findWordEndPoint(container, offset, start) {
+ var walker, node, pos, lastTextNode;
+
+ function findSpace(node, offset) {
+ var pos, pos2, str = node.nodeValue;
+
+ if (typeof(offset) == "undefined") {
+ offset = start ? str.length : 0;
+ }
+
+ if (start) {
+ pos = str.lastIndexOf(' ', offset);
+ pos2 = str.lastIndexOf('\u00a0', offset);
+ pos = pos > pos2 ? pos : pos2;
+
+ // Include the space on remove to avoid tag soup
+ if (pos !== -1 && !remove) {
+ pos++;
+ }
+ } else {
+ pos = str.indexOf(' ', offset);
+ pos2 = str.indexOf('\u00a0', offset);
+ pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;
+ }
+
+ return pos;
+ };
+
+ if (container.nodeType === 3) {
+ pos = findSpace(container, offset);
+
+ if (pos !== -1) {
+ return {container : container, offset : pos};
+ }
+
+ lastTextNode = container;
+ }
+
+ // Walk the nodes inside the block
+ walker = new TreeWalker(container, dom.getParent(container, isBlock) || ed.getBody());
+ while (node = walker[start ? 'prev' : 'next']()) {
+ if (node.nodeType === 3) {
+ lastTextNode = node;
+ pos = findSpace(node);
+
+ if (pos !== -1) {
+ return {container : node, offset : pos};
+ }
+ } else if (isBlock(node)) {
+ break;
+ }
+ }
+
+ if (lastTextNode) {
+ if (start) {
+ offset = 0;
+ } else {
+ offset = lastTextNode.length;
+ }
+
+ return {container: lastTextNode, offset: offset};
+ }
+ };
+
+ function findSelectorEndPoint(container, sibling_name) {
+ var parents, i, y, curFormat;
+
+ if (container.nodeType == 3 && container.nodeValue.length === 0 && container[sibling_name])
+ container = container[sibling_name];
+
+ parents = getParents(container);
+ for (i = 0; i < parents.length; i++) {
+ for (y = 0; y < format.length; y++) {
+ curFormat = format[y];
+
+ // If collapsed state is set then skip formats that doesn't match that
+ if ("collapsed" in curFormat && curFormat.collapsed !== rng.collapsed)
+ continue;
+
+ if (dom.is(parents[i], curFormat.selector))
+ return parents[i];
+ }
+ }
+
+ return container;
+ };
+
+ function findBlockEndPoint(container, sibling_name, sibling_name2) {
+ var node;
+
+ // Expand to block of similar type
+ if (!format[0].wrapper)
+ node = dom.getParent(container, format[0].block);
+
+ // Expand to first wrappable block element or any block element
+ if (!node)
+ node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isBlock);
+
+ // Exclude inner lists from wrapping
+ if (node && format[0].wrapper)
+ node = getParents(node, 'ul,ol').reverse()[0] || node;
+
+ // Didn't find a block element look for first/last wrappable element
+ if (!node) {
+ node = container;
+
+ while (node[sibling_name] && !isBlock(node[sibling_name])) {
+ node = node[sibling_name];
+
+ // Break on BR but include it will be removed later on
+ // we can't remove it now since we need to check if it can be wrapped
+ if (isEq(node, 'br'))
+ break;
+ }
+ }
+
+ return node || container;
+ };
+
// Expand to closest contentEditable element
startContainer = findParentContentEditable(startContainer);
endContainer = findParentContentEditable(endContainer);
@@ -16141,70 +16909,6 @@ tinymce.ForceBlocks = function(editor) {
if (format[0].inline) {
if (rng.collapsed) {
- function findWordEndPoint(container, offset, start) {
- var walker, node, pos, lastTextNode;
-
- function findSpace(node, offset) {
- var pos, pos2, str = node.nodeValue;
-
- if (typeof(offset) == "undefined") {
- offset = start ? str.length : 0;
- }
-
- if (start) {
- pos = str.lastIndexOf(' ', offset);
- pos2 = str.lastIndexOf('\u00a0', offset);
- pos = pos > pos2 ? pos : pos2;
-
- // Include the space on remove to avoid tag soup
- if (pos !== -1 && !remove) {
- pos++;
- }
- } else {
- pos = str.indexOf(' ', offset);
- pos2 = str.indexOf('\u00a0', offset);
- pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;
- }
-
- return pos;
- };
-
- if (container.nodeType === 3) {
- pos = findSpace(container, offset);
-
- if (pos !== -1) {
- return {container : container, offset : pos};
- }
-
- lastTextNode = container;
- }
-
- // Walk the nodes inside the block
- walker = new TreeWalker(container, dom.getParent(container, isBlock) || ed.getBody());
- while (node = walker[start ? 'prev' : 'next']()) {
- if (node.nodeType === 3) {
- lastTextNode = node;
- pos = findSpace(node);
-
- if (pos !== -1) {
- return {container : node, offset : pos};
- }
- } else if (isBlock(node)) {
- break;
- }
- }
-
- if (lastTextNode) {
- if (start) {
- offset = 0;
- } else {
- offset = lastTextNode.length;
- }
-
- return {container: lastTextNode, offset: offset};
- }
- }
-
// Expand left to closest word boundery
endPoint = findWordEndPoint(startContainer, startOffset, true);
if (endPoint) {
@@ -16232,9 +16936,6 @@ tinymce.ForceBlocks = function(editor) {
if (leaf.offset > 1) {
endContainer = leaf.node;
endContainer.splitText(leaf.offset - 1);
- } else if (leaf.node.previousSibling) {
- // TODO: Figure out why this is in here
- //endContainer = leaf.node.previousSibling;
}
}
}
@@ -16256,29 +16957,6 @@ tinymce.ForceBlocks = function(editor) {
// Expand start/end container to matching selector
if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) {
- function findSelectorEndPoint(container, sibling_name) {
- var parents, i, y, curFormat;
-
- if (container.nodeType == 3 && container.nodeValue.length == 0 && container[sibling_name])
- container = container[sibling_name];
-
- parents = getParents(container);
- for (i = 0; i < parents.length; i++) {
- for (y = 0; y < format.length; y++) {
- curFormat = format[y];
-
- // If collapsed state is set then skip formats that doesn't match that
- if ("collapsed" in curFormat && curFormat.collapsed !== rng.collapsed)
- continue;
-
- if (dom.is(parents[i], curFormat.selector))
- return parents[i];
- }
- }
-
- return container;
- };
-
// Find new startContainer/endContainer if there is better one
startContainer = findSelectorEndPoint(startContainer, 'previousSibling');
endContainer = findSelectorEndPoint(endContainer, 'nextSibling');
@@ -16286,38 +16964,6 @@ tinymce.ForceBlocks = function(editor) {
// Expand start/end container to matching block element or text node
if (format[0].block || format[0].selector) {
- function findBlockEndPoint(container, sibling_name, sibling_name2) {
- var node;
-
- // Expand to block of similar type
- if (!format[0].wrapper)
- node = dom.getParent(container, format[0].block);
-
- // Expand to first wrappable block element or any block element
- if (!node)
- node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isBlock);
-
- // Exclude inner lists from wrapping
- if (node && format[0].wrapper)
- node = getParents(node, 'ul,ol').reverse()[0] || node;
-
- // Didn't find a block element look for first/last wrappable element
- if (!node) {
- node = container;
-
- while (node[sibling_name] && !isBlock(node[sibling_name])) {
- node = node[sibling_name];
-
- // Break on BR but include it will be removed later on
- // we can't remove it now since we need to check if it can be wrapped
- if (isEq(node, 'br'))
- break;
- }
- }
-
- return node || container;
- };
-
// Find new startContainer/endContainer if there is better one
startContainer = findBlockEndPoint(startContainer, 'previousSibling');
endContainer = findBlockEndPoint(endContainer, 'nextSibling');
@@ -16454,14 +17100,14 @@ tinymce.ForceBlocks = function(editor) {
function removeNode(node, format) {
var parentNode = node.parentNode, rootBlockElm;
- if (format.block) {
- if (!forcedRootBlock) {
- function find(node, next, inc) {
- node = getNonWhiteSpaceSibling(node, next, inc);
+ function find(node, next, inc) {
+ node = getNonWhiteSpaceSibling(node, next, inc);
- return !node || (node.nodeName == 'BR' || isBlock(node));
- };
+ return !node || (node.nodeName == 'BR' || isBlock(node));
+ };
+ if (format.block) {
+ if (!forcedRootBlock) {
// Append BR elements if needed before we remove the block
if (isBlock(node) && !isBlock(parentNode)) {
if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1))
@@ -16541,7 +17187,7 @@ tinymce.ForceBlocks = function(editor) {
value = obj2[name];
// Obj2 doesn't have obj1 item
- if (value === undefined)
+ if (value === undef)
return FALSE;
// Obj2 item has a different value
@@ -16574,20 +17220,20 @@ tinymce.ForceBlocks = function(editor) {
return TRUE;
};
- // Check if next/prev exists and that they are elements
- if (prev && next) {
- function findElementSibling(node, sibling_name) {
- for (sibling = node; sibling; sibling = sibling[sibling_name]) {
- if (sibling.nodeType == 3 && sibling.nodeValue.length !== 0)
- return node;
+ function findElementSibling(node, sibling_name) {
+ for (sibling = node; sibling; sibling = sibling[sibling_name]) {
+ if (sibling.nodeType == 3 && sibling.nodeValue.length !== 0)
+ return node;
- if (sibling.nodeType == 1 && !isBookmarkNode(sibling))
- return sibling;
- }
+ if (sibling.nodeType == 1 && !isBookmarkNode(sibling))
+ return sibling;
+ }
- return node;
- };
+ return node;
+ };
+ // Check if next/prev exists and that they are elements
+ if (prev && next) {
// If previous sibling is empty then jump over it
prev = findElementSibling(prev, 'previousSibling');
next = findElementSibling(next, 'nextSibling');
@@ -16641,7 +17287,7 @@ tinymce.ForceBlocks = function(editor) {
}
// If end text node is excluded then walk to the previous node
- if (container.nodeType === 3 && !start && offset == 0) {
+ if (container.nodeType === 3 && !start && offset === 0) {
container = new TreeWalker(container, ed.getBody()).prev() || container;
}
@@ -16894,6 +17540,15 @@ tinymce.ForceBlocks = function(editor) {
}
});
+ // Remove bogus state if they got filled by contents using editor.selection.setContent
+ selection.onSetContent.add(function() {
+ dom.getParent(selection.getStart(), function(node) {
+ if (node.id !== caretContainerId && dom.getAttrib(node, 'data-mce-bogus') && !dom.isEmpty(node)) {
+ dom.setAttrib(node, 'data-mce-bogus', null);
+ }
+ });
+ });
+
self._hasCaretEvents = true;
}
@@ -16907,14 +17562,15 @@ tinymce.ForceBlocks = function(editor) {
function moveStart(rng) {
var container = rng.startContainer,
- offset = rng.startOffset,
+ offset = rng.startOffset, isAtEndOfText,
walker, node, nodes, tmpNode;
// Convert text node into index if possible
if (container.nodeType == 3 && offset >= container.nodeValue.length) {
// Get the parent container location and walk from there
+ offset = nodeIndex(container);
container = container.parentNode;
- offset = nodeIndex(container) + 1;
+ isAtEndOfText = true;
}
// Move startContainer/startOffset in to a suitable node
@@ -16924,7 +17580,7 @@ tinymce.ForceBlocks = function(editor) {
walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));
// If offset is at end of the parent node walk to the next one
- if (offset > nodes.length - 1)
+ if (offset > nodes.length - 1 || isAtEndOfText)
walker.next();
for (node = walker.current(); node; node = walker.next()) {
@@ -16950,17 +17606,27 @@ tinymce.ForceBlocks = function(editor) {
tinymce.onAddEditor.add(function(tinymce, ed) {
var filters, fontSizes, dom, settings = ed.settings;
- if (settings.inline_styles) {
- fontSizes = tinymce.explode(settings.font_size_legacy_values);
+ function replaceWithSpan(node, styles) {
+ tinymce.each(styles, function(value, name) {
+ if (value)
+ dom.setStyle(node, name, value);
+ });
+
+ dom.rename(node, 'span');
+ };
+
+ function convert(editor, params) {
+ dom = editor.dom;
- function replaceWithSpan(node, styles) {
- tinymce.each(styles, function(value, name) {
- if (value)
- dom.setStyle(node, name, value);
+ if (settings.convert_fonts_to_spans) {
+ tinymce.each(dom.select('font,u,strike', params.node), function(node) {
+ filters[node.nodeName.toLowerCase()](ed.dom, node);
});
+ }
+ };
- dom.rename(node, 'span');
- };
+ if (settings.inline_styles) {
+ fontSizes = tinymce.explode(settings.font_size_legacy_values);
filters = {
font : function(dom, node) {
@@ -16968,7 +17634,7 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
backgroundColor : node.style.backgroundColor,
color : node.color,
fontFamily : node.face,
- fontSize : fontSizes[parseInt(node.size) - 1]
+ fontSize : fontSizes[parseInt(node.size, 10) - 1]
});
},
@@ -16985,16 +17651,6 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
}
};
- function convert(editor, params) {
- dom = editor.dom;
-
- if (settings.convert_fonts_to_spans) {
- tinymce.each(dom.select('font,u,strike', params.node), function(node) {
- filters[node.nodeName.toLowerCase()](ed.dom, node);
- });
- }
- };
-
ed.onPreProcess.add(convert);
ed.onSetContent.add(convert);
@@ -17011,16 +17667,21 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
var dom = editor.dom, selection = editor.selection, settings = editor.settings, undoManager = editor.undoManager;
function handleEnterKey(evt) {
- var rng = selection.getRng(true), tmpRng, container, offset, parentBlock, newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName;
+ var rng = selection.getRng(true), tmpRng, editableRoot, container, offset, parentBlock, documentMode,
+ newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;
// Returns true if the block can be split into two blocks or not
function canSplitBlock(node) {
- return node && dom.isBlock(node) && !/^(TD|TH|CAPTION)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position);
+ return node &&
+ dom.isBlock(node) &&
+ !/^(TD|TH|CAPTION)$/.test(node.nodeName) &&
+ !/^(fixed|absolute)/i.test(node.style.position) &&
+ dom.getContentEditable(node) !== "true";
};
// Moves the caret to a suitable position within the root for example in the first non pure whitespace text node or before an image
function moveToCaretPosition(root) {
- var walker, node, rng, y, viewPort, lastNode = root;
+ var walker, node, rng, y, viewPort, lastNode = root, tempElm;
rng = dom.createRng();
@@ -17050,8 +17711,19 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
}
} else {
if (root.nodeName == 'BR') {
- rng.setStartAfter(root);
- rng.setEndAfter(root);
+ if (root.nextSibling && dom.isBlock(root.nextSibling)) {
+ // Trick on older IE versions to render the caret before the BR between two lists
+ if (!documentMode || documentMode < 9) {
+ tempElm = dom.create('br');
+ root.parentNode.insertBefore(tempElm, root);
+ }
+
+ rng.setStartBefore(root);
+ rng.setEndBefore(root);
+ } else {
+ rng.setStartAfter(root);
+ rng.setEndAfter(root);
+ }
} else {
rng.setStart(root, 0);
rng.setEnd(root, 0);
@@ -17060,6 +17732,9 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
selection.setRng(rng);
+ // Remove tempElm created for old IE:s
+ dom.remove(tempElm);
+
viewPort = dom.getViewPort(editor.getWin());
// scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs
@@ -17074,24 +17749,26 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
function createNewBlock(name) {
var node = container, block, clonedNode, caretNode;
- block = name ? dom.create(name) : parentBlock.cloneNode(false);
+ block = name || parentBlockName == "TABLE" ? dom.create(name || newBlockName) : parentBlock.cloneNode(false);
caretNode = block;
// Clone any parent styles
- do {
- if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) {
- clonedNode = node.cloneNode(false);
- dom.setAttrib(clonedNode, 'id', ''); // Remove ID since it needs to be document unique
-
- if (block.hasChildNodes()) {
- clonedNode.appendChild(block.firstChild);
- block.appendChild(clonedNode);
- } else {
- caretNode = clonedNode;
- block.appendChild(clonedNode);
+ if (settings.keep_styles !== false) {
+ do {
+ if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) {
+ clonedNode = node.cloneNode(false);
+ dom.setAttrib(clonedNode, 'id', ''); // Remove ID since it needs to be document unique
+
+ if (block.hasChildNodes()) {
+ clonedNode.appendChild(block.firstChild);
+ block.appendChild(clonedNode);
+ } else {
+ caretNode = clonedNode;
+ block.appendChild(clonedNode);
+ }
}
- }
- } while (node = node.parentNode);
+ } while (node = node.parentNode);
+ }
// BR is needed in empty blocks on non IE browsers
if (!tinymce.isIE) {
@@ -17103,13 +17780,23 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
// Returns true/false if the caret is at the start/end of the parent block element
function isCaretAtStartOrEndOfBlock(start) {
- var walker, node;
+ var walker, node, name;
// Caret is in the middle of a text node like "a|b"
if (container.nodeType == 3 && (start ? offset > 0 : offset < container.nodeValue.length)) {
return false;
}
+ // If after the last element in block node edge case for #5091
+ if (container.parentNode == parentBlock && isAfterLastNodeInContainer && !start) {
+ return true;
+ }
+
+ // Caret can be before/after a table
+ if (container.nodeName === "TABLE" || (container.previousSibling && container.previousSibling.nodeName == "TABLE")) {
+ return (isAfterLastNodeInContainer && !start) || (!isAfterLastNodeInContainer && start);
+ }
+
// Walk the DOM and look for text nodes or non empty elements
walker = new TreeWalker(container, parentBlock);
while (node = (start ? walker.prev() : walker.next())) {
@@ -17134,15 +17821,15 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
// Wraps any text nodes or inline elements in the specified forced root block name
function wrapSelfAndSiblingsInDefaultBlock(container, offset) {
- var newBlock, parentBlock, startNode, node, next;
+ var newBlock, parentBlock, startNode, node, next, blockName = newBlockName || 'P';
// Not in a block element or in a table cell or caption
parentBlock = dom.getParent(container, dom.isBlock);
- if (newBlockName && !evt.shiftKey && (!parentBlock || !canSplitBlock(parentBlock))) {
- parentBlock = parentBlock || dom.getRoot();
+ if (!parentBlock || !canSplitBlock(parentBlock)) {
+ parentBlock = parentBlock || editableRoot;
if (!parentBlock.hasChildNodes()) {
- newBlock = dom.create(newBlockName);
+ newBlock = dom.create(blockName);
parentBlock.appendChild(newBlock);
rng.setStart(newBlock, 0);
rng.setEnd(newBlock, 0);
@@ -17162,7 +17849,7 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
}
if (startNode) {
- newBlock = dom.create(newBlockName);
+ newBlock = dom.create(blockName);
startNode.parentNode.insertBefore(newBlock, startNode);
// Start wrapping until we hit a block
@@ -17241,7 +17928,7 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
// Inserts a BR element if the forced_root_block option is set to false or empty string
function insertBr() {
- var brElm, extraBr, documentMode;
+ var brElm, extraBr;
if (container && container.nodeType == 3 && offset >= container.nodeValue.length) {
// Insert extra BR element at the end block elements
@@ -17258,7 +17945,6 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
rng.insertNode(brElm);
// Rendering modes below IE8 doesn't display BR elements in PRE unless we have a \n before it
- documentMode = dom.doc.documentMode;
if (tinymce.isIE && parentBlockName == 'PRE' && (!documentMode || documentMode < 8)) {
brElm.parentNode.insertBefore(dom.doc.createTextNode('\r'), brElm);
}
@@ -17285,7 +17971,23 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
node = node.firstChild;
} while (node);
};
-
+
+ function getEditableRoot(node) {
+ var root = dom.getRoot(), parent, editableRoot;
+
+ // Get all parents until we hit a non editable parent or the root
+ parent = node;
+ while (parent !== root && dom.getContentEditable(parent) !== "false") {
+ if (dom.getContentEditable(parent) === "true") {
+ editableRoot = parent;
+ }
+
+ parent = parent.parentNode;
+ }
+
+ return parent !== root ? editableRoot : root;
+ };
+
// Delete any selected contents
if (!rng.collapsed) {
editor.execCommand('Delete');
@@ -17302,18 +18004,40 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
offset = rng.startOffset;
newBlockName = settings.forced_root_block;
newBlockName = newBlockName ? newBlockName.toUpperCase() : '';
+ documentMode = dom.doc.documentMode;
// Resolve node index
if (container.nodeType == 1 && container.hasChildNodes()) {
+ isAfterLastNodeInContainer = offset > container.childNodes.length - 1;
container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
offset = 0;
}
+ // Get editable root node normaly the body element but sometimes a div or span
+ editableRoot = getEditableRoot(container);
+
+ // If there is no editable root then enter is done inside a contentEditable false element
+ if (!editableRoot) {
+ return;
+ }
+
undoManager.beforeChange();
+ // If editable root isn't block nor the root of the editor
+ if (!dom.isBlock(editableRoot) && editableRoot != dom.getRoot()) {
+ if (!newBlockName || evt.shiftKey) {
+ insertBr();
+ }
+
+ return;
+ }
+
// Wrap the current node and it's sibling in a default block if it's needed.
// for example this <td>text|<b>text2</b></td> will become this <td><p>text|<b>text2</p></b></td>
- container = wrapSelfAndSiblingsInDefaultBlock(container, offset);
+ // This won't happen if root blocks are disabled or the shiftKey is pressed
+ if ((newBlockName && !evt.shiftKey) || (!newBlockName && evt.shiftKey)) {
+ container = wrapSelfAndSiblingsInDefaultBlock(container, offset);
+ }
// Find parent block and setup empty block paddings
parentBlock = dom.getParent(container, dom.isBlock);
@@ -17394,3 +18118,4 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
});
};
})(tinymce);
+
diff --git a/mod/acl.php b/mod/acl.php
index 402d37376..168b1f59f 100644
--- a/mod/acl.php
+++ b/mod/acl.php
@@ -127,12 +127,15 @@ function acl_init(&$a){
if($type == 'm') {
$x = array();
$x['query'] = $search;
+ $x['photos'] = array();
+ $x['links'] = array();
$x['suggestions'] = array();
$x['data'] = array();
if(count($r)) {
foreach($r as $g) {
- $x['suggestions'][] = sprintf( t('%s [%s]'),$g['name'],$g['url']);
- // '<img src="' . $g['micro'] . ' height="16" width="16" alt="' . t('Image/photo') . '" />' .
+ $x['photos'][] = $g['micro'];
+ $x['links'][] = $g['url'];
+ $x['suggestions'][] = $g['name']; // sprintf( t('%s [%s]'),$g['name'],$g['url']);
$x['data'][] = intval($g['id']);
}
}
diff --git a/mod/message.php b/mod/message.php
index b8695fdd9..71f83b47a 100644
--- a/mod/message.php
+++ b/mod/message.php
@@ -18,15 +18,19 @@ function message_init(&$a) {
));
$base = $a->get_baseurl();
- $a->page['htmlhead'] .= '<script src="' . $a->get_baseurl(true) . '/library/jquery_ac/jquery.autocomplete-min.js" ></script>';
+ $a->page['htmlhead'] .= '<script src="' . $a->get_baseurl(true) . '/library/jquery_ac/friendica.complete.js" ></script>';
$a->page['htmlhead'] .= <<< EOT
<script>$(document).ready(function() {
var a;
a = $("#recip").autocomplete({
serviceUrl: '$base/acl',
- width: 350
+ width: 350,
+ onSelect: function(value,data) {
+ $("#recip-complete").val(data);
+ }
});
+
});
</script>
@@ -95,10 +99,6 @@ function message_content(&$a) {
$myprofile = $a->get_baseurl(true) . '/profile/' . $a->user['nickname'];
-
-
-
-
$tpl = get_markup_template('mail_head.tpl');
$header = replace_macros($tpl, array(
'$messages' => t('Messages'),
@@ -172,28 +172,36 @@ function message_content(&$a) {
));
$preselect = (isset($a->argv[2])?array($a->argv[2]):false);
-
- if(defined('EMAIL_AUTOCOMP')) {
+
- // here's where we want to do contact autocomplete
- // just figure out how to make it do the right thing
- // pictures would be nice, but that didn't work when I tried.
- // It sort of barely works, but needs help
- // (the json backend is found in mod/acl.php)
+ $prename = $preurl = $preid = '';
- $select = '<input type="text" id="recip" name="messageto" value="' . $preselect .'" />';
- }
- else {
+ if($preselect) {
+ $r = q("select name, url, id from contact where uid = %d and id = %d limit 1",
+ intval(local_user()),
+ intval($a->argv[2])
+ );
+ if(count($r)) {
+ $prename = $r[0]['name'];
+ $preurl = $r[0]['url'];
+ $preid = $r[0]['id'];
+ }
+ }
- // the ugly select box
+ $prefill = (($preselect) ? $prename : '');
- $select = contact_select('messageto','message-to-select', $preselect, 4, true, false, false, 10);
- }
+ // the ugly select box
+
+ $select = contact_select('messageto','message-to-select', $preselect, 4, true, false, false, 10);
$tpl = get_markup_template('prv_message.tpl');
$o .= replace_macros($tpl,array(
'$header' => t('Send Private Message'),
'$to' => t('To:'),
+ '$showinputs' => 'true',
+ '$prefill' => $prefill,
+ '$autocomp' => $autocomp,
+ '$preid' => $preid,
'$subject' => t('Subject:'),
'$subjtxt' => ((x($_REQUEST,'subject')) ? strip_tags($_REQUEST['subject']) : ''),
'$text' => ((x($_REQUEST,'body')) ? escape_tags(htmlspecialchars($_REQUEST['body'])) : ''),
@@ -369,9 +377,10 @@ function message_content(&$a) {
$seen = $message['seen'];
}
+
+
$select = $message['name'] . '<input type="hidden" name="messageto" value="' . $contact_id . '" />';
$parent = '<input type="hidden" name="replyto" value="' . $message['parent-uri'] . '" />';
-
$tpl = get_markup_template('mail_display.tpl');
$o = replace_macros($tpl, array(
@@ -386,6 +395,7 @@ function message_content(&$a) {
// reply
'$header' => t('Send Reply'),
'$to' => t('To:'),
+ '$showinputs' => '',
'$subject' => t('Subject:'),
'$subjtxt' => template_escape($message['title']),
'$readonly' => ' readonly="readonly" style="background: #BBBBBB;" ',
diff --git a/util/db_update.php b/util/db_update.php
index 35620e80b..978594ab9 100644
--- a/util/db_update.php
+++ b/util/db_update.php
@@ -11,7 +11,7 @@ require_once("boot.php");
$a = new App;
@include(".htconfig.php");
-$lang = get_language();
+$lang = get_browser_language();
load_translation_table($lang);
require_once("dba.php");
diff --git a/util/messages.po b/util/messages.po
index e6376310b..ba718cdd8 100644
--- a/util/messages.po
+++ b/util/messages.po
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: 2.3.1336\n"
+"Project-Id-Version: 3.0.1343\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-05-08 10:00-0700\n"
+"POT-Creation-Date: 2012-05-15 10:00-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -48,8 +48,8 @@ msgstr ""
#: ../../mod/register.php:38 ../../mod/regmod.php:116 ../../mod/item.php:124
#: ../../mod/item.php:140 ../../mod/profile_photo.php:19
#: ../../mod/profile_photo.php:139 ../../mod/profile_photo.php:150
-#: ../../mod/profile_photo.php:163 ../../mod/message.php:40
-#: ../../mod/message.php:92 ../../mod/allfriends.php:9
+#: ../../mod/profile_photo.php:163 ../../mod/message.php:44
+#: ../../mod/message.php:96 ../../mod/allfriends.php:9
#: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53
#: ../../mod/follow.php:8 ../../mod/display.php:138 ../../mod/profiles.php:7
#: ../../mod/profiles.php:365 ../../mod/delegate.php:6
@@ -142,7 +142,7 @@ msgstr ""
#: ../../addon/blockem/blockem.php:57 ../../addon/qcomment/qcomment.php:61
#: ../../addon/openstreetmap/openstreetmap.php:70
#: ../../addon/mathjax/mathjax.php:42 ../../addon/editplain/editplain.php:84
-#: ../../addon/blackout/blackout.php:94 ../../addon/gravatar/gravatar.php:86
+#: ../../addon/blackout/blackout.php:98 ../../addon/gravatar/gravatar.php:86
#: ../../addon/pageheader/pageheader.php:55 ../../addon/ijpost/ijpost.php:93
#: ../../addon/jappixmini/jappixmini.php:302
#: ../../addon/statusnet/statusnet.php:278
@@ -150,18 +150,18 @@ msgstr ""
#: ../../addon/statusnet/statusnet.php:318
#: ../../addon/statusnet/statusnet.php:325
#: ../../addon/statusnet/statusnet.php:353
-#: ../../addon/statusnet/statusnet.php:553 ../../addon/tumblr/tumblr.php:90
+#: ../../addon/statusnet/statusnet.php:561 ../../addon/tumblr/tumblr.php:90
#: ../../addon/numfriends/numfriends.php:85 ../../addon/gnot/gnot.php:88
-#: ../../addon/wppost/wppost.php:102 ../../addon/showmore/showmore.php:48
+#: ../../addon/wppost/wppost.php:109 ../../addon/showmore/showmore.php:48
#: ../../addon/piwik/piwik.php:89 ../../addon/twitter/twitter.php:180
-#: ../../addon/twitter/twitter.php:209 ../../addon/twitter/twitter.php:375
+#: ../../addon/twitter/twitter.php:209 ../../addon/twitter/twitter.php:381
#: ../../addon/irc/irc.php:55 ../../addon/blogger/blogger.php:102
-#: ../../addon/posterous/posterous.php:90
+#: ../../addon/posterous/posterous.php:103
#: ../../view/theme/cleanzero/config.php:80
-#: ../../view/theme/diabook/theme.php:683
+#: ../../view/theme/diabook/theme.php:752
#: ../../view/theme/diabook/config.php:190
#: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70
-#: ../../include/conversation.php:555
+#: ../../include/conversation.php:558
msgid "Submit"
msgstr ""
@@ -219,8 +219,8 @@ msgstr ""
msgid "link to source"
msgstr ""
-#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:127
-#: ../../include/nav.php:52 ../../boot.php:1493
+#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:126
+#: ../../include/nav.php:52 ../../boot.php:1503
msgid "Events"
msgstr ""
@@ -270,7 +270,7 @@ msgid "Description:"
msgstr ""
#: ../../mod/events.php:423 ../../include/event.php:37
-#: ../../include/bb2diaspora.php:260 ../../boot.php:1092
+#: ../../include/bb2diaspora.php:260 ../../boot.php:1102
msgid "Location:"
msgstr ""
@@ -345,14 +345,14 @@ msgstr ""
msgid "No"
msgstr ""
-#: ../../mod/photos.php:43 ../../boot.php:1487
+#: ../../mod/photos.php:43 ../../boot.php:1497
msgid "Photo Albums"
msgstr ""
#: ../../mod/photos.php:51 ../../mod/photos.php:151 ../../mod/photos.php:879
#: ../../mod/photos.php:950 ../../mod/photos.php:965 ../../mod/photos.php:1382
#: ../../mod/photos.php:1394 ../../addon/communityhome/communityhome.php:110
-#: ../../view/theme/diabook/theme.php:526
+#: ../../view/theme/diabook/theme.php:593
msgid "Contact Photos"
msgstr ""
@@ -375,7 +375,7 @@ msgstr ""
#: ../../mod/profile_photo.php:74 ../../mod/profile_photo.php:174
#: ../../mod/profile_photo.php:252 ../../mod/profile_photo.php:261
#: ../../addon/communityhome/communityhome.php:111
-#: ../../view/theme/diabook/theme.php:527
+#: ../../view/theme/diabook/theme.php:594
msgid "Profile Photos"
msgstr ""
@@ -397,7 +397,7 @@ msgstr ""
#: ../../mod/photos.php:528 ../../mod/like.php:127 ../../mod/tagger.php:70
#: ../../addon/communityhome/communityhome.php:163
-#: ../../view/theme/diabook/theme.php:498 ../../include/text.php:1305
+#: ../../view/theme/diabook/theme.php:565 ../../include/text.php:1305
#: ../../include/diaspora.php:1654 ../../include/conversation.php:53
#: ../../include/conversation.php:126
msgid "photo"
@@ -487,7 +487,7 @@ msgstr ""
msgid "Use as profile photo"
msgstr ""
-#: ../../mod/photos.php:1078 ../../include/conversation.php:480
+#: ../../mod/photos.php:1078 ../../include/conversation.php:483
msgid "Private Message"
msgstr ""
@@ -519,44 +519,44 @@ msgstr ""
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
msgstr ""
-#: ../../mod/photos.php:1211 ../../include/conversation.php:529
+#: ../../mod/photos.php:1211 ../../include/conversation.php:532
msgid "I like this (toggle)"
msgstr ""
-#: ../../mod/photos.php:1212 ../../include/conversation.php:530
+#: ../../mod/photos.php:1212 ../../include/conversation.php:533
msgid "I don't like this (toggle)"
msgstr ""
-#: ../../mod/photos.php:1213 ../../include/conversation.php:964
+#: ../../mod/photos.php:1213 ../../include/conversation.php:967
msgid "Share"
msgstr ""
#: ../../mod/photos.php:1214 ../../mod/editpost.php:104
-#: ../../mod/wallmessage.php:145 ../../mod/message.php:206
-#: ../../mod/message.php:398 ../../include/conversation.php:361
-#: ../../include/conversation.php:706 ../../include/conversation.php:983
+#: ../../mod/wallmessage.php:145 ../../mod/message.php:214
+#: ../../mod/message.php:408 ../../include/conversation.php:364
+#: ../../include/conversation.php:709 ../../include/conversation.php:986
msgid "Please wait"
msgstr ""
#: ../../mod/photos.php:1230 ../../mod/photos.php:1270
-#: ../../mod/photos.php:1301 ../../include/conversation.php:552
+#: ../../mod/photos.php:1301 ../../include/conversation.php:555
msgid "This is you"
msgstr ""
#: ../../mod/photos.php:1232 ../../mod/photos.php:1272
-#: ../../mod/photos.php:1303 ../../include/conversation.php:554
-#: ../../boot.php:506
+#: ../../mod/photos.php:1303 ../../include/conversation.php:557
+#: ../../boot.php:516
msgid "Comment"
msgstr ""
#: ../../mod/photos.php:1234 ../../mod/editpost.php:125
-#: ../../include/conversation.php:564 ../../include/conversation.php:1001
+#: ../../include/conversation.php:567 ../../include/conversation.php:1004
msgid "Preview"
msgstr ""
#: ../../mod/photos.php:1331 ../../mod/settings.php:602
#: ../../mod/settings.php:683 ../../mod/group.php:168 ../../mod/admin.php:647
-#: ../../include/conversation.php:318 ../../include/conversation.php:584
+#: ../../include/conversation.php:321 ../../include/conversation.php:587
msgid "Delete"
msgstr ""
@@ -572,7 +572,7 @@ msgstr ""
msgid "Not available."
msgstr ""
-#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:129
+#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:128
#: ../../include/nav.php:101
msgid "Community"
msgstr ""
@@ -621,28 +621,28 @@ msgstr ""
msgid "Edit post"
msgstr ""
-#: ../../mod/editpost.php:80 ../../include/conversation.php:950
+#: ../../mod/editpost.php:80 ../../include/conversation.php:953
msgid "Post to Email"
msgstr ""
#: ../../mod/editpost.php:95 ../../mod/settings.php:601
-#: ../../include/conversation.php:571
+#: ../../include/conversation.php:574
msgid "Edit"
msgstr ""
#: ../../mod/editpost.php:96 ../../mod/wallmessage.php:143
-#: ../../mod/message.php:204 ../../mod/message.php:396
-#: ../../include/conversation.php:965
+#: ../../mod/message.php:212 ../../mod/message.php:406
+#: ../../include/conversation.php:968
msgid "Upload photo"
msgstr ""
-#: ../../mod/editpost.php:97 ../../include/conversation.php:967
+#: ../../mod/editpost.php:97 ../../include/conversation.php:970
msgid "Attach file"
msgstr ""
#: ../../mod/editpost.php:98 ../../mod/wallmessage.php:144
-#: ../../mod/message.php:205 ../../mod/message.php:397
-#: ../../include/conversation.php:969
+#: ../../mod/message.php:213 ../../mod/message.php:407
+#: ../../include/conversation.php:972
msgid "Insert web link"
msgstr ""
@@ -658,35 +658,35 @@ msgstr ""
msgid "Insert Vorbis [.ogg] audio"
msgstr ""
-#: ../../mod/editpost.php:102 ../../include/conversation.php:975
+#: ../../mod/editpost.php:102 ../../include/conversation.php:978
msgid "Set your location"
msgstr ""
-#: ../../mod/editpost.php:103 ../../include/conversation.php:977
+#: ../../mod/editpost.php:103 ../../include/conversation.php:980
msgid "Clear browser location"
msgstr ""
-#: ../../mod/editpost.php:105 ../../include/conversation.php:984
+#: ../../mod/editpost.php:105 ../../include/conversation.php:987
msgid "Permission settings"
msgstr ""
-#: ../../mod/editpost.php:113 ../../include/conversation.php:993
+#: ../../mod/editpost.php:113 ../../include/conversation.php:996
msgid "CC: email addresses"
msgstr ""
-#: ../../mod/editpost.php:114 ../../include/conversation.php:994
+#: ../../mod/editpost.php:114 ../../include/conversation.php:997
msgid "Public post"
msgstr ""
-#: ../../mod/editpost.php:117 ../../include/conversation.php:980
+#: ../../mod/editpost.php:117 ../../include/conversation.php:983
msgid "Set title"
msgstr ""
-#: ../../mod/editpost.php:119 ../../include/conversation.php:982
+#: ../../mod/editpost.php:119 ../../include/conversation.php:985
msgid "Categories (comma-separated list)"
msgstr ""
-#: ../../mod/editpost.php:120 ../../include/conversation.php:996
+#: ../../mod/editpost.php:120 ../../include/conversation.php:999
msgid "Example: bob@example.com, mary@example.com"
msgstr ""
@@ -1166,7 +1166,7 @@ msgid "is interested in:"
msgstr ""
#: ../../mod/match.php:58 ../../mod/suggest.php:59
-#: ../../include/contact_widgets.php:9 ../../boot.php:1036
+#: ../../include/contact_widgets.php:9 ../../boot.php:1046
msgid "Connect"
msgstr ""
@@ -1214,7 +1214,7 @@ msgstr ""
msgid "Personal"
msgstr ""
-#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:123
+#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:122
#: ../../include/nav.php:77 ../../include/nav.php:115
msgid "Home"
msgstr ""
@@ -1655,7 +1655,7 @@ msgstr ""
msgid "Edit contact"
msgstr ""
-#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:125
+#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:124
#: ../../include/nav.php:139
msgid "Contacts"
msgstr ""
@@ -1692,7 +1692,7 @@ msgstr ""
#: ../../addon/facebook/facebook.php:680
#: ../../addon/facebook/facebook.php:1170
#: ../../addon/testdrive/testdrive.php:58 ../../include/items.php:2726
-#: ../../boot.php:686
+#: ../../boot.php:696
msgid "Administrator"
msgstr ""
@@ -1702,7 +1702,7 @@ msgid ""
"Password reset failed."
msgstr ""
-#: ../../mod/lostpass.php:83 ../../boot.php:818
+#: ../../mod/lostpass.php:83 ../../boot.php:828
msgid "Password Reset"
msgstr ""
@@ -1775,8 +1775,8 @@ msgid "Remove account"
msgstr ""
#: ../../mod/settings.php:88 ../../mod/admin.php:735 ../../mod/admin.php:940
-#: ../../addon/mathjax/mathjax.php:36 ../../view/theme/diabook/theme.php:700
-#: ../../include/nav.php:137
+#: ../../addon/mathjax/mathjax.php:36 ../../view/theme/diabook/theme.php:638
+#: ../../view/theme/diabook/theme.php:768 ../../include/nav.php:137
msgid "Settings"
msgstr ""
@@ -1832,7 +1832,7 @@ msgstr ""
#: ../../addon/impressum/impressum.php:77
#: ../../addon/openstreetmap/openstreetmap.php:80
#: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105
-#: ../../addon/twitter/twitter.php:370
+#: ../../addon/twitter/twitter.php:376
msgid "Settings updated."
msgstr ""
@@ -1842,12 +1842,12 @@ msgid "Add application"
msgstr ""
#: ../../mod/settings.php:542 ../../mod/settings.php:568
-#: ../../addon/statusnet/statusnet.php:547
+#: ../../addon/statusnet/statusnet.php:555
msgid "Consumer Key"
msgstr ""
#: ../../mod/settings.php:543 ../../mod/settings.php:569
-#: ../../addon/statusnet/statusnet.php:546
+#: ../../addon/statusnet/statusnet.php:554
msgid "Consumer Secret"
msgstr ""
@@ -2352,7 +2352,7 @@ msgstr ""
msgid "Invalid contact."
msgstr ""
-#: ../../mod/notes.php:44 ../../boot.php:1499
+#: ../../mod/notes.php:44 ../../boot.php:1509
msgid "Personal Notes"
msgstr ""
@@ -2368,7 +2368,7 @@ msgstr ""
msgid "Number of daily wall messages for %s exceeded. Message failed."
msgstr ""
-#: ../../mod/wallmessage.php:56 ../../mod/message.php:61
+#: ../../mod/wallmessage.php:56 ../../mod/message.php:65
msgid "No recipient selected."
msgstr ""
@@ -2376,15 +2376,15 @@ msgstr ""
msgid "Unable to check your home location."
msgstr ""
-#: ../../mod/wallmessage.php:62 ../../mod/message.php:68
+#: ../../mod/wallmessage.php:62 ../../mod/message.php:72
msgid "Message could not be sent."
msgstr ""
-#: ../../mod/wallmessage.php:65 ../../mod/message.php:71
+#: ../../mod/wallmessage.php:65 ../../mod/message.php:75
msgid "Message collection failure."
msgstr ""
-#: ../../mod/wallmessage.php:68 ../../mod/message.php:74
+#: ../../mod/wallmessage.php:68 ../../mod/message.php:78
msgid "Message sent."
msgstr ""
@@ -2393,11 +2393,11 @@ msgid "No recipient."
msgstr ""
#: ../../mod/wallmessage.php:124 ../../mod/message.php:171
-#: ../../include/conversation.php:918
+#: ../../include/conversation.php:921
msgid "Please enter a link URL:"
msgstr ""
-#: ../../mod/wallmessage.php:131 ../../mod/message.php:195
+#: ../../mod/wallmessage.php:131 ../../mod/message.php:199
msgid "Send Private Message"
msgstr ""
@@ -2408,18 +2408,18 @@ msgid ""
"your site allow private mail from unknown senders."
msgstr ""
-#: ../../mod/wallmessage.php:133 ../../mod/message.php:196
-#: ../../mod/message.php:388
+#: ../../mod/wallmessage.php:133 ../../mod/message.php:200
+#: ../../mod/message.php:397
msgid "To:"
msgstr ""
-#: ../../mod/wallmessage.php:134 ../../mod/message.php:197
-#: ../../mod/message.php:389
+#: ../../mod/wallmessage.php:134 ../../mod/message.php:205
+#: ../../mod/message.php:399
msgid "Subject:"
msgstr ""
-#: ../../mod/wallmessage.php:140 ../../mod/message.php:201
-#: ../../mod/message.php:392 ../../mod/invite.php:113
+#: ../../mod/wallmessage.php:140 ../../mod/message.php:209
+#: ../../mod/message.php:402 ../../mod/invite.php:113
msgid "Your message:"
msgstr ""
@@ -2601,9 +2601,9 @@ msgstr ""
msgid "Profile Visibility Editor"
msgstr ""
-#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:124
+#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:123
#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:74
-#: ../../include/nav.php:50 ../../boot.php:1478
+#: ../../include/nav.php:50 ../../boot.php:1488
msgid "Profile"
msgstr ""
@@ -2775,7 +2775,7 @@ msgstr ""
msgid "Choose a nickname: "
msgstr ""
-#: ../../mod/register.php:567 ../../include/nav.php:81 ../../boot.php:784
+#: ../../mod/register.php:567 ../../include/nav.php:81 ../../boot.php:794
msgid "Register"
msgstr ""
@@ -2787,8 +2787,8 @@ msgstr ""
#: ../../addon/facebook/facebook.php:1564
#: ../../addon/communityhome/communityhome.php:158
#: ../../addon/communityhome/communityhome.php:167
-#: ../../view/theme/diabook/theme.php:493
-#: ../../view/theme/diabook/theme.php:502 ../../include/diaspora.php:1654
+#: ../../view/theme/diabook/theme.php:560
+#: ../../view/theme/diabook/theme.php:569 ../../include/diaspora.php:1654
#: ../../include/conversation.php:48 ../../include/conversation.php:57
#: ../../include/conversation.php:121 ../../include/conversation.php:130
msgid "status"
@@ -2796,7 +2796,7 @@ msgstr ""
#: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1568
#: ../../addon/communityhome/communityhome.php:172
-#: ../../view/theme/diabook/theme.php:507 ../../include/diaspora.php:1670
+#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1670
#: ../../include/conversation.php:65
#, php-format
msgid "%1$s likes %2$s's %3$s"
@@ -2817,8 +2817,8 @@ msgstr ""
msgid "Access denied."
msgstr ""
-#: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:126
-#: ../../include/nav.php:51 ../../boot.php:1484
+#: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:125
+#: ../../include/nav.php:51 ../../boot.php:1494
msgid "Photos"
msgstr ""
@@ -2962,7 +2962,7 @@ msgstr ""
msgid "New Message"
msgstr ""
-#: ../../mod/message.php:65
+#: ../../mod/message.php:69
msgid "Unable to locate contact information."
msgstr ""
@@ -2974,55 +2974,55 @@ msgstr ""
msgid "Conversation removed."
msgstr ""
-#: ../../mod/message.php:237
+#: ../../mod/message.php:245
msgid "No messages."
msgstr ""
-#: ../../mod/message.php:244
+#: ../../mod/message.php:252
#, php-format
msgid "Unknown sender - %s"
msgstr ""
-#: ../../mod/message.php:247
+#: ../../mod/message.php:255
#, php-format
msgid "You and %s"
msgstr ""
-#: ../../mod/message.php:250
+#: ../../mod/message.php:258
#, php-format
msgid "%s and You"
msgstr ""
-#: ../../mod/message.php:260 ../../mod/message.php:381
+#: ../../mod/message.php:268 ../../mod/message.php:390
msgid "Delete conversation"
msgstr ""
-#: ../../mod/message.php:263
+#: ../../mod/message.php:271
msgid "D, d M Y - g:i A"
msgstr ""
-#: ../../mod/message.php:265
+#: ../../mod/message.php:273
#, php-format
msgid "%d message"
msgid_plural "%d messages"
msgstr[0] ""
msgstr[1] ""
-#: ../../mod/message.php:300
+#: ../../mod/message.php:308
msgid "Message not available."
msgstr ""
-#: ../../mod/message.php:365
+#: ../../mod/message.php:373
msgid "Delete message"
msgstr ""
-#: ../../mod/message.php:383
+#: ../../mod/message.php:392
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr ""
-#: ../../mod/message.php:387
+#: ../../mod/message.php:396
msgid "Send Reply"
msgstr ""
@@ -3137,7 +3137,7 @@ msgstr ""
msgid "Advanced"
msgstr ""
-#: ../../mod/admin.php:412 ../../addon/statusnet/statusnet.php:544
+#: ../../mod/admin.php:412 ../../addon/statusnet/statusnet.php:552
msgid "Site name"
msgstr ""
@@ -3597,7 +3597,7 @@ msgstr ""
msgid "FTP Password"
msgstr ""
-#: ../../mod/profile.php:21 ../../boot.php:949
+#: ../../mod/profile.php:21 ../../boot.php:959
msgid "Requested profile is not available."
msgstr ""
@@ -4005,27 +4005,27 @@ msgstr ""
msgid "Edit/Manage Profiles"
msgstr ""
-#: ../../mod/profiles.php:621 ../../boot.php:1058
+#: ../../mod/profiles.php:621 ../../boot.php:1068
msgid "Change profile photo"
msgstr ""
-#: ../../mod/profiles.php:622 ../../boot.php:1059
+#: ../../mod/profiles.php:622 ../../boot.php:1069
msgid "Create New Profile"
msgstr ""
-#: ../../mod/profiles.php:633 ../../boot.php:1069
+#: ../../mod/profiles.php:633 ../../boot.php:1079
msgid "Profile Image"
msgstr ""
-#: ../../mod/profiles.php:635 ../../boot.php:1072
+#: ../../mod/profiles.php:635 ../../boot.php:1082
msgid "visible to everybody"
msgstr ""
-#: ../../mod/profiles.php:636 ../../boot.php:1073
+#: ../../mod/profiles.php:636 ../../boot.php:1083
msgid "Edit visibility"
msgstr ""
-#: ../../mod/filer.php:29 ../../include/conversation.php:922
+#: ../../mod/filer.php:29 ../../include/conversation.php:925
msgid "Save to Folder:"
msgstr ""
@@ -4073,7 +4073,7 @@ msgstr ""
msgid "No entries."
msgstr ""
-#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:554
+#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:621
#: ../../include/contact_widgets.php:34
msgid "Friend Suggestions"
msgstr ""
@@ -4088,12 +4088,7 @@ msgstr ""
msgid "Ignore/Hide"
msgstr ""
-#: ../../mod/acl.php:134
-#, php-format
-msgid "%s [%s]"
-msgstr ""
-
-#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:552
+#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:619
msgid "Global Directory"
msgstr ""
@@ -4623,7 +4618,7 @@ msgstr ""
msgid "NSFW Settings saved."
msgstr ""
-#: ../../addon/nsfw/nsfw.php:120
+#: ../../addon/nsfw/nsfw.php:121
#, php-format
msgid "%s - Click to open/close"
msgstr ""
@@ -4633,8 +4628,8 @@ msgid "Forums"
msgstr ""
#: ../../addon/page/page.php:63 ../../addon/showmore/showmore.php:87
-#: ../../include/contact_widgets.php:187 ../../include/conversation.php:466
-#: ../../boot.php:507
+#: ../../include/contact_widgets.php:188 ../../include/conversation.php:469
+#: ../../boot.php:517
msgid "show more"
msgstr ""
@@ -4650,7 +4645,7 @@ msgstr ""
#: ../../addon/communityhome/communityhome.php:34
#: ../../addon/communityhome/twillingham/communityhome.php:28
#: ../../addon/communityhome/twillingham/communityhome.php:34
-#: ../../include/nav.php:64 ../../boot.php:805
+#: ../../include/nav.php:64 ../../boot.php:815
msgid "Login"
msgstr ""
@@ -4678,7 +4673,7 @@ msgid "Latest likes"
msgstr ""
#: ../../addon/communityhome/communityhome.php:155
-#: ../../view/theme/diabook/theme.php:490 ../../include/text.php:1303
+#: ../../view/theme/diabook/theme.php:557 ../../include/text.php:1303
#: ../../include/conversation.php:45 ../../include/conversation.php:118
msgid "event"
msgstr ""
@@ -4829,8 +4824,8 @@ msgstr ""
msgid "Post to Drupal by default"
msgstr ""
-#: ../../addon/drpost/drpost.php:184 ../../addon/wppost/wppost.php:190
-#: ../../addon/blogger/blogger.php:172 ../../addon/posterous/posterous.php:177
+#: ../../addon/drpost/drpost.php:184 ../../addon/wppost/wppost.php:198
+#: ../../addon/blogger/blogger.php:172 ../../addon/posterous/posterous.php:192
msgid "Post from Friendica"
msgstr ""
@@ -5277,14 +5272,14 @@ msgid "Send public postings to StatusNet by default"
msgstr ""
#: ../../addon/statusnet/statusnet.php:345
-msgid "Send #tag links to StatusNet"
+msgid "Send linked #-tags and @-names to StatusNet"
msgstr ""
#: ../../addon/statusnet/statusnet.php:350 ../../addon/twitter/twitter.php:206
msgid "Clear OAuth configuration"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:545
+#: ../../addon/statusnet/statusnet.php:553
msgid "API URL"
msgstr ""
@@ -5351,30 +5346,38 @@ msgstr ""
msgid "Post to Wordpress"
msgstr ""
-#: ../../addon/wppost/wppost.php:74
+#: ../../addon/wppost/wppost.php:76
msgid "WordPress Post Settings"
msgstr ""
-#: ../../addon/wppost/wppost.php:76
+#: ../../addon/wppost/wppost.php:78
msgid "Enable WordPress Post Plugin"
msgstr ""
-#: ../../addon/wppost/wppost.php:81
+#: ../../addon/wppost/wppost.php:83
msgid "WordPress username"
msgstr ""
-#: ../../addon/wppost/wppost.php:86
+#: ../../addon/wppost/wppost.php:88
msgid "WordPress password"
msgstr ""
-#: ../../addon/wppost/wppost.php:91
+#: ../../addon/wppost/wppost.php:93
msgid "WordPress API URL"
msgstr ""
-#: ../../addon/wppost/wppost.php:96
+#: ../../addon/wppost/wppost.php:98
msgid "Post to WordPress by default"
msgstr ""
+#: ../../addon/wppost/wppost.php:102
+msgid "Provide a backlink to the Friendica post"
+msgstr ""
+
+#: ../../addon/wppost/wppost.php:204
+msgid "Read the original post and comment stream on Friendica"
+msgstr ""
+
#: ../../addon/showmore/showmore.php:38
msgid "\"Show more\" Settings"
msgstr ""
@@ -5486,14 +5489,14 @@ msgid "Send public postings to Twitter by default"
msgstr ""
#: ../../addon/twitter/twitter.php:201
-msgid "Send #tag links to Twitter"
+msgid "Send linked #-tags and @-names to Twitter"
msgstr ""
-#: ../../addon/twitter/twitter.php:377
+#: ../../addon/twitter/twitter.php:383
msgid "Consumer key"
msgstr ""
-#: ../../addon/twitter/twitter.php:378
+#: ../../addon/twitter/twitter.php:384
msgid "Consumer secret"
msgstr ""
@@ -5549,27 +5552,35 @@ msgstr ""
msgid "Post to Blogger by default"
msgstr ""
-#: ../../addon/posterous/posterous.php:36
+#: ../../addon/posterous/posterous.php:37
msgid "Post to Posterous"
msgstr ""
-#: ../../addon/posterous/posterous.php:67
+#: ../../addon/posterous/posterous.php:70
msgid "Posterous Post Settings"
msgstr ""
-#: ../../addon/posterous/posterous.php:69
+#: ../../addon/posterous/posterous.php:72
msgid "Enable Posterous Post Plugin"
msgstr ""
-#: ../../addon/posterous/posterous.php:74
+#: ../../addon/posterous/posterous.php:77
msgid "Posterous login"
msgstr ""
-#: ../../addon/posterous/posterous.php:79
+#: ../../addon/posterous/posterous.php:82
msgid "Posterous password"
msgstr ""
-#: ../../addon/posterous/posterous.php:84
+#: ../../addon/posterous/posterous.php:87
+msgid "Posterous site ID"
+msgstr ""
+
+#: ../../addon/posterous/posterous.php:92
+msgid "Posterous API token"
+msgstr ""
+
+#: ../../addon/posterous/posterous.php:97
msgid "Post to Posterous by default"
msgstr ""
@@ -5598,156 +5609,154 @@ msgstr ""
msgid "Color scheme"
msgstr ""
-#: ../../view/theme/diabook/theme.php:123 ../../include/nav.php:49
+#: ../../view/theme/diabook/theme.php:122 ../../include/nav.php:49
#: ../../include/nav.php:115
msgid "Your posts and conversations"
msgstr ""
-#: ../../view/theme/diabook/theme.php:124 ../../include/nav.php:50
+#: ../../view/theme/diabook/theme.php:123 ../../include/nav.php:50
msgid "Your profile page"
msgstr ""
-#: ../../view/theme/diabook/theme.php:125
+#: ../../view/theme/diabook/theme.php:124
msgid "Your contacts"
msgstr ""
-#: ../../view/theme/diabook/theme.php:126 ../../include/nav.php:51
+#: ../../view/theme/diabook/theme.php:125 ../../include/nav.php:51
msgid "Your photos"
msgstr ""
-#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:52
+#: ../../view/theme/diabook/theme.php:126 ../../include/nav.php:52
msgid "Your events"
msgstr ""
-#: ../../view/theme/diabook/theme.php:128 ../../include/nav.php:53
+#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:53
msgid "Personal notes"
msgstr ""
-#: ../../view/theme/diabook/theme.php:128 ../../include/nav.php:53
+#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:53
msgid "Your personal photos"
msgstr ""
-#: ../../view/theme/diabook/theme.php:130
-#: ../../view/theme/diabook/theme.php:571
+#: ../../view/theme/diabook/theme.php:129
+#: ../../view/theme/diabook/theme.php:638
+#: ../../view/theme/diabook/theme.php:742
+#: ../../view/theme/diabook/config.php:201
msgid "Community Pages"
msgstr ""
-#: ../../view/theme/diabook/theme.php:418
+#: ../../view/theme/diabook/theme.php:485
+#: ../../view/theme/diabook/theme.php:744
+#: ../../view/theme/diabook/config.php:203
msgid "Community Profiles"
msgstr ""
-#: ../../view/theme/diabook/theme.php:439
+#: ../../view/theme/diabook/theme.php:506
+#: ../../view/theme/diabook/theme.php:749
+#: ../../view/theme/diabook/config.php:208
msgid "Last users"
msgstr ""
-#: ../../view/theme/diabook/theme.php:468
+#: ../../view/theme/diabook/theme.php:535
+#: ../../view/theme/diabook/theme.php:751
+#: ../../view/theme/diabook/config.php:210
msgid "Last likes"
msgstr ""
-#: ../../view/theme/diabook/theme.php:513
+#: ../../view/theme/diabook/theme.php:580
+#: ../../view/theme/diabook/theme.php:750
+#: ../../view/theme/diabook/config.php:209
msgid "Last photos"
msgstr ""
-#: ../../view/theme/diabook/theme.php:550
+#: ../../view/theme/diabook/theme.php:617
+#: ../../view/theme/diabook/theme.php:747
+#: ../../view/theme/diabook/config.php:206
msgid "Find Friends"
msgstr ""
-#: ../../view/theme/diabook/theme.php:551
+#: ../../view/theme/diabook/theme.php:618
msgid "Local Directory"
msgstr ""
-#: ../../view/theme/diabook/theme.php:553 ../../include/contact_widgets.php:35
+#: ../../view/theme/diabook/theme.php:620 ../../include/contact_widgets.php:35
msgid "Similar Interests"
msgstr ""
-#: ../../view/theme/diabook/theme.php:555 ../../include/contact_widgets.php:37
+#: ../../view/theme/diabook/theme.php:622 ../../include/contact_widgets.php:37
msgid "Invite Friends"
msgstr ""
-#: ../../view/theme/diabook/theme.php:606
+#: ../../view/theme/diabook/theme.php:673
+#: ../../view/theme/diabook/theme.php:743
+#: ../../view/theme/diabook/config.php:202
msgid "Earth Layers"
msgstr ""
-#: ../../view/theme/diabook/theme.php:611
-#: ../../view/theme/diabook/config.php:198
-msgid "Set zoomfactor for Earth Layer"
+#: ../../view/theme/diabook/theme.php:678
+msgid "Set zoomfactor for Earth Layers"
msgstr ""
-#: ../../view/theme/diabook/theme.php:612
+#: ../../view/theme/diabook/theme.php:679
#: ../../view/theme/diabook/config.php:199
-msgid "Set longitude (X) for Earth Layer"
+msgid "Set longitude (X) for Earth Layers"
msgstr ""
-#: ../../view/theme/diabook/theme.php:613
+#: ../../view/theme/diabook/theme.php:680
#: ../../view/theme/diabook/config.php:200
-msgid "Set latitude (Y) for Earth Layer"
+msgid "Set latitude (Y) for Earth Layers"
msgstr ""
-#: ../../view/theme/diabook/theme.php:626
+#: ../../view/theme/diabook/theme.php:693
+#: ../../view/theme/diabook/theme.php:745
+#: ../../view/theme/diabook/config.php:204
msgid "Help or @NewHere ?"
msgstr ""
-#: ../../view/theme/diabook/theme.php:633
+#: ../../view/theme/diabook/theme.php:700
+#: ../../view/theme/diabook/theme.php:746
+#: ../../view/theme/diabook/config.php:205
msgid "Connect Services"
msgstr ""
-#: ../../view/theme/diabook/theme.php:640
+#: ../../view/theme/diabook/theme.php:707
+#: ../../view/theme/diabook/theme.php:748
msgid "Last Tweets"
msgstr ""
-#: ../../view/theme/diabook/theme.php:643
+#: ../../view/theme/diabook/theme.php:710
#: ../../view/theme/diabook/config.php:197
msgid "Set twitter search term"
msgstr ""
-#: ../../view/theme/diabook/theme.php:673
-#: ../../view/theme/diabook/config.php:201
-msgid "Show \"Cummunity Pages\" at right-hand coloumn?"
-msgstr ""
-
-#: ../../view/theme/diabook/theme.php:674
-#: ../../view/theme/diabook/config.php:202
-msgid "Show \"Earth Layers\" at right-hand coloumn?"
-msgstr ""
-
-#: ../../view/theme/diabook/theme.php:675
-#: ../../view/theme/diabook/config.php:203
-msgid "Show \"Cummunity Profiles\" at right-hand coloumn?"
-msgstr ""
-
-#: ../../view/theme/diabook/theme.php:676
-#: ../../view/theme/diabook/config.php:204
-msgid "Show \"Help or @NewHere\" at right-hand coloumn?"
-msgstr ""
-
-#: ../../view/theme/diabook/theme.php:677
-#: ../../view/theme/diabook/config.php:205
-msgid "Show \"Connect Services\" at right-hand coloumn?"
-msgstr ""
-
-#: ../../view/theme/diabook/theme.php:678
-#: ../../view/theme/diabook/config.php:206
-msgid "Show \"Find Friends\" at right-hand coloumn?"
-msgstr ""
-
-#: ../../view/theme/diabook/theme.php:679
-#: ../../view/theme/diabook/config.php:207
-msgid "Show \"Last Tweets\" at right-hand coloumn?"
-msgstr ""
-
-#: ../../view/theme/diabook/theme.php:680
-#: ../../view/theme/diabook/config.php:208
-msgid "Show \"Last Users\" at right-hand coloumn?"
+#: ../../view/theme/diabook/theme.php:730
+#: ../../view/theme/diabook/theme.php:731
+#: ../../view/theme/diabook/theme.php:732
+#: ../../view/theme/diabook/theme.php:733
+#: ../../view/theme/diabook/theme.php:734
+#: ../../view/theme/diabook/theme.php:735
+#: ../../view/theme/diabook/theme.php:736
+#: ../../view/theme/diabook/theme.php:737
+#: ../../view/theme/diabook/theme.php:738
+#: ../../view/theme/diabook/theme.php:739 ../../include/acl_selectors.php:288
+msgid "don't show"
msgstr ""
-#: ../../view/theme/diabook/theme.php:681
-#: ../../view/theme/diabook/config.php:209
-msgid "Show \"Last Photos\" at right-hand coloumn?"
+#: ../../view/theme/diabook/theme.php:730
+#: ../../view/theme/diabook/theme.php:731
+#: ../../view/theme/diabook/theme.php:732
+#: ../../view/theme/diabook/theme.php:733
+#: ../../view/theme/diabook/theme.php:734
+#: ../../view/theme/diabook/theme.php:735
+#: ../../view/theme/diabook/theme.php:736
+#: ../../view/theme/diabook/theme.php:737
+#: ../../view/theme/diabook/theme.php:738
+#: ../../view/theme/diabook/theme.php:739 ../../include/acl_selectors.php:287
+msgid "show"
msgstr ""
-#: ../../view/theme/diabook/theme.php:682
-#: ../../view/theme/diabook/config.php:210
-msgid "Show \"Last Likes\" at right-hand coloumn?"
+#: ../../view/theme/diabook/theme.php:740
+msgid "Show/hide boxes at right-hand column:"
msgstr ""
#: ../../view/theme/diabook/config.php:194
@@ -5763,6 +5772,14 @@ msgstr ""
msgid "Set color scheme"
msgstr ""
+#: ../../view/theme/diabook/config.php:198
+msgid "Set zoomfactor for Earth Layer"
+msgstr ""
+
+#: ../../view/theme/diabook/config.php:207
+msgid "Last tweets"
+msgstr ""
+
#: ../../view/theme/quattro/config.php:55
msgid "Alignment"
msgstr ""
@@ -5779,7 +5796,7 @@ msgstr ""
msgid "Set colour scheme"
msgstr ""
-#: ../../include/profile_advanced.php:17 ../../boot.php:1094
+#: ../../include/profile_advanced.php:17 ../../boot.php:1104
msgid "Gender:"
msgstr ""
@@ -5800,11 +5817,11 @@ msgstr ""
msgid "Age:"
msgstr ""
-#: ../../include/profile_advanced.php:37 ../../boot.php:1097
+#: ../../include/profile_advanced.php:37 ../../boot.php:1107
msgid "Status:"
msgstr ""
-#: ../../include/profile_advanced.php:45 ../../boot.php:1099
+#: ../../include/profile_advanced.php:45 ../../boot.php:1109
msgid "Homepage:"
msgstr ""
@@ -6388,7 +6405,7 @@ msgstr ""
msgid "Contacts not in any group"
msgstr ""
-#: ../../include/nav.php:46 ../../boot.php:804
+#: ../../include/nav.php:46 ../../boot.php:814
msgid "Logout"
msgstr ""
@@ -6396,7 +6413,7 @@ msgstr ""
msgid "End this session"
msgstr ""
-#: ../../include/nav.php:49 ../../boot.php:1472
+#: ../../include/nav.php:49 ../../boot.php:1482
msgid "Status"
msgstr ""
@@ -6476,11 +6493,11 @@ msgstr ""
msgid "Manage other pages"
msgstr ""
-#: ../../include/nav.php:138 ../../boot.php:1052
+#: ../../include/nav.php:138 ../../boot.php:1062
msgid "Profiles"
msgstr ""
-#: ../../include/nav.php:138 ../../boot.php:1052
+#: ../../include/nav.php:138 ../../boot.php:1062
msgid "Manage/edit profiles"
msgstr ""
@@ -6671,14 +6688,6 @@ msgstr ""
msgid "Visible to everybody"
msgstr ""
-#: ../../include/acl_selectors.php:287
-msgid "show"
-msgstr ""
-
-#: ../../include/acl_selectors.php:288
-msgid "don't show"
-msgstr ""
-
#: ../../include/enotify.php:14
msgid "Friendica Notification"
msgstr ""
@@ -6906,30 +6915,30 @@ msgstr ""
msgid "stopped following"
msgstr ""
-#: ../../include/Contact.php:203 ../../include/conversation.php:817
+#: ../../include/Contact.php:203 ../../include/conversation.php:820
msgid "View Status"
msgstr ""
-#: ../../include/Contact.php:204 ../../include/conversation.php:818
+#: ../../include/Contact.php:204 ../../include/conversation.php:821
msgid "View Profile"
msgstr ""
-#: ../../include/Contact.php:205 ../../include/conversation.php:819
+#: ../../include/Contact.php:205 ../../include/conversation.php:822
msgid "View Photos"
msgstr ""
#: ../../include/Contact.php:206 ../../include/Contact.php:219
-#: ../../include/conversation.php:820
+#: ../../include/conversation.php:823
msgid "Network Posts"
msgstr ""
#: ../../include/Contact.php:207 ../../include/Contact.php:219
-#: ../../include/conversation.php:821
+#: ../../include/conversation.php:824
msgid "Edit Contact"
msgstr ""
#: ../../include/Contact.php:208 ../../include/Contact.php:219
-#: ../../include/conversation.php:822
+#: ../../include/conversation.php:825
msgid "Send PM"
msgstr ""
@@ -6942,309 +6951,309 @@ msgstr ""
msgid "%1$s marked %2$s's %3$s as favorite"
msgstr ""
-#: ../../include/conversation.php:317 ../../include/conversation.php:583
+#: ../../include/conversation.php:320 ../../include/conversation.php:586
msgid "Select"
msgstr ""
-#: ../../include/conversation.php:334 ../../include/conversation.php:676
-#: ../../include/conversation.php:677
+#: ../../include/conversation.php:337 ../../include/conversation.php:679
+#: ../../include/conversation.php:680
#, php-format
msgid "View %s's profile @ %s"
msgstr ""
-#: ../../include/conversation.php:344 ../../include/conversation.php:688
+#: ../../include/conversation.php:347 ../../include/conversation.php:691
#, php-format
msgid "%s from %s"
msgstr ""
-#: ../../include/conversation.php:359
+#: ../../include/conversation.php:362
msgid "View in context"
msgstr ""
-#: ../../include/conversation.php:465
+#: ../../include/conversation.php:468
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:529
+#: ../../include/conversation.php:532
msgid "like"
msgstr ""
-#: ../../include/conversation.php:530
+#: ../../include/conversation.php:533
msgid "dislike"
msgstr ""
-#: ../../include/conversation.php:532
+#: ../../include/conversation.php:535
msgid "Share this"
msgstr ""
-#: ../../include/conversation.php:532
+#: ../../include/conversation.php:535
msgid "share"
msgstr ""
-#: ../../include/conversation.php:556
+#: ../../include/conversation.php:559
msgid "Bold"
msgstr ""
-#: ../../include/conversation.php:557
+#: ../../include/conversation.php:560
msgid "Italic"
msgstr ""
-#: ../../include/conversation.php:558
+#: ../../include/conversation.php:561
msgid "Underline"
msgstr ""
-#: ../../include/conversation.php:559
+#: ../../include/conversation.php:562
msgid "Quote"
msgstr ""
-#: ../../include/conversation.php:560
+#: ../../include/conversation.php:563
msgid "Code"
msgstr ""
-#: ../../include/conversation.php:561
+#: ../../include/conversation.php:564
msgid "Image"
msgstr ""
-#: ../../include/conversation.php:562
+#: ../../include/conversation.php:565
msgid "Link"
msgstr ""
-#: ../../include/conversation.php:563
+#: ../../include/conversation.php:566
msgid "Video"
msgstr ""
-#: ../../include/conversation.php:596
+#: ../../include/conversation.php:599
msgid "add star"
msgstr ""
-#: ../../include/conversation.php:597
+#: ../../include/conversation.php:600
msgid "remove star"
msgstr ""
-#: ../../include/conversation.php:598
+#: ../../include/conversation.php:601
msgid "toggle star status"
msgstr ""
-#: ../../include/conversation.php:601
+#: ../../include/conversation.php:604
msgid "starred"
msgstr ""
-#: ../../include/conversation.php:602
+#: ../../include/conversation.php:605
msgid "add tag"
msgstr ""
-#: ../../include/conversation.php:606
+#: ../../include/conversation.php:609
msgid "save to folder"
msgstr ""
-#: ../../include/conversation.php:678
+#: ../../include/conversation.php:681
msgid "to"
msgstr ""
-#: ../../include/conversation.php:679
+#: ../../include/conversation.php:682
msgid "Wall-to-Wall"
msgstr ""
-#: ../../include/conversation.php:680
+#: ../../include/conversation.php:683
msgid "via Wall-To-Wall:"
msgstr ""
-#: ../../include/conversation.php:725
+#: ../../include/conversation.php:728
msgid "Delete Selected Items"
msgstr ""
-#: ../../include/conversation.php:876
+#: ../../include/conversation.php:879
#, php-format
msgid "%s likes this."
msgstr ""
-#: ../../include/conversation.php:876
+#: ../../include/conversation.php:879
#, php-format
msgid "%s doesn't like this."
msgstr ""
-#: ../../include/conversation.php:880
+#: ../../include/conversation.php:883
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgstr ""
-#: ../../include/conversation.php:882
+#: ../../include/conversation.php:885
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgstr ""
-#: ../../include/conversation.php:888
+#: ../../include/conversation.php:891
msgid "and"
msgstr ""
-#: ../../include/conversation.php:891
+#: ../../include/conversation.php:894
#, php-format
msgid ", and %d other people"
msgstr ""
-#: ../../include/conversation.php:892
+#: ../../include/conversation.php:895
#, php-format
msgid "%s like this."
msgstr ""
-#: ../../include/conversation.php:892
+#: ../../include/conversation.php:895
#, php-format
msgid "%s don't like this."
msgstr ""
-#: ../../include/conversation.php:917
+#: ../../include/conversation.php:920
msgid "Visible to <strong>everybody</strong>"
msgstr ""
-#: ../../include/conversation.php:919
+#: ../../include/conversation.php:922
msgid "Please enter a video link/URL:"
msgstr ""
-#: ../../include/conversation.php:920
+#: ../../include/conversation.php:923
msgid "Please enter an audio link/URL:"
msgstr ""
-#: ../../include/conversation.php:921
+#: ../../include/conversation.php:924
msgid "Tag term:"
msgstr ""
-#: ../../include/conversation.php:923
+#: ../../include/conversation.php:926
msgid "Where are you right now?"
msgstr ""
-#: ../../include/conversation.php:966
+#: ../../include/conversation.php:969
msgid "upload photo"
msgstr ""
-#: ../../include/conversation.php:968
+#: ../../include/conversation.php:971
msgid "attach file"
msgstr ""
-#: ../../include/conversation.php:970
+#: ../../include/conversation.php:973
msgid "web link"
msgstr ""
-#: ../../include/conversation.php:971
+#: ../../include/conversation.php:974
msgid "Insert video link"
msgstr ""
-#: ../../include/conversation.php:972
+#: ../../include/conversation.php:975
msgid "video link"
msgstr ""
-#: ../../include/conversation.php:973
+#: ../../include/conversation.php:976
msgid "Insert audio link"
msgstr ""
-#: ../../include/conversation.php:974
+#: ../../include/conversation.php:977
msgid "audio link"
msgstr ""
-#: ../../include/conversation.php:976
+#: ../../include/conversation.php:979
msgid "set location"
msgstr ""
-#: ../../include/conversation.php:978
+#: ../../include/conversation.php:981
msgid "clear location"
msgstr ""
-#: ../../include/conversation.php:985
+#: ../../include/conversation.php:988
msgid "permissions"
msgstr ""
-#: ../../boot.php:505
+#: ../../boot.php:515
msgid "Delete this item?"
msgstr ""
-#: ../../boot.php:508
+#: ../../boot.php:518
msgid "show fewer"
msgstr ""
-#: ../../boot.php:681
+#: ../../boot.php:691
#, php-format
msgid "Update %s failed. See error logs."
msgstr ""
-#: ../../boot.php:683
+#: ../../boot.php:693
#, php-format
msgid "Update Error at %s"
msgstr ""
-#: ../../boot.php:783
+#: ../../boot.php:793
msgid "Create a New Account"
msgstr ""
-#: ../../boot.php:807
+#: ../../boot.php:817
msgid "Nickname or Email address: "
msgstr ""
-#: ../../boot.php:808
+#: ../../boot.php:818
msgid "Password: "
msgstr ""
-#: ../../boot.php:811
+#: ../../boot.php:821
msgid "Or login using OpenID: "
msgstr ""
-#: ../../boot.php:817
+#: ../../boot.php:827
msgid "Forgot your password?"
msgstr ""
-#: ../../boot.php:984
+#: ../../boot.php:994
msgid "Edit profile"
msgstr ""
-#: ../../boot.php:1044
+#: ../../boot.php:1054
msgid "Message"
msgstr ""
-#: ../../boot.php:1160 ../../boot.php:1236
+#: ../../boot.php:1170 ../../boot.php:1246
msgid "g A l F d"
msgstr ""
-#: ../../boot.php:1161 ../../boot.php:1237
+#: ../../boot.php:1171 ../../boot.php:1247
msgid "F d"
msgstr ""
-#: ../../boot.php:1206 ../../boot.php:1277
+#: ../../boot.php:1216 ../../boot.php:1287
msgid "[today]"
msgstr ""
-#: ../../boot.php:1218
+#: ../../boot.php:1228
msgid "Birthday Reminders"
msgstr ""
-#: ../../boot.php:1219
+#: ../../boot.php:1229
msgid "Birthdays this week:"
msgstr ""
-#: ../../boot.php:1270
+#: ../../boot.php:1280
msgid "[No description]"
msgstr ""
-#: ../../boot.php:1288
+#: ../../boot.php:1298
msgid "Event Reminders"
msgstr ""
-#: ../../boot.php:1289
+#: ../../boot.php:1299
msgid "Events this week:"
msgstr ""
-#: ../../boot.php:1475
+#: ../../boot.php:1485
msgid "Status Messages and Posts"
msgstr ""
-#: ../../boot.php:1481
+#: ../../boot.php:1491
msgid "Profile Details"
msgstr ""
-#: ../../boot.php:1496
+#: ../../boot.php:1506
msgid "Events and Calendar"
msgstr ""
-#: ../../boot.php:1502
+#: ../../boot.php:1512
msgid "Only You Can See This"
msgstr ""
diff --git a/view/de/messages.po b/view/de/messages.po
index d7de20cec..52b127f39 100644
--- a/view/de/messages.po
+++ b/view/de/messages.po
@@ -19,8 +19,8 @@ msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: http://bugs.friendica.com/\n"
-"POT-Creation-Date: 2012-05-06 10:00-0700\n"
-"PO-Revision-Date: 2012-05-08 07:06+0000\n"
+"POT-Creation-Date: 2012-05-14 10:00-0700\n"
+"PO-Revision-Date: 2012-05-15 08:40+0000\n"
"Last-Translator: bavatar <tobias.diekershoff@gmx.net>\n"
"Language-Team: German (http://www.transifex.net/projects/p/friendica/language/de/)\n"
"MIME-Version: 1.0\n"
@@ -60,14 +60,14 @@ msgstr "Konnte den Kontakt nicht aktualisieren."
#: ../../mod/register.php:38 ../../mod/regmod.php:116 ../../mod/item.php:124
#: ../../mod/item.php:140 ../../mod/profile_photo.php:19
#: ../../mod/profile_photo.php:139 ../../mod/profile_photo.php:150
-#: ../../mod/profile_photo.php:163 ../../mod/message.php:38
-#: ../../mod/message.php:90 ../../mod/allfriends.php:9
+#: ../../mod/profile_photo.php:163 ../../mod/message.php:44
+#: ../../mod/message.php:96 ../../mod/allfriends.php:9
#: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53
#: ../../mod/follow.php:8 ../../mod/display.php:138 ../../mod/profiles.php:7
#: ../../mod/profiles.php:365 ../../mod/delegate.php:6
#: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81
#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:495
-#: ../../include/items.php:3192 ../../index.php:306
+#: ../../include/items.php:3202 ../../index.php:306
msgid "Permission denied."
msgstr "Zugriff verweigert."
@@ -97,7 +97,7 @@ msgid "Return to contact editor"
msgstr "Zurück zum Kontakteditor"
#: ../../mod/crepair.php:148 ../../mod/settings.php:541
-#: ../../mod/settings.php:567 ../../mod/admin.php:640 ../../mod/admin.php:649
+#: ../../mod/settings.php:567 ../../mod/admin.php:643 ../../mod/admin.php:652
msgid "Name"
msgstr "Name"
@@ -141,9 +141,9 @@ msgstr "Neues Foto von dieser URL"
#: ../../mod/localtime.php:45 ../../mod/contacts.php:322
#: ../../mod/settings.php:539 ../../mod/settings.php:685
#: ../../mod/settings.php:746 ../../mod/settings.php:940
-#: ../../mod/manage.php:109 ../../mod/group.php:85 ../../mod/admin.php:402
-#: ../../mod/admin.php:637 ../../mod/admin.php:773 ../../mod/admin.php:972
-#: ../../mod/admin.php:1059 ../../mod/profiles.php:534
+#: ../../mod/manage.php:109 ../../mod/group.php:85 ../../mod/admin.php:404
+#: ../../mod/admin.php:640 ../../mod/admin.php:776 ../../mod/admin.php:975
+#: ../../mod/admin.php:1062 ../../mod/profiles.php:534
#: ../../mod/invite.php:119 ../../addon/facebook/facebook.php:597
#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93
#: ../../addon/nsfw/nsfw.php:57 ../../addon/planets/planets.php:158
@@ -154,7 +154,7 @@ msgstr "Neues Foto von dieser URL"
#: ../../addon/blockem/blockem.php:57 ../../addon/qcomment/qcomment.php:61
#: ../../addon/openstreetmap/openstreetmap.php:70
#: ../../addon/mathjax/mathjax.php:42 ../../addon/editplain/editplain.php:84
-#: ../../addon/blackout/blackout.php:94 ../../addon/gravatar/gravatar.php:86
+#: ../../addon/blackout/blackout.php:98 ../../addon/gravatar/gravatar.php:86
#: ../../addon/pageheader/pageheader.php:55 ../../addon/ijpost/ijpost.php:93
#: ../../addon/jappixmini/jappixmini.php:302
#: ../../addon/statusnet/statusnet.php:278
@@ -168,12 +168,12 @@ msgstr "Neues Foto von dieser URL"
#: ../../addon/piwik/piwik.php:89 ../../addon/twitter/twitter.php:180
#: ../../addon/twitter/twitter.php:209 ../../addon/twitter/twitter.php:375
#: ../../addon/irc/irc.php:55 ../../addon/blogger/blogger.php:102
-#: ../../addon/posterous/posterous.php:90
+#: ../../addon/posterous/posterous.php:103
#: ../../view/theme/cleanzero/config.php:80
-#: ../../view/theme/diabook/theme.php:590
-#: ../../view/theme/diabook/config.php:95
+#: ../../view/theme/diabook/theme.php:752
+#: ../../view/theme/diabook/config.php:190
#: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70
-#: ../../include/conversation.php:555
+#: ../../include/conversation.php:558
msgid "Submit"
msgstr "Senden"
@@ -231,8 +231,8 @@ msgstr "Veranstaltung bearbeiten"
msgid "link to source"
msgstr "Link zum Originalbeitrag"
-#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:69
-#: ../../include/nav.php:52 ../../boot.php:1493
+#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:126
+#: ../../include/nav.php:52 ../../boot.php:1503
msgid "Events"
msgstr "Veranstaltungen"
@@ -282,7 +282,7 @@ msgid "Description:"
msgstr "Beschreibung"
#: ../../mod/events.php:423 ../../include/event.php:37
-#: ../../include/bb2diaspora.php:260 ../../boot.php:1092
+#: ../../include/bb2diaspora.php:260 ../../boot.php:1102
msgid "Location:"
msgstr "Ort:"
@@ -357,14 +357,14 @@ msgstr "Ja"
msgid "No"
msgstr "Nein"
-#: ../../mod/photos.php:43 ../../boot.php:1487
+#: ../../mod/photos.php:43 ../../boot.php:1497
msgid "Photo Albums"
msgstr "Fotoalben"
#: ../../mod/photos.php:51 ../../mod/photos.php:151 ../../mod/photos.php:879
#: ../../mod/photos.php:950 ../../mod/photos.php:965 ../../mod/photos.php:1382
#: ../../mod/photos.php:1394 ../../addon/communityhome/communityhome.php:110
-#: ../../view/theme/diabook/theme.php:485
+#: ../../view/theme/diabook/theme.php:593
msgid "Contact Photos"
msgstr "Kontaktbilder"
@@ -387,7 +387,7 @@ msgstr "Kontaktinformationen nicht verfügbar"
#: ../../mod/profile_photo.php:74 ../../mod/profile_photo.php:174
#: ../../mod/profile_photo.php:252 ../../mod/profile_photo.php:261
#: ../../addon/communityhome/communityhome.php:111
-#: ../../view/theme/diabook/theme.php:486
+#: ../../view/theme/diabook/theme.php:594
msgid "Profile Photos"
msgstr "Profilbilder"
@@ -409,7 +409,7 @@ msgstr "wurde getaggt in einem"
#: ../../mod/photos.php:528 ../../mod/like.php:127 ../../mod/tagger.php:70
#: ../../addon/communityhome/communityhome.php:163
-#: ../../view/theme/diabook/theme.php:457 ../../include/text.php:1305
+#: ../../view/theme/diabook/theme.php:565 ../../include/text.php:1305
#: ../../include/diaspora.php:1654 ../../include/conversation.php:53
#: ../../include/conversation.php:126
msgid "photo"
@@ -499,7 +499,7 @@ msgstr "Foto bearbeiten"
msgid "Use as profile photo"
msgstr "Als Profilbild verwenden"
-#: ../../mod/photos.php:1078 ../../include/conversation.php:480
+#: ../../mod/photos.php:1078 ../../include/conversation.php:483
msgid "Private Message"
msgstr "Private Nachricht"
@@ -532,44 +532,44 @@ msgid ""
"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
msgstr "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-#: ../../mod/photos.php:1211 ../../include/conversation.php:529
+#: ../../mod/photos.php:1211 ../../include/conversation.php:532
msgid "I like this (toggle)"
msgstr "Ich mag das (toggle)"
-#: ../../mod/photos.php:1212 ../../include/conversation.php:530
+#: ../../mod/photos.php:1212 ../../include/conversation.php:533
msgid "I don't like this (toggle)"
msgstr "Ich mag das nicht (toggle)"
-#: ../../mod/photos.php:1213 ../../include/conversation.php:964
+#: ../../mod/photos.php:1213 ../../include/conversation.php:967
msgid "Share"
msgstr "Teilen"
#: ../../mod/photos.php:1214 ../../mod/editpost.php:104
-#: ../../mod/wallmessage.php:145 ../../mod/message.php:188
-#: ../../mod/message.php:380 ../../include/conversation.php:361
-#: ../../include/conversation.php:706 ../../include/conversation.php:983
+#: ../../mod/wallmessage.php:145 ../../mod/message.php:214
+#: ../../mod/message.php:408 ../../include/conversation.php:364
+#: ../../include/conversation.php:709 ../../include/conversation.php:986
msgid "Please wait"
msgstr "Bitte warten"
#: ../../mod/photos.php:1230 ../../mod/photos.php:1270
-#: ../../mod/photos.php:1301 ../../include/conversation.php:552
+#: ../../mod/photos.php:1301 ../../include/conversation.php:555
msgid "This is you"
msgstr "Das bist du"
#: ../../mod/photos.php:1232 ../../mod/photos.php:1272
-#: ../../mod/photos.php:1303 ../../include/conversation.php:554
-#: ../../boot.php:506
+#: ../../mod/photos.php:1303 ../../include/conversation.php:557
+#: ../../boot.php:516
msgid "Comment"
msgstr "Kommentar"
#: ../../mod/photos.php:1234 ../../mod/editpost.php:125
-#: ../../include/conversation.php:564 ../../include/conversation.php:1001
+#: ../../include/conversation.php:567 ../../include/conversation.php:1004
msgid "Preview"
msgstr "Vorschau"
#: ../../mod/photos.php:1331 ../../mod/settings.php:602
-#: ../../mod/settings.php:683 ../../mod/group.php:168 ../../mod/admin.php:644
-#: ../../include/conversation.php:318 ../../include/conversation.php:584
+#: ../../mod/settings.php:683 ../../mod/group.php:168 ../../mod/admin.php:647
+#: ../../include/conversation.php:321 ../../include/conversation.php:587
msgid "Delete"
msgstr "Löschen"
@@ -585,7 +585,7 @@ msgstr "Neueste Fotos"
msgid "Not available."
msgstr "Nicht verfügbar."
-#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:71
+#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:128
#: ../../include/nav.php:101
msgid "Community"
msgstr "Gemeinschaft"
@@ -634,28 +634,28 @@ msgstr "Beitrag nicht gefunden"
msgid "Edit post"
msgstr "Beitrag bearbeiten"
-#: ../../mod/editpost.php:80 ../../include/conversation.php:950
+#: ../../mod/editpost.php:80 ../../include/conversation.php:953
msgid "Post to Email"
msgstr "An E-Mail senden"
#: ../../mod/editpost.php:95 ../../mod/settings.php:601
-#: ../../include/conversation.php:571
+#: ../../include/conversation.php:574
msgid "Edit"
msgstr "Bearbeiten"
#: ../../mod/editpost.php:96 ../../mod/wallmessage.php:143
-#: ../../mod/message.php:186 ../../mod/message.php:378
-#: ../../include/conversation.php:965
+#: ../../mod/message.php:212 ../../mod/message.php:406
+#: ../../include/conversation.php:968
msgid "Upload photo"
msgstr "Foto hochladen"
-#: ../../mod/editpost.php:97 ../../include/conversation.php:967
+#: ../../mod/editpost.php:97 ../../include/conversation.php:970
msgid "Attach file"
msgstr "Datei anhängen"
#: ../../mod/editpost.php:98 ../../mod/wallmessage.php:144
-#: ../../mod/message.php:187 ../../mod/message.php:379
-#: ../../include/conversation.php:969
+#: ../../mod/message.php:213 ../../mod/message.php:407
+#: ../../include/conversation.php:972
msgid "Insert web link"
msgstr "einen Link einfügen"
@@ -671,35 +671,35 @@ msgstr "Vorbis [.ogg] Video einfügen"
msgid "Insert Vorbis [.ogg] audio"
msgstr "Vorbis [.ogg] Audio einfügen"
-#: ../../mod/editpost.php:102 ../../include/conversation.php:975
+#: ../../mod/editpost.php:102 ../../include/conversation.php:978
msgid "Set your location"
msgstr "Deinen Standort festlegen"
-#: ../../mod/editpost.php:103 ../../include/conversation.php:977
+#: ../../mod/editpost.php:103 ../../include/conversation.php:980
msgid "Clear browser location"
msgstr "Browser-Standort leeren"
-#: ../../mod/editpost.php:105 ../../include/conversation.php:984
+#: ../../mod/editpost.php:105 ../../include/conversation.php:987
msgid "Permission settings"
msgstr "Berechtigungseinstellungen"
-#: ../../mod/editpost.php:113 ../../include/conversation.php:993
+#: ../../mod/editpost.php:113 ../../include/conversation.php:996
msgid "CC: email addresses"
msgstr "Cc:-E-Mail-Addressen"
-#: ../../mod/editpost.php:114 ../../include/conversation.php:994
+#: ../../mod/editpost.php:114 ../../include/conversation.php:997
msgid "Public post"
msgstr "Öffentlicher Beitrag"
-#: ../../mod/editpost.php:117 ../../include/conversation.php:980
+#: ../../mod/editpost.php:117 ../../include/conversation.php:983
msgid "Set title"
msgstr "Titel setzen"
-#: ../../mod/editpost.php:119 ../../include/conversation.php:982
+#: ../../mod/editpost.php:119 ../../include/conversation.php:985
msgid "Categories (comma-separated list)"
msgstr "Kategorien (kommasepariert)"
-#: ../../mod/editpost.php:120 ../../include/conversation.php:996
+#: ../../mod/editpost.php:120 ../../include/conversation.php:999
msgid "Example: bob@example.com, mary@example.com"
msgstr "Z.B.: bob@example.com, mary@example.com"
@@ -780,7 +780,7 @@ msgstr "Es scheint so, als ob du bereits mit %s befreundet bist."
msgid "Invalid profile URL."
msgstr "Ungültige Profil-URL."
-#: ../../mod/dfrn_request.php:476 ../../mod/follow.php:20
+#: ../../mod/dfrn_request.php:476 ../../mod/follow.php:23
msgid "Disallowed profile URL."
msgstr "Nicht erlaubte Profil-URL."
@@ -816,7 +816,7 @@ msgstr "Bitte bestätige deine Kontaktanfrage bei %s."
msgid "Confirm"
msgstr "Bestätigen"
-#: ../../mod/dfrn_request.php:688 ../../include/items.php:2707
+#: ../../mod/dfrn_request.php:688 ../../include/items.php:2717
msgid "[Name Withheld]"
msgstr "[Name unterdrückt]"
@@ -1180,7 +1180,7 @@ msgid "is interested in:"
msgstr "ist interessiert an:"
#: ../../mod/match.php:58 ../../mod/suggest.php:59
-#: ../../include/contact_widgets.php:9 ../../boot.php:1036
+#: ../../include/contact_widgets.php:9 ../../boot.php:1046
msgid "Connect"
msgstr "Verbinden"
@@ -1228,7 +1228,7 @@ msgstr "Netzwerk"
msgid "Personal"
msgstr "Persönlich"
-#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:65
+#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:122
#: ../../include/nav.php:77 ../../include/nav.php:115
msgid "Home"
msgstr "Pinnwand"
@@ -1237,7 +1237,7 @@ msgstr "Pinnwand"
msgid "Introductions"
msgstr "Kontaktanfragen"
-#: ../../mod/notifications.php:100 ../../mod/message.php:102
+#: ../../mod/notifications.php:100 ../../mod/message.php:104
#: ../../include/nav.php:128
msgid "Messages"
msgstr "Nachrichten"
@@ -1277,7 +1277,7 @@ msgid "if applicable"
msgstr "falls anwendbar"
#: ../../mod/notifications.php:157 ../../mod/notifications.php:204
-#: ../../mod/admin.php:642
+#: ../../mod/admin.php:645
msgid "Approve"
msgstr "Genehmigen"
@@ -1478,12 +1478,12 @@ msgid "View all contacts"
msgstr "Alle Kontakte anzeigen"
#: ../../mod/contacts.php:290 ../../mod/contacts.php:347
-#: ../../mod/admin.php:646
+#: ../../mod/admin.php:649
msgid "Unblock"
msgstr "Entsperren"
#: ../../mod/contacts.php:290 ../../mod/contacts.php:347
-#: ../../mod/admin.php:645
+#: ../../mod/admin.php:648
msgid "Block"
msgstr "Sperren"
@@ -1576,7 +1576,7 @@ msgstr "letzte Aktualisierung:"
msgid "Update public posts"
msgstr "Öffentliche Beiträge aktualisieren"
-#: ../../mod/contacts.php:344 ../../mod/admin.php:1117
+#: ../../mod/contacts.php:344 ../../mod/admin.php:1120
msgid "Update now"
msgstr "Jetzt aktualisieren"
@@ -1669,7 +1669,7 @@ msgstr "du bist Fan von"
msgid "Edit contact"
msgstr "Kontakt bearbeiten"
-#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:67
+#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:124
#: ../../include/nav.php:139
msgid "Contacts"
msgstr "Kontakte"
@@ -1705,8 +1705,8 @@ msgstr "Anfrage zum Zurücksetzen des Passworts auf %s erhalten"
#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:742
#: ../../addon/facebook/facebook.php:680
#: ../../addon/facebook/facebook.php:1170
-#: ../../addon/testdrive/testdrive.php:58 ../../include/items.php:2716
-#: ../../boot.php:686
+#: ../../addon/testdrive/testdrive.php:58 ../../include/items.php:2726
+#: ../../boot.php:696
msgid "Administrator"
msgstr "Administrator"
@@ -1716,7 +1716,7 @@ msgid ""
"Password reset failed."
msgstr "Anfrage konnte nicht verifiziert werden. (Eventuell hast du bereits eine ähnliche Anfrage gestellt.) Zurücksetzen des Passworts gescheitert."
-#: ../../mod/lostpass.php:83 ../../boot.php:818
+#: ../../mod/lostpass.php:83 ../../boot.php:828
msgid "Password Reset"
msgstr "Passwort zurücksetzen"
@@ -1788,8 +1788,9 @@ msgstr "Persönliche Daten exportieren"
msgid "Remove account"
msgstr "Account entfernen"
-#: ../../mod/settings.php:88 ../../mod/admin.php:732 ../../mod/admin.php:937
-#: ../../addon/mathjax/mathjax.php:36 ../../include/nav.php:137
+#: ../../mod/settings.php:88 ../../mod/admin.php:735 ../../mod/admin.php:940
+#: ../../addon/mathjax/mathjax.php:36 ../../view/theme/diabook/theme.php:638
+#: ../../view/theme/diabook/theme.php:768 ../../include/nav.php:137
msgid "Settings"
msgstr "Einstellungen"
@@ -2015,7 +2016,7 @@ msgstr "Maximal 100 Beiträge"
msgid "Don't show emoticons"
msgstr "Keine Smilies anzeigen"
-#: ../../mod/settings.php:821 ../../mod/admin.php:180 ../../mod/admin.php:618
+#: ../../mod/settings.php:821 ../../mod/admin.php:180 ../../mod/admin.php:621
msgid "Normal Account"
msgstr "Normaler Account"
@@ -2023,7 +2024,7 @@ msgstr "Normaler Account"
msgid "This account is a normal personal profile"
msgstr "Dieser Account ist ein normales persönliches Profil"
-#: ../../mod/settings.php:825 ../../mod/admin.php:181 ../../mod/admin.php:619
+#: ../../mod/settings.php:825 ../../mod/admin.php:181 ../../mod/admin.php:622
msgid "Soapbox Account"
msgstr "Sandkasten-Account"
@@ -2031,7 +2032,7 @@ msgstr "Sandkasten-Account"
msgid "Automatically approve all connection/friend requests as read-only fans"
msgstr "Kontaktanfragen werden automatisch als Nurlese-Fans akzeptiert"
-#: ../../mod/settings.php:829 ../../mod/admin.php:182 ../../mod/admin.php:620
+#: ../../mod/settings.php:829 ../../mod/admin.php:182 ../../mod/admin.php:623
msgid "Community/Celebrity Account"
msgstr "Gemeinschafts/Promi-Account"
@@ -2040,7 +2041,7 @@ msgid ""
"Automatically approve all connection/friend requests as read-write fans"
msgstr "Kontaktanfragen werden automatisch als Lese-und-Schreib-Fans akzeptiert"
-#: ../../mod/settings.php:833 ../../mod/admin.php:183 ../../mod/admin.php:621
+#: ../../mod/settings.php:833 ../../mod/admin.php:183 ../../mod/admin.php:624
msgid "Automatic Friend Account"
msgstr "Automatischer Freundesaccount"
@@ -2366,7 +2367,7 @@ msgstr "Private Nachrichten an diese Person könnten an die Öffentlichkeit gela
msgid "Invalid contact."
msgstr "Ungültiger Kontakt."
-#: ../../mod/notes.php:44 ../../boot.php:1499
+#: ../../mod/notes.php:44 ../../boot.php:1509
msgid "Personal Notes"
msgstr "Persönliche Notizen"
@@ -2382,7 +2383,7 @@ msgstr "Speichern"
msgid "Number of daily wall messages for %s exceeded. Message failed."
msgstr "Maximale Anzahl der täglichen Pinnwand Nachrichten für %s ist überschritten. Zustellung fehlgeschlagen."
-#: ../../mod/wallmessage.php:56 ../../mod/message.php:59
+#: ../../mod/wallmessage.php:56 ../../mod/message.php:65
msgid "No recipient selected."
msgstr "Kein Empfänger gewählt."
@@ -2390,15 +2391,15 @@ msgstr "Kein Empfänger gewählt."
msgid "Unable to check your home location."
msgstr "Konnte deinen Heimatort nicht bestimmen."
-#: ../../mod/wallmessage.php:62 ../../mod/message.php:66
+#: ../../mod/wallmessage.php:62 ../../mod/message.php:72
msgid "Message could not be sent."
msgstr "Nachricht konnte nicht gesendet werden."
-#: ../../mod/wallmessage.php:65 ../../mod/message.php:69
+#: ../../mod/wallmessage.php:65 ../../mod/message.php:75
msgid "Message collection failure."
msgstr "Konnte Nachrichten nicht abrufen."
-#: ../../mod/wallmessage.php:68 ../../mod/message.php:72
+#: ../../mod/wallmessage.php:68 ../../mod/message.php:78
msgid "Message sent."
msgstr "Nachricht gesendet."
@@ -2406,12 +2407,12 @@ msgstr "Nachricht gesendet."
msgid "No recipient."
msgstr "Kein Empfänger."
-#: ../../mod/wallmessage.php:124 ../../mod/message.php:169
-#: ../../include/conversation.php:918
+#: ../../mod/wallmessage.php:124 ../../mod/message.php:171
+#: ../../include/conversation.php:921
msgid "Please enter a link URL:"
msgstr "Bitte gib die URL des Links ein:"
-#: ../../mod/wallmessage.php:131 ../../mod/message.php:177
+#: ../../mod/wallmessage.php:131 ../../mod/message.php:199
msgid "Send Private Message"
msgstr "Private Nachricht senden"
@@ -2422,18 +2423,18 @@ msgid ""
"your site allow private mail from unknown senders."
msgstr "Wenn du möchtest, dass %s dir antworten kann, überprüfe deine Privatsphären-Einstellungen und erlaube private Nachrichten von unbekannten Absendern."
-#: ../../mod/wallmessage.php:133 ../../mod/message.php:178
-#: ../../mod/message.php:370
+#: ../../mod/wallmessage.php:133 ../../mod/message.php:200
+#: ../../mod/message.php:397
msgid "To:"
msgstr "An:"
-#: ../../mod/wallmessage.php:134 ../../mod/message.php:179
-#: ../../mod/message.php:371
+#: ../../mod/wallmessage.php:134 ../../mod/message.php:205
+#: ../../mod/message.php:399
msgid "Subject:"
msgstr "Betreff:"
-#: ../../mod/wallmessage.php:140 ../../mod/message.php:183
-#: ../../mod/message.php:374 ../../mod/invite.php:113
+#: ../../mod/wallmessage.php:140 ../../mod/message.php:209
+#: ../../mod/message.php:402 ../../mod/invite.php:113
msgid "Your message:"
msgstr "Deine Nachricht:"
@@ -2615,9 +2616,9 @@ msgstr "Ungültiger Profil-Bezeichner"
msgid "Profile Visibility Editor"
msgstr "Editor für die Profil-Sichtbarkeit"
-#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:66
+#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:123
#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:74
-#: ../../include/nav.php:50 ../../boot.php:1478
+#: ../../include/nav.php:50 ../../boot.php:1488
msgid "Profile"
msgstr "Profil"
@@ -2766,7 +2767,7 @@ msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung mögli
msgid "Your invitation ID: "
msgstr "ID deiner Einladung: "
-#: ../../mod/register.php:553 ../../mod/admin.php:403
+#: ../../mod/register.php:553 ../../mod/admin.php:405
msgid "Registration"
msgstr "Registrierung"
@@ -2789,7 +2790,7 @@ msgstr "Wähle einen Spitznamen für dein Profil. Dieser muss mit einem Buchstab
msgid "Choose a nickname: "
msgstr "Spitznamen wählen: "
-#: ../../mod/register.php:567 ../../include/nav.php:81 ../../boot.php:784
+#: ../../mod/register.php:567 ../../include/nav.php:81 ../../boot.php:794
msgid "Register"
msgstr "Registrieren"
@@ -2801,8 +2802,8 @@ msgstr "Personen Suche"
#: ../../addon/facebook/facebook.php:1564
#: ../../addon/communityhome/communityhome.php:158
#: ../../addon/communityhome/communityhome.php:167
-#: ../../view/theme/diabook/theme.php:452
-#: ../../view/theme/diabook/theme.php:461 ../../include/diaspora.php:1654
+#: ../../view/theme/diabook/theme.php:560
+#: ../../view/theme/diabook/theme.php:569 ../../include/diaspora.php:1654
#: ../../include/conversation.php:48 ../../include/conversation.php:57
#: ../../include/conversation.php:121 ../../include/conversation.php:130
msgid "status"
@@ -2810,7 +2811,7 @@ msgstr "Status"
#: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1568
#: ../../addon/communityhome/communityhome.php:172
-#: ../../view/theme/diabook/theme.php:466 ../../include/diaspora.php:1670
+#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1670
#: ../../include/conversation.php:65
#, php-format
msgid "%1$s likes %2$s's %3$s"
@@ -2822,8 +2823,8 @@ msgid "%1$s doesn't like %2$s's %3$s"
msgstr "%1$s mag %2$ss %3$s nicht"
#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:156
-#: ../../mod/admin.php:681 ../../mod/admin.php:880 ../../mod/display.php:37
-#: ../../mod/display.php:142 ../../include/items.php:3074
+#: ../../mod/admin.php:684 ../../mod/admin.php:883 ../../mod/display.php:37
+#: ../../mod/display.php:142 ../../include/items.php:3084
msgid "Item not found."
msgstr "Beitrag nicht gefunden."
@@ -2831,8 +2832,8 @@ msgstr "Beitrag nicht gefunden."
msgid "Access denied."
msgstr "Zugriff verweigert."
-#: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:68
-#: ../../include/nav.php:51 ../../boot.php:1484
+#: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:125
+#: ../../include/nav.php:51 ../../boot.php:1494
msgid "Photos"
msgstr "Bilder"
@@ -2973,71 +2974,71 @@ msgstr "Dies wird deinen Account endgültig löschen. Es gibt keine Möglichkeit
msgid "Please enter your password for verification:"
msgstr "Bitte gib dein Passwort zur Verifikation ein:"
-#: ../../mod/message.php:22 ../../include/nav.php:131
+#: ../../mod/message.php:9 ../../include/nav.php:131
msgid "New Message"
msgstr "Neue Nachricht"
-#: ../../mod/message.php:63
+#: ../../mod/message.php:69
msgid "Unable to locate contact information."
msgstr "Konnte die Kontaktinformationen nicht finden."
-#: ../../mod/message.php:117
+#: ../../mod/message.php:119
msgid "Message deleted."
msgstr "Nachricht gelöscht."
-#: ../../mod/message.php:147
+#: ../../mod/message.php:149
msgid "Conversation removed."
msgstr "Unterhaltung gelöscht."
-#: ../../mod/message.php:219
+#: ../../mod/message.php:245
msgid "No messages."
msgstr "Keine Nachrichten."
-#: ../../mod/message.php:226
+#: ../../mod/message.php:252
#, php-format
msgid "Unknown sender - %s"
msgstr "'Unbekannter Absender - %s"
-#: ../../mod/message.php:229
+#: ../../mod/message.php:255
#, php-format
msgid "You and %s"
msgstr "Du und %s"
-#: ../../mod/message.php:232
+#: ../../mod/message.php:258
#, php-format
msgid "%s and You"
msgstr "%s und Du"
-#: ../../mod/message.php:242 ../../mod/message.php:363
+#: ../../mod/message.php:268 ../../mod/message.php:390
msgid "Delete conversation"
msgstr "Unterhaltung löschen"
-#: ../../mod/message.php:245
+#: ../../mod/message.php:271
msgid "D, d M Y - g:i A"
msgstr "D, d. M Y - g:i A"
-#: ../../mod/message.php:247
+#: ../../mod/message.php:273
#, php-format
msgid "%d message"
msgid_plural "%d messages"
msgstr[0] "%d Nachricht"
msgstr[1] "%d Nachrichten"
-#: ../../mod/message.php:282
+#: ../../mod/message.php:308
msgid "Message not available."
msgstr "Nachricht nicht verfügbar."
-#: ../../mod/message.php:347
+#: ../../mod/message.php:373
msgid "Delete message"
msgstr "Nachricht löschen"
-#: ../../mod/message.php:365
+#: ../../mod/message.php:392
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr "Sichere Kommunikation ist nicht verfügbar. <strong>Eventuell</strong> kannst du auf der Profilseite des Absenders antworten."
-#: ../../mod/message.php:369
+#: ../../mod/message.php:396
msgid "Send Reply"
msgstr "Antwort senden"
@@ -3054,19 +3055,19 @@ msgstr "Keine Freunde zum Anzeigen."
msgid "Theme settings updated."
msgstr "Themen Einstellungen aktualisiert."
-#: ../../mod/admin.php:96 ../../mod/admin.php:401
+#: ../../mod/admin.php:96 ../../mod/admin.php:403
msgid "Site"
msgstr "Seite"
-#: ../../mod/admin.php:97 ../../mod/admin.php:636 ../../mod/admin.php:648
+#: ../../mod/admin.php:97 ../../mod/admin.php:639 ../../mod/admin.php:651
msgid "Users"
msgstr "Nutzer"
-#: ../../mod/admin.php:98 ../../mod/admin.php:730 ../../mod/admin.php:772
+#: ../../mod/admin.php:98 ../../mod/admin.php:733 ../../mod/admin.php:775
msgid "Plugins"
msgstr "Plugins"
-#: ../../mod/admin.php:99 ../../mod/admin.php:935 ../../mod/admin.php:971
+#: ../../mod/admin.php:99 ../../mod/admin.php:938 ../../mod/admin.php:974
msgid "Themes"
msgstr "Themen"
@@ -3078,7 +3079,7 @@ msgstr "DB Updates"
msgid "Software Update"
msgstr "Software Update"
-#: ../../mod/admin.php:115 ../../mod/admin.php:1058
+#: ../../mod/admin.php:115 ../../mod/admin.php:1061
msgid "Logs"
msgstr "Protokolle"
@@ -3086,9 +3087,9 @@ msgstr "Protokolle"
msgid "User registrations waiting for confirmation"
msgstr "Nutzeranmeldungen die auf Bestätigung warten"
-#: ../../mod/admin.php:195 ../../mod/admin.php:400 ../../mod/admin.php:635
-#: ../../mod/admin.php:729 ../../mod/admin.php:771 ../../mod/admin.php:934
-#: ../../mod/admin.php:970 ../../mod/admin.php:1057
+#: ../../mod/admin.php:195 ../../mod/admin.php:402 ../../mod/admin.php:638
+#: ../../mod/admin.php:732 ../../mod/admin.php:774 ../../mod/admin.php:937
+#: ../../mod/admin.php:973 ../../mod/admin.php:1060
msgid "Administration"
msgstr "Administration"
@@ -3112,497 +3113,507 @@ msgstr "Version"
msgid "Active plugins"
msgstr "Aktive Plugins"
-#: ../../mod/admin.php:339
+#: ../../mod/admin.php:341
msgid "Site settings updated."
msgstr "Seiteneinstellungen aktualisiert."
-#: ../../mod/admin.php:387
+#: ../../mod/admin.php:389
msgid "Closed"
msgstr "Geschlossen"
-#: ../../mod/admin.php:388
+#: ../../mod/admin.php:390
msgid "Requires approval"
msgstr "Bedarf der Zustimmung"
-#: ../../mod/admin.php:389
+#: ../../mod/admin.php:391
msgid "Open"
msgstr "Offen"
-#: ../../mod/admin.php:393
+#: ../../mod/admin.php:395
msgid "No SSL policy, links will track page SSL state"
msgstr "Keine SSL Richtlinie, Links werden das verwendete Protokoll beibehalten"
-#: ../../mod/admin.php:394
+#: ../../mod/admin.php:396
msgid "Force all links to use SSL"
msgstr "SSL für alle Links erzwingen"
-#: ../../mod/admin.php:395
+#: ../../mod/admin.php:397
msgid "Self-signed certificate, use SSL for local links only (discouraged)"
msgstr "Selbst-unterzeichnetes Zertifikat, SSL nur für lokale Links verwenden (nicht empfohlen)"
-#: ../../mod/admin.php:404
+#: ../../mod/admin.php:406
msgid "File upload"
msgstr "Datei hochladen"
-#: ../../mod/admin.php:405
+#: ../../mod/admin.php:407
msgid "Policies"
msgstr "Regeln"
-#: ../../mod/admin.php:406
+#: ../../mod/admin.php:408
msgid "Advanced"
msgstr "Erweitert"
-#: ../../mod/admin.php:410 ../../addon/statusnet/statusnet.php:544
+#: ../../mod/admin.php:412 ../../addon/statusnet/statusnet.php:544
msgid "Site name"
msgstr "Seitenname"
-#: ../../mod/admin.php:411
+#: ../../mod/admin.php:413
msgid "Banner/Logo"
msgstr "Banner/Logo"
-#: ../../mod/admin.php:412
+#: ../../mod/admin.php:414
msgid "System language"
msgstr "Systemsprache"
-#: ../../mod/admin.php:413
+#: ../../mod/admin.php:415
msgid "System theme"
msgstr "Systemweites Thema"
-#: ../../mod/admin.php:413
+#: ../../mod/admin.php:415
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr "Vorgabe für das System-Theme - kann von Benutzerprofilen überschrieben werden - <a href='#' id='cnftheme'>Theme-Einstellungen ändern</a>"
-#: ../../mod/admin.php:414
+#: ../../mod/admin.php:416
msgid "SSL link policy"
msgstr "Regeln für SSL Links"
-#: ../../mod/admin.php:414
+#: ../../mod/admin.php:416
msgid "Determines whether generated links should be forced to use SSL"
msgstr "Bestimmt, ob generierte Links SSL verwenden müssen"
-#: ../../mod/admin.php:415
+#: ../../mod/admin.php:417
msgid "Maximum image size"
msgstr "Maximale Größe von Bildern"
-#: ../../mod/admin.php:415
+#: ../../mod/admin.php:417
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr "Maximale Upload-Größe von Bildern in Bytes. Standard ist 0, d.h. ohne Limit."
-#: ../../mod/admin.php:417
+#: ../../mod/admin.php:419
msgid "Register policy"
msgstr "Registrierungsmethode"
-#: ../../mod/admin.php:418
+#: ../../mod/admin.php:420
msgid "Register text"
msgstr "Registrierungstext"
-#: ../../mod/admin.php:418
+#: ../../mod/admin.php:420
msgid "Will be displayed prominently on the registration page."
msgstr "Wird gut sichtbar auf der Registrierungs-Seite angezeigt."
-#: ../../mod/admin.php:419
+#: ../../mod/admin.php:421
msgid "Accounts abandoned after x days"
msgstr "Accounts gelten nach x Tagen als unbenutzt"
-#: ../../mod/admin.php:419
+#: ../../mod/admin.php:421
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr "Verschwende keine System-Ressourcen auf das Pollen externer Seiten, wenn Accounts nicht mehr benutzt werden. 0 eingeben für kein Limit."
-#: ../../mod/admin.php:420
+#: ../../mod/admin.php:422
msgid "Allowed friend domains"
msgstr "Erlaubte Domains für Kontakte"
-#: ../../mod/admin.php:420
+#: ../../mod/admin.php:422
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
-#: ../../mod/admin.php:421
+#: ../../mod/admin.php:423
msgid "Allowed email domains"
msgstr "Erlaubte Domains für Emails"
-#: ../../mod/admin.php:421
+#: ../../mod/admin.php:423
msgid ""
"Comma separated list of domains which are allowed in email addresses for "
"registrations to this site. Wildcards are accepted. Empty to allow any "
"domains"
msgstr "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
-#: ../../mod/admin.php:422
+#: ../../mod/admin.php:424
msgid "Block public"
msgstr "Öffentlichen Zugriff blockieren"
-#: ../../mod/admin.php:422
+#: ../../mod/admin.php:424
msgid ""
"Check to block public access to all otherwise public personal pages on this "
"site unless you are currently logged in."
msgstr "Klicken, um öffentlichen Zugriff auf sonst öffentliche Profile zu blockieren, wenn man nicht eingeloggt ist."
-#: ../../mod/admin.php:423
+#: ../../mod/admin.php:425
msgid "Force publish"
msgstr "Erzwinge Veröffentlichung"
-#: ../../mod/admin.php:423
+#: ../../mod/admin.php:425
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr "Klicken, um Anzeige aller Profile dieses Servers im Verzeichnis zu erzwingen."
-#: ../../mod/admin.php:424
+#: ../../mod/admin.php:426
msgid "Global directory update URL"
msgstr "URL für Updates beim weltweiten Verzeichnis"
-#: ../../mod/admin.php:424
+#: ../../mod/admin.php:426
msgid ""
"URL to update the global directory. If this is not set, the global directory"
" is completely unavailable to the application."
msgstr "URL für Update des globalen Verzeichnisses. Wenn nichts eingetragen ist, bleibt das globale Verzeichnis unerreichbar."
-#: ../../mod/admin.php:426
+#: ../../mod/admin.php:428
msgid "Block multiple registrations"
msgstr "Unterbinde Mehrfachregistrierung"
-#: ../../mod/admin.php:426
+#: ../../mod/admin.php:428
msgid "Disallow users to register additional accounts for use as pages."
msgstr "Benutzern nicht erlauben, weitere Accounts als zusätzliche Profile anzulegen."
-#: ../../mod/admin.php:427
+#: ../../mod/admin.php:429
msgid "OpenID support"
msgstr "OpenID Unterstützung"
-#: ../../mod/admin.php:427
+#: ../../mod/admin.php:429
msgid "OpenID support for registration and logins."
msgstr "OpenID-Unterstützung für Registrierung und Login."
-#: ../../mod/admin.php:428
+#: ../../mod/admin.php:430
msgid "Fullname check"
msgstr "Namen auf Vollständigkeit überprüfen"
-#: ../../mod/admin.php:428
+#: ../../mod/admin.php:430
msgid ""
"Force users to register with a space between firstname and lastname in Full "
"name, as an antispam measure"
msgstr "Leerzeichen zwischen Vor- und Nachname im vollständigen Namen erzwingen, um SPAM zu vermeiden."
-#: ../../mod/admin.php:429
+#: ../../mod/admin.php:431
msgid "UTF-8 Regular expressions"
msgstr "UTF-8 Reguläre Ausdrücke"
-#: ../../mod/admin.php:429
+#: ../../mod/admin.php:431
msgid "Use PHP UTF8 regular expressions"
msgstr "PHP UTF8 Ausdrücke verwenden"
-#: ../../mod/admin.php:430
+#: ../../mod/admin.php:432
msgid "Show Community Page"
msgstr "Gemeinschaftsseite anzeigen"
-#: ../../mod/admin.php:430
+#: ../../mod/admin.php:432
msgid ""
"Display a Community page showing all recent public postings on this site."
msgstr "Zeige die Gemeinschaftsseite mit allen öffentlichen Beiträgen auf diesem Server."
-#: ../../mod/admin.php:431
+#: ../../mod/admin.php:433
msgid "Enable OStatus support"
msgstr "OStatus Unterstützung aktivieren"
-#: ../../mod/admin.php:431
+#: ../../mod/admin.php:433
msgid ""
"Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All "
"communications in OStatus are public, so privacy warnings will be "
"occasionally displayed."
msgstr "Biete die eingebaute OStatus (identi.ca, status.net, etc.) Unterstützung an. Jede Kommunikation in OStatus ist öffentlich, so Privatsphäre Warnungen werden bei Bedarf angezeigt."
-#: ../../mod/admin.php:432
+#: ../../mod/admin.php:434
msgid "Enable Diaspora support"
msgstr "Diaspora-Support aktivieren"
-#: ../../mod/admin.php:432
+#: ../../mod/admin.php:434
msgid "Provide built-in Diaspora network compatibility."
msgstr "Verwende die eingebaute Diaspora-Verknüpfung."
-#: ../../mod/admin.php:433
+#: ../../mod/admin.php:435
msgid "Only allow Friendica contacts"
msgstr "Nur Friendica-Kontakte erlauben"
-#: ../../mod/admin.php:433
+#: ../../mod/admin.php:435
msgid ""
"All contacts must use Friendica protocols. All other built-in communication "
"protocols disabled."
msgstr "Alle Kontakte müssen das Friendica Protokoll nutzen. Alle anderen Kommunikationsprotokolle werden deaktiviert."
-#: ../../mod/admin.php:434
+#: ../../mod/admin.php:436
msgid "Verify SSL"
msgstr "SSL Überprüfen"
-#: ../../mod/admin.php:434
+#: ../../mod/admin.php:436
msgid ""
"If you wish, you can turn on strict certificate checking. This will mean you"
" cannot connect (at all) to self-signed SSL sites."
msgstr "Wenn gewollt, kann man hier eine strenge Zertifikat Kontrolle einstellen. Das bedeutet, dass man zu keinen Seiten mit selbst unterzeichnetem SSL eine Verbindung herstellen kann."
-#: ../../mod/admin.php:435
+#: ../../mod/admin.php:437
msgid "Proxy user"
msgstr "Proxy Nutzer"
-#: ../../mod/admin.php:436
+#: ../../mod/admin.php:438
msgid "Proxy URL"
msgstr "Proxy URL"
-#: ../../mod/admin.php:437
+#: ../../mod/admin.php:439
msgid "Network timeout"
msgstr "Netzwerk Wartezeit"
-#: ../../mod/admin.php:437
+#: ../../mod/admin.php:439
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr "Der Wert ist in Sekunden. Setze 0 für unbegrenzt (nicht empfohlen)."
-#: ../../mod/admin.php:438
+#: ../../mod/admin.php:440
msgid "Delivery interval"
msgstr "Zustellungsintervall"
-#: ../../mod/admin.php:438
+#: ../../mod/admin.php:440
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl an Sekunden um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared-Hosts, 2-3 für VPS, 0-1 für große dedizierte Server."
-#: ../../mod/admin.php:439
+#: ../../mod/admin.php:441
+msgid "Poll interval"
+msgstr "Abfrage Intervall"
+
+#: ../../mod/admin.php:441
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "Verzögere Hintergrundprozesse um diese Anzahl an Sekunden um die Systemlast zu reduzieren. Bei 0 Sekunden wird das Auslieferungsintervall verwendet."
+
+#: ../../mod/admin.php:442
msgid "Maximum Load Average"
msgstr "Maximum Load Average"
-#: ../../mod/admin.php:439
+#: ../../mod/admin.php:442
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
-msgstr ""
+msgstr "Maximale Systemlast bevor Verteil- und Empfangsprozesse verschoben werden - Standard 50"
-#: ../../mod/admin.php:453
+#: ../../mod/admin.php:456
msgid "Update has been marked successful"
msgstr "Update wurde als erfolgreich markiert"
-#: ../../mod/admin.php:463
+#: ../../mod/admin.php:466
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr "Ausführung von %s schlug fehl. Systemprotokolle prüfen."
-#: ../../mod/admin.php:466
+#: ../../mod/admin.php:469
#, php-format
msgid "Update %s was successfully applied."
msgstr "Update %s war erfolgreich."
-#: ../../mod/admin.php:470
+#: ../../mod/admin.php:473
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr "Update %s hat keinen Status zurückgegeben. Unbekannter Status."
-#: ../../mod/admin.php:473
+#: ../../mod/admin.php:476
#, php-format
msgid "Update function %s could not be found."
msgstr "Updatefunktion %s konnte nicht gefunden werden."
-#: ../../mod/admin.php:488
+#: ../../mod/admin.php:491
msgid "No failed updates."
msgstr "Keine fehlgeschlagenen Updates."
-#: ../../mod/admin.php:492
+#: ../../mod/admin.php:495
msgid "Failed Updates"
msgstr "Fehlgeschlagene Updates"
-#: ../../mod/admin.php:493
+#: ../../mod/admin.php:496
msgid ""
"This does not include updates prior to 1139, which did not return a status."
msgstr "Ohne Updates vor 1139, da diese keinen Status zurückgegeben haben."
-#: ../../mod/admin.php:494
+#: ../../mod/admin.php:497
msgid "Mark success (if update was manually applied)"
msgstr "Als erfolgreich markieren (falls das Update manuell installiert wurde)"
-#: ../../mod/admin.php:495
+#: ../../mod/admin.php:498
msgid "Attempt to execute this update step automatically"
msgstr "Versuchen, diesen Schritt automatisch auszuführen"
-#: ../../mod/admin.php:520
+#: ../../mod/admin.php:523
#, php-format
msgid "%s user blocked/unblocked"
msgid_plural "%s users blocked/unblocked"
msgstr[0] "%s Benutzer geblockt/freigegeben"
msgstr[1] "%s Benutzer geblockt/freigegeben"
-#: ../../mod/admin.php:527
+#: ../../mod/admin.php:530
#, php-format
msgid "%s user deleted"
msgid_plural "%s users deleted"
msgstr[0] "%s Nutzer gelöscht"
msgstr[1] "%s Nutzer gelöscht"
-#: ../../mod/admin.php:566
+#: ../../mod/admin.php:569
#, php-format
msgid "User '%s' deleted"
msgstr "Nutzer '%s' gelöscht"
-#: ../../mod/admin.php:574
+#: ../../mod/admin.php:577
#, php-format
msgid "User '%s' unblocked"
msgstr "Nutzer '%s' entsperrt"
-#: ../../mod/admin.php:574
+#: ../../mod/admin.php:577
#, php-format
msgid "User '%s' blocked"
msgstr "Nutzer '%s' gesperrt"
-#: ../../mod/admin.php:638
+#: ../../mod/admin.php:641
msgid "select all"
msgstr "Alle auswählen"
-#: ../../mod/admin.php:639
+#: ../../mod/admin.php:642
msgid "User registrations waiting for confirm"
msgstr "Neuanmeldungen, die auf deine Bestätigung warten"
-#: ../../mod/admin.php:640
+#: ../../mod/admin.php:643
msgid "Request date"
msgstr "Anfrage Datum"
-#: ../../mod/admin.php:640 ../../mod/admin.php:649
+#: ../../mod/admin.php:643 ../../mod/admin.php:652
#: ../../include/contact_selectors.php:79
msgid "Email"
msgstr "Email"
-#: ../../mod/admin.php:641
+#: ../../mod/admin.php:644
msgid "No registrations."
msgstr "Keine Neuanmeldungen."
-#: ../../mod/admin.php:643
+#: ../../mod/admin.php:646
msgid "Deny"
msgstr "Verwehren"
-#: ../../mod/admin.php:649
+#: ../../mod/admin.php:652
msgid "Register date"
msgstr "Anmeldedatum"
-#: ../../mod/admin.php:649
+#: ../../mod/admin.php:652
msgid "Last login"
msgstr "Letzte Anmeldung"
-#: ../../mod/admin.php:649
+#: ../../mod/admin.php:652
msgid "Last item"
msgstr "Letzter Beitrag"
-#: ../../mod/admin.php:649
+#: ../../mod/admin.php:652
msgid "Account"
msgstr "Nutzerkonto"
-#: ../../mod/admin.php:651
+#: ../../mod/admin.php:654
msgid ""
"Selected users will be deleted!\\n\\nEverything these users had posted on "
"this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Die markierten Nutzer werden gelöscht!\\n\\nAlle Beiträge, die diese Nutzer auf dieser Seite veröffentlicht haben, werden permanent gelöscht!\\n\\nBist du sicher?"
-#: ../../mod/admin.php:652
+#: ../../mod/admin.php:655
msgid ""
"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
"site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Der Nutzer {0} wird gelöscht!\\n\\nAlles was dieser Nutzer auf dieser Seite veröffentlicht hat, wird permanent gelöscht!\\n\\nBist du sicher?"
-#: ../../mod/admin.php:693
+#: ../../mod/admin.php:696
#, php-format
msgid "Plugin %s disabled."
msgstr "Plugin %s deaktiviert."
-#: ../../mod/admin.php:697
+#: ../../mod/admin.php:700
#, php-format
msgid "Plugin %s enabled."
msgstr "Plugin %s aktiviert."
-#: ../../mod/admin.php:707 ../../mod/admin.php:905
+#: ../../mod/admin.php:710 ../../mod/admin.php:908
msgid "Disable"
msgstr "Ausschalten"
-#: ../../mod/admin.php:709 ../../mod/admin.php:907
+#: ../../mod/admin.php:712 ../../mod/admin.php:910
msgid "Enable"
msgstr "Einschalten"
-#: ../../mod/admin.php:731 ../../mod/admin.php:936
+#: ../../mod/admin.php:734 ../../mod/admin.php:939
msgid "Toggle"
msgstr "Umschalten"
-#: ../../mod/admin.php:739 ../../mod/admin.php:946
+#: ../../mod/admin.php:742 ../../mod/admin.php:949
msgid "Author: "
msgstr "Autor:"
-#: ../../mod/admin.php:740 ../../mod/admin.php:947
+#: ../../mod/admin.php:743 ../../mod/admin.php:950
msgid "Maintainer: "
msgstr "Betreuer:"
-#: ../../mod/admin.php:869
+#: ../../mod/admin.php:872
msgid "No themes found."
msgstr "Keine Themen gefunden."
-#: ../../mod/admin.php:928
+#: ../../mod/admin.php:931
msgid "Screenshot"
msgstr "Bildschirmfoto"
-#: ../../mod/admin.php:976
+#: ../../mod/admin.php:979
msgid "[Experimental]"
msgstr "[Experimentell]"
-#: ../../mod/admin.php:977
+#: ../../mod/admin.php:980
msgid "[Unsupported]"
msgstr "[Nicht unterstützt]"
-#: ../../mod/admin.php:1004
+#: ../../mod/admin.php:1007
msgid "Log settings updated."
msgstr "Protokolleinstellungen aktualisiert."
-#: ../../mod/admin.php:1060
+#: ../../mod/admin.php:1063
msgid "Clear"
msgstr "löschen"
-#: ../../mod/admin.php:1066
+#: ../../mod/admin.php:1069
msgid "Debugging"
msgstr "Protokoll führen"
-#: ../../mod/admin.php:1067
+#: ../../mod/admin.php:1070
msgid "Log file"
msgstr "Protokolldatei"
-#: ../../mod/admin.php:1067
+#: ../../mod/admin.php:1070
msgid ""
"Must be writable by web server. Relative to your Friendica top-level "
"directory."
msgstr "Webserver muss Schreibrechte besitzen. Abhängig vom Friendica-Installationsverzeichnis."
-#: ../../mod/admin.php:1068
+#: ../../mod/admin.php:1071
msgid "Log level"
msgstr "Protokoll-Level"
-#: ../../mod/admin.php:1118 ../../view/theme/diabook/theme.php:599
+#: ../../mod/admin.php:1121
msgid "Close"
msgstr "Schließen"
-#: ../../mod/admin.php:1124
+#: ../../mod/admin.php:1127
msgid "FTP Host"
msgstr "FTP Host"
-#: ../../mod/admin.php:1125
+#: ../../mod/admin.php:1128
msgid "FTP Path"
msgstr "FTP Pfad"
-#: ../../mod/admin.php:1126
+#: ../../mod/admin.php:1129
msgid "FTP User"
msgstr "FTP Nutzername"
-#: ../../mod/admin.php:1127
+#: ../../mod/admin.php:1130
msgid "FTP Password"
msgstr "FTP Passwort"
-#: ../../mod/profile.php:21 ../../boot.php:949
+#: ../../mod/profile.php:21 ../../boot.php:959
msgid "Requested profile is not available."
msgstr "Das angefragte Profil ist nicht vorhanden."
@@ -3677,48 +3688,58 @@ msgstr "Account wurde nicht gefunden und OpenID Registrierung auf diesem Server
msgid "Login failed."
msgstr "Annmeldung fehlgeschlagen."
-#: ../../mod/follow.php:27
+#: ../../mod/follow.php:30
msgid "Connect URL missing."
msgstr "Connect-URL fehlt"
-#: ../../mod/follow.php:47
+#: ../../mod/follow.php:56
msgid ""
"This site is not configured to allow communications with other networks."
msgstr "Diese Seite ist so konfiguriert, dass keine Kommunikation mit anderen Netzwerken erfolgen kann."
-#: ../../mod/follow.php:48 ../../mod/follow.php:63
+#: ../../mod/follow.php:57 ../../mod/follow.php:72
msgid "No compatible communication protocols or feeds were discovered."
msgstr "Es wurden keine kompatiblen Kommunikationsprotokolle oder Feeds gefunden."
-#: ../../mod/follow.php:61
+#: ../../mod/follow.php:70
msgid "The profile address specified does not provide adequate information."
msgstr "Die angegebene Profiladresse liefert unzureichende Informationen."
-#: ../../mod/follow.php:65
+#: ../../mod/follow.php:74
msgid "An author or name was not found."
msgstr "Es wurde kein Autor oder Name gefunden."
-#: ../../mod/follow.php:67
+#: ../../mod/follow.php:76
msgid "No browser URL could be matched to this address."
msgstr "Zu dieser Adresse konnte keine passende Browser URL gefunden werden."
-#: ../../mod/follow.php:74
+#: ../../mod/follow.php:78
+msgid ""
+"Unable to match @-style Identity Address with a known protocol or email "
+"contact."
+msgstr "Konnte die @-Adresse mit keinem der bekannten Protokolle oder Email-Kontakte abgleichen."
+
+#: ../../mod/follow.php:79
+msgid "Use mailto: in front of address to force email check."
+msgstr "Verwende mailto: vor der Email Adresse um eine Überprüfung der Email Adresse zu erzwingen."
+
+#: ../../mod/follow.php:85
msgid ""
"The profile address specified belongs to a network which has been disabled "
"on this site."
msgstr "Die Adresse dieses Profils gehört zu einem Netzwerk, mit dem die Kommunikation auf dieser Seite ausgeschaltet wurde."
-#: ../../mod/follow.php:79
+#: ../../mod/follow.php:90
msgid ""
"Limited profile. This person will be unable to receive direct/personal "
"notifications from you."
msgstr "Eingeschränktes Profil. Diese Person wird keine direkten/privaten Nachrichten von dir erhalten können."
-#: ../../mod/follow.php:149
+#: ../../mod/follow.php:160
msgid "Unable to retrieve contact information."
msgstr "Konnte die Kontaktinformationen nicht empfangen."
-#: ../../mod/follow.php:195
+#: ../../mod/follow.php:206
msgid "following"
msgstr "folgen"
@@ -4000,27 +4021,27 @@ msgstr "Alter: "
msgid "Edit/Manage Profiles"
msgstr "Verwalte/Editiere Profile"
-#: ../../mod/profiles.php:621 ../../boot.php:1058
+#: ../../mod/profiles.php:621 ../../boot.php:1068
msgid "Change profile photo"
msgstr "Profilbild ändern"
-#: ../../mod/profiles.php:622 ../../boot.php:1059
+#: ../../mod/profiles.php:622 ../../boot.php:1069
msgid "Create New Profile"
msgstr "Neues Profil anlegen"
-#: ../../mod/profiles.php:633 ../../boot.php:1069
+#: ../../mod/profiles.php:633 ../../boot.php:1079
msgid "Profile Image"
msgstr "Profilbild"
-#: ../../mod/profiles.php:635 ../../boot.php:1072
+#: ../../mod/profiles.php:635 ../../boot.php:1082
msgid "visible to everybody"
msgstr "sichtbar für jeden"
-#: ../../mod/profiles.php:636 ../../boot.php:1073
+#: ../../mod/profiles.php:636 ../../boot.php:1083
msgid "Edit visibility"
msgstr "Sichtbarkeit bearbeiten"
-#: ../../mod/filer.php:29 ../../include/conversation.php:922
+#: ../../mod/filer.php:29 ../../include/conversation.php:925
msgid "Save to Folder:"
msgstr "In diesen Ordner verschieben:"
@@ -4068,7 +4089,7 @@ msgstr "Hinzufügen"
msgid "No entries."
msgstr "Keine Einträge"
-#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:513
+#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:621
#: ../../include/contact_widgets.php:34
msgid "Friend Suggestions"
msgstr "Kontaktvorschläge"
@@ -4083,7 +4104,7 @@ msgstr "Keine Vorschläge. Falls der Server frisch aufgesetzt wurde, versuche es
msgid "Ignore/Hide"
msgstr "Ignorieren/Verbergen"
-#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:511
+#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:619
msgid "Global Directory"
msgstr "Weltweites Verzeichnis"
@@ -4312,13 +4333,13 @@ msgstr "Veröffentliche standardmäßig bei Facebook"
msgid ""
"Facebook friend linking has been disabled on this site. The following "
"settings will have no effect."
-msgstr ""
+msgstr "Das verlinken von Facebook-Kontakten wurde auf dieser Seite deaktiviert. Die folgenden Einstellungen haben keinen Effekt."
#: ../../addon/facebook/facebook.php:571
msgid ""
"Facebook friend linking has been disabled on this site. If you disable it, "
"you will be unable to re-enable it."
-msgstr ""
+msgstr "Das verlinken von Facebook-Kontakten wurde auf dieser Seite deaktiviert. Wenn du es ausgeschaltet hast, kannst du es nicht wieder aktivieren."
#: ../../addon/facebook/facebook.php:574
msgid "Link all your Facebook friends and conversations on this website"
@@ -4611,7 +4632,7 @@ msgstr "Verwende /expression/ um reguläre Ausdrücke zu verwenden"
msgid "NSFW Settings saved."
msgstr "NSFW-Einstellungen gespeichert"
-#: ../../addon/nsfw/nsfw.php:120
+#: ../../addon/nsfw/nsfw.php:121
#, php-format
msgid "%s - Click to open/close"
msgstr "%s – Zum Öffnen/Schließen klicken"
@@ -4621,8 +4642,8 @@ msgid "Forums"
msgstr "Foren"
#: ../../addon/page/page.php:63 ../../addon/showmore/showmore.php:87
-#: ../../include/contact_widgets.php:187 ../../include/conversation.php:466
-#: ../../boot.php:507
+#: ../../include/contact_widgets.php:188 ../../include/conversation.php:469
+#: ../../boot.php:517
msgid "show more"
msgstr "mehr anzeigen"
@@ -4638,7 +4659,7 @@ msgstr "Aktiviere Planeten Plugin"
#: ../../addon/communityhome/communityhome.php:34
#: ../../addon/communityhome/twillingham/communityhome.php:28
#: ../../addon/communityhome/twillingham/communityhome.php:34
-#: ../../include/nav.php:64 ../../boot.php:805
+#: ../../include/nav.php:64 ../../boot.php:815
msgid "Login"
msgstr "Anmeldung"
@@ -4666,7 +4687,7 @@ msgid "Latest likes"
msgstr "Neueste Favoriten"
#: ../../addon/communityhome/communityhome.php:155
-#: ../../view/theme/diabook/theme.php:449 ../../include/text.php:1303
+#: ../../view/theme/diabook/theme.php:557 ../../include/text.php:1303
#: ../../include/conversation.php:45 ../../include/conversation.php:118
msgid "event"
msgstr "Veranstaltung"
@@ -4819,7 +4840,7 @@ msgid "Post to Drupal by default"
msgstr "Veröffentliche öffentliche Beiträge standardmäßig bei Drupal"
#: ../../addon/drpost/drpost.php:184 ../../addon/wppost/wppost.php:190
-#: ../../addon/blogger/blogger.php:172 ../../addon/posterous/posterous.php:177
+#: ../../addon/blogger/blogger.php:172 ../../addon/posterous/posterous.php:192
msgid "Post from Friendica"
msgstr "Beitrag via Friendica"
@@ -5533,32 +5554,40 @@ msgstr "Blogger-API-URL"
msgid "Post to Blogger by default"
msgstr "Standardmäßig auf Blogger posten"
-#: ../../addon/posterous/posterous.php:36
+#: ../../addon/posterous/posterous.php:37
msgid "Post to Posterous"
msgstr "Nach Posterous senden"
-#: ../../addon/posterous/posterous.php:67
+#: ../../addon/posterous/posterous.php:70
msgid "Posterous Post Settings"
msgstr "Posterous Beitrags-Einstellungen"
-#: ../../addon/posterous/posterous.php:69
+#: ../../addon/posterous/posterous.php:72
msgid "Enable Posterous Post Plugin"
msgstr "Posterous-Plugin aktivieren"
-#: ../../addon/posterous/posterous.php:74
+#: ../../addon/posterous/posterous.php:77
msgid "Posterous login"
msgstr "Posterous-Anmeldename"
-#: ../../addon/posterous/posterous.php:79
+#: ../../addon/posterous/posterous.php:82
msgid "Posterous password"
msgstr "Posterous-Passwort"
-#: ../../addon/posterous/posterous.php:84
+#: ../../addon/posterous/posterous.php:87
+msgid "Posterous site ID"
+msgstr "Posterous site ID"
+
+#: ../../addon/posterous/posterous.php:92
+msgid "Posterous API token"
+msgstr "Posterous API token"
+
+#: ../../addon/posterous/posterous.php:97
msgid "Post to Posterous by default"
msgstr "Veröffentliche öffentliche Beiträge standardmäßig bei Posterous"
#: ../../view/theme/cleanzero/config.php:82
-#: ../../view/theme/diabook/config.php:97
+#: ../../view/theme/diabook/config.php:192
#: ../../view/theme/quattro/config.php:54 ../../view/theme/dispy/config.php:72
msgid "Theme settings"
msgstr "Themen Einstellungen"
@@ -5568,7 +5597,8 @@ msgid "Set resize level for images in posts and comments (width and height)"
msgstr "Wähle das Vergrößerungsmaß für Bilder in Beiträgen und Kommentaren (Höhe und Breite)"
#: ../../view/theme/cleanzero/config.php:84
-#: ../../view/theme/diabook/config.php:98 ../../view/theme/dispy/config.php:73
+#: ../../view/theme/diabook/config.php:193
+#: ../../view/theme/dispy/config.php:73
msgid "Set font-size for posts and comments"
msgstr "Schriftgröße für Beiträge und Kommentare festlegen"
@@ -5581,105 +5611,177 @@ msgstr "Theme Breite festlegen"
msgid "Color scheme"
msgstr "Farbschema"
-#: ../../view/theme/diabook/theme.php:65 ../../include/nav.php:49
+#: ../../view/theme/diabook/theme.php:122 ../../include/nav.php:49
#: ../../include/nav.php:115
msgid "Your posts and conversations"
msgstr "Deine Beiträge und Unterhaltungen"
-#: ../../view/theme/diabook/theme.php:66 ../../include/nav.php:50
+#: ../../view/theme/diabook/theme.php:123 ../../include/nav.php:50
msgid "Your profile page"
msgstr "Deine Profilseite"
-#: ../../view/theme/diabook/theme.php:67
+#: ../../view/theme/diabook/theme.php:124
msgid "Your contacts"
msgstr "Deine Kontakte"
-#: ../../view/theme/diabook/theme.php:68 ../../include/nav.php:51
+#: ../../view/theme/diabook/theme.php:125 ../../include/nav.php:51
msgid "Your photos"
msgstr "Deine Fotos"
-#: ../../view/theme/diabook/theme.php:69 ../../include/nav.php:52
+#: ../../view/theme/diabook/theme.php:126 ../../include/nav.php:52
msgid "Your events"
msgstr "Deine Ereignisse"
-#: ../../view/theme/diabook/theme.php:70 ../../include/nav.php:53
+#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:53
msgid "Personal notes"
msgstr "Persönliche Notizen"
-#: ../../view/theme/diabook/theme.php:70 ../../include/nav.php:53
+#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:53
msgid "Your personal photos"
msgstr "Deine privaten Fotos"
-#: ../../view/theme/diabook/theme.php:72
-#: ../../view/theme/diabook/theme.php:530
+#: ../../view/theme/diabook/theme.php:129
+#: ../../view/theme/diabook/theme.php:638
+#: ../../view/theme/diabook/theme.php:742
+#: ../../view/theme/diabook/config.php:201
msgid "Community Pages"
msgstr "Foren"
-#: ../../view/theme/diabook/theme.php:377
+#: ../../view/theme/diabook/theme.php:485
+#: ../../view/theme/diabook/theme.php:744
+#: ../../view/theme/diabook/config.php:203
msgid "Community Profiles"
msgstr "Community-Profile"
-#: ../../view/theme/diabook/theme.php:398
+#: ../../view/theme/diabook/theme.php:506
+#: ../../view/theme/diabook/theme.php:749
+#: ../../view/theme/diabook/config.php:208
msgid "Last users"
msgstr "Letzte Nutzer"
-#: ../../view/theme/diabook/theme.php:427
+#: ../../view/theme/diabook/theme.php:535
+#: ../../view/theme/diabook/theme.php:751
+#: ../../view/theme/diabook/config.php:210
msgid "Last likes"
msgstr "Zuletzt gemocht"
-#: ../../view/theme/diabook/theme.php:472
+#: ../../view/theme/diabook/theme.php:580
+#: ../../view/theme/diabook/theme.php:750
+#: ../../view/theme/diabook/config.php:209
msgid "Last photos"
msgstr "Letzte Fotos"
-#: ../../view/theme/diabook/theme.php:509
+#: ../../view/theme/diabook/theme.php:617
+#: ../../view/theme/diabook/theme.php:747
+#: ../../view/theme/diabook/config.php:206
msgid "Find Friends"
msgstr "Freunde finden"
-#: ../../view/theme/diabook/theme.php:510
+#: ../../view/theme/diabook/theme.php:618
msgid "Local Directory"
msgstr "Lokales Verzeichnis"
-#: ../../view/theme/diabook/theme.php:512 ../../include/contact_widgets.php:35
+#: ../../view/theme/diabook/theme.php:620 ../../include/contact_widgets.php:35
msgid "Similar Interests"
msgstr "Ähnliche Interessen"
-#: ../../view/theme/diabook/theme.php:514 ../../include/contact_widgets.php:37
+#: ../../view/theme/diabook/theme.php:622 ../../include/contact_widgets.php:37
msgid "Invite Friends"
msgstr "Freunde einladen"
-#: ../../view/theme/diabook/theme.php:565
-msgid "Earth View"
-msgstr "Earth View"
-
-#: ../../view/theme/diabook/theme.php:573
+#: ../../view/theme/diabook/theme.php:673
+#: ../../view/theme/diabook/theme.php:743
+#: ../../view/theme/diabook/config.php:202
+msgid "Earth Layers"
+msgstr "Earth Layers"
+
+#: ../../view/theme/diabook/theme.php:678
+msgid "Set zoomfactor for Earth Layers"
+msgstr "Zoomfaktor der Earth Layer"
+
+#: ../../view/theme/diabook/theme.php:679
+#: ../../view/theme/diabook/config.php:199
+msgid "Set longitude (X) for Earth Layers"
+msgstr "Longitude (X) der Earth Layer"
+
+#: ../../view/theme/diabook/theme.php:680
+#: ../../view/theme/diabook/config.php:200
+msgid "Set latitude (Y) for Earth Layers"
+msgstr "Latitude (Y) der Earth Layer"
+
+#: ../../view/theme/diabook/theme.php:693
+#: ../../view/theme/diabook/theme.php:745
+#: ../../view/theme/diabook/config.php:204
msgid "Help or @NewHere ?"
msgstr "Hilfe oder @NewHere"
-#: ../../view/theme/diabook/theme.php:580
+#: ../../view/theme/diabook/theme.php:700
+#: ../../view/theme/diabook/theme.php:746
+#: ../../view/theme/diabook/config.php:205
msgid "Connect Services"
msgstr "Verbinde Dienste"
-#: ../../view/theme/diabook/theme.php:587
+#: ../../view/theme/diabook/theme.php:707
+#: ../../view/theme/diabook/theme.php:748
msgid "Last Tweets"
msgstr "Neueste Tweets"
-#: ../../view/theme/diabook/theme.php:591
-#: ../../view/theme/diabook/config.php:102
+#: ../../view/theme/diabook/theme.php:710
+#: ../../view/theme/diabook/config.php:197
msgid "Set twitter search term"
-msgstr ""
+msgstr "Twitter Suchbegriff"
+
+#: ../../view/theme/diabook/theme.php:730
+#: ../../view/theme/diabook/theme.php:731
+#: ../../view/theme/diabook/theme.php:732
+#: ../../view/theme/diabook/theme.php:733
+#: ../../view/theme/diabook/theme.php:734
+#: ../../view/theme/diabook/theme.php:735
+#: ../../view/theme/diabook/theme.php:736
+#: ../../view/theme/diabook/theme.php:737
+#: ../../view/theme/diabook/theme.php:738
+#: ../../view/theme/diabook/theme.php:739 ../../include/acl_selectors.php:288
+msgid "don't show"
+msgstr "nicht zeigen"
-#: ../../view/theme/diabook/config.php:99 ../../view/theme/dispy/config.php:74
+#: ../../view/theme/diabook/theme.php:730
+#: ../../view/theme/diabook/theme.php:731
+#: ../../view/theme/diabook/theme.php:732
+#: ../../view/theme/diabook/theme.php:733
+#: ../../view/theme/diabook/theme.php:734
+#: ../../view/theme/diabook/theme.php:735
+#: ../../view/theme/diabook/theme.php:736
+#: ../../view/theme/diabook/theme.php:737
+#: ../../view/theme/diabook/theme.php:738
+#: ../../view/theme/diabook/theme.php:739 ../../include/acl_selectors.php:287
+msgid "show"
+msgstr "zeigen"
+
+#: ../../view/theme/diabook/theme.php:740
+msgid "Show/hide boxes at right-hand column:"
+msgstr "Rahmen auf der rechten Seite anzeigen/verbergen"
+
+#: ../../view/theme/diabook/config.php:194
+#: ../../view/theme/dispy/config.php:74
msgid "Set line-height for posts and comments"
msgstr "Liniengröße für Beiträge und Kommantare festlegen"
-#: ../../view/theme/diabook/config.php:100
+#: ../../view/theme/diabook/config.php:195
msgid "Set resolution for middle column"
msgstr "Auflösung für die Mittelspalte setzen"
-#: ../../view/theme/diabook/config.php:101
+#: ../../view/theme/diabook/config.php:196
msgid "Set color scheme"
msgstr "Wähle Farbschema"
+#: ../../view/theme/diabook/config.php:198
+msgid "Set zoomfactor for Earth Layer"
+msgstr "Zoomfaktor der Earth Layer"
+
+#: ../../view/theme/diabook/config.php:207
+msgid "Last tweets"
+msgstr "Neueste Tweets"
+
#: ../../view/theme/quattro/config.php:55
msgid "Alignment"
msgstr "Ausrichtung"
@@ -5696,7 +5798,7 @@ msgstr "Mitte"
msgid "Set colour scheme"
msgstr "Farbschema wählen"
-#: ../../include/profile_advanced.php:17 ../../boot.php:1094
+#: ../../include/profile_advanced.php:17 ../../boot.php:1104
msgid "Gender:"
msgstr "Geschlecht:"
@@ -5709,7 +5811,7 @@ msgid "j F"
msgstr "j F"
#: ../../include/profile_advanced.php:30 ../../include/datetime.php:448
-#: ../../include/items.php:1403
+#: ../../include/items.php:1413
msgid "Birthday:"
msgstr "Geburtstag:"
@@ -5717,11 +5819,11 @@ msgstr "Geburtstag:"
msgid "Age:"
msgstr "Alter:"
-#: ../../include/profile_advanced.php:37 ../../boot.php:1097
+#: ../../include/profile_advanced.php:37 ../../boot.php:1107
msgid "Status:"
msgstr "Status:"
-#: ../../include/profile_advanced.php:45 ../../boot.php:1099
+#: ../../include/profile_advanced.php:45 ../../boot.php:1109
msgid "Homepage:"
msgstr "Homepage:"
@@ -6085,11 +6187,11 @@ msgstr "Beginnt:"
msgid "Finishes:"
msgstr "Endet:"
-#: ../../include/delivery.php:445 ../../include/notifier.php:652
+#: ../../include/delivery.php:452 ../../include/notifier.php:652
msgid "(no subject)"
msgstr "(kein Betreff)"
-#: ../../include/delivery.php:452 ../../include/enotify.php:23
+#: ../../include/delivery.php:459 ../../include/enotify.php:23
#: ../../include/notifier.php:659
msgid "noreply"
msgstr "noreply"
@@ -6305,7 +6407,7 @@ msgstr "Neue Gruppe erstellen"
msgid "Contacts not in any group"
msgstr "Kontakte in keiner Gruppe"
-#: ../../include/nav.php:46 ../../boot.php:804
+#: ../../include/nav.php:46 ../../boot.php:814
msgid "Logout"
msgstr "Abmelden"
@@ -6313,7 +6415,7 @@ msgstr "Abmelden"
msgid "End this session"
msgstr "Diese Sitzung beenden"
-#: ../../include/nav.php:49 ../../boot.php:1472
+#: ../../include/nav.php:49 ../../boot.php:1482
msgid "Status"
msgstr "Status"
@@ -6393,11 +6495,11 @@ msgstr "Verwalten"
msgid "Manage other pages"
msgstr "Andere Seiten verwalten"
-#: ../../include/nav.php:138 ../../boot.php:1052
+#: ../../include/nav.php:138 ../../boot.php:1062
msgid "Profiles"
msgstr "Profile"
-#: ../../include/nav.php:138 ../../boot.php:1052
+#: ../../include/nav.php:138 ../../boot.php:1062
msgid "Manage/edit profiles"
msgstr "Profile verwalten/editieren"
@@ -6563,7 +6665,7 @@ msgstr "Sekunden"
msgid "%1$d %2$s ago"
msgstr "%1$d %2$s her"
-#: ../../include/onepoll.php:402
+#: ../../include/onepoll.php:406
msgid "From: "
msgstr "Von: "
@@ -6588,14 +6690,6 @@ msgstr "[kein Betreff]"
msgid "Visible to everybody"
msgstr "Für jeden sichtbar"
-#: ../../include/acl_selectors.php:287
-msgid "show"
-msgstr "zeigen"
-
-#: ../../include/acl_selectors.php:288
-msgid "don't show"
-msgstr "nicht zeigen"
-
#: ../../include/enotify.php:14
msgid "Friendica Notification"
msgstr "Friendica-Benachrichtigung"
@@ -6784,11 +6878,11 @@ msgstr "Foto:"
msgid "Please visit %s to approve or reject the suggestion."
msgstr "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen."
-#: ../../include/items.php:2714
+#: ../../include/items.php:2724
msgid "A new person is sharing with you at "
msgstr "Eine neue Person teilt mit dir auf "
-#: ../../include/items.php:2714
+#: ../../include/items.php:2724
msgid "You have a new follower at "
msgstr "Du hast einen neuen Kontakt auf "
@@ -6823,30 +6917,30 @@ msgstr "Das Sicherheits-Merkmal war nicht korrekt. Das passiert meistens wenn da
msgid "stopped following"
msgstr "wird nicht mehr gefolgt"
-#: ../../include/Contact.php:203 ../../include/conversation.php:817
+#: ../../include/Contact.php:203 ../../include/conversation.php:820
msgid "View Status"
msgstr "Pinnwand anschauen"
-#: ../../include/Contact.php:204 ../../include/conversation.php:818
+#: ../../include/Contact.php:204 ../../include/conversation.php:821
msgid "View Profile"
msgstr "Profil anschauen"
-#: ../../include/Contact.php:205 ../../include/conversation.php:819
+#: ../../include/Contact.php:205 ../../include/conversation.php:822
msgid "View Photos"
msgstr "Bilder anschauen"
#: ../../include/Contact.php:206 ../../include/Contact.php:219
-#: ../../include/conversation.php:820
+#: ../../include/conversation.php:823
msgid "Network Posts"
msgstr "Netzwerk-Beiträge"
#: ../../include/Contact.php:207 ../../include/Contact.php:219
-#: ../../include/conversation.php:821
+#: ../../include/conversation.php:824
msgid "Edit Contact"
msgstr "Kontakt bearbeiten"
#: ../../include/Contact.php:208 ../../include/Contact.php:219
-#: ../../include/conversation.php:822
+#: ../../include/conversation.php:825
msgid "Send PM"
msgstr "Private Nachricht senden"
@@ -6859,309 +6953,309 @@ msgstr "Nachricht/Beitrag"
msgid "%1$s marked %2$s's %3$s as favorite"
msgstr "%1$s hat %2$s\\s %3$s als Favorit markiert"
-#: ../../include/conversation.php:317 ../../include/conversation.php:583
+#: ../../include/conversation.php:320 ../../include/conversation.php:586
msgid "Select"
msgstr "Auswählen"
-#: ../../include/conversation.php:334 ../../include/conversation.php:676
-#: ../../include/conversation.php:677
+#: ../../include/conversation.php:337 ../../include/conversation.php:679
+#: ../../include/conversation.php:680
#, php-format
msgid "View %s's profile @ %s"
msgstr "Das Profil von %s auf %s betrachten."
-#: ../../include/conversation.php:344 ../../include/conversation.php:688
+#: ../../include/conversation.php:347 ../../include/conversation.php:691
#, php-format
msgid "%s from %s"
msgstr "%s von %s"
-#: ../../include/conversation.php:359
+#: ../../include/conversation.php:362
msgid "View in context"
msgstr "Im Zusammenhang betrachten"
-#: ../../include/conversation.php:465
+#: ../../include/conversation.php:468
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "%d Kommentar"
msgstr[1] "%d Kommentare"
-#: ../../include/conversation.php:529
+#: ../../include/conversation.php:532
msgid "like"
msgstr "mag ich"
-#: ../../include/conversation.php:530
+#: ../../include/conversation.php:533
msgid "dislike"
msgstr "mag ich nicht"
-#: ../../include/conversation.php:532
+#: ../../include/conversation.php:535
msgid "Share this"
msgstr "Teile dieses"
-#: ../../include/conversation.php:532
+#: ../../include/conversation.php:535
msgid "share"
msgstr "Teilen"
-#: ../../include/conversation.php:556
+#: ../../include/conversation.php:559
msgid "Bold"
msgstr "Fett"
-#: ../../include/conversation.php:557
+#: ../../include/conversation.php:560
msgid "Italic"
msgstr "Kursiv"
-#: ../../include/conversation.php:558
+#: ../../include/conversation.php:561
msgid "Underline"
msgstr "Unterstrichen"
-#: ../../include/conversation.php:559
+#: ../../include/conversation.php:562
msgid "Quote"
msgstr "Zitat"
-#: ../../include/conversation.php:560
+#: ../../include/conversation.php:563
msgid "Code"
msgstr "Code"
-#: ../../include/conversation.php:561
+#: ../../include/conversation.php:564
msgid "Image"
msgstr "Bild"
-#: ../../include/conversation.php:562
+#: ../../include/conversation.php:565
msgid "Link"
msgstr "Verweis"
-#: ../../include/conversation.php:563
+#: ../../include/conversation.php:566
msgid "Video"
msgstr "Video"
-#: ../../include/conversation.php:596
+#: ../../include/conversation.php:599
msgid "add star"
msgstr "markieren"
-#: ../../include/conversation.php:597
+#: ../../include/conversation.php:600
msgid "remove star"
msgstr "Markierung entfernen"
-#: ../../include/conversation.php:598
+#: ../../include/conversation.php:601
msgid "toggle star status"
msgstr "Markierung umschalten"
-#: ../../include/conversation.php:601
+#: ../../include/conversation.php:604
msgid "starred"
msgstr "markiert"
-#: ../../include/conversation.php:602
+#: ../../include/conversation.php:605
msgid "add tag"
msgstr "Tag hinzufügen"
-#: ../../include/conversation.php:606
+#: ../../include/conversation.php:609
msgid "save to folder"
msgstr "In Ordner speichern"
-#: ../../include/conversation.php:678
+#: ../../include/conversation.php:681
msgid "to"
msgstr "zu"
-#: ../../include/conversation.php:679
+#: ../../include/conversation.php:682
msgid "Wall-to-Wall"
msgstr "Wall-to-Wall"
-#: ../../include/conversation.php:680
+#: ../../include/conversation.php:683
msgid "via Wall-To-Wall:"
msgstr "via Wall-To-Wall:"
-#: ../../include/conversation.php:725
+#: ../../include/conversation.php:728
msgid "Delete Selected Items"
msgstr "Lösche die markierten Beiträge"
-#: ../../include/conversation.php:876
+#: ../../include/conversation.php:879
#, php-format
msgid "%s likes this."
msgstr "%s mag das."
-#: ../../include/conversation.php:876
+#: ../../include/conversation.php:879
#, php-format
msgid "%s doesn't like this."
msgstr "%s mag das nicht."
-#: ../../include/conversation.php:880
+#: ../../include/conversation.php:883
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgstr "<span %1$s>%2$d Leute</span> mögen das."
-#: ../../include/conversation.php:882
+#: ../../include/conversation.php:885
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgstr "<span %1$s>%2$d Leute</span> mögen das nicht."
-#: ../../include/conversation.php:888
+#: ../../include/conversation.php:891
msgid "and"
msgstr "und"
-#: ../../include/conversation.php:891
+#: ../../include/conversation.php:894
#, php-format
msgid ", and %d other people"
msgstr " und %d andere"
-#: ../../include/conversation.php:892
+#: ../../include/conversation.php:895
#, php-format
msgid "%s like this."
msgstr "%s mögen das."
-#: ../../include/conversation.php:892
+#: ../../include/conversation.php:895
#, php-format
msgid "%s don't like this."
msgstr "%s mögen das nicht."
-#: ../../include/conversation.php:917
+#: ../../include/conversation.php:920
msgid "Visible to <strong>everybody</strong>"
msgstr "Für <strong>jedermann</strong> sichtbar"
-#: ../../include/conversation.php:919
+#: ../../include/conversation.php:922
msgid "Please enter a video link/URL:"
msgstr "Bitte Link/URL zum Video einfügen:"
-#: ../../include/conversation.php:920
+#: ../../include/conversation.php:923
msgid "Please enter an audio link/URL:"
msgstr "Bitte Link/URL zum Audio einfügen:"
-#: ../../include/conversation.php:921
+#: ../../include/conversation.php:924
msgid "Tag term:"
msgstr "Tag:"
-#: ../../include/conversation.php:923
+#: ../../include/conversation.php:926
msgid "Where are you right now?"
msgstr "Wo hältst du dich jetzt gerade auf?"
-#: ../../include/conversation.php:966
+#: ../../include/conversation.php:969
msgid "upload photo"
msgstr "Bild hochladen"
-#: ../../include/conversation.php:968
+#: ../../include/conversation.php:971
msgid "attach file"
msgstr "Datei anhängen"
-#: ../../include/conversation.php:970
+#: ../../include/conversation.php:973
msgid "web link"
msgstr "Weblink"
-#: ../../include/conversation.php:971
+#: ../../include/conversation.php:974
msgid "Insert video link"
msgstr "Video-Adresse einfügen"
-#: ../../include/conversation.php:972
+#: ../../include/conversation.php:975
msgid "video link"
msgstr "Video-Link"
-#: ../../include/conversation.php:973
+#: ../../include/conversation.php:976
msgid "Insert audio link"
msgstr "Audio-Adresse einfügen"
-#: ../../include/conversation.php:974
+#: ../../include/conversation.php:977
msgid "audio link"
msgstr "Audio-Link"
-#: ../../include/conversation.php:976
+#: ../../include/conversation.php:979
msgid "set location"
msgstr "Ort setzen"
-#: ../../include/conversation.php:978
+#: ../../include/conversation.php:981
msgid "clear location"
msgstr "Ort löschen"
-#: ../../include/conversation.php:985
+#: ../../include/conversation.php:988
msgid "permissions"
msgstr "Zugriffsrechte"
-#: ../../boot.php:505
+#: ../../boot.php:515
msgid "Delete this item?"
msgstr "Diesen Beitrag löschen?"
-#: ../../boot.php:508
+#: ../../boot.php:518
msgid "show fewer"
msgstr "weniger anzeigen"
-#: ../../boot.php:681
+#: ../../boot.php:691
#, php-format
msgid "Update %s failed. See error logs."
msgstr "Update %s fehlgeschlagen. Bitte Fehlerprotokoll überprüfen."
-#: ../../boot.php:683
+#: ../../boot.php:693
#, php-format
msgid "Update Error at %s"
msgstr "Updatefehler bei %s"
-#: ../../boot.php:783
+#: ../../boot.php:793
msgid "Create a New Account"
msgstr "Neuen Account erstellen"
-#: ../../boot.php:807
+#: ../../boot.php:817
msgid "Nickname or Email address: "
msgstr "Spitzname oder Email-Adresse: "
-#: ../../boot.php:808
+#: ../../boot.php:818
msgid "Password: "
msgstr "Passwort: "
-#: ../../boot.php:811
+#: ../../boot.php:821
msgid "Or login using OpenID: "
msgstr "Oder melde dich mit deiner OpenID an: "
-#: ../../boot.php:817
+#: ../../boot.php:827
msgid "Forgot your password?"
msgstr "Passwort vergessen?"
-#: ../../boot.php:984
+#: ../../boot.php:994
msgid "Edit profile"
msgstr "Profil bearbeiten"
-#: ../../boot.php:1044
+#: ../../boot.php:1054
msgid "Message"
msgstr "Nachricht"
-#: ../../boot.php:1160 ../../boot.php:1236
+#: ../../boot.php:1170 ../../boot.php:1246
msgid "g A l F d"
msgstr "l, d. F G \\U\\h\\r"
-#: ../../boot.php:1161 ../../boot.php:1237
+#: ../../boot.php:1171 ../../boot.php:1247
msgid "F d"
msgstr "d. F"
-#: ../../boot.php:1206 ../../boot.php:1277
+#: ../../boot.php:1216 ../../boot.php:1287
msgid "[today]"
msgstr "[heute]"
-#: ../../boot.php:1218
+#: ../../boot.php:1228
msgid "Birthday Reminders"
msgstr "Geburtstagserinnerungen"
-#: ../../boot.php:1219
+#: ../../boot.php:1229
msgid "Birthdays this week:"
msgstr "Geburtstage diese Woche:"
-#: ../../boot.php:1270
+#: ../../boot.php:1280
msgid "[No description]"
msgstr "[keine Beschreibung]"
-#: ../../boot.php:1288
+#: ../../boot.php:1298
msgid "Event Reminders"
msgstr "Veranstaltungserinnerungen"
-#: ../../boot.php:1289
+#: ../../boot.php:1299
msgid "Events this week:"
msgstr "Veranstaltungen diese Woche"
-#: ../../boot.php:1475
+#: ../../boot.php:1485
msgid "Status Messages and Posts"
msgstr "Statusnachrichten und Beiträge"
-#: ../../boot.php:1481
+#: ../../boot.php:1491
msgid "Profile Details"
msgstr "Profildetails"
-#: ../../boot.php:1496
+#: ../../boot.php:1506
msgid "Events and Calendar"
msgstr "Ereignisse und Kalender"
-#: ../../boot.php:1502
+#: ../../boot.php:1512
msgid "Only You Can See This"
msgstr "Nur Du Kannst Das Sehen"
diff --git a/view/de/strings.php b/view/de/strings.php
index a3ccab692..f6336ef68 100644
--- a/view/de/strings.php
+++ b/view/de/strings.php
@@ -751,8 +751,10 @@ $a->strings["Network timeout"] = "Netzwerk Wartezeit";
$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Der Wert ist in Sekunden. Setze 0 für unbegrenzt (nicht empfohlen).";
$a->strings["Delivery interval"] = "Zustellungsintervall";
$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl an Sekunden um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared-Hosts, 2-3 für VPS, 0-1 für große dedizierte Server.";
+$a->strings["Poll interval"] = "Abfrage Intervall";
+$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Verzögere Hintergrundprozesse um diese Anzahl an Sekunden um die Systemlast zu reduzieren. Bei 0 Sekunden wird das Auslieferungsintervall verwendet.";
$a->strings["Maximum Load Average"] = "Maximum Load Average";
-$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "";
+$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximale Systemlast bevor Verteil- und Empfangsprozesse verschoben werden - Standard 50";
$a->strings["Update has been marked successful"] = "Update wurde als erfolgreich markiert";
$a->strings["Executing %s failed. Check system logs."] = "Ausführung von %s schlug fehl. Systemprotokolle prüfen.";
$a->strings["Update %s was successfully applied."] = "Update %s war erfolgreich.";
@@ -831,6 +833,8 @@ $a->strings["No compatible communication protocols or feeds were discovered."] =
$a->strings["The profile address specified does not provide adequate information."] = "Die angegebene Profiladresse liefert unzureichende Informationen.";
$a->strings["An author or name was not found."] = "Es wurde kein Autor oder Name gefunden.";
$a->strings["No browser URL could be matched to this address."] = "Zu dieser Adresse konnte keine passende Browser URL gefunden werden.";
+$a->strings["Unable to match @-style Identity Address with a known protocol or email contact."] = "Konnte die @-Adresse mit keinem der bekannten Protokolle oder Email-Kontakte abgleichen.";
+$a->strings["Use mailto: in front of address to force email check."] = "Verwende mailto: vor der Email Adresse um eine Überprüfung der Email Adresse zu erzwingen.";
$a->strings["The profile address specified belongs to a network which has been disabled on this site."] = "Die Adresse dieses Profils gehört zu einem Netzwerk, mit dem die Kommunikation auf dieser Seite ausgeschaltet wurde.";
$a->strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Eingeschränktes Profil. Diese Person wird keine direkten/privaten Nachrichten von dir erhalten können.";
$a->strings["Unable to retrieve contact information."] = "Konnte die Kontaktinformationen nicht empfangen.";
@@ -972,8 +976,8 @@ $a->strings["Install Facebook connector for this account."] = "Facebook-Connecto
$a->strings["Remove Facebook connector"] = "Facebook-Connector entfernen";
$a->strings["Re-authenticate [This is necessary whenever your Facebook password is changed.]"] = "Neu authentifizieren [Das ist immer dann nötig, wenn Du Dein Facebook-Passwort geändert hast.]";
$a->strings["Post to Facebook by default"] = "Veröffentliche standardmäßig bei Facebook";
-$a->strings["Facebook friend linking has been disabled on this site. The following settings will have no effect."] = "";
-$a->strings["Facebook friend linking has been disabled on this site. If you disable it, you will be unable to re-enable it."] = "";
+$a->strings["Facebook friend linking has been disabled on this site. The following settings will have no effect."] = "Das verlinken von Facebook-Kontakten wurde auf dieser Seite deaktiviert. Die folgenden Einstellungen haben keinen Effekt.";
+$a->strings["Facebook friend linking has been disabled on this site. If you disable it, you will be unable to re-enable it."] = "Das verlinken von Facebook-Kontakten wurde auf dieser Seite deaktiviert. Wenn du es ausgeschaltet hast, kannst du es nicht wieder aktivieren.";
$a->strings["Link all your Facebook friends and conversations on this website"] = "All meine Facebook-Kontakte und -Konversationen hier auf diese Website importieren";
$a->strings["Facebook conversations consist of your <em>profile wall</em> and your friend <em>stream</em>."] = "Facebook-Konversationen bestehen aus deinen Beiträgen auf deiner<em>Pinnwand</em>, sowie den Beiträgen deiner Freunde <em>Stream</em>.";
$a->strings["On this website, your Facebook friend stream is only visible to you."] = "Hier auf dieser Webseite kannst nur du die Beiträge Deiner Facebook-Freunde (Stream) sehen.";
@@ -1255,6 +1259,8 @@ $a->strings["Posterous Post Settings"] = "Posterous Beitrags-Einstellungen";
$a->strings["Enable Posterous Post Plugin"] = "Posterous-Plugin aktivieren";
$a->strings["Posterous login"] = "Posterous-Anmeldename";
$a->strings["Posterous password"] = "Posterous-Passwort";
+$a->strings["Posterous site ID"] = "Posterous site ID";
+$a->strings["Posterous API token"] = "Posterous API token";
$a->strings["Post to Posterous by default"] = "Veröffentliche öffentliche Beiträge standardmäßig bei Posterous";
$a->strings["Theme settings"] = "Themen Einstellungen";
$a->strings["Set resize level for images in posts and comments (width and height)"] = "Wähle das Vergrößerungsmaß für Bilder in Beiträgen und Kommentaren (Höhe und Breite)";
@@ -1277,14 +1283,22 @@ $a->strings["Find Friends"] = "Freunde finden";
$a->strings["Local Directory"] = "Lokales Verzeichnis";
$a->strings["Similar Interests"] = "Ähnliche Interessen";
$a->strings["Invite Friends"] = "Freunde einladen";
-$a->strings["Earth View"] = "Earth View";
+$a->strings["Earth Layers"] = "Earth Layers";
+$a->strings["Set zoomfactor for Earth Layers"] = "Zoomfaktor der Earth Layer";
+$a->strings["Set longitude (X) for Earth Layers"] = "Longitude (X) der Earth Layer";
+$a->strings["Set latitude (Y) for Earth Layers"] = "Latitude (Y) der Earth Layer";
$a->strings["Help or @NewHere ?"] = "Hilfe oder @NewHere";
$a->strings["Connect Services"] = "Verbinde Dienste";
$a->strings["Last Tweets"] = "Neueste Tweets";
-$a->strings["Set twitter search term"] = "";
+$a->strings["Set twitter search term"] = "Twitter Suchbegriff";
+$a->strings["don't show"] = "nicht zeigen";
+$a->strings["show"] = "zeigen";
+$a->strings["Show/hide boxes at right-hand column:"] = "Rahmen auf der rechten Seite anzeigen/verbergen";
$a->strings["Set line-height for posts and comments"] = "Liniengröße für Beiträge und Kommantare festlegen";
$a->strings["Set resolution for middle column"] = "Auflösung für die Mittelspalte setzen";
$a->strings["Set color scheme"] = "Wähle Farbschema";
+$a->strings["Set zoomfactor for Earth Layer"] = "Zoomfaktor der Earth Layer";
+$a->strings["Last tweets"] = "Neueste Tweets";
$a->strings["Alignment"] = "Ausrichtung";
$a->strings["Left"] = "Links";
$a->strings["Center"] = "Mitte";
@@ -1514,8 +1528,6 @@ $a->strings["Image/photo"] = "Bild/Foto";
$a->strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS Informationen für den Datenbanken Server '%s' nicht ermitteln.";
$a->strings["[no subject]"] = "[kein Betreff]";
$a->strings["Visible to everybody"] = "Für jeden sichtbar";
-$a->strings["show"] = "zeigen";
-$a->strings["don't show"] = "nicht zeigen";
$a->strings["Friendica Notification"] = "Friendica-Benachrichtigung";
$a->strings["Thank You,"] = "Danke,";
$a->strings["%s Administrator"] = "der Administrator von %s";
diff --git a/view/eo/lostpass_eml.tpl b/view/eo/lostpass_eml.tpl
new file mode 100644
index 000000000..aad63b62a
--- /dev/null
+++ b/view/eo/lostpass_eml.tpl
@@ -0,0 +1,32 @@
+
+Kara $[username],
+ $[sitename] ricevis peton por rekomencigi vian pasvorton.
+Por konfirmi la peton, bonvolu klaki la sekvantan konfirmligilon
+aÅ­ alglui Äin en la adreskampo de via retumilo.
+
+Se vi NE petis tiun ÅanÄon, bonvolu NE KLAKU la
+sekvantan ligilon kaj ignoru aÅ­ forvisu ĉi-mesaÄon.
+
+Ni ne ÅanÄu vian pasvorton se ni ne povas kontroli ĉu estas vi
+kiu petis lala ÅanÄon.
+
+Sekvu ĉi tion ligilon por konfirmi vian identecon:
+
+$[reset_link]
+
+Poste, vi ricevos mesaÄon enhavonte la novan pasvorton.
+
+Vi eblas Åangi la pasvorton ĉe viaj kontdoagordoj paÄo post ensaluti.
+
+La akreditaĵoj estas:
+
+Retejo:»$[siteurl]
+Salutnomo:»$[email]
+
+
+
+
+Salutoj,
+ $[sitename] administranto
+
+ \ No newline at end of file
diff --git a/view/eo/messages.po b/view/eo/messages.po
index 593127339..390dea96c 100644
--- a/view/eo/messages.po
+++ b/view/eo/messages.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: http://bugs.friendica.com/\n"
-"POT-Creation-Date: 2012-05-03 17:20-0700\n"
-"PO-Revision-Date: 2012-05-04 09:50+0000\n"
+"POT-Creation-Date: 2012-05-10 10:00-0700\n"
+"PO-Revision-Date: 2012-05-11 22:39+0000\n"
"Last-Translator: Martin Schmitt <mas@scsy.de>\n"
"Language-Team: Esperanto (http://www.transifex.net/projects/p/friendica/language/eo/)\n"
"MIME-Version: 1.0\n"
@@ -50,15 +50,14 @@ msgstr "Äœisdatigo de kontakto malsukcesis."
#: ../../mod/register.php:38 ../../mod/regmod.php:116 ../../mod/item.php:124
#: ../../mod/item.php:140 ../../mod/profile_photo.php:19
#: ../../mod/profile_photo.php:139 ../../mod/profile_photo.php:150
-#: ../../mod/profile_photo.php:163 ../../mod/message.php:38
-#: ../../mod/message.php:90 ../../mod/allfriends.php:9
+#: ../../mod/profile_photo.php:163 ../../mod/message.php:44
+#: ../../mod/message.php:96 ../../mod/allfriends.php:9
#: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53
-#: ../../mod/follow.php:8 ../../mod/common.php:9 ../../mod/display.php:138
-#: ../../mod/profiles.php:7 ../../mod/profiles.php:365
-#: ../../mod/delegate.php:6 ../../mod/suggest.php:28 ../../mod/invite.php:13
-#: ../../mod/invite.php:81 ../../mod/dfrn_confirm.php:53
-#: ../../addon/facebook/facebook.php:485 ../../include/items.php:3187
-#: ../../index.php:306
+#: ../../mod/follow.php:8 ../../mod/display.php:138 ../../mod/profiles.php:7
+#: ../../mod/profiles.php:365 ../../mod/delegate.php:6
+#: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81
+#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:495
+#: ../../include/items.php:3202 ../../index.php:306
msgid "Permission denied."
msgstr "Malpermesita."
@@ -88,7 +87,7 @@ msgid "Return to contact editor"
msgstr "Reen al kontakta redaktilo"
#: ../../mod/crepair.php:148 ../../mod/settings.php:541
-#: ../../mod/settings.php:567 ../../mod/admin.php:638 ../../mod/admin.php:647
+#: ../../mod/settings.php:567 ../../mod/admin.php:643 ../../mod/admin.php:652
msgid "Name"
msgstr "Nomo"
@@ -132,10 +131,10 @@ msgstr "Nova bildo el tiu adreso"
#: ../../mod/localtime.php:45 ../../mod/contacts.php:322
#: ../../mod/settings.php:539 ../../mod/settings.php:685
#: ../../mod/settings.php:746 ../../mod/settings.php:940
-#: ../../mod/manage.php:109 ../../mod/group.php:85 ../../mod/admin.php:400
-#: ../../mod/admin.php:635 ../../mod/admin.php:771 ../../mod/admin.php:970
-#: ../../mod/admin.php:1057 ../../mod/profiles.php:534
-#: ../../mod/invite.php:119 ../../addon/facebook/facebook.php:575
+#: ../../mod/manage.php:109 ../../mod/group.php:85 ../../mod/admin.php:404
+#: ../../mod/admin.php:640 ../../mod/admin.php:776 ../../mod/admin.php:975
+#: ../../mod/admin.php:1062 ../../mod/profiles.php:534
+#: ../../mod/invite.php:119 ../../addon/facebook/facebook.php:597
#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93
#: ../../addon/nsfw/nsfw.php:57 ../../addon/planets/planets.php:158
#: ../../addon/uhremotestorage/uhremotestorage.php:89
@@ -159,9 +158,10 @@ msgstr "Nova bildo el tiu adreso"
#: ../../addon/piwik/piwik.php:89 ../../addon/twitter/twitter.php:180
#: ../../addon/twitter/twitter.php:209 ../../addon/twitter/twitter.php:375
#: ../../addon/irc/irc.php:55 ../../addon/blogger/blogger.php:102
-#: ../../addon/posterous/posterous.php:90
-#: ../../view/theme/cleanzero/config.php:71
-#: ../../view/theme/diabook/config.php:91
+#: ../../addon/posterous/posterous.php:103
+#: ../../view/theme/cleanzero/config.php:80
+#: ../../view/theme/diabook/theme.php:685
+#: ../../view/theme/diabook/config.php:190
#: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70
#: ../../include/conversation.php:555
msgid "Submit"
@@ -217,12 +217,12 @@ msgstr "l, F j"
msgid "Edit event"
msgstr "Redakti okazon"
-#: ../../mod/events.php:300 ../../include/text.php:1053
+#: ../../mod/events.php:300 ../../include/text.php:1054
msgid "link to source"
-msgstr "ligi al fonto"
+msgstr "ligilo al fonto"
-#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:69
-#: ../../include/nav.php:52 ../../boot.php:1493
+#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:127
+#: ../../include/nav.php:52 ../../boot.php:1499
msgid "Events"
msgstr "Okazoj"
@@ -272,7 +272,7 @@ msgid "Description:"
msgstr "Priskribo"
#: ../../mod/events.php:423 ../../include/event.php:37
-#: ../../include/bb2diaspora.php:260 ../../boot.php:1092
+#: ../../include/bb2diaspora.php:260 ../../boot.php:1098
msgid "Location:"
msgstr "Loko:"
@@ -347,14 +347,14 @@ msgstr "Jes"
msgid "No"
msgstr "Ne"
-#: ../../mod/photos.php:43 ../../boot.php:1487
+#: ../../mod/photos.php:43 ../../boot.php:1493
msgid "Photo Albums"
msgstr "Bildalbumoj"
#: ../../mod/photos.php:51 ../../mod/photos.php:151 ../../mod/photos.php:879
#: ../../mod/photos.php:950 ../../mod/photos.php:965 ../../mod/photos.php:1382
#: ../../mod/photos.php:1394 ../../addon/communityhome/communityhome.php:110
-#: ../../view/theme/diabook/theme.php:436
+#: ../../view/theme/diabook/theme.php:526
msgid "Contact Photos"
msgstr "Kontaktbildoj"
@@ -377,7 +377,7 @@ msgstr "Kontaktoj informoj ne disponeblas"
#: ../../mod/profile_photo.php:74 ../../mod/profile_photo.php:174
#: ../../mod/profile_photo.php:252 ../../mod/profile_photo.php:261
#: ../../addon/communityhome/communityhome.php:111
-#: ../../view/theme/diabook/theme.php:437
+#: ../../view/theme/diabook/theme.php:527
msgid "Profile Photos"
msgstr "Profilbildoj"
@@ -399,7 +399,7 @@ msgstr "estas markita en"
#: ../../mod/photos.php:528 ../../mod/like.php:127 ../../mod/tagger.php:70
#: ../../addon/communityhome/communityhome.php:163
-#: ../../view/theme/diabook/theme.php:408 ../../include/text.php:1304
+#: ../../view/theme/diabook/theme.php:498 ../../include/text.php:1305
#: ../../include/diaspora.php:1654 ../../include/conversation.php:53
#: ../../include/conversation.php:126
msgid "photo"
@@ -535,8 +535,8 @@ msgid "Share"
msgstr "Kunhavigi"
#: ../../mod/photos.php:1214 ../../mod/editpost.php:104
-#: ../../mod/wallmessage.php:145 ../../mod/message.php:188
-#: ../../mod/message.php:380 ../../include/conversation.php:361
+#: ../../mod/wallmessage.php:145 ../../mod/message.php:213
+#: ../../mod/message.php:405 ../../include/conversation.php:361
#: ../../include/conversation.php:706 ../../include/conversation.php:983
msgid "Please wait"
msgstr "Bonvolu atendi"
@@ -548,7 +548,7 @@ msgstr "Tiu estas vi"
#: ../../mod/photos.php:1232 ../../mod/photos.php:1272
#: ../../mod/photos.php:1303 ../../include/conversation.php:554
-#: ../../boot.php:506
+#: ../../boot.php:512
msgid "Comment"
msgstr "Komenti"
@@ -558,7 +558,7 @@ msgid "Preview"
msgstr "AntaÅ­rigardi"
#: ../../mod/photos.php:1331 ../../mod/settings.php:602
-#: ../../mod/settings.php:683 ../../mod/group.php:168 ../../mod/admin.php:642
+#: ../../mod/settings.php:683 ../../mod/group.php:168 ../../mod/admin.php:647
#: ../../include/conversation.php:318 ../../include/conversation.php:584
msgid "Delete"
msgstr "ForviÅi"
@@ -575,7 +575,7 @@ msgstr "Ì‚Ä´usaj bildoj"
msgid "Not available."
msgstr "Ne disponebla."
-#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:71
+#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:129
#: ../../include/nav.php:101
msgid "Community"
msgstr "Komunumo"
@@ -634,7 +634,7 @@ msgid "Edit"
msgstr "Redakti"
#: ../../mod/editpost.php:96 ../../mod/wallmessage.php:143
-#: ../../mod/message.php:186 ../../mod/message.php:378
+#: ../../mod/message.php:211 ../../mod/message.php:403
#: ../../include/conversation.php:965
msgid "Upload photo"
msgstr "AlÅuti bildon"
@@ -644,7 +644,7 @@ msgid "Attach file"
msgstr "Kunligi dosieron"
#: ../../mod/editpost.php:98 ../../mod/wallmessage.php:144
-#: ../../mod/message.php:187 ../../mod/message.php:379
+#: ../../mod/message.php:212 ../../mod/message.php:404
#: ../../include/conversation.php:969
msgid "Insert web link"
msgstr "Enmeti retan adreson"
@@ -770,7 +770,7 @@ msgstr "Åœajnas kvazaÅ­ vi jam amikiÄis kun %s."
msgid "Invalid profile URL."
msgstr "Nevalida adreso de profilo."
-#: ../../mod/dfrn_request.php:476 ../../mod/follow.php:20
+#: ../../mod/dfrn_request.php:476 ../../mod/follow.php:23
msgid "Disallowed profile URL."
msgstr "Malpermesita adreso de profilo."
@@ -806,7 +806,7 @@ msgstr "Bonvolu konfirmi vian prezenton / kontaktpeton al %s."
msgid "Confirm"
msgstr "Konfirmi."
-#: ../../mod/dfrn_request.php:688 ../../include/items.php:2707
+#: ../../mod/dfrn_request.php:688 ../../include/items.php:2717
msgid "[Name Withheld]"
msgstr "[KaÅita nomo]"
@@ -1170,7 +1170,7 @@ msgid "is interested in:"
msgstr "interesiÄas pri:"
#: ../../mod/match.php:58 ../../mod/suggest.php:59
-#: ../../include/contact_widgets.php:9 ../../boot.php:1036
+#: ../../include/contact_widgets.php:9 ../../boot.php:1042
msgid "Connect"
msgstr "Konekti"
@@ -1218,7 +1218,7 @@ msgstr "Reto"
msgid "Personal"
msgstr "Propra"
-#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:65
+#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:123
#: ../../include/nav.php:77 ../../include/nav.php:115
msgid "Home"
msgstr "Hejmo"
@@ -1227,7 +1227,7 @@ msgstr "Hejmo"
msgid "Introductions"
msgstr "Prezentoj"
-#: ../../mod/notifications.php:100 ../../mod/message.php:102
+#: ../../mod/notifications.php:100 ../../mod/message.php:104
#: ../../include/nav.php:128
msgid "Messages"
msgstr "MesaÄoj"
@@ -1267,7 +1267,7 @@ msgid "if applicable"
msgstr "se aplikebla"
#: ../../mod/notifications.php:157 ../../mod/notifications.php:204
-#: ../../mod/admin.php:640
+#: ../../mod/admin.php:645
msgid "Approve"
msgstr "Aprobi"
@@ -1456,7 +1456,7 @@ msgstr "Sugesti amikojn"
msgid "Network type: %s"
msgstr "Reta tipo: %s"
-#: ../../mod/contacts.php:280
+#: ../../mod/contacts.php:280 ../../include/contact_widgets.php:183
#, php-format
msgid "%d contact in common"
msgid_plural "%d contacts in common"
@@ -1468,12 +1468,12 @@ msgid "View all contacts"
msgstr "Vidi ĉiujn kontaktojn"
#: ../../mod/contacts.php:290 ../../mod/contacts.php:347
-#: ../../mod/admin.php:644
+#: ../../mod/admin.php:649
msgid "Unblock"
msgstr "Malbloki"
#: ../../mod/contacts.php:290 ../../mod/contacts.php:347
-#: ../../mod/admin.php:643
+#: ../../mod/admin.php:648
msgid "Block"
msgstr "Bloki"
@@ -1566,7 +1566,7 @@ msgstr "Plej ĵusa Äisdatigo:"
msgid "Update public posts"
msgstr "Äœisdatigi publikajn afiÅojn"
-#: ../../mod/contacts.php:344 ../../mod/admin.php:1115
+#: ../../mod/contacts.php:344 ../../mod/admin.php:1120
msgid "Update now"
msgstr "Äœisdatigi nun"
@@ -1659,7 +1659,7 @@ msgstr "vi estas admiranto de"
msgid "Edit contact"
msgstr "Redakti kontakton"
-#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:67
+#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:125
#: ../../include/nav.php:139
msgid "Contacts"
msgstr "Kontaktoj"
@@ -1693,10 +1693,10 @@ msgstr "Pasvorta riparado petita je %s"
#: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107
#: ../../mod/register.php:388 ../../mod/register.php:442
#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:742
-#: ../../addon/facebook/facebook.php:658
-#: ../../addon/facebook/facebook.php:1148
-#: ../../addon/testdrive/testdrive.php:58 ../../include/items.php:2716
-#: ../../boot.php:686
+#: ../../addon/facebook/facebook.php:680
+#: ../../addon/facebook/facebook.php:1170
+#: ../../addon/testdrive/testdrive.php:58 ../../include/items.php:2726
+#: ../../boot.php:692
msgid "Administrator"
msgstr "Administranto"
@@ -1706,7 +1706,7 @@ msgid ""
"Password reset failed."
msgstr "Ne povis konfirmi la peton. (Eble vi sendis Äin antaÅ­.) Pasvorta riparado malsukcesis."
-#: ../../mod/lostpass.php:83 ../../boot.php:818
+#: ../../mod/lostpass.php:83 ../../boot.php:824
msgid "Password Reset"
msgstr "Pasvorta riparado"
@@ -1778,8 +1778,9 @@ msgstr "Eksporto"
msgid "Remove account"
msgstr "Forigi konton"
-#: ../../mod/settings.php:88 ../../mod/admin.php:730 ../../mod/admin.php:935
-#: ../../addon/mathjax/mathjax.php:36 ../../include/nav.php:137
+#: ../../mod/settings.php:88 ../../mod/admin.php:735 ../../mod/admin.php:940
+#: ../../addon/mathjax/mathjax.php:36 ../../view/theme/diabook/theme.php:571
+#: ../../view/theme/diabook/theme.php:701 ../../include/nav.php:137
msgid "Settings"
msgstr "Agordoj"
@@ -1831,7 +1832,7 @@ msgstr " RepoÅtadreso ne validas."
msgid " Cannot change to that email."
msgstr " Ne povas ÅanÄi al tio retpoÅtadreso."
-#: ../../mod/settings.php:468 ../../addon/facebook/facebook.php:470
+#: ../../mod/settings.php:468 ../../addon/facebook/facebook.php:480
#: ../../addon/impressum/impressum.php:77
#: ../../addon/openstreetmap/openstreetmap.php:80
#: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105
@@ -2005,7 +2006,7 @@ msgstr "Maksimume 100 eroj"
msgid "Don't show emoticons"
msgstr "Ne montru ridetulojn"
-#: ../../mod/settings.php:821 ../../mod/admin.php:180 ../../mod/admin.php:616
+#: ../../mod/settings.php:821 ../../mod/admin.php:180 ../../mod/admin.php:621
msgid "Normal Account"
msgstr "Normala konto"
@@ -2013,7 +2014,7 @@ msgstr "Normala konto"
msgid "This account is a normal personal profile"
msgstr "Tiu konto estas normala persona profilo"
-#: ../../mod/settings.php:825 ../../mod/admin.php:181 ../../mod/admin.php:617
+#: ../../mod/settings.php:825 ../../mod/admin.php:181 ../../mod/admin.php:622
msgid "Soapbox Account"
msgstr "Soapbox Konto"
@@ -2021,7 +2022,7 @@ msgstr "Soapbox Konto"
msgid "Automatically approve all connection/friend requests as read-only fans"
msgstr "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel nurlegaj admirantoj"
-#: ../../mod/settings.php:829 ../../mod/admin.php:182 ../../mod/admin.php:618
+#: ../../mod/settings.php:829 ../../mod/admin.php:182 ../../mod/admin.php:623
msgid "Community/Celebrity Account"
msgstr "Komunuma/eminentula Konto"
@@ -2030,7 +2031,7 @@ msgid ""
"Automatically approve all connection/friend requests as read-write fans"
msgstr "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel admirantoj kapable legi kaj skribi"
-#: ../../mod/settings.php:833 ../../mod/admin.php:183 ../../mod/admin.php:619
+#: ../../mod/settings.php:833 ../../mod/admin.php:183 ../../mod/admin.php:624
msgid "Automatic Friend Account"
msgstr "AÅ­tomata Amika Konto"
@@ -2356,12 +2357,12 @@ msgstr "La privateco de privataj mesaÄoj al ĉi tiu persono ne ĉiam estas gara
msgid "Invalid contact."
msgstr "Nevalida kontakto."
-#: ../../mod/notes.php:44 ../../boot.php:1499
+#: ../../mod/notes.php:44 ../../boot.php:1505
msgid "Personal Notes"
msgstr "Personaj Notoj"
#: ../../mod/notes.php:63 ../../mod/filer.php:30
-#: ../../addon/facebook/facebook.php:726
+#: ../../addon/facebook/facebook.php:748
#: ../../addon/privacy_image_cache/privacy_image_cache.php:147
#: ../../include/text.php:652
msgid "Save"
@@ -2372,7 +2373,7 @@ msgstr "Konservi"
msgid "Number of daily wall messages for %s exceeded. Message failed."
msgstr "Number of daily wall messages for %s exceeded. MessaÄo malsukcesis."
-#: ../../mod/wallmessage.php:56 ../../mod/message.php:59
+#: ../../mod/wallmessage.php:56 ../../mod/message.php:65
msgid "No recipient selected."
msgstr "Neniom da ricevontoj."
@@ -2380,15 +2381,15 @@ msgstr "Neniom da ricevontoj."
msgid "Unable to check your home location."
msgstr "Ne eblas kontroli vian hejmlokon."
-#: ../../mod/wallmessage.php:62 ../../mod/message.php:66
+#: ../../mod/wallmessage.php:62 ../../mod/message.php:72
msgid "Message could not be sent."
msgstr "Ne povas sendi la mesaÄon."
-#: ../../mod/wallmessage.php:65 ../../mod/message.php:69
+#: ../../mod/wallmessage.php:65 ../../mod/message.php:75
msgid "Message collection failure."
msgstr "Malsukcese provis kolekti mesaÄojn."
-#: ../../mod/wallmessage.php:68 ../../mod/message.php:72
+#: ../../mod/wallmessage.php:68 ../../mod/message.php:78
msgid "Message sent."
msgstr "MesaÄo estas sendita."
@@ -2396,12 +2397,12 @@ msgstr "MesaÄo estas sendita."
msgid "No recipient."
msgstr "Neniom da ricevontoj."
-#: ../../mod/wallmessage.php:124 ../../mod/message.php:169
+#: ../../mod/wallmessage.php:124 ../../mod/message.php:171
#: ../../include/conversation.php:918
msgid "Please enter a link URL:"
msgstr "Bonvolu entajpu adreson de ligilo:"
-#: ../../mod/wallmessage.php:131 ../../mod/message.php:177
+#: ../../mod/wallmessage.php:131 ../../mod/message.php:199
msgid "Send Private Message"
msgstr "Sendi Privatan MesaÄon"
@@ -2412,18 +2413,18 @@ msgid ""
"your site allow private mail from unknown senders."
msgstr "Se vi deziras ke %s respondu, bonvolu kontroli ke la privatecaj agordoj je via retejo permesas privatajn mesaÄojn de nekonataj sendantoj."
-#: ../../mod/wallmessage.php:133 ../../mod/message.php:178
-#: ../../mod/message.php:370
+#: ../../mod/wallmessage.php:133 ../../mod/message.php:200
+#: ../../mod/message.php:395
msgid "To:"
msgstr "Al:"
-#: ../../mod/wallmessage.php:134 ../../mod/message.php:179
-#: ../../mod/message.php:371
+#: ../../mod/wallmessage.php:134 ../../mod/message.php:204
+#: ../../mod/message.php:396
msgid "Subject:"
msgstr "Temo:"
-#: ../../mod/wallmessage.php:140 ../../mod/message.php:183
-#: ../../mod/message.php:374 ../../mod/invite.php:113
+#: ../../mod/wallmessage.php:140 ../../mod/message.php:208
+#: ../../mod/message.php:399 ../../mod/invite.php:113
msgid "Your message:"
msgstr "Via mesaÄo:"
@@ -2605,9 +2606,9 @@ msgstr "Nevaliada profila identigilo."
msgid "Profile Visibility Editor"
msgstr "Redaktilo por profila videbleco."
-#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:66
+#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:124
#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:74
-#: ../../include/nav.php:50 ../../boot.php:1478
+#: ../../include/nav.php:50 ../../boot.php:1484
msgid "Profile"
msgstr "Profilo"
@@ -2756,7 +2757,7 @@ msgstr "MembriÄi ĉi tie nur eblas laÅ­ invito."
msgid "Your invitation ID: "
msgstr "Via invita idento: "
-#: ../../mod/register.php:553 ../../mod/admin.php:401
+#: ../../mod/register.php:553 ../../mod/admin.php:405
msgid "Registration"
msgstr "Registrado"
@@ -2779,7 +2780,7 @@ msgstr "Elektu kaÅnomon por la profilo. Tiu bezonas komenci kun teksta litero.
msgid "Choose a nickname: "
msgstr "Elektu kaÅnomon: "
-#: ../../mod/register.php:567 ../../include/nav.php:81 ../../boot.php:784
+#: ../../mod/register.php:567 ../../include/nav.php:81 ../../boot.php:790
msgid "Register"
msgstr "Registri"
@@ -2788,19 +2789,19 @@ msgid "People Search"
msgstr "Serĉi Membrojn"
#: ../../mod/like.php:127 ../../mod/tagger.php:70
-#: ../../addon/facebook/facebook.php:1542
+#: ../../addon/facebook/facebook.php:1564
#: ../../addon/communityhome/communityhome.php:158
#: ../../addon/communityhome/communityhome.php:167
-#: ../../view/theme/diabook/theme.php:403
-#: ../../view/theme/diabook/theme.php:412 ../../include/diaspora.php:1654
+#: ../../view/theme/diabook/theme.php:493
+#: ../../view/theme/diabook/theme.php:502 ../../include/diaspora.php:1654
#: ../../include/conversation.php:48 ../../include/conversation.php:57
#: ../../include/conversation.php:121 ../../include/conversation.php:130
msgid "status"
msgstr "staton"
-#: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1546
+#: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1568
#: ../../addon/communityhome/communityhome.php:172
-#: ../../view/theme/diabook/theme.php:417 ../../include/diaspora.php:1670
+#: ../../view/theme/diabook/theme.php:507 ../../include/diaspora.php:1670
#: ../../include/conversation.php:65
#, php-format
msgid "%1$s likes %2$s's %3$s"
@@ -2812,8 +2813,8 @@ msgid "%1$s doesn't like %2$s's %3$s"
msgstr "%1$s malÅatas la %3$s de %2$s"
#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:156
-#: ../../mod/admin.php:679 ../../mod/admin.php:878 ../../mod/display.php:37
-#: ../../mod/display.php:142 ../../include/items.php:3099
+#: ../../mod/admin.php:684 ../../mod/admin.php:883 ../../mod/display.php:37
+#: ../../mod/display.php:142 ../../include/items.php:3084
msgid "Item not found."
msgstr "Elemento ne estas trovita."
@@ -2821,8 +2822,8 @@ msgstr "Elemento ne estas trovita."
msgid "Access denied."
msgstr "Atingo nepermesita."
-#: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:68
-#: ../../include/nav.php:51 ../../boot.php:1484
+#: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:126
+#: ../../include/nav.php:51 ../../boot.php:1490
msgid "Photos"
msgstr "Bildoj"
@@ -2963,71 +2964,71 @@ msgstr "Tio tute forigos vian konton. Kiam farita, la konto ne estas restaÅ­rebl
msgid "Please enter your password for verification:"
msgstr "Bonvolu entajpi vian pasvorton por kontrolado:"
-#: ../../mod/message.php:22 ../../include/nav.php:131
+#: ../../mod/message.php:9 ../../include/nav.php:131
msgid "New Message"
msgstr "Nova MesaÄo"
-#: ../../mod/message.php:63
+#: ../../mod/message.php:69
msgid "Unable to locate contact information."
msgstr "Ne eblas trovi kontaktajn informojn."
-#: ../../mod/message.php:117
+#: ../../mod/message.php:119
msgid "Message deleted."
msgstr "MesaÄo estas forviÅita."
-#: ../../mod/message.php:147
+#: ../../mod/message.php:149
msgid "Conversation removed."
msgstr "Dialogo estas forviÅita."
-#: ../../mod/message.php:219
+#: ../../mod/message.php:244
msgid "No messages."
msgstr "Neniom da mesaÄoj."
-#: ../../mod/message.php:226
+#: ../../mod/message.php:251
#, php-format
msgid "Unknown sender - %s"
msgstr "Nekonata sendanto - %s"
-#: ../../mod/message.php:229
+#: ../../mod/message.php:254
#, php-format
msgid "You and %s"
msgstr "Vi kaj %s"
-#: ../../mod/message.php:232
+#: ../../mod/message.php:257
#, php-format
msgid "%s and You"
msgstr "%s kaj vi"
-#: ../../mod/message.php:242 ../../mod/message.php:363
+#: ../../mod/message.php:267 ../../mod/message.php:388
msgid "Delete conversation"
msgstr "ForviÅi dialogon"
-#: ../../mod/message.php:245
+#: ../../mod/message.php:270
msgid "D, d M Y - g:i A"
msgstr "D, d M Y - g:i A"
-#: ../../mod/message.php:247
+#: ../../mod/message.php:272
#, php-format
msgid "%d message"
msgid_plural "%d messages"
msgstr[0] "%d mesaÄo"
msgstr[1] "%d mesaÄoj"
-#: ../../mod/message.php:282
+#: ../../mod/message.php:307
msgid "Message not available."
msgstr "MesaÄo nedisponebla."
-#: ../../mod/message.php:347
+#: ../../mod/message.php:372
msgid "Delete message"
msgstr "ForviÅu mesaÄon"
-#: ../../mod/message.php:365
+#: ../../mod/message.php:390
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr "Sekura komunikado ne disponeblas. Vi <strong>eble</strong> povus respondi sur la profilpaÄo de la sendanto."
-#: ../../mod/message.php:369
+#: ../../mod/message.php:394
msgid "Send Reply"
msgstr "Respondi"
@@ -3044,19 +3045,19 @@ msgstr "Neniom da amiko al montri."
msgid "Theme settings updated."
msgstr "Gisdatigis agordojn pri etosoj."
-#: ../../mod/admin.php:96 ../../mod/admin.php:399
+#: ../../mod/admin.php:96 ../../mod/admin.php:403
msgid "Site"
msgstr "Retejo"
-#: ../../mod/admin.php:97 ../../mod/admin.php:634 ../../mod/admin.php:646
+#: ../../mod/admin.php:97 ../../mod/admin.php:639 ../../mod/admin.php:651
msgid "Users"
msgstr "Uzantoj"
-#: ../../mod/admin.php:98 ../../mod/admin.php:728 ../../mod/admin.php:770
+#: ../../mod/admin.php:98 ../../mod/admin.php:733 ../../mod/admin.php:775
msgid "Plugins"
msgstr "Kromprogramoj"
-#: ../../mod/admin.php:99 ../../mod/admin.php:933 ../../mod/admin.php:969
+#: ../../mod/admin.php:99 ../../mod/admin.php:938 ../../mod/admin.php:974
msgid "Themes"
msgstr "Etosoj"
@@ -3068,7 +3069,7 @@ msgstr "DB Äisdatigoj"
msgid "Software Update"
msgstr "Friendica Äœisdatigoj"
-#: ../../mod/admin.php:115 ../../mod/admin.php:1056
+#: ../../mod/admin.php:115 ../../mod/admin.php:1061
msgid "Logs"
msgstr "Protokoloj"
@@ -3076,9 +3077,9 @@ msgstr "Protokoloj"
msgid "User registrations waiting for confirmation"
msgstr "Uzantaj registradoj atendante konfirmon"
-#: ../../mod/admin.php:195 ../../mod/admin.php:398 ../../mod/admin.php:633
-#: ../../mod/admin.php:727 ../../mod/admin.php:769 ../../mod/admin.php:932
-#: ../../mod/admin.php:968 ../../mod/admin.php:1055
+#: ../../mod/admin.php:195 ../../mod/admin.php:402 ../../mod/admin.php:638
+#: ../../mod/admin.php:732 ../../mod/admin.php:774 ../../mod/admin.php:937
+#: ../../mod/admin.php:973 ../../mod/admin.php:1060
msgid "Administration"
msgstr "Administrado"
@@ -3102,487 +3103,507 @@ msgstr "Versio"
msgid "Active plugins"
msgstr "Åœaltitaj kromprogramoj"
-#: ../../mod/admin.php:337
+#: ../../mod/admin.php:341
msgid "Site settings updated."
msgstr "Äœisdatigis retejaj agordoj."
-#: ../../mod/admin.php:385
+#: ../../mod/admin.php:389
msgid "Closed"
msgstr "Ferma"
-#: ../../mod/admin.php:386
+#: ../../mod/admin.php:390
msgid "Requires approval"
msgstr "Bezonas aprobon"
-#: ../../mod/admin.php:387
+#: ../../mod/admin.php:391
msgid "Open"
msgstr "Malferma"
-#: ../../mod/admin.php:391
+#: ../../mod/admin.php:395
msgid "No SSL policy, links will track page SSL state"
msgstr "Sen SSL strategio. Ligiloj sekvos la SSL staton de la paÄo."
-#: ../../mod/admin.php:392
+#: ../../mod/admin.php:396
msgid "Force all links to use SSL"
msgstr "Devigi ke ĉiuj ligiloj uzu SSL."
-#: ../../mod/admin.php:393
+#: ../../mod/admin.php:397
msgid "Self-signed certificate, use SSL for local links only (discouraged)"
msgstr "Memsubskribita atestilo, nur uzu SSL por lokaj ligiloj (malkuraÄigata)"
-#: ../../mod/admin.php:402
+#: ../../mod/admin.php:406
msgid "File upload"
msgstr "AlÅuto"
-#: ../../mod/admin.php:403
+#: ../../mod/admin.php:407
msgid "Policies"
msgstr "Politiko"
-#: ../../mod/admin.php:404
+#: ../../mod/admin.php:408
msgid "Advanced"
msgstr "Altnivela"
-#: ../../mod/admin.php:408 ../../addon/statusnet/statusnet.php:544
+#: ../../mod/admin.php:412 ../../addon/statusnet/statusnet.php:544
msgid "Site name"
msgstr "Nomo de retejo"
-#: ../../mod/admin.php:409
+#: ../../mod/admin.php:413
msgid "Banner/Logo"
msgstr "Emblemo"
-#: ../../mod/admin.php:410
+#: ../../mod/admin.php:414
msgid "System language"
msgstr "Sistema lingvo"
-#: ../../mod/admin.php:411
+#: ../../mod/admin.php:415
msgid "System theme"
msgstr "Sistema etoso"
-#: ../../mod/admin.php:411
+#: ../../mod/admin.php:415
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr "DefaÅ­lta sistema etoso - transpasebla de uzantprofiloj - <a href='#' id='cnftheme'>redakti agordoj pri etosoj</a>"
-#: ../../mod/admin.php:412
+#: ../../mod/admin.php:416
msgid "SSL link policy"
msgstr "Strategio por SSL ligiloj"
-#: ../../mod/admin.php:412
+#: ../../mod/admin.php:416
msgid "Determines whether generated links should be forced to use SSL"
msgstr "Difinas ĉu generotaj ligiloj devige uzu SSL."
-#: ../../mod/admin.php:413
+#: ../../mod/admin.php:417
msgid "Maximum image size"
msgstr "Maksimuma bildgrando"
-#: ../../mod/admin.php:413
+#: ../../mod/admin.php:417
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr "Maksimuma grando en bajtoj por alÅutotaj bildoj. DefaÅ­lte 0, kio signifas neniu limito."
-#: ../../mod/admin.php:415
+#: ../../mod/admin.php:419
msgid "Register policy"
msgstr "Interkonsento pri registrado"
-#: ../../mod/admin.php:416
+#: ../../mod/admin.php:420
msgid "Register text"
msgstr "Interkonsento teksto"
-#: ../../mod/admin.php:416
+#: ../../mod/admin.php:420
msgid "Will be displayed prominently on the registration page."
msgstr "Tio estos eminente montrata en la registro paÄo."
-#: ../../mod/admin.php:417
+#: ../../mod/admin.php:421
msgid "Accounts abandoned after x days"
msgstr "Kontoj forlasitaj post x tagoj"
-#: ../../mod/admin.php:417
+#: ../../mod/admin.php:421
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr "Mi ne malÅparu energion por enketi aliajn retejojn pri forlasitaj kontoj. Entajpu 0 por ne uzi templimo."
-#: ../../mod/admin.php:418
+#: ../../mod/admin.php:422
msgid "Allowed friend domains"
msgstr "Permesitaj amikaj domainoj"
-#: ../../mod/admin.php:418
+#: ../../mod/admin.php:422
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr "Perkome disigita listo da domajnoj kiuj rajtas konstrui amikecojn kun ĉi tiu retejo. Ĵokeroj eblas. Malplena por rajtigi ĉiujn ajn domajnojn."
-#: ../../mod/admin.php:419
+#: ../../mod/admin.php:423
msgid "Allowed email domains"
msgstr "Permesitaj retpoÅtaj domajnoj"
-#: ../../mod/admin.php:419
+#: ../../mod/admin.php:423
msgid ""
"Comma separated list of domains which are allowed in email addresses for "
"registrations to this site. Wildcards are accepted. Empty to allow any "
"domains"
msgstr "Perkome disigita listo da domajnoj kiuj uzeblas kiel retpoÅtaj adresoj en novaj registradoj. Ä´okeroj eblas. Malplena por rajtigi ĉiujn ajn domajnojn."
-#: ../../mod/admin.php:420
+#: ../../mod/admin.php:424
msgid "Block public"
msgstr "Bloki publike"
-#: ../../mod/admin.php:420
+#: ../../mod/admin.php:424
msgid ""
"Check to block public access to all otherwise public personal pages on this "
"site unless you are currently logged in."
msgstr "Elektu por bloki publikan atingon al ĉiuj alie publikajn paÄojn en ĉi tiu retejo kiam vi ne estas ensalutita."
-#: ../../mod/admin.php:421
+#: ../../mod/admin.php:425
msgid "Force publish"
msgstr "Devigi publikigon"
-#: ../../mod/admin.php:421
+#: ../../mod/admin.php:425
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr "Elektu por devigi la registradon en la loka katalogo al ĉiuj profiloj en ĉi tiu retejo."
-#: ../../mod/admin.php:422
+#: ../../mod/admin.php:426
msgid "Global directory update URL"
msgstr "Äœenerala adreso por Äisdatigi la katalogon"
-#: ../../mod/admin.php:422
+#: ../../mod/admin.php:426
msgid ""
"URL to update the global directory. If this is not set, the global directory"
" is completely unavailable to the application."
msgstr "URL adreso por Äisdatigi la tutmondan katalogon. Se ne agordita, la tutmonda katatolge tute ne disponeblas al la programo."
-#: ../../mod/admin.php:424
+#: ../../mod/admin.php:428
msgid "Block multiple registrations"
msgstr "Bloki pluroblajn registradojn."
-#: ../../mod/admin.php:424
+#: ../../mod/admin.php:428
msgid "Disallow users to register additional accounts for use as pages."
msgstr "Malpermesi al uzantoj la permeson por registri pluajn kontojn kiel paÄoj."
-#: ../../mod/admin.php:425
+#: ../../mod/admin.php:429
msgid "OpenID support"
msgstr "Subteno por OpenID"
-#: ../../mod/admin.php:425
+#: ../../mod/admin.php:429
msgid "OpenID support for registration and logins."
msgstr "Subteni OpenID por registrado kaj ensaluto."
-#: ../../mod/admin.php:426
+#: ../../mod/admin.php:430
msgid "Fullname check"
msgstr "Kontroli plenan nomon"
-#: ../../mod/admin.php:426
+#: ../../mod/admin.php:430
msgid ""
"Force users to register with a space between firstname and lastname in Full "
"name, as an antispam measure"
msgstr "Kiel kontraÅ­spamilo, devigi uzantoj al registrado kun spaceto inter la persona nomo kaj la familia nomo."
-#: ../../mod/admin.php:427
+#: ../../mod/admin.php:431
msgid "UTF-8 Regular expressions"
msgstr "UTF-8 regulaj exprimoj"
-#: ../../mod/admin.php:427
+#: ../../mod/admin.php:431
msgid "Use PHP UTF8 regular expressions"
msgstr "Uzi PHP UTF8 regulajn esprimojn."
-#: ../../mod/admin.php:428
+#: ../../mod/admin.php:432
msgid "Show Community Page"
msgstr "Montri Komunuma PaÄo"
-#: ../../mod/admin.php:428
+#: ../../mod/admin.php:432
msgid ""
"Display a Community page showing all recent public postings on this site."
msgstr "Montri komunuma paÄo kun ĉiuj ĵusaj afiÅoj en ĉi tiu retejo."
-#: ../../mod/admin.php:429
+#: ../../mod/admin.php:433
msgid "Enable OStatus support"
msgstr "Åœalti subtenon por OStatus"
-#: ../../mod/admin.php:429
+#: ../../mod/admin.php:433
msgid ""
"Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All "
"communications in OStatus are public, so privacy warnings will be "
"occasionally displayed."
msgstr "Provizi integritan OStatus (identi.ca, status.net ktp) subtenon. Ĉiuj komunikadoj en OStatus estas publikaj, do privatecaj avertoj aperos de tempo al tempo."
-#: ../../mod/admin.php:430
+#: ../../mod/admin.php:434
msgid "Enable Diaspora support"
msgstr "Åœalti subtenon por Diaspora"
-#: ../../mod/admin.php:430
+#: ../../mod/admin.php:434
msgid "Provide built-in Diaspora network compatibility."
msgstr "Provizi integritan Diaspora subtenon."
-#: ../../mod/admin.php:431
+#: ../../mod/admin.php:435
msgid "Only allow Friendica contacts"
msgstr "Nur permesigi Friendica kontaktojn"
-#: ../../mod/admin.php:431
+#: ../../mod/admin.php:435
msgid ""
"All contacts must use Friendica protocols. All other built-in communication "
"protocols disabled."
msgstr "Ĉiuj kontaktoj devas uzi Friendica protokolojn. Ĉiuj aliaj komunikaj protokoloj malaktivita."
-#: ../../mod/admin.php:432
+#: ../../mod/admin.php:436
msgid "Verify SSL"
msgstr "Kontroli SSL"
-#: ../../mod/admin.php:432
+#: ../../mod/admin.php:436
msgid ""
"If you wish, you can turn on strict certificate checking. This will mean you"
" cannot connect (at all) to self-signed SSL sites."
msgstr "Se vi deziras, vi povas aktivigi severan kontroladon de SSL atestiloj. Pro tio, vie (tute) ne eblos konekti al SSL retejoj kun memsubskribitaj atestiloj."
-#: ../../mod/admin.php:433
+#: ../../mod/admin.php:437
msgid "Proxy user"
msgstr "Uzantnomo por retperanto"
-#: ../../mod/admin.php:434
+#: ../../mod/admin.php:438
msgid "Proxy URL"
msgstr "URL adreso de retperanto"
-#: ../../mod/admin.php:435
+#: ../../mod/admin.php:439
msgid "Network timeout"
msgstr "Reta tempolimo"
-#: ../../mod/admin.php:435
+#: ../../mod/admin.php:439
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr "Valoro en sekundoj. Uzu 0 por mallimitigi (ne rekomendata)."
-#: ../../mod/admin.php:436
+#: ../../mod/admin.php:440
msgid "Delivery interval"
msgstr "Intervalo de liverado"
-#: ../../mod/admin.php:436
+#: ../../mod/admin.php:440
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr "Malfruigi fonan liveradon dum tiom da sekundoj por malpliigi la Åargon de la sistemo. Rekomendoj: 4-5 por komunaj serviloj, 2-3 por virtualaj privataj serviloj, 0-1 por grandaj dediĉitaj serviloj."
-#: ../../mod/admin.php:451
+#: ../../mod/admin.php:441
+msgid "Poll interval"
+msgstr "Enketintervalo"
+
+#: ../../mod/admin.php:441
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "Malfruigi fonajn enketprocesojn je tiom da sekundoj por malpliigi la Åargon de la sistemo. Se 0, uzas la liverintervalon."
+
+#: ../../mod/admin.php:442
+msgid "Maximum Load Average"
+msgstr "Maksimuma Meza SistemÅargo"
+
+#: ../../mod/admin.php:442
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "Maksimuma sistemÅargo post kiu livero- kaj enketprocesoj estos prokrastinataj. - DefaÅ­lte 50."
+
+#: ../../mod/admin.php:456
msgid "Update has been marked successful"
msgstr "Äœisdatigo estas markita sukcesa"
-#: ../../mod/admin.php:461
+#: ../../mod/admin.php:466
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr "Ne sukcesis plenumi %s. Kontrolu la sistemprotokolojn."
-#: ../../mod/admin.php:464
+#: ../../mod/admin.php:469
#, php-format
msgid "Update %s was successfully applied."
msgstr "Sukcese aplikis la Äisdatigo %s."
-#: ../../mod/admin.php:468
+#: ../../mod/admin.php:473
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr "Äœisdatigo %s ne liveris elirstaton. "
-#: ../../mod/admin.php:471
+#: ../../mod/admin.php:476
#, php-format
msgid "Update function %s could not be found."
msgstr "Ne troveblas Äisdatigo funkcio %s."
-#: ../../mod/admin.php:486
+#: ../../mod/admin.php:491
msgid "No failed updates."
msgstr "Neniom da malsukcesaj Äisdatigoj."
-#: ../../mod/admin.php:490
+#: ../../mod/admin.php:495
msgid "Failed Updates"
msgstr "Malsukcesaj Äœisdatigoj"
-#: ../../mod/admin.php:491
+#: ../../mod/admin.php:496
msgid ""
"This does not include updates prior to 1139, which did not return a status."
msgstr "Ne inkluzivas Äisdatigojn antaÅ­ 1139, kiuj ne liveris elirstaton."
-#: ../../mod/admin.php:492
+#: ../../mod/admin.php:497
msgid "Mark success (if update was manually applied)"
msgstr "Marki sukcesa (se la Äisdatigo estas instalita mane)"
-#: ../../mod/admin.php:493
+#: ../../mod/admin.php:498
msgid "Attempt to execute this update step automatically"
msgstr "Provi automate plenumi ĉi tian paÅon de la Äisdatigo."
-#: ../../mod/admin.php:518
+#: ../../mod/admin.php:523
#, php-format
msgid "%s user blocked/unblocked"
msgid_plural "%s users blocked/unblocked"
msgstr[0] "Blokis/malblokis %s uzanton"
msgstr[1] "Blokis/malblokis %s uzantojn"
-#: ../../mod/admin.php:525
+#: ../../mod/admin.php:530
#, php-format
msgid "%s user deleted"
msgid_plural "%s users deleted"
msgstr[0] "%s uzanto forviÅita"
msgstr[1] "%s uzanto forviÅitaj"
-#: ../../mod/admin.php:564
+#: ../../mod/admin.php:569
#, php-format
msgid "User '%s' deleted"
msgstr "Uzanto '%s' forviÅita"
-#: ../../mod/admin.php:572
+#: ../../mod/admin.php:577
#, php-format
msgid "User '%s' unblocked"
msgstr "Uzanto '%s' malblokita"
-#: ../../mod/admin.php:572
+#: ../../mod/admin.php:577
#, php-format
msgid "User '%s' blocked"
msgstr "Uzanto '%s' blokita"
-#: ../../mod/admin.php:636
+#: ../../mod/admin.php:641
msgid "select all"
msgstr "elekti ĉiujn"
-#: ../../mod/admin.php:637
+#: ../../mod/admin.php:642
msgid "User registrations waiting for confirm"
msgstr "RegistriÄoj atendante aprobon"
-#: ../../mod/admin.php:638
+#: ../../mod/admin.php:643
msgid "Request date"
msgstr "Dato de peto"
-#: ../../mod/admin.php:638 ../../mod/admin.php:647
+#: ../../mod/admin.php:643 ../../mod/admin.php:652
#: ../../include/contact_selectors.php:79
msgid "Email"
msgstr "RetpoÅto"
-#: ../../mod/admin.php:639
+#: ../../mod/admin.php:644
msgid "No registrations."
msgstr "Neniom da registriÄoj."
-#: ../../mod/admin.php:641
+#: ../../mod/admin.php:646
msgid "Deny"
msgstr "Negi"
-#: ../../mod/admin.php:647
+#: ../../mod/admin.php:652
msgid "Register date"
msgstr "Dato de registrado"
-#: ../../mod/admin.php:647
+#: ../../mod/admin.php:652
msgid "Last login"
msgstr "Plej ĵusa ensaluto"
-#: ../../mod/admin.php:647
+#: ../../mod/admin.php:652
msgid "Last item"
msgstr "Plej ĵusa elemento"
-#: ../../mod/admin.php:647
+#: ../../mod/admin.php:652
msgid "Account"
msgstr "Konto"
-#: ../../mod/admin.php:649
+#: ../../mod/admin.php:654
msgid ""
"Selected users will be deleted!\\n\\nEverything these users had posted on "
"this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "La elektitaj uzantkontoj estas forviÅotaj!\\n\\nĈiuj elementoj kiujn ili afiÅis je la retpaÄo estos permanente forviÅitaj.\\n\\nĈu vi certas?"
-#: ../../mod/admin.php:650
+#: ../../mod/admin.php:655
msgid ""
"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
"site will be permanently deleted!\\n\\nAre you sure?"
msgstr "La uzanto {0} estas forviÅota!\\n\\nĈiuj elementoj kiujn li afiÅis je la retpaÄo estos permanente forviÅitaj.\\n\\nĈu vi certas?"
-#: ../../mod/admin.php:691
+#: ../../mod/admin.php:696
#, php-format
msgid "Plugin %s disabled."
msgstr "Kromprogramo %s estas malÅaltita."
-#: ../../mod/admin.php:695
+#: ../../mod/admin.php:700
#, php-format
msgid "Plugin %s enabled."
msgstr "Kromprogramo %s estas Åaltita."
-#: ../../mod/admin.php:705 ../../mod/admin.php:903
+#: ../../mod/admin.php:710 ../../mod/admin.php:908
msgid "Disable"
msgstr "MalÅalti"
-#: ../../mod/admin.php:707 ../../mod/admin.php:905
+#: ../../mod/admin.php:712 ../../mod/admin.php:910
msgid "Enable"
msgstr "Åœalti"
-#: ../../mod/admin.php:729 ../../mod/admin.php:934
+#: ../../mod/admin.php:734 ../../mod/admin.php:939
msgid "Toggle"
msgstr "Åœalti/MalÅalti"
-#: ../../mod/admin.php:737 ../../mod/admin.php:944
+#: ../../mod/admin.php:742 ../../mod/admin.php:949
msgid "Author: "
msgstr "AÅ­toro: "
-#: ../../mod/admin.php:738 ../../mod/admin.php:945
+#: ../../mod/admin.php:743 ../../mod/admin.php:950
msgid "Maintainer: "
msgstr "Prizorganto: "
-#: ../../mod/admin.php:867
+#: ../../mod/admin.php:872
msgid "No themes found."
msgstr "Ne trovis etosojn."
-#: ../../mod/admin.php:926
+#: ../../mod/admin.php:931
msgid "Screenshot"
msgstr "Ekrankopio"
-#: ../../mod/admin.php:974
+#: ../../mod/admin.php:979
msgid "[Experimental]"
msgstr "[Eksperimenta]"
-#: ../../mod/admin.php:975
+#: ../../mod/admin.php:980
msgid "[Unsupported]"
msgstr "[Nesubtenata]"
-#: ../../mod/admin.php:1002
+#: ../../mod/admin.php:1007
msgid "Log settings updated."
msgstr "Protokolagordoj Äisdatigitaj."
-#: ../../mod/admin.php:1058
+#: ../../mod/admin.php:1063
msgid "Clear"
msgstr "ForviÅi"
-#: ../../mod/admin.php:1064
+#: ../../mod/admin.php:1069
msgid "Debugging"
msgstr "Sencimigado"
-#: ../../mod/admin.php:1065
+#: ../../mod/admin.php:1070
msgid "Log file"
msgstr "Protokolo"
-#: ../../mod/admin.php:1065
+#: ../../mod/admin.php:1070
msgid ""
"Must be writable by web server. Relative to your Friendica top-level "
"directory."
msgstr "Devas esti skribebla de la retservilo. Relativa al via plej supra Friendica dosierujo."
-#: ../../mod/admin.php:1066
+#: ../../mod/admin.php:1071
msgid "Log level"
msgstr "Protokolnivelo"
-#: ../../mod/admin.php:1116
+#: ../../mod/admin.php:1121
msgid "Close"
msgstr "Fermi"
-#: ../../mod/admin.php:1122
+#: ../../mod/admin.php:1127
msgid "FTP Host"
msgstr "FTP Servilo"
-#: ../../mod/admin.php:1123
+#: ../../mod/admin.php:1128
msgid "FTP Path"
msgstr "FTP Vojo"
-#: ../../mod/admin.php:1124
+#: ../../mod/admin.php:1129
msgid "FTP User"
msgstr "FTP Uzanto"
-#: ../../mod/admin.php:1125
+#: ../../mod/admin.php:1130
msgid "FTP Password"
msgstr "FTP Pasvorto"
-#: ../../mod/profile.php:21 ../../boot.php:949
+#: ../../mod/profile.php:21 ../../boot.php:955
msgid "Requested profile is not available."
msgstr "La petita profilo ne disponeblas."
@@ -3657,58 +3678,68 @@ msgstr "Ne trovis kontoj, kaj registrado tra OpenID estas malpermesita ĉi tie."
msgid "Login failed."
msgstr "Ensalutado malsukcesis."
-#: ../../mod/follow.php:27
+#: ../../mod/follow.php:30
msgid "Connect URL missing."
msgstr "Ne ekzistas URL adreso por konekti."
-#: ../../mod/follow.php:47
+#: ../../mod/follow.php:56
msgid ""
"This site is not configured to allow communications with other networks."
msgstr "Tiu retpaÄo ne permesas komunikadon kun aliaj retoj."
-#: ../../mod/follow.php:48 ../../mod/follow.php:63
+#: ../../mod/follow.php:57 ../../mod/follow.php:72
msgid "No compatible communication protocols or feeds were discovered."
msgstr "Ne malkovris kongruajn protokolojn por komunikado aÅ­ fluojn."
-#: ../../mod/follow.php:61
+#: ../../mod/follow.php:70
msgid "The profile address specified does not provide adequate information."
msgstr "La specifita profiladreso ne enhavas sufiĉe da informoj."
-#: ../../mod/follow.php:65
+#: ../../mod/follow.php:74
msgid "An author or name was not found."
msgstr "Ne trovis aÅ­toron aÅ­ nomon."
-#: ../../mod/follow.php:67
+#: ../../mod/follow.php:76
msgid "No browser URL could be matched to this address."
msgstr "Neniu retuma URL adreso kongruas al la adreso."
-#: ../../mod/follow.php:74
+#: ../../mod/follow.php:78
+msgid ""
+"Unable to match @-style Identity Address with a known protocol or email "
+"contact."
+msgstr "Ne eblas kongrui @-stilan identecon adreson al iu konata protokolo au retpoÅtadreso."
+
+#: ../../mod/follow.php:79
+msgid "Use mailto: in front of address to force email check."
+msgstr "Uzu mailto: antaÅ­ la adreso por devigi la testadon per retpoÅto."
+
+#: ../../mod/follow.php:85
msgid ""
"The profile address specified belongs to a network which has been disabled "
"on this site."
msgstr "Tiu profila adreso apartenas al retejo kiu estas maÅaltita je ĉi tiu retejo."
-#: ../../mod/follow.php:79
+#: ../../mod/follow.php:90
msgid ""
"Limited profile. This person will be unable to receive direct/personal "
"notifications from you."
msgstr "Profilo limigata. Ĉi persono ne eblos ricevi rektajn/personajn atentigojn de vi. "
-#: ../../mod/follow.php:149
+#: ../../mod/follow.php:160
msgid "Unable to retrieve contact information."
msgstr "Ne eblas ricevi kontaktinformojn."
-#: ../../mod/follow.php:195
+#: ../../mod/follow.php:206
msgid "following"
msgstr "sekvanta"
-#: ../../mod/common.php:34
+#: ../../mod/common.php:42
msgid "Common Friends"
msgstr "Komunaj Amikoj"
-#: ../../mod/common.php:42
-msgid "No friends in common."
-msgstr "Neniom da komunaj amikoj."
+#: ../../mod/common.php:78
+msgid "No contacts in common."
+msgstr "Neniom da komunaj kontaktoj."
#: ../../mod/display.php:135
msgid "Item has been removed."
@@ -3980,23 +4011,23 @@ msgstr "AÄo:"
msgid "Edit/Manage Profiles"
msgstr "Redakti/administri Profilojn"
-#: ../../mod/profiles.php:621 ../../boot.php:1058
+#: ../../mod/profiles.php:621 ../../boot.php:1064
msgid "Change profile photo"
msgstr "ÅœanÄi profilbildon"
-#: ../../mod/profiles.php:622 ../../boot.php:1059
+#: ../../mod/profiles.php:622 ../../boot.php:1065
msgid "Create New Profile"
msgstr "Krei novan profilon"
-#: ../../mod/profiles.php:633 ../../boot.php:1069
+#: ../../mod/profiles.php:633 ../../boot.php:1075
msgid "Profile Image"
msgstr "Profilbildo"
-#: ../../mod/profiles.php:635 ../../boot.php:1072
+#: ../../mod/profiles.php:635 ../../boot.php:1078
msgid "visible to everybody"
msgstr "videbla al ĉiuj"
-#: ../../mod/profiles.php:636 ../../boot.php:1073
+#: ../../mod/profiles.php:636 ../../boot.php:1079
msgid "Edit visibility"
msgstr "Redakti videblecon"
@@ -4048,7 +4079,7 @@ msgstr "Aldoni"
msgid "No entries."
msgstr "Neniom da afiÅoj."
-#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:464
+#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:554
#: ../../include/contact_widgets.php:34
msgid "Friend Suggestions"
msgstr "Amikosugestoj"
@@ -4063,7 +4094,12 @@ msgstr "Neniu sugestoj disponeblas. Se ĉi tiu estas nova retejo, bonvolu reprov
msgid "Ignore/Hide"
msgstr "Ignori/KaÅi"
-#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:462
+#: ../../mod/acl.php:134
+#, php-format
+msgid "%s [%s]"
+msgstr "%s [%s]"
+
+#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:552
msgid "Global Directory"
msgstr "Tutmonda Katalogo"
@@ -4254,71 +4290,83 @@ msgstr "Konekto akceptita je %s"
msgid "%1$s has joined %2$s"
msgstr "%1$s aliÄis al %2$s"
-#: ../../addon/facebook/facebook.php:491
+#: ../../addon/facebook/facebook.php:501
msgid "Facebook disabled"
msgstr "Facebook malÅaltita"
-#: ../../addon/facebook/facebook.php:496
+#: ../../addon/facebook/facebook.php:506
msgid "Updating contacts"
msgstr "Mi Äisdatigas la kontaktojn."
-#: ../../addon/facebook/facebook.php:516
+#: ../../addon/facebook/facebook.php:529
msgid "Facebook API key is missing."
msgstr "La API Ålosilo de Facebook ne estas konata ĉi tie."
-#: ../../addon/facebook/facebook.php:523
+#: ../../addon/facebook/facebook.php:536
msgid "Facebook Connect"
msgstr "Kontekto al Facebook"
-#: ../../addon/facebook/facebook.php:529
+#: ../../addon/facebook/facebook.php:542
msgid "Install Facebook connector for this account."
msgstr "Instali la Facebook konektilo por ĉi tiu konto."
-#: ../../addon/facebook/facebook.php:536
+#: ../../addon/facebook/facebook.php:549
msgid "Remove Facebook connector"
msgstr "Forigi la Facebook konektilon."
-#: ../../addon/facebook/facebook.php:541
+#: ../../addon/facebook/facebook.php:554
msgid ""
"Re-authenticate [This is necessary whenever your Facebook password is "
"changed.]"
msgstr "ReaÅ­tentiÄi [Tio estas bezonata ĉiam kiam vi ÅanÄis vian pasvorton ĉe Facebook.]"
-#: ../../addon/facebook/facebook.php:548
+#: ../../addon/facebook/facebook.php:561
msgid "Post to Facebook by default"
msgstr "Ĉiam afiÅi al Facebook."
-#: ../../addon/facebook/facebook.php:552
+#: ../../addon/facebook/facebook.php:567
+msgid ""
+"Facebook friend linking has been disabled on this site. The following "
+"settings will have no effect."
+msgstr "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. La sekvantaj agordoj do ne havas validecon."
+
+#: ../../addon/facebook/facebook.php:571
+msgid ""
+"Facebook friend linking has been disabled on this site. If you disable it, "
+"you will be unable to re-enable it."
+msgstr "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. Se vi malÅaltas Äin, vi ne eblos ree Åalti Äin."
+
+#: ../../addon/facebook/facebook.php:574
msgid "Link all your Facebook friends and conversations on this website"
msgstr "Alligu ĉiujn viajn Facebook amikojn kaj konversaciojn je ĉi-tiu retejo."
-#: ../../addon/facebook/facebook.php:554
+#: ../../addon/facebook/facebook.php:576
msgid ""
"Facebook conversations consist of your <em>profile wall</em> and your friend"
" <em>stream</em>."
msgstr "Facebok konversacioj konsistas el via <em>profilmuro</em> kaj la <em>fluo</em> de viaj amikoj."
-#: ../../addon/facebook/facebook.php:555
+#: ../../addon/facebook/facebook.php:577
msgid "On this website, your Facebook friend stream is only visible to you."
msgstr "Je ĉi-tiu retejo, la fluo de viaj amikoj ĉe Facebook nur videblas al vi."
-#: ../../addon/facebook/facebook.php:556
+#: ../../addon/facebook/facebook.php:578
msgid ""
"The following settings determine the privacy of your Facebook profile wall "
"on this website."
msgstr "La sekvontaj agordoj difinas la privatecon de via Facebook profilmuro je ĉi-tiu retejo."
-#: ../../addon/facebook/facebook.php:560
+#: ../../addon/facebook/facebook.php:582
msgid ""
"On this website your Facebook profile wall conversations will only be "
"visible to you"
msgstr "Je ĉi-tiu retejo, la conversacioj sur via Facebook profilmuro nur videblas al vi."
-#: ../../addon/facebook/facebook.php:565
+#: ../../addon/facebook/facebook.php:587
msgid "Do not import your Facebook profile wall conversations"
msgstr "Ne importi konversaciojn de via Facebook profilmuro"
-#: ../../addon/facebook/facebook.php:567
+#: ../../addon/facebook/facebook.php:589
msgid ""
"If you choose to link conversations and leave both of these boxes unchecked,"
" your Facebook profile wall will be merged with your profile wall on this "
@@ -4326,120 +4374,120 @@ msgid ""
"who may see the conversations."
msgstr "Se vi elektas alligi conversaciojn kaj ne elektas tiujn butonojn, via Facebook profilmuro estas kunigota kun via profilmuro ĉi tie. Viaj privatecaj agordoj ĉi tie difinos kiu povas vidi la coversaciojn."
-#: ../../addon/facebook/facebook.php:572
+#: ../../addon/facebook/facebook.php:594
msgid "Comma separated applications to ignore"
msgstr "Ignorotaj programoj, disigita per komo"
-#: ../../addon/facebook/facebook.php:656
+#: ../../addon/facebook/facebook.php:678
msgid "Problems with Facebook Real-Time Updates"
msgstr "Problemoj kun Facebook Realtempaj Äœisdatigoj"
-#: ../../addon/facebook/facebook.php:684
+#: ../../addon/facebook/facebook.php:706
#: ../../include/contact_selectors.php:81
msgid "Facebook"
msgstr "Facebook"
-#: ../../addon/facebook/facebook.php:685
+#: ../../addon/facebook/facebook.php:707
msgid "Facebook Connector Settings"
msgstr "Agordoj por la Facebook konektilo"
-#: ../../addon/facebook/facebook.php:700
+#: ../../addon/facebook/facebook.php:722
msgid "Facebook API Key"
msgstr "Facebook API Ålosilo"
-#: ../../addon/facebook/facebook.php:710
+#: ../../addon/facebook/facebook.php:732
msgid ""
"Error: it appears that you have specified the App-ID and -Secret in your "
".htconfig.php file. As long as they are specified there, they cannot be set "
"using this form.<br><br>"
msgstr "Eraro: Åœajnas kvazaÅ­ vi agordis la App-ID kaj la sekreton en via .htconfig.php dosiero. Kiam ili estas agordita tie, vi ne povas agordi Äin tra tiu ĉi formo.<br><br>"
-#: ../../addon/facebook/facebook.php:715
+#: ../../addon/facebook/facebook.php:737
msgid ""
"Error: the given API Key seems to be incorrect (the application access token"
" could not be retrieved)."
msgstr "Eraro: La API Ålosilo aspektas malÄusta (ne eblas ricevi la programa atingoĵetono)."
-#: ../../addon/facebook/facebook.php:717
+#: ../../addon/facebook/facebook.php:739
msgid "The given API Key seems to work correctly."
msgstr "La API Ålosilo Åajne Äuste funkcias."
-#: ../../addon/facebook/facebook.php:719
+#: ../../addon/facebook/facebook.php:741
msgid ""
"The correctness of the API Key could not be detected. Somthing strange's "
"going on."
msgstr "Ne povis kontroli la Äustecon de la API Ålosilo. Ia stranga afero okazas. "
-#: ../../addon/facebook/facebook.php:722
+#: ../../addon/facebook/facebook.php:744
msgid "App-ID / API-Key"
msgstr "Programo ID / API Åœlosilo"
-#: ../../addon/facebook/facebook.php:723
+#: ../../addon/facebook/facebook.php:745
msgid "Application secret"
msgstr "Programo sekreto"
-#: ../../addon/facebook/facebook.php:724
+#: ../../addon/facebook/facebook.php:746
#, php-format
msgid "Polling Interval in minutes (minimum %1$s minutes)"
msgstr "Intervalo de enketo en minutoj (minimume %1$s minutoj)"
-#: ../../addon/facebook/facebook.php:725
+#: ../../addon/facebook/facebook.php:747
msgid ""
"Synchronize comments (no comments on Facebook are missed, at the cost of "
"increased system load)"
msgstr "Sinkronigi komentojn (vi ricevas ĉiujn komentojn de Facebook, sed la Åargo de la sistemo iom kreskas)"
-#: ../../addon/facebook/facebook.php:729
+#: ../../addon/facebook/facebook.php:751
msgid "Real-Time Updates"
msgstr "Realtempaj Äœisdatigoj"
-#: ../../addon/facebook/facebook.php:733
+#: ../../addon/facebook/facebook.php:755
msgid "Real-Time Updates are activated."
msgstr "Realtempaj Äœisdatigoj estas Åaltita"
-#: ../../addon/facebook/facebook.php:734
+#: ../../addon/facebook/facebook.php:756
msgid "Deactivate Real-Time Updates"
msgstr "MalÅalti Realtempaj Äœisdatigoj"
-#: ../../addon/facebook/facebook.php:736
+#: ../../addon/facebook/facebook.php:758
msgid "Real-Time Updates not activated."
msgstr "Realtempaj Äœisdatigoj estas malÅaltita"
-#: ../../addon/facebook/facebook.php:736
+#: ../../addon/facebook/facebook.php:758
msgid "Activate Real-Time Updates"
msgstr "Åœalti Realtempaj Äœisdatigoj"
-#: ../../addon/facebook/facebook.php:755
+#: ../../addon/facebook/facebook.php:777
msgid "The new values have been saved."
msgstr "Konservis novajn valorojn."
-#: ../../addon/facebook/facebook.php:779
+#: ../../addon/facebook/facebook.php:801
msgid "Post to Facebook"
msgstr "AfiÅi al Facebook"
-#: ../../addon/facebook/facebook.php:877
+#: ../../addon/facebook/facebook.php:899
msgid ""
"Post to Facebook cancelled because of multi-network access permission "
"conflict."
msgstr "AfiÅado al Facebook nuligita ĉar okazis konflikto en la multretpermesoj."
-#: ../../addon/facebook/facebook.php:1097
+#: ../../addon/facebook/facebook.php:1119
msgid "View on Friendica"
msgstr "Vidi ĉe Friendica"
-#: ../../addon/facebook/facebook.php:1130
+#: ../../addon/facebook/facebook.php:1152
msgid "Facebook post failed. Queued for retry."
msgstr "Malsukcesis afiÅi ĉe Facebook. Enigita en vico."
-#: ../../addon/facebook/facebook.php:1170
+#: ../../addon/facebook/facebook.php:1192
msgid "Your Facebook connection became invalid. Please Re-authenticate."
msgstr "Via Facbook konekto iÄis nevalida. Bonvolu reaÅ­tentiÄi."
-#: ../../addon/facebook/facebook.php:1171
+#: ../../addon/facebook/facebook.php:1193
msgid "Facebook connection became invalid"
msgstr "Facebook konekto iÄis nevalida."
-#: ../../addon/facebook/facebook.php:1172
+#: ../../addon/facebook/facebook.php:1194
#, php-format
msgid ""
"Hi %1$s,\n"
@@ -4589,7 +4637,8 @@ msgid "Forums"
msgstr "Forumoj"
#: ../../addon/page/page.php:63 ../../addon/showmore/showmore.php:87
-#: ../../include/conversation.php:466 ../../boot.php:507
+#: ../../include/contact_widgets.php:188 ../../include/conversation.php:466
+#: ../../boot.php:513
msgid "show more"
msgstr "montri pli"
@@ -4605,7 +4654,7 @@ msgstr "Åœalti la Planets kromprogamon"
#: ../../addon/communityhome/communityhome.php:34
#: ../../addon/communityhome/twillingham/communityhome.php:28
#: ../../addon/communityhome/twillingham/communityhome.php:34
-#: ../../include/nav.php:64 ../../boot.php:805
+#: ../../include/nav.php:64 ../../boot.php:811
msgid "Login"
msgstr "Ensaluti"
@@ -4633,7 +4682,7 @@ msgid "Latest likes"
msgstr "Ä´usaj Åatitaĵoj"
#: ../../addon/communityhome/communityhome.php:155
-#: ../../view/theme/diabook/theme.php:400 ../../include/text.php:1302
+#: ../../view/theme/diabook/theme.php:490 ../../include/text.php:1303
#: ../../include/conversation.php:45 ../../include/conversation.php:118
msgid "event"
msgstr "okazo"
@@ -4786,7 +4835,7 @@ msgid "Post to Drupal by default"
msgstr "DefaÅ­lte afiÅi ĉe Drupal"
#: ../../addon/drpost/drpost.php:184 ../../addon/wppost/wppost.php:190
-#: ../../addon/blogger/blogger.php:172 ../../addon/posterous/posterous.php:177
+#: ../../addon/blogger/blogger.php:172 ../../addon/posterous/posterous.php:192
msgid "Post from Friendica"
msgstr "AfiÅo de Friendica"
@@ -5500,133 +5549,225 @@ msgstr "Blogger API URL"
msgid "Post to Blogger by default"
msgstr "DefaÅ­lte afiÅi al Blogger"
-#: ../../addon/posterous/posterous.php:36
+#: ../../addon/posterous/posterous.php:37
msgid "Post to Posterous"
msgstr "AfiÅi al Posterous"
-#: ../../addon/posterous/posterous.php:67
+#: ../../addon/posterous/posterous.php:70
msgid "Posterous Post Settings"
msgstr "Agordoj pri afiÅoj ĉe Posterous"
-#: ../../addon/posterous/posterous.php:69
+#: ../../addon/posterous/posterous.php:72
msgid "Enable Posterous Post Plugin"
msgstr "Åœalti la Poserous-afiÅo kromprogramon"
-#: ../../addon/posterous/posterous.php:74
+#: ../../addon/posterous/posterous.php:77
msgid "Posterous login"
msgstr "Posterous salutnomo"
-#: ../../addon/posterous/posterous.php:79
+#: ../../addon/posterous/posterous.php:82
msgid "Posterous password"
msgstr "Posterous pasvorto"
-#: ../../addon/posterous/posterous.php:84
+#: ../../addon/posterous/posterous.php:87
+msgid "Posterous site ID"
+msgstr "Idento de Posterous retejo"
+
+#: ../../addon/posterous/posterous.php:92
+msgid "Posterous API token"
+msgstr "API ĵetono de Posterous retejo"
+
+#: ../../addon/posterous/posterous.php:97
msgid "Post to Posterous by default"
msgstr "DefaÅ­lte afiÅi al Posterous"
-#: ../../view/theme/cleanzero/config.php:73
-#: ../../view/theme/diabook/config.php:93
+#: ../../view/theme/cleanzero/config.php:82
+#: ../../view/theme/diabook/config.php:192
#: ../../view/theme/quattro/config.php:54 ../../view/theme/dispy/config.php:72
msgid "Theme settings"
msgstr "Agordoj pri la etoso"
-#: ../../view/theme/cleanzero/config.php:74
+#: ../../view/theme/cleanzero/config.php:83
msgid "Set resize level for images in posts and comments (width and height)"
msgstr "Agordi la regrandignivelo por bildoj en afiÅoj kaj komentoj (larÄo kaj alto)"
-#: ../../view/theme/cleanzero/config.php:75
-#: ../../view/theme/diabook/config.php:94 ../../view/theme/dispy/config.php:73
+#: ../../view/theme/cleanzero/config.php:84
+#: ../../view/theme/diabook/config.php:193
+#: ../../view/theme/dispy/config.php:73
msgid "Set font-size for posts and comments"
msgstr "Agordi la tiparan grandon por afiÅoj kaj komentoj"
-#: ../../view/theme/cleanzero/config.php:76
+#: ../../view/theme/cleanzero/config.php:85
+msgid "Set theme width"
+msgstr "Agordi la larÄo por la etoso"
+
+#: ../../view/theme/cleanzero/config.php:86
#: ../../view/theme/quattro/config.php:56
msgid "Color scheme"
msgstr "Kolorskemo"
-#: ../../view/theme/diabook/theme.php:65 ../../include/nav.php:49
+#: ../../view/theme/diabook/theme.php:123 ../../include/nav.php:49
#: ../../include/nav.php:115
msgid "Your posts and conversations"
msgstr "Viaj afiÅoj kaj komunikadoj"
-#: ../../view/theme/diabook/theme.php:66 ../../include/nav.php:50
+#: ../../view/theme/diabook/theme.php:124 ../../include/nav.php:50
msgid "Your profile page"
msgstr "Via profilo"
-#: ../../view/theme/diabook/theme.php:67
+#: ../../view/theme/diabook/theme.php:125
msgid "Your contacts"
msgstr "Viaj kontaktoj"
-#: ../../view/theme/diabook/theme.php:68 ../../include/nav.php:51
+#: ../../view/theme/diabook/theme.php:126 ../../include/nav.php:51
msgid "Your photos"
msgstr "Viaj bildoj"
-#: ../../view/theme/diabook/theme.php:69 ../../include/nav.php:52
+#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:52
msgid "Your events"
msgstr "Viaj okazoj"
-#: ../../view/theme/diabook/theme.php:70 ../../include/nav.php:53
+#: ../../view/theme/diabook/theme.php:128 ../../include/nav.php:53
msgid "Personal notes"
msgstr "Personaj notoj"
-#: ../../view/theme/diabook/theme.php:70 ../../include/nav.php:53
+#: ../../view/theme/diabook/theme.php:128 ../../include/nav.php:53
msgid "Your personal photos"
msgstr "Viaj personaj bildoj"
-#: ../../view/theme/diabook/theme.php:72
-#: ../../view/theme/diabook/theme.php:481
+#: ../../view/theme/diabook/theme.php:130
+#: ../../view/theme/diabook/theme.php:571
+#: ../../view/theme/diabook/theme.php:675
+#: ../../view/theme/diabook/config.php:201
msgid "Community Pages"
msgstr "Komunumaj paÄoj"
-#: ../../view/theme/diabook/theme.php:328
+#: ../../view/theme/diabook/theme.php:418
+#: ../../view/theme/diabook/theme.php:677
+#: ../../view/theme/diabook/config.php:203
msgid "Community Profiles"
msgstr "Komunumaj Profiloj"
-#: ../../view/theme/diabook/theme.php:349
+#: ../../view/theme/diabook/theme.php:439
+#: ../../view/theme/diabook/theme.php:682
+#: ../../view/theme/diabook/config.php:208
msgid "Last users"
msgstr "Ä´usaj uzantoj"
-#: ../../view/theme/diabook/theme.php:378
+#: ../../view/theme/diabook/theme.php:468
+#: ../../view/theme/diabook/theme.php:684
+#: ../../view/theme/diabook/config.php:210
msgid "Last likes"
msgstr "Ä´usaj Åatitaj elementoj"
-#: ../../view/theme/diabook/theme.php:423
+#: ../../view/theme/diabook/theme.php:513
+#: ../../view/theme/diabook/theme.php:683
+#: ../../view/theme/diabook/config.php:209
msgid "Last photos"
msgstr "Ä´usaj bildoj"
-#: ../../view/theme/diabook/theme.php:460
+#: ../../view/theme/diabook/theme.php:550
+#: ../../view/theme/diabook/theme.php:680
+#: ../../view/theme/diabook/config.php:206
msgid "Find Friends"
msgstr "Trovi Amikojn"
-#: ../../view/theme/diabook/theme.php:461
+#: ../../view/theme/diabook/theme.php:551
msgid "Local Directory"
msgstr "Loka Katalogo"
-#: ../../view/theme/diabook/theme.php:463 ../../include/contact_widgets.php:35
+#: ../../view/theme/diabook/theme.php:553 ../../include/contact_widgets.php:35
msgid "Similar Interests"
msgstr "Similaj Interesoj"
-#: ../../view/theme/diabook/theme.php:465 ../../include/contact_widgets.php:37
+#: ../../view/theme/diabook/theme.php:555 ../../include/contact_widgets.php:37
msgid "Invite Friends"
msgstr "Inviti amikojn"
-#: ../../view/theme/diabook/theme.php:515
+#: ../../view/theme/diabook/theme.php:606
+#: ../../view/theme/diabook/theme.php:676
+#: ../../view/theme/diabook/config.php:202
+msgid "Earth Layers"
+msgstr "Tertavoloj (Earth Layers)"
+
+#: ../../view/theme/diabook/theme.php:611
+#: ../../view/theme/diabook/config.php:198
+msgid "Set zoomfactor for Earth Layer"
+msgstr "Agordi zoman faktoron de Tertavolo"
+
+#: ../../view/theme/diabook/theme.php:612
+#: ../../view/theme/diabook/config.php:199
+msgid "Set longitude (X) for Earth Layer"
+msgstr "Agordi longitudon (X) de Tertavolo"
+
+#: ../../view/theme/diabook/theme.php:613
+#: ../../view/theme/diabook/config.php:200
+msgid "Set latitude (Y) for Earth Layer"
+msgstr "Agordi latitudon (Y) de Tertavolo"
+
+#: ../../view/theme/diabook/theme.php:626
+#: ../../view/theme/diabook/theme.php:678
+#: ../../view/theme/diabook/config.php:204
msgid "Help or @NewHere ?"
msgstr "Helpu aÅ­ @NewHere ?"
-#: ../../view/theme/diabook/theme.php:522
+#: ../../view/theme/diabook/theme.php:633
+#: ../../view/theme/diabook/theme.php:679
+#: ../../view/theme/diabook/config.php:205
msgid "Connect Services"
msgstr "Konekti Servojn"
-#: ../../view/theme/diabook/config.php:95 ../../view/theme/dispy/config.php:74
+#: ../../view/theme/diabook/theme.php:640
+#: ../../view/theme/diabook/theme.php:681
+#: ../../view/theme/diabook/config.php:207
+msgid "Last Tweets"
+msgstr "Ĵusaj Pepaĵoj"
+
+#: ../../view/theme/diabook/theme.php:643
+#: ../../view/theme/diabook/config.php:197
+msgid "Set twitter search term"
+msgstr "Agordi Twitter serĉtekston"
+
+#: ../../view/theme/diabook/theme.php:663
+#: ../../view/theme/diabook/theme.php:664
+#: ../../view/theme/diabook/theme.php:665
+#: ../../view/theme/diabook/theme.php:666
+#: ../../view/theme/diabook/theme.php:667
+#: ../../view/theme/diabook/theme.php:668
+#: ../../view/theme/diabook/theme.php:669
+#: ../../view/theme/diabook/theme.php:670
+#: ../../view/theme/diabook/theme.php:671
+#: ../../view/theme/diabook/theme.php:672 ../../include/acl_selectors.php:288
+msgid "don't show"
+msgstr "kaÅi"
+
+#: ../../view/theme/diabook/theme.php:663
+#: ../../view/theme/diabook/theme.php:664
+#: ../../view/theme/diabook/theme.php:665
+#: ../../view/theme/diabook/theme.php:666
+#: ../../view/theme/diabook/theme.php:667
+#: ../../view/theme/diabook/theme.php:668
+#: ../../view/theme/diabook/theme.php:669
+#: ../../view/theme/diabook/theme.php:670
+#: ../../view/theme/diabook/theme.php:671
+#: ../../view/theme/diabook/theme.php:672 ../../include/acl_selectors.php:287
+msgid "show"
+msgstr "montri"
+
+#: ../../view/theme/diabook/theme.php:673
+msgid "Show/hide boxes at right-hand coloumn:"
+msgstr "Montri/kaÅi kestojn en la desktra kolumno:"
+
+#: ../../view/theme/diabook/config.php:194
+#: ../../view/theme/dispy/config.php:74
msgid "Set line-height for posts and comments"
msgstr "Agordi la linigrandon por afiÅoj kaj komentoj"
-#: ../../view/theme/diabook/config.php:96
+#: ../../view/theme/diabook/config.php:195
msgid "Set resolution for middle column"
msgstr "Agordi la distingivon por la meza kolumno"
-#: ../../view/theme/diabook/config.php:97
+#: ../../view/theme/diabook/config.php:196
msgid "Set color scheme"
msgstr "Agordi Kolorskemon"
@@ -5646,7 +5787,7 @@ msgstr "Centren"
msgid "Set colour scheme"
msgstr "Agordi Kolorskemon"
-#: ../../include/profile_advanced.php:17 ../../boot.php:1094
+#: ../../include/profile_advanced.php:17 ../../boot.php:1100
msgid "Gender:"
msgstr "Sekso:"
@@ -5659,7 +5800,7 @@ msgid "j F"
msgstr "j F"
#: ../../include/profile_advanced.php:30 ../../include/datetime.php:448
-#: ../../include/items.php:1403
+#: ../../include/items.php:1413
msgid "Birthday:"
msgstr "NaskiÄtago:"
@@ -5667,11 +5808,11 @@ msgstr "NaskiÄtago:"
msgid "Age:"
msgstr "AÄo:"
-#: ../../include/profile_advanced.php:37 ../../boot.php:1097
+#: ../../include/profile_advanced.php:37 ../../boot.php:1103
msgid "Status:"
msgstr "Stato:"
-#: ../../include/profile_advanced.php:45 ../../boot.php:1099
+#: ../../include/profile_advanced.php:45 ../../boot.php:1105
msgid "Homepage:"
msgstr "HejmpaÄo:"
@@ -6035,11 +6176,11 @@ msgstr "Ekas:"
msgid "Finishes:"
msgstr "Finas:"
-#: ../../include/delivery.php:434 ../../include/notifier.php:652
+#: ../../include/delivery.php:452 ../../include/notifier.php:652
msgid "(no subject)"
msgstr "(neniu temo)"
-#: ../../include/delivery.php:441 ../../include/enotify.php:23
+#: ../../include/delivery.php:459 ../../include/enotify.php:23
#: ../../include/notifier.php:659
msgid "noreply"
msgstr "nerespondi"
@@ -6155,47 +6296,47 @@ msgstr "Decembro"
msgid "bytes"
msgstr "bajtoj"
-#: ../../include/text.php:936
-msgid "Categories:"
-msgstr "Kategorioj:"
-
-#: ../../include/text.php:948
+#: ../../include/text.php:934 ../../include/text.php:949
msgid "remove"
msgstr "forviÅi"
-#: ../../include/text.php:948
+#: ../../include/text.php:934 ../../include/text.php:949
msgid "[remove]"
msgstr "[forviÅi]"
-#: ../../include/text.php:951
+#: ../../include/text.php:937
+msgid "Categories:"
+msgstr "Kategorioj:"
+
+#: ../../include/text.php:952
msgid "Filed under:"
msgstr "Enarkivigita kiel:"
-#: ../../include/text.php:967 ../../include/text.php:979
+#: ../../include/text.php:968 ../../include/text.php:980
msgid "Click to open/close"
msgstr "Klaku por malfermi/fermi"
-#: ../../include/text.php:1084
+#: ../../include/text.php:1085
msgid "default"
msgstr "defaÅ­lta"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1097
msgid "Select an alternate language"
msgstr "Elekti alian lingvon"
-#: ../../include/text.php:1306
+#: ../../include/text.php:1307
msgid "activity"
msgstr "aktiveco"
-#: ../../include/text.php:1308
+#: ../../include/text.php:1309
msgid "comment"
msgstr "komento"
-#: ../../include/text.php:1309
+#: ../../include/text.php:1310
msgid "post"
msgstr "afiÅo"
-#: ../../include/text.php:1464
+#: ../../include/text.php:1465
msgid "Item filed"
msgstr "Enarkivigis elementon "
@@ -6255,7 +6396,7 @@ msgstr "Krei novan grupon"
msgid "Contacts not in any group"
msgstr "Kontaktoj en neniu grupo"
-#: ../../include/nav.php:46 ../../boot.php:804
+#: ../../include/nav.php:46 ../../boot.php:810
msgid "Logout"
msgstr "Elsaluti"
@@ -6263,7 +6404,7 @@ msgstr "Elsaluti"
msgid "End this session"
msgstr "Fini ĉi-tiun seancon"
-#: ../../include/nav.php:49 ../../boot.php:1472
+#: ../../include/nav.php:49 ../../boot.php:1478
msgid "Status"
msgstr "Stato"
@@ -6343,11 +6484,11 @@ msgstr "Administri"
msgid "Manage other pages"
msgstr "Administri aliajn paÄojn"
-#: ../../include/nav.php:138 ../../boot.php:1052
+#: ../../include/nav.php:138 ../../boot.php:1058
msgid "Profiles"
msgstr "Profiloj"
-#: ../../include/nav.php:138 ../../boot.php:1052
+#: ../../include/nav.php:138 ../../boot.php:1058
msgid "Manage/edit profiles"
msgstr "Administri/redakti profilojn"
@@ -6426,13 +6567,6 @@ msgstr "Ĉio"
msgid "Categories"
msgstr "Kategorioj"
-#: ../../include/contact_widgets.php:183
-#, php-format
-msgid "%d friend in common"
-msgid_plural "%d friends in common"
-msgstr[0] "%d komuna amiko"
-msgstr[1] "%d komunaj amikoj"
-
#: ../../include/auth.php:29
msgid "Logged out."
msgstr "Elsalutita."
@@ -6520,7 +6654,7 @@ msgstr "sekundoj"
msgid "%1$d %2$s ago"
msgstr "antaÅ­ %1$d %2$s"
-#: ../../include/onepoll.php:402
+#: ../../include/onepoll.php:406
msgid "From: "
msgstr "De: "
@@ -6545,14 +6679,6 @@ msgstr "[neniu temo]"
msgid "Visible to everybody"
msgstr "Videbla al ĉiuj"
-#: ../../include/acl_selectors.php:287
-msgid "show"
-msgstr "montri"
-
-#: ../../include/acl_selectors.php:288
-msgid "don't show"
-msgstr "kaÅi"
-
#: ../../include/enotify.php:14
msgid "Friendica Notification"
msgstr "Friendica Atentigo"
@@ -6741,11 +6867,11 @@ msgstr "Bildo:"
msgid "Please visit %s to approve or reject the suggestion."
msgstr "Bonvolu viziti %s por aprobi aÅ­ malaprobi la sugeston."
-#: ../../include/items.php:2714
+#: ../../include/items.php:2724
msgid "A new person is sharing with you at "
msgstr "Nova persono kunhavigas kun vi ĉe "
-#: ../../include/items.php:2714
+#: ../../include/items.php:2724
msgid "You have a new follower at "
msgstr "Vi havas novan sekvanton ĉe "
@@ -7029,96 +7155,96 @@ msgstr "forviÅi lokon"
msgid "permissions"
msgstr "permesoj"
-#: ../../boot.php:505
+#: ../../boot.php:511
msgid "Delete this item?"
msgstr "ForviÅi ĉi tiun elementon?"
-#: ../../boot.php:508
+#: ../../boot.php:514
msgid "show fewer"
msgstr "montri malpli"
-#: ../../boot.php:681
+#: ../../boot.php:687
#, php-format
msgid "Update %s failed. See error logs."
msgstr "Malsukcesis Äisdatigi %s. Vidu la protokolojn."
-#: ../../boot.php:683
+#: ../../boot.php:689
#, php-format
msgid "Update Error at %s"
msgstr "Eraro dum Äisdatigo ĉe %s"
-#: ../../boot.php:783
+#: ../../boot.php:789
msgid "Create a New Account"
msgstr "Krei Novan Konton"
-#: ../../boot.php:807
+#: ../../boot.php:813
msgid "Nickname or Email address: "
msgstr "KaÅnomo aÅ­ retpoÅtadreso:"
-#: ../../boot.php:808
+#: ../../boot.php:814
msgid "Password: "
msgstr "Pasvorto:"
-#: ../../boot.php:811
+#: ../../boot.php:817
msgid "Or login using OpenID: "
msgstr "AÅ­ ensaluti per OpenID:"
-#: ../../boot.php:817
+#: ../../boot.php:823
msgid "Forgot your password?"
msgstr "Ĉu vi vorgesis vian pasvorton?"
-#: ../../boot.php:984
+#: ../../boot.php:990
msgid "Edit profile"
msgstr "Redakti profilon"
-#: ../../boot.php:1044
+#: ../../boot.php:1050
msgid "Message"
msgstr "MesaÄo"
-#: ../../boot.php:1160 ../../boot.php:1236
+#: ../../boot.php:1166 ../../boot.php:1242
msgid "g A l F d"
msgstr "\\j\\e \\l\\a G\\a \\h\\o\\r\\o, l F d"
-#: ../../boot.php:1161 ../../boot.php:1237
+#: ../../boot.php:1167 ../../boot.php:1243
msgid "F d"
msgstr "F d"
-#: ../../boot.php:1206 ../../boot.php:1277
+#: ../../boot.php:1212 ../../boot.php:1283
msgid "[today]"
msgstr "[hodiaÅ­]"
-#: ../../boot.php:1218
+#: ../../boot.php:1224
msgid "Birthday Reminders"
msgstr "Memorigilo pri naskiÄtagoj"
-#: ../../boot.php:1219
+#: ../../boot.php:1225
msgid "Birthdays this week:"
msgstr "NaskiÄtagoj ĉi-semajne:"
-#: ../../boot.php:1270
+#: ../../boot.php:1276
msgid "[No description]"
msgstr "[Neniu priskribo]"
-#: ../../boot.php:1288
+#: ../../boot.php:1294
msgid "Event Reminders"
-msgstr "Memorigiloj pri Okazoj"
+msgstr "Memorigilo pri Okazoj"
-#: ../../boot.php:1289
+#: ../../boot.php:1295
msgid "Events this week:"
msgstr "Okazoj ĉi-semajne:"
-#: ../../boot.php:1475
+#: ../../boot.php:1481
msgid "Status Messages and Posts"
msgstr "ÅœtatmesaÄoj kaj AfiÅoj"
-#: ../../boot.php:1481
+#: ../../boot.php:1487
msgid "Profile Details"
msgstr "Profildetaloj"
-#: ../../boot.php:1496
+#: ../../boot.php:1502
msgid "Events and Calendar"
msgstr "Okazoj kaj Kalendaro"
-#: ../../boot.php:1502
+#: ../../boot.php:1508
msgid "Only You Can See This"
msgstr "Nur Vi Povas Vidi Tiun"
diff --git a/view/eo/strings.php b/view/eo/strings.php
index dd6fd8215..ba2af413a 100644
--- a/view/eo/strings.php
+++ b/view/eo/strings.php
@@ -36,7 +36,7 @@ $a->strings["Suggest a friend for %s"] = "Sugesti amikon por %s";
$a->strings["Event description and start time are required."] = "Okazo bezonas priskribon kaj startotempon.";
$a->strings["l, F j"] = "l, F j";
$a->strings["Edit event"] = "Redakti okazon";
-$a->strings["link to source"] = "ligi al fonto";
+$a->strings["link to source"] = "ligilo al fonto";
$a->strings["Events"] = "Okazoj";
$a->strings["Create New Event"] = "Krei novan okazon";
$a->strings["Previous"] = "antaÅ­a";
@@ -751,6 +751,10 @@ $a->strings["Network timeout"] = "Reta tempolimo";
$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valoro en sekundoj. Uzu 0 por mallimitigi (ne rekomendata).";
$a->strings["Delivery interval"] = "Intervalo de liverado";
$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Malfruigi fonan liveradon dum tiom da sekundoj por malpliigi la Åargon de la sistemo. Rekomendoj: 4-5 por komunaj serviloj, 2-3 por virtualaj privataj serviloj, 0-1 por grandaj dediĉitaj serviloj.";
+$a->strings["Poll interval"] = "Enketintervalo";
+$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Malfruigi fonajn enketprocesojn je tiom da sekundoj por malpliigi la Åargon de la sistemo. Se 0, uzas la liverintervalon.";
+$a->strings["Maximum Load Average"] = "Maksimuma Meza SistemÅargo";
+$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maksimuma sistemÅargo post kiu livero- kaj enketprocesoj estos prokrastinataj. - DefaÅ­lte 50.";
$a->strings["Update has been marked successful"] = "Äœisdatigo estas markita sukcesa";
$a->strings["Executing %s failed. Check system logs."] = "Ne sukcesis plenumi %s. Kontrolu la sistemprotokolojn.";
$a->strings["Update %s was successfully applied."] = "Sukcese aplikis la Äisdatigo %s.";
@@ -829,12 +833,14 @@ $a->strings["No compatible communication protocols or feeds were discovered."] =
$a->strings["The profile address specified does not provide adequate information."] = "La specifita profiladreso ne enhavas sufiĉe da informoj.";
$a->strings["An author or name was not found."] = "Ne trovis aÅ­toron aÅ­ nomon.";
$a->strings["No browser URL could be matched to this address."] = "Neniu retuma URL adreso kongruas al la adreso.";
+$a->strings["Unable to match @-style Identity Address with a known protocol or email contact."] = "Ne eblas kongrui @-stilan identecon adreson al iu konata protokolo au retpoÅtadreso.";
+$a->strings["Use mailto: in front of address to force email check."] = "Uzu mailto: antaÅ­ la adreso por devigi la testadon per retpoÅto.";
$a->strings["The profile address specified belongs to a network which has been disabled on this site."] = "Tiu profila adreso apartenas al retejo kiu estas maÅaltita je ĉi tiu retejo.";
$a->strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Profilo limigata. Ĉi persono ne eblos ricevi rektajn/personajn atentigojn de vi. ";
$a->strings["Unable to retrieve contact information."] = "Ne eblas ricevi kontaktinformojn.";
$a->strings["following"] = "sekvanta";
$a->strings["Common Friends"] = "Komunaj Amikoj";
-$a->strings["No friends in common."] = "Neniom da komunaj amikoj.";
+$a->strings["No contacts in common."] = "Neniom da komunaj kontaktoj.";
$a->strings["Item has been removed."] = "Elemento estas forviÅita.";
$a->strings["Applications"] = "Programoj";
$a->strings["No installed applications."] = "Neniom da instalitaj programoj.";
@@ -920,6 +926,7 @@ $a->strings["No entries."] = "Neniom da afiÅoj.";
$a->strings["Friend Suggestions"] = "Amikosugestoj";
$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Neniu sugestoj disponeblas. Se ĉi tiu estas nova retejo, bonvolu reprovi post 24 horoj.";
$a->strings["Ignore/Hide"] = "Ignori/KaÅi";
+$a->strings["%s [%s]"] = "%s [%s]";
$a->strings["Global Directory"] = "Tutmonda Katalogo";
$a->strings["Find on this site"] = "Trovi en ĉi retejo";
$a->strings["Site Directory"] = "Reteja Katalogo";
@@ -970,6 +977,8 @@ $a->strings["Install Facebook connector for this account."] = "Instali la Facebo
$a->strings["Remove Facebook connector"] = "Forigi la Facebook konektilon.";
$a->strings["Re-authenticate [This is necessary whenever your Facebook password is changed.]"] = "ReaÅ­tentiÄi [Tio estas bezonata ĉiam kiam vi ÅanÄis vian pasvorton ĉe Facebook.]";
$a->strings["Post to Facebook by default"] = "Ĉiam afiÅi al Facebook.";
+$a->strings["Facebook friend linking has been disabled on this site. The following settings will have no effect."] = "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. La sekvantaj agordoj do ne havas validecon.";
+$a->strings["Facebook friend linking has been disabled on this site. If you disable it, you will be unable to re-enable it."] = "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. Se vi malÅaltas Äin, vi ne eblos ree Åalti Äin.";
$a->strings["Link all your Facebook friends and conversations on this website"] = "Alligu ĉiujn viajn Facebook amikojn kaj konversaciojn je ĉi-tiu retejo.";
$a->strings["Facebook conversations consist of your <em>profile wall</em> and your friend <em>stream</em>."] = "Facebok konversacioj konsistas el via <em>profilmuro</em> kaj la <em>fluo</em> de viaj amikoj.";
$a->strings["On this website, your Facebook friend stream is only visible to you."] = "Je ĉi-tiu retejo, la fluo de viaj amikoj ĉe Facebook nur videblas al vi.";
@@ -1251,10 +1260,13 @@ $a->strings["Posterous Post Settings"] = "Agordoj pri afiÅoj ĉe Posterous";
$a->strings["Enable Posterous Post Plugin"] = "Åœalti la Poserous-afiÅo kromprogramon";
$a->strings["Posterous login"] = "Posterous salutnomo";
$a->strings["Posterous password"] = "Posterous pasvorto";
+$a->strings["Posterous site ID"] = "Idento de Posterous retejo";
+$a->strings["Posterous API token"] = "API ĵetono de Posterous retejo";
$a->strings["Post to Posterous by default"] = "DefaÅ­lte afiÅi al Posterous";
$a->strings["Theme settings"] = "Agordoj pri la etoso";
$a->strings["Set resize level for images in posts and comments (width and height)"] = "Agordi la regrandignivelo por bildoj en afiÅoj kaj komentoj (larÄo kaj alto)";
$a->strings["Set font-size for posts and comments"] = "Agordi la tiparan grandon por afiÅoj kaj komentoj";
+$a->strings["Set theme width"] = "Agordi la larÄo por la etoso";
$a->strings["Color scheme"] = "Kolorskemo";
$a->strings["Your posts and conversations"] = "Viaj afiÅoj kaj komunikadoj";
$a->strings["Your profile page"] = "Via profilo";
@@ -1272,8 +1284,17 @@ $a->strings["Find Friends"] = "Trovi Amikojn";
$a->strings["Local Directory"] = "Loka Katalogo";
$a->strings["Similar Interests"] = "Similaj Interesoj";
$a->strings["Invite Friends"] = "Inviti amikojn";
+$a->strings["Earth Layers"] = "Tertavoloj (Earth Layers)";
+$a->strings["Set zoomfactor for Earth Layer"] = "Agordi zoman faktoron de Tertavolo";
+$a->strings["Set longitude (X) for Earth Layer"] = "Agordi longitudon (X) de Tertavolo";
+$a->strings["Set latitude (Y) for Earth Layer"] = "Agordi latitudon (Y) de Tertavolo";
$a->strings["Help or @NewHere ?"] = "Helpu aÅ­ @NewHere ?";
$a->strings["Connect Services"] = "Konekti Servojn";
+$a->strings["Last Tweets"] = "Ĵusaj Pepaĵoj";
+$a->strings["Set twitter search term"] = "Agordi Twitter serĉtekston";
+$a->strings["don't show"] = "kaÅi";
+$a->strings["show"] = "montri";
+$a->strings["Show/hide boxes at right-hand coloumn:"] = "Montri/kaÅi kestojn en la desktra kolumno:";
$a->strings["Set line-height for posts and comments"] = "Agordi la linigrandon por afiÅoj kaj komentoj";
$a->strings["Set resolution for middle column"] = "Agordi la distingivon por la meza kolumno";
$a->strings["Set color scheme"] = "Agordi Kolorskemon";
@@ -1410,9 +1431,9 @@ $a->strings["October"] = "Oktobro";
$a->strings["November"] = "Novembro";
$a->strings["December"] = "Decembro";
$a->strings["bytes"] = "bajtoj";
-$a->strings["Categories:"] = "Kategorioj:";
$a->strings["remove"] = "forviÅi";
$a->strings["[remove]"] = "[forviÅi]";
+$a->strings["Categories:"] = "Kategorioj:";
$a->strings["Filed under:"] = "Enarkivigita kiel:";
$a->strings["Click to open/close"] = "Klaku por malfermi/fermi";
$a->strings["default"] = "defaÅ­lta";
@@ -1479,10 +1500,6 @@ $a->strings["All Networks"] = "Ĉiuj Retoj";
$a->strings["Saved Folders"] = "Konservitaj Dosierujoj";
$a->strings["Everything"] = "Ĉio";
$a->strings["Categories"] = "Kategorioj";
-$a->strings["%d friend in common"] = array(
- 0 => "%d komuna amiko",
- 1 => "%d komunaj amikoj",
-);
$a->strings["Logged out."] = "Elsalutita.";
$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Okazis problemo ensalutinta kun via OpenID. Bonvolu kontroli la ID.";
$a->strings["The error message was:"] = "La erarmesaÄo estis:";
@@ -1510,8 +1527,6 @@ $a->strings["Image/photo"] = "Bildo";
$a->strings["Cannot locate DNS info for database server '%s'"] = "Ne trovis DNS informojn por datumbaza servilo '%s'.";
$a->strings["[no subject]"] = "[neniu temo]";
$a->strings["Visible to everybody"] = "Videbla al ĉiuj";
-$a->strings["show"] = "montri";
-$a->strings["don't show"] = "kaÅi";
$a->strings["Friendica Notification"] = "Friendica Atentigo";
$a->strings["Thank You,"] = "Dankon,";
$a->strings["%s Administrator"] = "%s Administranto";
@@ -1639,7 +1654,7 @@ $a->strings["[today]"] = "[hodiaÅ­]";
$a->strings["Birthday Reminders"] = "Memorigilo pri naskiÄtagoj";
$a->strings["Birthdays this week:"] = "NaskiÄtagoj ĉi-semajne:";
$a->strings["[No description]"] = "[Neniu priskribo]";
-$a->strings["Event Reminders"] = "Memorigiloj pri Okazoj";
+$a->strings["Event Reminders"] = "Memorigilo pri Okazoj";
$a->strings["Events this week:"] = "Okazoj ĉi-semajne:";
$a->strings["Status Messages and Posts"] = "ÅœtatmesaÄoj kaj AfiÅoj";
$a->strings["Profile Details"] = "Profildetaloj";
diff --git a/view/eo/update_fail_eml.tpl b/view/eo/update_fail_eml.tpl
new file mode 100644
index 000000000..f7e0d8bce
--- /dev/null
+++ b/view/eo/update_fail_eml.tpl
@@ -0,0 +1,11 @@
+Saluton!
+Mi estas $sitename.
+La programistoj de Frienda eldonis Äisdatigon $update antaÅ­ ne longe,
+sed kiam mi provis instali Äin, io terure malsukcesis.
+Tio tuj bezonas riparon kaj mi ne povas fari Äin sole. Bonvolu kontakti
+Friendica programistion se vi ne povas helpi vin mem. Mia datumbazo eble ne plu validas.
+
+La erarmesaÄo estas '$error'.
+
+Mi bedaÅ­ras,
+via Friendica servilo ĉe $siteurl \ No newline at end of file
diff --git a/view/head.tpl b/view/head.tpl
index 7638e56ca..dfb626ebc 100644
--- a/view/head.tpl
+++ b/view/head.tpl
@@ -36,6 +36,7 @@
obj.value = '';
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
+ $("#mod-cmnt-wrap-" + id).show();
openMenu("comment-edit-submit-wrapper-" + id);
}
}
@@ -44,6 +45,7 @@
obj.value = '$comment';
$("#comment-edit-text-" + id).removeClass("comment-edit-text-full");
$("#comment-edit-text-" + id).addClass("comment-edit-text-empty");
+ $("#mod-cmnt-wrap-" + id).hide();
closeMenu("comment-edit-submit-wrapper-" + id);
}
}
diff --git a/view/moderated_comment.tpl b/view/moderated_comment.tpl
new file mode 100644
index 000000000..911c35f33
--- /dev/null
+++ b/view/moderated_comment.tpl
@@ -0,0 +1,34 @@
+ <div class="comment-wwedit-wrapper" id="comment-edit-wrapper-$id" style="display: block;">
+ <form class="comment-edit-form" id="comment-edit-form-$id" action="item" method="post" onsubmit="post_comment($id); return false;">
+ <input type="hidden" name="type" value="$type" />
+ <input type="hidden" name="profile_uid" value="$profile_uid" />
+ <input type="hidden" name="parent" value="$parent" />
+ <input type="hidden" name="return" value="$return_path" />
+ <input type="hidden" name="jsreload" value="$jsreload" />
+ <input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
+
+ <div class="comment-edit-photo" id="comment-edit-photo-$id" >
+ <a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
+ </div>
+ <div class="comment-edit-photo-end"></div>
+ <div id="mod-cmnt-wrap-$id" class="mod-cmnt-wrap" style="display:none">
+ <div id="mod-cmnt-name-lbl-$id" class="mod-cmnt-name-lbl">$lbl_modname</div>
+ <input type="text" id="mod-cmnt-name-$id" class="mod-cmnt-name" name="mod-cmnt-name" value="$modname" />
+ <div id="mod-cmnt-email-lbl-$id" class="mod-cmnt-email-lbl">$lbl_modemail</div>
+ <input type="text" id="mod-cmnt-email-$id" class="mod-cmnt-email" name="mod-cmnt-email" value="$modemail" />
+ <div id="mod-cmnt-url-lbl-$id" class="mod-cmnt-url-lbl">$lbl_modurl</div>
+ <input type="text" id="mod-cmnt-url-$id" class="mod-cmnt-url" name="mod-cmnt-url" value="$modurl" />
+ </div>
+ <textarea id="comment-edit-text-$id" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,$id);" onBlur="commentClose(this,$id);" >$comment</textarea>
+
+ <div class="comment-edit-text-end"></div>
+ <div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-$id" style="display: none;" >
+ <input type="submit" onclick="post_comment($id); return false;" id="comment-edit-submit-$id" class="comment-edit-submit" name="submit" value="$submit" />
+ <span onclick="preview_comment($id);" id="comment-edit-preview-link-$id" class="fakelink">$preview</span>
+ <div id="comment-edit-preview-$id" class="comment-edit-preview" style="display:none;"></div>
+ </div>
+
+ <div class="comment-edit-end"></div>
+ </form>
+
+ </div>
diff --git a/view/theme/darkzero/style.css b/view/theme/darkzero/style.css
index 12c7d3c25..a3df740eb 100644
--- a/view/theme/darkzero/style.css
+++ b/view/theme/darkzero/style.css
@@ -105,3 +105,17 @@ blockquote {
input#acl-search {
background-color: #aaa;
}
+
+
+
+.notify-seen {
+ background:#666;
+}
+
+#nav-notifications-menu {
+ background: #2e2e2f;
+}
+
+#nav-notifications-menu li:hover {
+ background: #444;
+} \ No newline at end of file
diff --git a/view/theme/diabook/admin_site.tpl b/view/theme/diabook/admin_site.tpl
index dd89b81a9..346934b70 100644
--- a/view/theme/diabook/admin_site.tpl
+++ b/view/theme/diabook/admin_site.tpl
@@ -49,6 +49,9 @@
{{ inc field_input.tpl with $field=$proxy }}{{ endinc }}
{{ inc field_input.tpl with $field=$proxyuser }}{{ endinc }}
{{ inc field_input.tpl with $field=$timeout }}{{ endinc }}
+ {{ inc field_input.tpl with $field=$delivery_interval }}{{ endinc }}
+ {{ inc field_input.tpl with $field=$poll_interval }}{{ endinc }}
+ {{ inc field_input.tpl with $field=$maxloadavg }}{{ endinc }}
{{ inc field_input.tpl with $field=$abandon_days }}{{ endinc }}
<div class="submit"><input type="submit" name="page_site" value="$submit" /></div>
diff --git a/view/theme/diabook/bottom.tpl b/view/theme/diabook/bottom.tpl
index 02ad1dcd2..50a15788d 100644
--- a/view/theme/diabook/bottom.tpl
+++ b/view/theme/diabook/bottom.tpl
@@ -14,7 +14,15 @@ $(document).ready(function() {
else $(this).attr("src",ifr_source+"?"+wmode);
});
-
+
+ $("div#pause").attr("style", "position: fixed;bottom: 43px;left: 5px;");
+ $("div#pause").html("<img src='images/pause.gif' alt='pause' title='pause live-updates (ctrl+space)' style='border: 1px solid black;opacity: 0.2;'>");
+ $(document).keydown(function(event) {
+ if (!$("div#pause").html()){
+ $("div#pause").html("<img src='images/pause.gif' alt='pause' title='pause live-updates (ctrl+space)' style='border: 1px solid black;opacity: 0.2;'>");
+ }});
+ $(".autocomplete").attr("style", "width: 350px;color: black;border: 1px solid #D2D2D2;background: white;cursor: pointer;text-align: left;max-height: 350px;overflow: auto;");
+
});
$(document).ready(function(){
@@ -38,6 +46,11 @@ $(document).ready(function() {
$("textarea#comment-edit-text-" +id).autogrow();
};
+ function open_boxsettings() {
+ $("div#boxsettings").attr("style","display: block;height:500px;width:300px;");
+ $("label").attr("style","width: 150px;");
+ };
+
function yt_iframe() {
$("iframe").load(function() {
var ifr_src = $(this).contents().find("body iframe").attr("src");
@@ -67,12 +80,14 @@ $(document).ready(function() {
$("a#top").attr("id","down");
$("a#down").attr("onclick","scrolldown()");
$("img#scroll_top_bottom").attr("src","view/theme/diabook/icons/scroll_bottom.png");
+ $("img#scroll_top_bottom").attr("title","Scroll to bottom");
}
if (scrollInfo > "900"){
$("a#down").attr("id","top");
$("a#top").attr("onclick","scrolltop()");
$("img#scroll_top_bottom").attr("src","view/theme/diabook/icons/scroll_top.png");
+ $("img#scroll_top_bottom").attr("title","Back to top");
}
});
@@ -113,4 +128,6 @@ $(document).ready(function() {
function cmtBbClose(id) {
$(".comment-edit-bb-" + id).hide();
}
+
+
</script>
diff --git a/view/theme/diabook/communityhome.tpl b/view/theme/diabook/communityhome.tpl
index 60d4646cc..caefed3b3 100755
--- a/view/theme/diabook/communityhome.tpl
+++ b/view/theme/diabook/communityhome.tpl
@@ -10,16 +10,7 @@
<div id="mapcontrol" style="display:none;">
<form id="mapform" action="network" method="post" >
-<span style="width: 500px;position: relative;float: right;right:20px;"><p>this ist still under development.
-the idea is to provide a map with different layers(e.g. earth population, atomic power plants, wheat growing acreages, sunrise or what you want)
-and markers(events, demos, friends, anything, that is intersting for you).
-These layer and markers should be importable and deletable by the user.</p>
-<p>help on this feature is very appreciated. i am not that good in js so it's a start, but needs tweaks and further dev.
-just contact me, if you are intesrested in joining</p>
-<p>http://localhost/friendica/profile/thomas</p>
-<p>this is build with <b>mapquery</b> http://mapquery.org/ and
-<b>openlayers</b>http://openlayers.org/</p>
-</span>
+<div id="layermanager" style="width: 350px;position: relative;float: right;right:20px;height: 300px;"></div>
<div id="map2" style="height:350px;width:350px;"></div>
<div id="mouseposition" style="width: 350px;"></div>
{{inc field_input.tpl with $field=$ELZoom}}{{endinc}}
@@ -28,11 +19,22 @@ just contact me, if you are intesrested in joining</p>
<div class="settings-submit-wrapper">
<input id="mapsub" type="submit" value="$sub" class="settings-submit" name="diabook-settings-map-sub"></input>
</div>
+<span style="width: 500px;"><p>this ist still under development.
+the idea is to provide a map with different layers(e.g. earth population, atomic power plants, wheat growing acreages, sunrise or what you want)
+and markers(events, demos, friends, anything, that is intersting for you).
+These layer and markers should be importable and deletable by the user.</p>
+<p>help on this feature is very appreciated. i am not that good in js so it's a start, but needs tweaks and further dev.
+just contact me, if you are intesrested in joining</p>
+<p>https://toktan.org/profile/thomas</p>
+<p>this is build with <b>mapquery</b> http://mapquery.org/ and
+<b>openlayers</b>http://openlayers.org/</p>
+</span>
</form>
</div>
<div id="boxsettings" style="display:none">
<form id="boxsettingsform" action="network" method="post" >
+<fieldset><legend>$boxsettings.title.1</legend>
{{inc field_select.tpl with $field=$close_pages}}{{endinc}}
{{inc field_select.tpl with $field=$close_profiles}}{{endinc}}
{{inc field_select.tpl with $field=$close_helpers}}{{endinc}}
@@ -46,6 +48,7 @@ just contact me, if you are intesrested in joining</p>
<div class="settings-submit-wrapper">
<input id="boxsub" type="submit" value="$sub" class="settings-submit" name="diabook-settings-box-sub"></input>
</div>
+</fieldset>
</form>
</div>
diff --git a/view/theme/diabook/config.php b/view/theme/diabook/config.php
index 84dd64834..cc7da1b00 100644
--- a/view/theme/diabook/config.php
+++ b/view/theme/diabook/config.php
@@ -143,12 +143,12 @@ function diabook_form(&$a, $font_size, $line_height, $resolution, $color, $TSear
'dark'=>'dark',
);
$close_pagesC = array(
- '1'=>'hide',
- '0'=>'show',
+ '0'=>'show',
+ '1'=>'hide',
);
$close_mapqueryC = array(
- '1'=>'hide',
- '0'=>'show',
+ '0'=>'show',
+ '1'=>'hide',
);
$close_profilesC = array(
'0'=>'show',
@@ -167,8 +167,8 @@ function diabook_form(&$a, $font_size, $line_height, $resolution, $color, $TSear
'1'=>'hide',
);
$close_twitterC = array(
- '1'=>'hide',
- '0'=>'show',
+ '0'=>'show',
+ '1'=>'hide',
);
$close_lastusersC = array(
'0'=>'show',
@@ -196,18 +196,18 @@ function diabook_form(&$a, $font_size, $line_height, $resolution, $color, $TSear
'$color' => array('diabook_color', t('Set color scheme'), $color, '', $colors),
'$TSearchTerm' => array('diabook_TSearchTerm', t('Set twitter search term'), $TSearchTerm, '', $TSearchTerm),
'$ELZoom' => array('diabook_ELZoom', t('Set zoomfactor for Earth Layer'), $ELZoom, '', $ELZoom),
- '$ELPosX' => array('diabook_ELPosX', t('Set longitude (X) for Earth Layer'), $ELPosX, '', $ELPosX),
- '$ELPosY' => array('diabook_ELPosY', t('Set latitude (Y) for Earth Layer'), $ELPosY, '', $ELPosY),
- '$close_pages' => array('diabook_close_pages', t('Show "Cummunity Pages" at right-hand coloumn?'), $close_pages, '', $close_pagesC),
- '$close_mapquery' => array('diabook_close_mapquery', t('Show "Earth Layers" at right-hand coloumn?'), $close_mapquery, '', $close_mapqueryC),
- '$close_profiles' => array('diabook_close_profiles', t('Show "Cummunity Profiles" at right-hand coloumn?'), $close_profiles, '', $close_profilesC),
- '$close_helpers' => array('diabook_close_helpers', t('Show "Help or @NewHere" at right-hand coloumn?'), $close_helpers, '', $close_helpersC),
- '$close_services' => array('diabook_close_services', t('Show "Connect Services" at right-hand coloumn?'), $close_services, '', $close_servicesC),
- '$close_friends' => array('diabook_close_friends', t('Show "Find Friends" at right-hand coloumn?'), $close_friends, '', $close_friendsC),
- '$close_twitter' => array('diabook_close_twitter', t('Show "Last Tweets" at right-hand coloumn?'), $close_twitter, '', $close_twitterC),
- '$close_lastusers' => array('diabook_close_lastusers', t('Show "Last Users" at right-hand coloumn?'), $close_lastusers, '', $close_lastusersC),
- '$close_lastphotos' => array('diabook_close_lastphotos', t('Show "Last Photos" at right-hand coloumn?'), $close_lastphotos, '', $close_lastphotosC),
- '$close_lastlikes' => array('diabook_close_lastlikes', t('Show "Last Likes" at right-hand coloumn?'), $close_lastlikes, '', $close_lastlikesC),
+ '$ELPosX' => array('diabook_ELPosX', t('Set longitude (X) for Earth Layers'), $ELPosX, '', $ELPosX),
+ '$ELPosY' => array('diabook_ELPosY', t('Set latitude (Y) for Earth Layers'), $ELPosY, '', $ELPosY),
+ '$close_pages' => array('diabook_close_pages', t('Community Pages'), $close_pages, '', $close_pagesC),
+ '$close_mapquery' => array('diabook_close_mapquery', t('Earth Layers'), $close_mapquery, '', $close_mapqueryC),
+ '$close_profiles' => array('diabook_close_profiles', t('Community Profiles'), $close_profiles, '', $close_profilesC),
+ '$close_helpers' => array('diabook_close_helpers', t('Help or @NewHere ?'), $close_helpers, '', $close_helpersC),
+ '$close_services' => array('diabook_close_services', t('Connect Services'), $close_services, '', $close_servicesC),
+ '$close_friends' => array('diabook_close_friends', t('Find Friends'), $close_friends, '', $close_friendsC),
+ '$close_twitter' => array('diabook_close_twitter', t('Last tweets'), $close_twitter, '', $close_twitterC),
+ '$close_lastusers' => array('diabook_close_lastusers', t('Last users'), $close_lastusers, '', $close_lastusersC),
+ '$close_lastphotos' => array('diabook_close_lastphotos', t('Last photos'), $close_lastphotos, '', $close_lastphotosC),
+ '$close_lastlikes' => array('diabook_close_lastlikes', t('Last likes'), $close_lastlikes, '', $close_lastlikesC),
));
return $o;
}
diff --git a/view/theme/diabook/diabook-aerith/style-wide.css b/view/theme/diabook/diabook-aerith/style-wide.css
index 5c263154f..43c0974b1 100644
--- a/view/theme/diabook/diabook-aerith/style-wide.css
+++ b/view/theme/diabook/diabook-aerith/style-wide.css
@@ -555,6 +555,7 @@ code {
text-decoration: none;
}
/* popup notifications */
+div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
@@ -621,9 +622,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
#message-new {
diff --git a/view/theme/diabook/diabook-aerith/style.css b/view/theme/diabook/diabook-aerith/style.css
index e0f38aff6..b512c8bfe 100644
--- a/view/theme/diabook/diabook-aerith/style.css
+++ b/view/theme/diabook/diabook-aerith/style.css
@@ -555,6 +555,7 @@ code {
text-decoration: none;
}
/* popup notifications */
+div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
@@ -621,9 +622,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
#message-new {
diff --git a/view/theme/diabook/diabook-blue/style-wide.css b/view/theme/diabook/diabook-blue/style-wide.css
index 189f4d559..103047f32 100644
--- a/view/theme/diabook/diabook-blue/style-wide.css
+++ b/view/theme/diabook/diabook-blue/style-wide.css
@@ -554,6 +554,7 @@ code {
text-decoration: none;
}
/* popup notifications */
+div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
@@ -607,9 +608,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
#message-new {
diff --git a/view/theme/diabook/diabook-blue/style.css b/view/theme/diabook/diabook-blue/style.css
index 2b68afc6f..e7f3fd0bc 100644
--- a/view/theme/diabook/diabook-blue/style.css
+++ b/view/theme/diabook/diabook-blue/style.css
@@ -554,6 +554,7 @@ code {
text-decoration: none;
}
/* popup notifications */
+div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
@@ -607,9 +608,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
#message-new {
diff --git a/view/theme/diabook/diabook-dark/style-network.css b/view/theme/diabook/diabook-dark/style-network.css
index d9e2d0094..678e8597c 100644
--- a/view/theme/diabook/diabook-dark/style-network.css
+++ b/view/theme/diabook/diabook-dark/style-network.css
@@ -831,7 +831,7 @@ ul.menu-popup .empty {
box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
}
.acpopupitem {
- color: #2e2f2e;
+ color: #eec;
padding: 4px;
clear: left;
}
diff --git a/view/theme/diabook/diabook-dark/style-wide.css b/view/theme/diabook/diabook-dark/style-wide.css
index 73d0e4c0f..3475408b2 100644
--- a/view/theme/diabook/diabook-dark/style-wide.css
+++ b/view/theme/diabook/diabook-dark/style-wide.css
@@ -553,6 +553,7 @@ code {
text-decoration: none;
}
/* popup notifications */
+div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
@@ -606,9 +607,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
#message-new {
diff --git a/view/theme/diabook/diabook-dark/style.css b/view/theme/diabook/diabook-dark/style.css
index fdc4e6481..189bd30bf 100644
--- a/view/theme/diabook/diabook-dark/style.css
+++ b/view/theme/diabook/diabook-dark/style.css
@@ -3,10 +3,7 @@
* Additional Changes: Michael Vogel <icarus@dabo.de>
**/
-/* ========= */
-/* = Admin = */
-/* ========= */
-
+/** Fancy Box **/
#fancybox-content {
width: 0;
height: 0;
@@ -19,6 +16,11 @@
background: #2e2e2f !important;
}
+
+/* ========= */
+/* = Admin = */
+/* ========= */
+
#adminpage {
/* width: 80%;*/
}
@@ -565,6 +567,7 @@ code {
text-decoration: none;
}
/* popup notifications */
+div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #2e2f2e;
@@ -615,9 +618,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
#message-new {
@@ -634,7 +635,7 @@ header #banner #logo-text {
text-decoration: none;
}
.mail-list-wrapper {
- background-color: #eec;
+ background-color: #333;
margin-bottom: 5px;
width: 100%;
height: auto;
@@ -645,6 +646,7 @@ header #banner #logo-text {
float: left;
width: 20%;
overflow: hidden;
+ background: #2e2e2f;
}
.mail-list-wrapper .mail-subject {
width: 30%;
@@ -916,7 +918,7 @@ nav #nav-apps-link.selected {
}
.notify-seen {
- background: none repeat scroll 0 0 #DDDDDD;
+ background: none repeat scroll 0 0 #666;
}
ul.menu-popup {
@@ -1686,7 +1688,7 @@ body .pageheader{
.wall-item-comment-wrapper .comment-edit-text-full {
font-size: 14px;
height: 4em;
- color: #2e302e;
+ color: #eec;
border: 1px solid #2e302e;
}
.comment-edit-preview {
diff --git a/view/theme/diabook/diabook-green/style-wide.css b/view/theme/diabook/diabook-green/style-wide.css
index d98a6c325..0a9c5e35c 100644
--- a/view/theme/diabook/diabook-green/style-wide.css
+++ b/view/theme/diabook/diabook-green/style-wide.css
@@ -555,6 +555,7 @@ code {
text-decoration: none;
}
/* popup notifications */
+div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
@@ -609,9 +610,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
#message-new {
diff --git a/view/theme/diabook/diabook-green/style.css b/view/theme/diabook/diabook-green/style.css
index 6a9d8f7d0..762310e4d 100644
--- a/view/theme/diabook/diabook-green/style.css
+++ b/view/theme/diabook/diabook-green/style.css
@@ -557,6 +557,7 @@ code {
text-decoration: none;
}
/* popup notifications */
+div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
@@ -611,9 +612,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/*color*/
/* messages */
diff --git a/view/theme/diabook/diabook-pink/style-wide.css b/view/theme/diabook/diabook-pink/style-wide.css
index 849566aa0..e85c58850 100644
--- a/view/theme/diabook/diabook-pink/style-wide.css
+++ b/view/theme/diabook/diabook-pink/style-wide.css
@@ -555,6 +555,7 @@ code {
text-decoration: none;
}
/* popup notifications */
+div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
@@ -609,9 +610,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
#message-new {
diff --git a/view/theme/diabook/diabook-pink/style.css b/view/theme/diabook/diabook-pink/style.css
index 798d73979..248e3ead0 100644
--- a/view/theme/diabook/diabook-pink/style.css
+++ b/view/theme/diabook/diabook-pink/style.css
@@ -557,6 +557,7 @@ code {
text-decoration: none;
}
/* popup notifications */
+div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
@@ -611,9 +612,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
/*color*/
diff --git a/view/theme/diabook/diabook-red/style-wide.css b/view/theme/diabook/diabook-red/style-wide.css
index b9ea238e2..b068a2f5d 100644
--- a/view/theme/diabook/diabook-red/style-wide.css
+++ b/view/theme/diabook/diabook-red/style-wide.css
@@ -554,6 +554,7 @@ code {
text-decoration: none;
}
/* popup notifications */
+div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
@@ -619,10 +620,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
- margin-left: 3px;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
#message-new {
diff --git a/view/theme/diabook/diabook-red/style.css b/view/theme/diabook/diabook-red/style.css
index 05c802102..37e26b8b9 100644
--- a/view/theme/diabook/diabook-red/style.css
+++ b/view/theme/diabook/diabook-red/style.css
@@ -554,6 +554,7 @@ code {
text-decoration: none;
}
/* popup notifications */
+div.jGrowl.top-right { top: 30px; /* put it below header/nav bar */ }
div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
@@ -619,10 +620,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
- margin-left: 3px;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
#message-new {
diff --git a/view/theme/diabook/jquery-ui-1.8.20.custom.css b/view/theme/diabook/jquery-ui-1.8.20.custom.css
new file mode 100644
index 000000000..a180bee27
--- /dev/null
+++ b/view/theme/diabook/jquery-ui-1.8.20.custom.css
@@ -0,0 +1,512 @@
+/*!
+ * jQuery UI CSS Framework 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
+.ui-helper-clearfix:after { clear: both; }
+.ui-helper-clearfix { zoom: 1; }
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*!
+ * jQuery UI CSS Framework 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; 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: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
+.ui-widget-content a { color: #333333; }
+.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
+.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*!
+ * jQuery UI Resizable 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*!
+ * jQuery UI Selectable 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*!
+ * jQuery UI Accordion 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.ui-accordion { width: 100%; }
+.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.ui-accordion .ui-accordion-li-fix { display: inline; }
+.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.ui-accordion .ui-accordion-content-active { display: block; }
+/*!
+ * jQuery UI Button 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
+
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4; }
+.ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*!
+ * jQuery UI Dialog 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*!
+ * jQuery UI Slider 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }/*!
+ * jQuery UI Tabs 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
+/*!
+ * jQuery UI Datepicker 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+ display: none; /*sorry for IE5*/
+ display/**/: block; /*sorry for IE5*/
+ position: absolute; /*must have*/
+ z-index: -1; /*must have*/
+ filter: mask(); /*must have*/
+ top: -4px; /*must have*/
+ left: -4px; /*must have*/
+ width: 200px; /*must have*/
+ height: 200px; /*must have*/
+}/*!
+ * jQuery UI Progressbar 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file
diff --git a/view/theme/diabook/js/jquery-ui-1.8.20.custom.min.js b/view/theme/diabook/js/jquery-ui-1.8.20.custom.min.js
index 8b173d965..de1d7ec14 100644
--- a/view/theme/diabook/js/jquery-ui-1.8.20.custom.min.js
+++ b/view/theme/diabook/js/jquery-ui-1.8.20.custom.min.js
@@ -40,10 +40,6 @@
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
(function(a,b){a.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:!0,clearStyle:!1,collapsible:!1,event:"click",fillSpace:!1,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var b=this,c=b.options;b.running=0,b.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"),b.headers=b.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){if(c.disabled)return;a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){if(c.disabled)return;a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){if(c.disabled)return;a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){if(c.disabled)return;a(this).removeClass("ui-state-focus")}),b.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");if(c.navigation){var d=b.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var e=d.closest(".ui-accordion-header");e.length?b.active=e:b.active=d.closest(".ui-accordion-content").prev()}}b.active=b._findActive(b.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top"),b.active.next().addClass("ui-accordion-content-active"),b._createIcons(),b.resize(),b.element.attr("role","tablist"),b.headers.attr("role","tab").bind("keydown.accordion",function(a){return b._keydown(a)}).next().attr("role","tabpanel"),b.headers.not(b.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide(),b.active.length?b.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):b.headers.eq(0).attr("tabIndex",0),a.browser.safari||b.headers.find("a").attr("tabIndex",-1),c.event&&b.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(a){b._clickHandler.call(b,a,this),a.preventDefault()})},_createIcons:function(){var b=this.options;b.icons&&(a("<span></span>").addClass("ui-icon "+b.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(b.icons.header).toggleClass(b.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove(),this.element.removeClass("ui-accordion-icons")},destroy:function(){var b=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"),this.headers.find("a").removeAttr("tabIndex"),this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");return(b.autoHeight||b.fillHeight)&&c.css("height",""),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b=="active"&&this.activate(c),b=="icons"&&(this._destroyIcons(),c&&this._createIcons()),b=="disabled"&&this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(b){if(this.options.disabled||b.altKey||b.ctrlKey)return;var c=a.ui.keyCode,d=this.headers.length,e=this.headers.index(b.target),f=!1;switch(b.keyCode){case c.RIGHT:case c.DOWN:f=this.headers[(e+1)%d];break;case c.LEFT:case c.UP:f=this.headers[(e-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:b.target},b.target),b.preventDefault()}return f?(a(b.target).attr("tabIndex",-1),a(f).attr("tabIndex",0),f.focus(),!1):!0},resize:function(){var b=this.options,c;if(b.fillSpace){if(a.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height(),a.browser.msie&&this.element.parent().css("overflow",d),this.headers.each(function(){c-=a(this).outerHeight(!0)}),this.headers.next().each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+a(this).height()))}).css("overflow","auto")}else b.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,a(this).height("").height())}).height(c));return this},activate:function(a){this.options.active=a;var b=this._findActive(a)[0];return this._clickHandler({target:b},b),this},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===!1?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(b,c){var d=this.options;if(d.disabled)return;if(!b.target){if(!d.collapsible)return;this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),this.active.next().addClass("ui-accordion-content-active");var e=this.active.next(),f={options:d,newHeader:a([]),oldHeader:d.active,newContent:a([]),oldContent:e},g=this.active=a([]);this._toggle(g,e,f);return}var h=a(b.currentTarget||c),i=h[0]===this.active[0];d.active=d.collapsible&&i?!1:this.headers.index(h);if(this.running||!d.collapsible&&i)return;var j=this.active,g=h.next(),e=this.active.next(),f={options:d,newHeader:i&&d.collapsible?a([]):h,oldHeader:this.active,newContent:i&&d.collapsible?a([]):g,oldContent:e},k=this.headers.index(this.active[0])>this.headers.index(h[0]);this.active=i?a([]):h,this._toggle(g,e,f,i,k),j.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),i||(h.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),h.next().addClass("ui-accordion-content-active"));return},_toggle:function(b,c,d,e,f){var g=this,h=g.options;g.toShow=b,g.toHide=c,g.data=d;var i=function(){if(!g)return;return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data),g.running=c.size()===0?b.size():c.size();if(h.animated){var j={};h.collapsible&&e?j={toShow:a([]),toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace}:j={toShow:b,toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace},h.proxied||(h.proxied=h.animated),h.proxiedDuration||(h.proxiedDuration=h.duration),h.animated=a.isFunction(h.proxied)?h.proxied(j):h.proxied,h.duration=a.isFunction(h.proxiedDuration)?h.proxiedDuration(j):h.proxiedDuration;var k=a.ui.accordion.animations,l=h.duration,m=h.animated;m&&!k[m]&&!a.easing[m]&&(m="slide"),k[m]||(k[m]=function(a){this.slide(a,{easing:m,duration:l||700})}),k[m](j)}else h.collapsible&&e?b.toggle():(c.hide(),b.show()),i(!0);c.prev().attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).blur(),b.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(this.running)return;this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),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.20",animations:{slide:function(b,c){b=a.extend({easing:"swing",duration:300},b,c);if(!b.toHide.size()){b.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},b);return}if(!b.toShow.size()){b.toHide.animate({height:"hide",paddingTop:"hide",paddingBottom:"hide"},b);return}var d=b.toShow.css("overflow"),e=0,f={},g={},h=["height","paddingTop","paddingBottom"],i,j=b.toShow;i=j[0].style.width,j.width(j.parent().width()-parseFloat(j.css("paddingLeft"))-parseFloat(j.css("paddingRight"))-(parseFloat(j.css("borderLeftWidth"))||0)-(parseFloat(j.css("borderRightWidth"))||0)),a.each(h,function(c,d){g[d]="hide";var e=(""+a.css(b.toShow[0],d)).match(/^([\d+-.]+)(.*)$/);f[d]={value:e[1],unit:e[2]||"px"}}),b.toShow.css({height:0,overflow:"hidden"}).show(),b.toHide.filter(":hidden").each(b.complete).end().filter(":visible").animate(g,{step:function(a,c){c.prop=="height"&&(e=c.end-c.start===0?0:(c.now-c.start)/(c.end-c.start)),b.toShow[0].style[c.prop]=e*f[c.prop].value+f[c.prop].unit},duration:b.duration,easing:b.easing,complete:function(){b.autoHeight||b.toShow.css("height",""),b.toShow.css({width:i,overflow:d}),b.complete()}})},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1e3:200})}}})})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
* https://github.com/jquery/jquery-ui
-* Includes: jquery.ui.autocomplete.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.isMultiLine=this.element.is("textarea"),this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(b.options.disabled||b.element.propAttr("readOnly"))return;d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._keyEvent("previous",c);break;case e.DOWN:b._keyEvent("next",c);break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){if(b.options.disabled)return;b.selectedItem=null,b.previous=b.element.val()}).bind("blur.autocomplete",function(a){if(b.options.disabled)return;clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150)}),this._initSource(),this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,c,d;a.isArray(this.options.source)?(c=this.options.source,this.source=function(b,d){d(a.ui.autocomplete.filter(c,b.term))}):typeof this.options.source=="string"?(d=this.options.source,this.source=function(c,e){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:d,data:c,dataType:"json",success:function(a,b){e(a)},error:function(){e([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)===!1)return;return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this._response())},_response:function(){var a=this,b=++c;return function(d){b===c&&a.__response(d),a.pending--,a.pending||a.element.removeClass("ui-autocomplete-loading")}},__response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close()},close:function(a){clearTimeout(this.closing),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",a))},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(b){return b.length&&b[0].label&&b[0].value?b:a.map(b,function(b){return typeof b=="string"?{label:b,value:b}:a.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(c,b),this.menu.deactivate(),this.menu.refresh(),c.show(),this._resizeMenu(),c.position(a.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(b,c){var d=this;a.each(c,function(a,c){d._renderItem(b,c)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append(a("<a></a>").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible")){this.search(null,b);return}if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)},widget:function(){return this.menu.element},_keyEvent:function(a,b){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(a,b),b.preventDefault()}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(!a(c.target).closest(".ui-menu-item a").length)return;c.preventDefault(),b.select(c)}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){if(!this.active)return;this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active){this.activate(c,this.element.children(b));return}var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:first")),this.activate(b,e)}else this.activate(b,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(a){this._trigger("selected",a,{item:this.active})}})}(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
* Includes: jquery.ui.button.js
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
(function(a,b){var c,d,e,f,g="ui-button ui-widget ui-state-default ui-corner-all",h="ui-state-hover ui-state-active ",i="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",j=function(){var b=a(this).find(":ui-button");setTimeout(function(){b.button("refresh")},1)},k=function(b){var c=b.name,d=b.form,e=a([]);return c&&(d?e=a(d).find("[name='"+c+"']"):e=a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form})),e};a.widget("ui.button",{options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",j),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.propAttr("disabled"):this.element.propAttr("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var b=this,h=this.options,i=this.type==="checkbox"||this.type==="radio",l="ui-state-hover"+(i?"":" ui-state-active"),m="ui-state-focus";h.label===null&&(h.label=this.buttonElement.html()),this.buttonElement.addClass(g).attr("role","button").bind("mouseenter.button",function(){if(h.disabled)return;a(this).addClass("ui-state-hover"),this===c&&a(this).addClass("ui-state-active")}).bind("mouseleave.button",function(){if(h.disabled)return;a(this).removeClass(l)}).bind("click.button",function(a){h.disabled&&(a.preventDefault(),a.stopImmediatePropagation())}),this.element.bind("focus.button",function(){b.buttonElement.addClass(m)}).bind("blur.button",function(){b.buttonElement.removeClass(m)}),i&&(this.element.bind("change.button",function(){if(f)return;b.refresh()}),this.buttonElement.bind("mousedown.button",function(a){if(h.disabled)return;f=!1,d=a.pageX,e=a.pageY}).bind("mouseup.button",function(a){if(h.disabled)return;if(d!==a.pageX||e!==a.pageY)f=!0})),this.type==="checkbox"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).toggleClass("ui-state-active"),b.buttonElement.attr("aria-pressed",b.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).addClass("ui-state-active"),b.buttonElement.attr("aria-pressed","true");var c=b.element[0];k(c).not(c).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown.button",function(){if(h.disabled)return!1;a(this).addClass("ui-state-active"),c=this,a(document).one("mouseup",function(){c=null})}).bind("mouseup.button",function(){if(h.disabled)return!1;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(b){if(h.disabled)return!1;(b.keyCode==a.ui.keyCode.SPACE||b.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(b){b.keyCode===a.ui.keyCode.SPACE&&a(this).click()})),this._setOption("disabled",h.disabled),this._resetButton()},_determineButtonType:function(){this.element.is(":checkbox")?this.type="checkbox":this.element.is(":radio")?this.type="radio":this.element.is("input")?this.type="input":this.type="button";if(this.type==="checkbox"||this.type==="radio"){var a=this.element.parents().filter(":last"),b="label[for='"+this.element.attr("id")+"']";this.buttonElement=a.find(b),this.buttonElement.length||(a=a.length?a.siblings():this.element.siblings(),this.buttonElement=a.filter(b),this.buttonElement.length||(this.buttonElement=a.find(b))),this.element.addClass("ui-helper-hidden-accessible");var c=this.element.is(":checked");c&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.attr("aria-pressed",c)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(g+" "+h+" "+i).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title"),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled"){c?this.element.propAttr("disabled",!0):this.element.propAttr("disabled",!1);return}this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b),this.type==="radio"?k(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")}):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);return}var b=this.buttonElement.removeClass(i),c=a("<span></span>",this.element[0].ownerDocument).addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary,f=[];d.primary||d.secondary?(this.options.text&&f.push("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary")),d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>"),d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>"),this.options.text||(f.push(e?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||b.attr("title",c))):f.push("ui-button-text-only"),b.addClass(f.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,c){b==="disabled"&&this.buttons.button("option",b,c),a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var b=this.element.css("direction")==="rtl";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-right":"ui-corner-left").end().filter(":last").addClass(b?"ui-corner-left":"ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"),a.Widget.prototype.destroy.call(this)}})})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
@@ -66,60 +62,4 @@
* https://github.com/jquery/jquery-ui
* Includes: jquery.ui.progressbar.js
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){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(a){return a===b?this._value():(this._setOption("value",a),this)},_setOption:function(b,c){b==="value"&&(this.options.value=c,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;return typeof a!="number"&&(a=0),Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change")),this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a.extend(a.ui.progressbar,{version:"1.8.20"})})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.core.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-jQuery.effects||function(a,b){function c(b){var c;return b&&b.constructor==Array&&b.length==3?b:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b))?[parseFloat(c[1])*2.55,parseFloat(c[2])*2.55,parseFloat(c[3])*2.55]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b))?[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:(c=/rgba\(0, 0, 0, 0\)/.exec(b))?e.transparent:e[a.trim(b).toLowerCase()]}function d(b,d){var e;do{e=a.curCSS(b,d);if(e!=""&&e!="transparent"||a.nodeName(b,"body"))break;d="backgroundColor"}while(b=b.parentNode);return c(e)}function h(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]]){var e=a.length;while(e--)c=a[e],typeof a[c]=="string"&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c])}else for(c in a)typeof a[c]=="string"&&(b[c]=a[c]);return b}function i(b){var c,d;for(c in b)d=b[c],(d==null||a.isFunction(d)||c in g||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete b[c];return b}function j(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function k(b,c,d,e){typeof b=="object"&&(e=c,d=null,c=b,b=c.effect),a.isFunction(c)&&(e=c,d=null,c={});if(typeof c=="number"||a.fx.speeds[c])e=d,d=c,c={};return a.isFunction(d)&&(e=d,d=null),c=c||{},d=d||c.duration,d=a.fx.off?0:typeof d=="number"?d:d in a.fx.speeds?a.fx.speeds[d]:a.fx.speeds._default,e=e||c.complete,[b,c,d,e]}function l(b){return!b||typeof b=="number"||a.fx.speeds[b]?!0:typeof b=="string"&&!a.effects[b]?!0:!1}a.effects={},a.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(b,e){a.fx.step[e]=function(a){a.colorInit||(a.start=d(a.elem,e),a.end=c(a.end),a.colorInit=!0),a.elem.style[e]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var e={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},f=["add","remove","toggle"],g={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(b,c,d,e){return a.isFunction(d)&&(e=d,d=null),this.queue(function(){var g=a(this),k=g.attr("style")||" ",l=i(h.call(this)),m,n=g.attr("class")||"";a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),m=i(h.call(this)),g.attr("class",n),g.animate(j(l,m),{queue:!1,duration:c,easing:d,complete:function(){a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),typeof g.attr("style")=="object"?(g.attr("style").cssText="",g.attr("style").cssText=k):g.attr("style",k),e&&e.apply(this,arguments),a.dequeue(this)}})})},a.fn.extend({_addClass:a.fn.addClass,addClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{add:b},c,d,e]):this._addClass(b)},_removeClass:a.fn.removeClass,removeClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{remove:b},c,d,e]):this._removeClass(b)},_toggleClass:a.fn.toggleClass,toggleClass:function(c,d,e,f,g){return typeof d=="boolean"||d===b?e?a.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):a.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(b,c,d,e,f){return a.effects.animateClass.apply(this,[{add:c,remove:b},d,e,f])}}),a.extend(a.effects,{version:"1.8.20",save:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.data("ec.storage."+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.css(b[c],a.data("ec.storage."+b[c]))},setMode:function(a,b){return b=="toggle"&&(b=a.is(":hidden")?"show":"hide"),b},getBaseline:function(a,b){var c,d;switch(a[0]){case"top":c=0;break;case"middle":c=.5;break;case"bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case"left":d=0;break;case"center":d=.5;break;case"right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createWrapper:function(b){if(b.parent().is(".ui-effects-wrapper"))return b.parent();var c={width:b.outerWidth(!0),height:b.outerHeight(!0),"float":b.css("float")},d=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e=document.activeElement;return b.wrap(d),(b[0]===e||a.contains(b[0],e))&&a(e).focus(),d=b.parent(),b.css("position")=="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;return b.parent().is(".ui-effects-wrapper")?(c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus(),c):b},setTransition:function(b,c,d,e){return e=e||{},a.each(c,function(a,c){var f=b.cssUnit(c);f[0]>0&&(e[c]=f[0]*d+f[1])}),e}}),a.fn.extend({effect:function(b,c,d,e){var f=k.apply(this,arguments),g={options:f[1],duration:f[2],callback:f[3]},h=g.options.mode,i=a.effects[b];return a.fx.off||!i?h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)}):i.call(this,g)},_show:a.fn.show,show:function(a){if(l(a))return this._show.apply(this,arguments);var b=k.apply(this,arguments);return b[1].mode="show",this.effect.apply(this,b)},_hide:a.fn.hide,hide:function(a){if(l(a))return this._hide.apply(this,arguments);var b=k.apply(this,arguments);return b[1].mode="hide",this.effect.apply(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(l(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=k.apply(this,arguments);return c[1].mode="toggle",this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];return a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])}),d}}),a.easing.jswing=a.easing.swing,a.extend(a.easing,{def:"easeOutQuad",swing:function(b,c,d,e,f){return a.easing[a.easing.def](b,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return b==0?c:b==e?c+d:(b/=e/2)<1?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){return(b/=e/2)<1?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e/2)==2)return c+d;g||(g=e*.3*1.5);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return b<1?-0.5*h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+c:h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)*.5+d+c},easeInBack:function(a,c,d,e,f,g){return g==b&&(g=1.70158),e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(a,c,d,e,f,g){return g==b&&(g=1.70158),e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(a,c,d,e,f,g){return g==b&&(g=1.70158),(c/=f/2)<1?e/2*c*c*(((g*=1.525)+1)*c-g)+d:e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(b,c,d,e,f){return e-a.easing.easeOutBounce(b,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(b,c,d,e,f){return c<f/2?a.easing.easeInBounce(b,c*2,0,e,f)*.5+d:a.easing.easeOutBounce(b,c*2-f,0,e,f)*.5+e*.5+d}})}(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.blind.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.blind=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=f=="vertical"?"height":"width",i=f=="vertical"?g.height():g.width();e=="show"&&g.css(h,0);var j={};j[h]=e=="show"?i:0,g.animate(j,b.duration,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.bounce.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.bounce=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"up",g=b.options.distance||20,h=b.options.times||5,i=b.duration||250;/show|hide/.test(e)&&d.push("opacity"),a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",g=b.options.distance||(j=="top"?c.outerHeight({margin:!0})/3:c.outerWidth({margin:!0})/3);e=="show"&&c.css("opacity",0).css(j,k=="pos"?-g:g),e=="hide"&&(g=g/(h*2)),e!="hide"&&h--;if(e=="show"){var l={opacity:1};l[j]=(k=="pos"?"+=":"-=")+g,c.animate(l,i/2,b.options.easing),g=g/2,h--}for(var m=0;m<h;m++){var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing),g=e=="hide"?g*2:g/2}if(e=="hide"){var l={opacity:0};l[j]=(k=="pos"?"-=":"+=")+g,c.animate(l,i/2,b.options.easing,function(){c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}else{var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.clip.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.clip=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","height","width"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=c[0].tagName=="IMG"?g:c,i={size:f=="vertical"?"height":"width",position:f=="vertical"?"top":"left"},j=f=="vertical"?h.height():h.width();e=="show"&&(h.css(i.size,0),h.css(i.position,j/2));var k={};k[i.size]=e=="show"?j:0,k[i.position]=e=="show"?0:j/2,h.animate(k,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()}})})}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.drop.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.drop=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","opacity"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0})/2:c.outerWidth({margin:!0})/2);e=="show"&&c.css("opacity",0).css(g,h=="pos"?-i:i);var j={opacity:e=="show"?1:0};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.explode.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.explode=function(b){return this.queue(function(){var c=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3,d=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;b.options.mode=b.options.mode=="toggle"?a(this).is(":visible")?"hide":"show":b.options.mode;var e=a(this).show().css("visibility","hidden"),f=e.offset();f.top-=parseInt(e.css("marginTop"),10)||0,f.left-=parseInt(e.css("marginLeft"),10)||0;var g=e.outerWidth(!0),h=e.outerHeight(!0);for(var i=0;i<c;i++)for(var j=0;j<d;j++)e.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-j*(g/d),top:-i*(h/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/d,height:h/c,left:f.left+j*(g/d)+(b.options.mode=="show"?(j-Math.floor(d/2))*(g/d):0),top:f.top+i*(h/c)+(b.options.mode=="show"?(i-Math.floor(c/2))*(h/c):0),opacity:b.options.mode=="show"?0:1}).animate({left:f.left+j*(g/d)+(b.options.mode=="show"?0:(j-Math.floor(d/2))*(g/d)),top:f.top+i*(h/c)+(b.options.mode=="show"?0:(i-Math.floor(c/2))*(h/c)),opacity:b.options.mode=="show"?1:0},b.duration||500);setTimeout(function(){b.options.mode=="show"?e.css({visibility:"visible"}):e.css({visibility:"visible"}).hide(),b.callback&&b.callback.apply(e[0]),e.dequeue(),a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.fade.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.fade=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.fold.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.fold=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.size||15,g=!!b.options.horizFirst,h=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(c,d),c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"}),j=e=="show"!=g,k=j?["width","height"]:["height","width"],l=j?[i.width(),i.height()]:[i.height(),i.width()],m=/([0-9]+)%/.exec(f);m&&(f=parseInt(m[1],10)/100*l[e=="hide"?0:1]),e=="show"&&i.css(g?{height:0,width:f}:{height:f,width:0});var n={},p={};n[k[0]]=e=="show"?l[0]:f,p[k[1]]=e=="show"?l[1]:0,i.animate(n,h,b.options.easing).animate(p,h,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.highlight.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.highlight=function(b){return this.queue(function(){var c=a(this),d=["backgroundImage","backgroundColor","opacity"],e=a.effects.setMode(c,b.options.mode||"show"),f={backgroundColor:c.css("backgroundColor")};e=="hide"&&(f.opacity=0),a.effects.save(c,d),c.show().css({backgroundImage:"none",backgroundColor:b.options.color||"#ffff99"}).animate(f,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),e=="show"&&!a.support.opacity&&this.style.removeAttribute("filter"),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.pulsate.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.pulsate=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"show"),e=(b.options.times||5)*2-1,f=b.duration?b.duration/2:a.fx.speeds._default/2,g=c.is(":visible"),h=0;g||(c.css("opacity",0).show(),h=1),(d=="hide"&&g||d=="show"&&!g)&&e--;for(var i=0;i<e;i++)c.animate({opacity:h},f,b.options.easing),h=(h+1)%2;c.animate({opacity:h},f,b.options.easing,function(){h==0&&c.hide(),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}).dequeue()})}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.scale.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.puff=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide"),e=parseInt(b.options.percent,10)||150,f=e/100,g={height:c.height(),width:c.width()};a.extend(b.options,{fade:!0,mode:d,percent:d=="hide"?e:100,from:d=="hide"?g:{height:g.height*f,width:g.width*f}}),c.effect("scale",b.options,b.duration,b.callback),c.dequeue()})},a.effects.scale=function(b){return this.queue(function(){var c=a(this),d=a.extend(!0,{},b.options),e=a.effects.setMode(c,b.options.mode||"effect"),f=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:e=="hide"?0:100),g=b.options.direction||"both",h=b.options.origin;e!="effect"&&(d.origin=h||["middle","center"],d.restore=!0);var i={height:c.height(),width:c.width()};c.from=b.options.from||(e=="show"?{height:0,width:0}:i);var j={y:g!="horizontal"?f/100:1,x:g!="vertical"?f/100:1};c.to={height:i.height*j.y,width:i.width*j.x},b.options.fade&&(e=="show"&&(c.from.opacity=0,c.to.opacity=1),e=="hide"&&(c.from.opacity=1,c.to.opacity=0)),d.from=c.from,d.to=c.to,d.mode=e,c.effect("size",d,b.duration,b.callback),c.dequeue()})},a.effects.size=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","width","height","overflow","opacity"],e=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],g=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],i=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],j=a.effects.setMode(c,b.options.mode||"effect"),k=b.options.restore||!1,l=b.options.scale||"both",m=b.options.origin,n={height:c.height(),width:c.width()};c.from=b.options.from||n,c.to=b.options.to||n;if(m){var p=a.effects.getBaseline(m,n);c.from.top=(n.height-c.from.height)*p.y,c.from.left=(n.width-c.from.width)*p.x,c.to.top=(n.height-c.to.height)*p.y,c.to.left=(n.width-c.to.width)*p.x}var q={from:{y:c.from.height/n.height,x:c.from.width/n.width},to:{y:c.to.height/n.height,x:c.to.width/n.width}};if(l=="box"||l=="both")q.from.y!=q.to.y&&(d=d.concat(h),c.from=a.effects.setTransition(c,h,q.from.y,c.from),c.to=a.effects.setTransition(c,h,q.to.y,c.to)),q.from.x!=q.to.x&&(d=d.concat(i),c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to));(l=="content"||l=="both")&&q.from.y!=q.to.y&&(d=d.concat(g),c.from=a.effects.setTransition(c,g,q.from.y,c.from),c.to=a.effects.setTransition(c,g,q.to.y,c.to)),a.effects.save(c,k?d:e),c.show(),a.effects.createWrapper(c),c.css("overflow","hidden").css(c.from);if(l=="content"||l=="both")h=h.concat(["marginTop","marginBottom"]).concat(g),i=i.concat(["marginLeft","marginRight"]),f=d.concat(h).concat(i),c.find("*[width]").each(function(){var c=a(this);k&&a.effects.save(c,f);var d={height:c.height(),width:c.width()};c.from={height:d.height*q.from.y,width:d.width*q.from.x},c.to={height:d.height*q.to.y,width:d.width*q.to.x},q.from.y!=q.to.y&&(c.from=a.effects.setTransition(c,h,q.from.y,c.from),c.to=a.effects.setTransition(c,h,q.to.y,c.to)),q.from.x!=q.to.x&&(c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to)),c.css(c.from),c.animate(c.to,b.duration,b.options.easing,function(){k&&a.effects.restore(c,f)})});c.animate(c.to,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){c.to.opacity===0&&c.css("opacity",c.from.opacity),j=="hide"&&c.hide(),a.effects.restore(c,k?d:e),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.shake.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.shake=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"left",g=b.options.distance||20,h=b.options.times||3,i=b.duration||b.options.duration||140;a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",l={},m={},n={};l[j]=(k=="pos"?"-=":"+=")+g,m[j]=(k=="pos"?"+=":"-=")+g*2,n[j]=(k=="pos"?"-=":"+=")+g*2,c.animate(l,i,b.options.easing);for(var p=1;p<h;p++)c.animate(m,i,b.options.easing).animate(n,i,b.options.easing);c.animate(m,i,b.options.easing).animate(l,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.slide.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.slide=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"show"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c).css({overflow:"hidden"});var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0}):c.outerWidth({margin:!0}));e=="show"&&c.css(g,h=="pos"?isNaN(i)?"-"+i:-i:i);var j={};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30
-* https://github.com/jquery/jquery-ui
-* Includes: jquery.effects.transfer.js
-* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
-(function(a,b){a.effects.transfer=function(b){return this.queue(function(){var c=a(this),d=a(b.options.to),e=d.offset(),f={top:e.top,left:e.left,height:d.innerHeight(),width:d.innerWidth()},g=c.offset(),h=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(f,b.duration,b.options.easing,function(){h.remove(),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);; \ No newline at end of file
+(function(a,b){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(a){return a===b?this._value():(this._setOption("value",a),this)},_setOption:function(b,c){b==="value"&&(this.options.value=c,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;return typeof a!="number"&&(a=0),Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change")),this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a.extend(a.ui.progressbar,{version:"1.8.20"})})(jQuery);; \ No newline at end of file
diff --git a/view/theme/diabook/js/jquery.mapquery.core.js b/view/theme/diabook/js/jquery.mapquery.core.js
index 606a343f4..b9dd16c8b 100644
--- a/view/theme/diabook/js/jquery.mapquery.core.js
+++ b/view/theme/diabook/js/jquery.mapquery.core.js
@@ -17,11 +17,11 @@ the matched element
**options** an object of key-value pairs with options for the map. Possible
pairs are:
- * **layers** (array of MapQuery.Layer *or* MapQuery.Layer): Either an array
- * or a single layer that should be added to the map
+ * **layers** (array of MapQuery.Layer *or* MapQuery.Layer): Either an array
+ or a single layer that should be added to the map
* **center** ({position: [x,y], zoom: z(int), box: [llx,lly,urx,ury]}):
- * Initially go to a certain location. At least one layer (in the `layers`
- * option) needs to be specified.
+ Initially go to a certain location. At least one layer (in the `layers`
+ option) needs to be specified.
> Returns: $('selector') (jQuery object)
@@ -68,6 +68,8 @@ $.MapQuery.Map = function(element, options) {
delete this.olMapOptions.layers;
delete this.olMapOptions.maxExtent;
delete this.olMapOptions.zoomToMaxExtent;
+ delete this.olMapOptions.center;
+
//TODO SMO20110630 the maxExtent is in mapprojection, decide whether or
//not we need to change it to displayProjection
this.maxExtent = this.options.maxExtent;
@@ -75,6 +77,9 @@ $.MapQuery.Map = function(element, options) {
this.maxExtent[0],this.maxExtent[1],this.maxExtent[2],this.maxExtent[3]);
+ this.projection = this.options.projection;
+ this.displayProjection = this.options.displayProjection;
+
OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
OpenLayers.Util.onImageLoadErrorColor = "transparent";
@@ -96,14 +101,46 @@ $.MapQuery.Map = function(element, options) {
// To bind and trigger jQuery events
this.events = $({});
- // create triggers for all OpenLayers map events
- var events = {};
- $.each(this.olMap.EVENT_TYPES, function(i, evt) {
- events[evt] = function() {
- self.events.trigger(evt, arguments);
- };
+
+ this.handlers = {
+ // Triggers the jQuery events, after the OpenLayers events
+ // happened without any further processing
+ simple: function(data) {
+ this.trigger(data.type);
+ }
+ };
+
+ // MapQuery doesn't bind all OpenLayers events automatically,
+ // but just the ones that make sense.
+ // Events that are left out intensionally are:
+ // - changebaselayer: MapQuery doesn't have the concept of base layers
+ // - mouseover, mouseout, mousemove: Handle those with jQuery on the
+ // DOM level
+ // Some events can be triggered by MapQuery without listening to the
+ // OpenLayers events. This only works for events that are triggered
+ // by functionality that MapQuery implements in some custom way, e.g.
+ // (pre)addlayer, (pre)removelayer, changelayer.
+ // TODO vmx 20120309: Proper docs for the events, here's some quickly
+ // written info:
+ // - generally spoken, the map events follow the OpeLayer events
+ // - preaddlayer, movestart, move, moveend, zoomend: no additional
+ // argument
+ // - addlayer, preremovelayer, removelayer: layer as additional argument
+ // - changelayer: layer and the property that changed as additional
+ // argument. Possible values for the property are: position (in
+ // the layer stack), opacity, visibility
+ // Currently this event is always fired, even if the property
+ // was only meant to be changed, but wasn't exctually changed.
+ // I.e. that the event is fired even if you call
+ // `layer.visible(true)` although the layer is already visible.
+ // I'm (vmx) not sure if we want to change that :)
+ this.olMap.events.on({
+ scope: this,
+ movestart: this.handlers.simple,
+ move: this.handlers.simple,
+ moveend: this.handlers.simple,
+ zoomend: this.handlers.simple
});
- this.olMap.events.on(events);
// Add layers to the map
if (this.options.layers!==undefined) {
@@ -129,7 +166,7 @@ _version added 0.1_
**options** an object of key-value pairs with options to create one or
more layers
->Returns: [layer] (array of MapQuery.Layer)
+>Returns: [layer] (array of MapQuery.Layer) _or_ false
The `.layers()` method allows us to attach layers to a mapQuery object. It takes
@@ -138,6 +175,10 @@ layer options objects. If an options object is given, it will return the
resulting layer(s). We can also use it to retrieve all layers currently attached
to the map.
+When adding layers, those are returned. If the creation is cancled by returning
+`false` in the `preaddlayer` event, this function returns `false` to
+intentionally break the chain instead of hiding errors subtly).
+
var osm = map.layers({type:'osm'}); //add an osm layer to the map
var layers = map.layers(); //get all layers of the map
@@ -156,7 +197,7 @@ to the map.
else {
return $.map(options, function(layer) {
return self._addLayer(layer);
- });
+ }).reverse();
}
break;
default:
@@ -182,27 +223,43 @@ to the map.
_addLayer: function(options) {
var id = this._createId();
var layer = new $.MapQuery.Layer(this, id, options);
+ // NOTE vmx 20120305: Not sure if this is a good idea, or if it would
+ // be better to include `options` with the preaddlayer event
+ if (this._triggerReturn('preaddlayer', [layer])===false) {
+ return false;
+ }
+ this.olMap.addLayer(layer.olLayer);
+
this.layersList[id] = layer;
if (layer.isVector) {
this.vectorLayers.push(id);
}
this._updateSelectFeatureControl(this.vectorLayers);
- this.events.trigger('mqAddLayer',layer);
+
+ layer.trigger('addlayer');
return layer;
},
// Creates a new unique ID for a layer
_createId: function() {
- return 'mapquery' + this.idCounter++;
+ return 'mapquery_' + this.idCounter++;
},
_removeLayer: function(id) {
+ var layer = this.layersList[id];
+ if (this._triggerReturn('preremovelayer', [layer])===false) {
+ return false;
+ }
+
// remove id from vectorlayer if it is there list
this.vectorLayers = $.grep(this.vectorLayers, function(elem) {
return elem != id;
});
this._updateSelectFeatureControl(this.vectorLayers);
- this.events.trigger('mqRemoveLayer',id);
- delete this.layersList[id];
+ this.olMap.removeLayer(layer.olLayer);
+
// XXX vmx: shouldn't the layer be destroyed() properly?
+ delete this.layersList[id];
+
+ layer.trigger('removelayer');
return this;
},
/**
@@ -210,13 +267,13 @@ to the map.
_version added 0.1_
####**Description**: get/set the extent, zoom and position of the map
-**position** the position as [x,y] in displayProjection (default EPSG:4326)
+ * **position** the position as [x,y] in displayProjection (default EPSG:4326)
to center the map at
-**zoom** the zoomlevel as integer to zoom the map to
-**box** an array with the lower left x, lower left y, upper right x,
+ * **zoom** the zoomlevel as integer to zoom the map to
+ * **box** an array with the lower left x, lower left y, upper right x,
upper right y to zoom the map to,
this will take precedent when conflicting with any of the above values
-**projection** the projection the coordinates are in, default is
+ * **projection** the projection the coordinates are in, default is
the displayProjection
>Returns: {position: [x,y], zoom: z(int), box: [llx,lly,urx,ury]}
@@ -239,7 +296,7 @@ extent from the map. The coordinates are returned in displayProjection.
*/
center: function (options) {
var position;
- var mapProjection;
+ var mapProjection = new OpenLayers.Projection(this.projection);
// Determine source projection
var sourceProjection = null;
var zoom;
@@ -249,7 +306,7 @@ extent from the map. The coordinates are returned in displayProjection.
'OpenLayers.Projection' ? options.projection :
new OpenLayers.Projection(options.projection);
} else {
- var displayProjection = this.olMap.displayProjection;
+ var displayProjection = this.displayProjection;
if(!displayProjection) {
// source == target
sourceProjection = new OpenLayers.Projection('EPSG:4326');
@@ -265,8 +322,6 @@ extent from the map. The coordinates are returned in displayProjection.
position = this.olMap.getCenter();
zoom = this.olMap.getZoom();
box = this.olMap.getExtent();
- mapProjection = this.olMap.getProjectionObject();
-
if (!mapProjection.equals(sourceProjection)) {
position.transform(mapProjection, sourceProjection);
@@ -282,9 +337,8 @@ extent from the map. The coordinates are returned in displayProjection.
// Zoom to the extent of the box
if (options.box!==undefined) {
- mapProjection = this.olMap.getProjectionObject();
box = new OpenLayers.Bounds(
- options.box[0], options.box[1],options.box[2], options.box[3]);
+ options.box[0], options.box[1],options.box[2], options.box[3]);
if (!mapProjection.equals(sourceProjection)) {
box.transform(sourceProjection,mapProjection);
}
@@ -299,7 +353,6 @@ extent from the map. The coordinates are returned in displayProjection.
else {
position = new OpenLayers.LonLat(options.position[0],
options.position[1]);
- mapProjection = this.olMap.getProjectionObject();
if (!mapProjection.equals(sourceProjection)) {
position.transform(sourceProjection, mapProjection);
}
@@ -323,11 +376,89 @@ extent from the map. The coordinates are returned in displayProjection.
this.olMap.addControl(this.selectFeatureControl);
this.selectFeatureControl.activate();
},
- bind: function() {
- this.events.bind.apply(this.events, arguments);
+ // This function got a bit too clever. The reason is, that jQuery's
+ // bind() is overloaded with so many possible combinations of arguments.
+ // And, of course, MapQuery wants to support them all
+ // The essence of the function is to wrap the original callback into
+ // the correct scope
+ bind: function(types, data, fn) {
+ var self = this;
+
+ // A map of event/handle pairs, wrap each of them
+ if(arguments.length===1) {
+ var wrapped = {};
+ $.each(types, function(type, fn) {
+ wrapped[type] = function() {
+ return fn.apply(self, arguments);
+ };
+ });
+ this.events.bind.apply(this.events, [wrapped]);
+ }
+ else {
+ var args = [types];
+ // Only callback given, but no data (types, fn), hence
+ // `data` is the function
+ if(arguments.length===2) {
+ fn = data;
+ }
+ else {
+ if (!$.isFunction(fn)) {
+ throw('bind: you might have a typo in the function name');
+ }
+ // Callback and data given (types, data, fn), hence include
+ // the data in the argument list
+ args.push(data);
+ }
+
+ args.push(function() {
+ return fn.apply(self, arguments);
+ });
+
+ this.events.bind.apply(this.events, args);
+ }
+
+ //this.events.bind.call(this.events, types, function() {
+ // data.apply(self, arguments);
+ //});
+ //this.events.bind.call(this.events, types, function() {
+ // data.apply(self, arguments);
+ //});
+
+ //this.events.bind.apply(this.events, arguments);
+ //this.events.bind.call(this.events, types, $.proxy(data, self));
+ //this.events.bind.apply(this.events, arguments);//.bind(this);
+ //this.events.bind.apply(this.events, $.proxy(arguments));//.bind(this);
+ //this.events.bind.apply(this.events, $.proxy(arguments));//.bind(this);
+ //this.events.bind(types, data, fn);//.bind(this);
+ //this.events.bind.call(this.events, types, data, fn);//.bind(this);
+ return this;
},
- one: function() {
- this.events.one.apply(this.events, arguments);
+/**
+###*map*.`trigger(name [, parameters])`
+_version added 0.2_
+####**Description**: triggers an event on the map
+
+ * **name** the name of the event
+ * **parameters** additional parameters that will be passed on with the event
+
+>Returns: map (MapQuery.Map)
+
+To subscribe to the triggered events, you need to bind to the mapuuu.
+
+ map.bind('myEvent', function(evt) {
+ console.log('the values are: ' + evt.data[0] + ' and ' + evt.data[1])
+ });
+ map.trigger('myEvent', 'some', 'values');
+*/
+ trigger: function() {
+ // There is no point in using trigger() insted of triggerHandler(), as
+ // we don't fire native events
+ this.events.triggerHandler.apply(this.events, arguments);
+ return this;
+ },
+ // Basically a trigger that returns the return value of the last listener
+ _triggerReturn: function() {
+ return this.events.triggerHandler.apply(this.events, arguments);
},
destroy: function() {
this.olMap.destroy();
@@ -363,6 +494,32 @@ $.MapQuery.Layer = function(map, id, options) {
// to bind and trigger jQuery events
this.events = $({});
+ this.handlers = {
+ // Triggers the jQuery events, after the OpenLayers events
+ // happened without any further processing
+ simple: function(data) {
+ this.trigger(data.type);
+ },
+ // All OpenLayers events that are triggered by user interaction,
+ // like clicking somewhere or selecting a feature, need to be
+ // handled in a special way. Those OpenLayers events will then be
+ // triggered by MapQuery as well
+ // In case of the "featureselected" event, this means that the
+ // logic of handling the event is completely within the event
+ // handler. When ".select()" on a feature is called, it will just
+ // trigger the OpenLayers "featureselected" event, whose handler
+ // will then trigger the corresponding jQuery event.
+ includeFeature: function(data) {
+ var feature = new $.MapQuery.Feature(this, {olFeature:
+ data.feature});
+ this.trigger(data.type, [feature]);
+ },
+ prependLayer: function(data) {
+ this.trigger('layer' + data.type);
+ }
+ };
+
+
// create the actual layer based on the options
// Returns layer and final options for the layer (for later re-use,
// e.g. zoomToMaxExtent).
@@ -371,17 +528,26 @@ $.MapQuery.Layer = function(map, id, options) {
this.olLayer = res.layer;
this.options = res.options;
- // create triggers for all OpenLayers layer events
- var events = {};
- $.each(this.olLayer.EVENT_TYPES, function(i, evt) {
- events[evt] = function() {
- self.events.trigger(evt, arguments);
- self.map.events.trigger(evt, arguments);
- };
+ // Some good documentation for the events is needed. Here is a short
+ // description on how the current events compare to the OpenLayer
+ // events on the layer:
+ // - added, remove: not needed, there's addlayer and removelayer
+ // - visibilitychanged: not needed, there's the changelayer event
+ // - move, moveend: not needed as you get them from the map, not the layer
+ // - loadstart, loadend: renamed to layerloadstart, layerloadend
+ this.olLayer.events.on({
+ scope: this,
+ loadstart: this.handlers.prependLayer,
+ loadend: this.handlers.prependLayer,
+ featureselected: this.handlers.includeFeature,
+ featureunselected: this.handlers.includeFeature,
+ featureremoved: this.handlers.includeFeature
});
- this.olLayer.events.on(events);
- this.map.olMap.addLayer(this.olLayer);
+ // To be able to retreive the MapQuery layer, when we only have the
+ // OpenLayers layer available. For example on the layeradded event.
+ // NOTE vmx 2012-02-26: Any nicer solution is welcome
+ this.olLayer.mapQueryId = this.id;
};
$.MapQuery.Layer.prototype = {
@@ -390,7 +556,7 @@ $.MapQuery.Layer.prototype = {
_version added 0.1_
####**Description**: move the layer down in the layer stack of the map
-**delta** the amount of layers the layer has to move down in the layer
+ * **delta** the amount of layers the layer has to move down in the layer
stack (default 1)
>Returns layer (MapQuery.Layer)
@@ -421,22 +587,21 @@ will put the layer at the bottom.
each: function () {},
/**
###*layer*.`remove()`
-_version added 0.1_
+_version added 0.2_
####**Description**: remove the layer from the map
->Returns: id (string)
+>Returns: map (MapQuery.Map) or false
The `.remove()` method allows us to remove a layer from the map.
-It returns an id to allow widgets to remove their references to the
-destroyed layer.
+It returns the `map` object if the layer was removed, or `false` if the
+removal was prevented in the preremovelayer event.
var id = layer.remove(); //remove this layer
*/
remove: function() {
- this.map.olMap.removeLayer(this.olLayer);
// remove references to this layer that are stored in the
// map object
return this.map._removeLayer(this.id);
@@ -447,9 +612,9 @@ _version added 0.1_
####**Description**: get/set the `position` of the layer in the layer
stack of the map
-**position** an integer setting the new position of the layer in the layer stack
+ * **position** an integer setting the new position of the layer in the layer stack
->Returns: position (integer)
+>Returns: position (integer) _or_ layer (MapQuery.Layer)
The `.position()` method allows us to change the position of the layer in the
@@ -467,7 +632,9 @@ return the current postion.
return this.map.olMap.getLayerIndex(this.olLayer)-1;
}
else {
- return this.map.olMap.setLayerIndex(this.olLayer, pos+1);
+ this.map.olMap.setLayerIndex(this.olLayer, pos+1);
+ this.trigger('changelayer', ['position']);
+ return this;
}
},
/**
@@ -475,7 +642,7 @@ return the current postion.
_version added 0.1_
####**Description**: move the layer up in the layer stack of the map
-**delta** the amount of layers the layer has to move up in the layer
+ * **delta** the amount of layers the layer has to move up in the layer
stack (default 1)
>Returns: layer (MapQuery.Layer)
@@ -503,7 +670,7 @@ given.
_version added 0.1_
####**Description**: get/set the `visible` state of the layer
-**visible** a boolean setting the visibiliyu of the layer
+ * **visible** a boolean setting the visibility of the layer
>Returns: visible (boolean)
@@ -522,6 +689,7 @@ If no visible is given, it will return the current visibility.
}
else {
this.olLayer.setVisibility(vis);
+ this.trigger('changelayer', ['visibility']);
return this;
}
},
@@ -530,9 +698,9 @@ If no visible is given, it will return the current visibility.
_version added 0.1_
####**Description**: get/set the `opacity` of the layer
-**position** a float [0-1] setting the opacity of the layer
+ * **position** a float [0-1] setting the opacity of the layer
->Returns: opacity (float)
+>Returns: opacity (float) _or_ layer (MapQuery.Layer)
The `.opacity()` method allows us to change the opacity of the layer.
@@ -544,24 +712,265 @@ If no opacity is given, it will return the current opacity.
*/
opacity: function(opac) {
- if (opac===undefined) {
+ if (opac===undefined) {
// this.olLayer.opacity can be null if never
- // set so return the visibility
+ // set so return the visibility
var value = this.olLayer.opacity ?
this.olLayer.opacity : this.olLayer.getVisibility();
return value;
}
else {
this.olLayer.setOpacity(opac);
+ this.trigger('changelayer', ['opacity']);
return this;
}
},
// every event gets the layer passed in
bind: function() {
- this.events.bind.apply(this.events, arguments);
+ // Use the same bind function as for the map
+ this.map.bind.apply(this, arguments);
+ return this;
+ },
+/**
+###*layer*.`trigger(name [, parameters])`
+_version added 0.2_
+####**Description**: triggers an event on the layer and map
+
+ * **name** the name of the event
+ * **parameters** additional parameters that will be passed on with the event
+
+>Returns: layer (MapQuery.Layer)
+
+The events get triggered on the layer as well as on the map. To subscribe to
+the triggered events, you can either bind to the layer or the map. If bound
+to the map, the second argument in the bind will be the layer the event
+came from
+
+ layer.bind('myEvent', function(evt) {
+ console.log('the values are: ' + evt.data[0] + ' and ' + evt.data[1])
+ });
+ map.bind('myEvent', function(evt, layer) {
+ console.log('the values are: ' + evt.data[0] + ' and ' + evt.data[1])
+ });
+ layer.trigger('myEvent', 'some', 'values');
+*/
+ trigger: function() {
+ var args = Array.prototype.slice.call(arguments);
+ this.events.triggerHandler.apply(this.events, args);
+
+ this._addLayerToArgs(args);
+
+ this.map.events.triggerHandler.apply(this.map.events, args);
+ return this;
+ },
+ // Basically a trigger that returns the return value of the last listener
+ _triggerReturn: function() {
+ var args = Array.prototype.slice.call(arguments);
+ var ret = this.events.triggerHandler.apply(this.events, args);
+ if (ret !== undefined) {
+ return ret;
+ }
+
+ this._addLayerToArgs(args);
+ return this.events.triggerHandler.apply(this.map.events, args);
+ },
+ // Adds the current layer to the event arguments, so that it is included
+ // in the event on the map
+ _addLayerToArgs: function(args) {
+ // Add layer for the map event
+ if (args.length===1) {
+ args.push([this]);
+ }
+ else {
+ args[1].unshift(this);
+ }
+ },
+/**
+###*layer*.`features([options])`
+_version added 0.2.0_
+####**Description**: get/set the features of a (vector) layer
+
+**options** an object of key-value pairs with options to create one or
+more features
+
+>Returns: [features] (array of MapQuery.Feature)
+
+
+The `.features()` method allows us to attach features to a mapQuery layer
+object. It takes an options object with feature options. To add multiple
+features, create an array of feature options objects. If an options object
+is given, it will return the resulting feature(s). We can also use it to
+retrieve all features currently attached to the layer.
+
+
+ // add an (vector) json layer to the map
+ var jsonlayer = map.layers({type:'json'});
+ // add a feature to the layer
+ jsonlayer.features({geometry: {type: "Point", coordinates: [5.3, 7.4]}});
+ // get all features of a layer (sorted with first added feature at the beginning
+ var features = jsonlayer.features();
+*/
+ features: function(options) {
+ var self = this;
+ switch(arguments.length) {
+ // return all features
+ case 0:
+ return this._allFeatures();
+ // add new feature(s)
+ case 1:
+ if (!$.isArray(options)) {
+ return this._addFeature(options);
+ }
+ else {
+ return $.map(options, function(feature) {
+ return self._addFeature(feature);
+ });
+ }
+ break;
+ default:
+ throw('wrong argument number');
+ }
},
- one: function() {
- this.events.one.apply(this.events, arguments);
+ _allFeatures: function() {
+ var layer = this;
+ return $.map(layer.olLayer.features, function(feature) {
+ return new $.MapQuery.Feature(layer, {olFeature: feature});
+ });
+ },
+ _addFeature: function(options) {
+ var feature = new $.MapQuery.Feature(this, options);
+ // NOTE vmx 2012-04-19: Not sure if this is a good idea, or if it would
+ // be better to include `options` with the preaddfeature event
+ if (this._triggerReturn('preaddfeature', [feature])===false) {
+ return false;
+ }
+ this.olLayer.addFeatures(feature.olFeature);
+ this.trigger('addfeature', [feature]);
+ return feature;
+ }
+};
+
+/**
+#MapQuery.Feature
+
+The MapQuery.Feature object. It is constructed with a feature options object
+in the layer.`features([options])` function. The Feautre object is refered to
+as _feature_ in the documentation.
+
+TODO vmx 20110905: Support other geometry types than GeoJSON
+options:
+ * geometry: A GeoJSON geometry
+ * properties: Properties for the feature
+*/
+// Not in the pulic API docs: You can pass in as options:
+// * olFeature: This will wrap the olFeature in a MapQuery feature
+$.MapQuery.Feature = function(layer, options) {
+ // The ID is the
+ this._id = layer.map._createId();
+ this.layer = layer;
+
+ // Feature already exists on the layer, it just needs to be wrapped
+ // to an MapQuery feature
+ if (options.olFeature) {
+ this.olFeature = options.olFeature;
+ }
+ else {
+ // XXX vmx 20110905: Different feature types might make sense:
+ // (Geo)JSON, KML, WKT
+ // vmx 2012-04-14: I changed my mind quite some time ago. We should onlu
+ // support GeoJSON and let the user easily transfrom their format
+ // (e.g. KML) to GeoJSON, before they add a feature to the layer
+ var GeoJSON = new OpenLayers.Format.GeoJSON();
+ var geometry = GeoJSON.parseGeometry(options.geometry);
+ geometry.transform(
+ new OpenLayers.Projection(this.layer.map.displaProjection),
+ new OpenLayers.Projection(this.layer.map.projection));
+
+ this.olFeature = new OpenLayers.Feature.Vector(geometry,
+ options.properties);
+ }
+
+ // Modify the features to be more practical
+ // e.g. copy properties that should be easily accessed from the
+ // outside, out of the olLayer and to the feature level
+ this.properties = $.extend(true, {}, this.olFeature.attributes);
+ this.geometry = $.parseJSON(
+ new OpenLayers.Format.GeoJSON().write(this.olFeature.geometry));
+
+ return this;
+};
+
+$.MapQuery.Feature.prototype = {
+/**
+###*feature*.`remove()`
+_version added 0.2.0_
+####**Description**: remove the feature from the layer
+
+>Returns: layer (layer) or false
+
+
+The `.remove()` method allows us to remove a feature from the layer.
+It returns the `layer` object if the feature was removed, or `false` if the
+removal was prevented in the preremovefeature event.
+
+ // add a feature to a layer
+ var feature = layer.features({geometry: {type: "Point", coordinates: [5.3, 7.4]}});
+ // remove the feature again
+ feature.remove();
+*/
+ remove: function() {
+ if (this.layer._triggerReturn('preremovefeature', [this])===false) {
+ return false;
+ }
+ this.layer.olLayer.removeFeatures(this.olFeature);
+ // The `removefeature` event is triggered by an OpenLayes event handler
+ return this.layer;
+ },
+/**
+###*feature*.`select(exclusive)`
+_version added 0.2.0_
+####**Description**: select a feature
+
+**exclusive** (boolean, default: true) True means that all other features get
+deselectd
+
+>Returns: layer (layer)
+
+
+The `.select()` method allows us to select a feature from the layer.
+A `featureselected` will be fired.
+
+ // add a feature to a layer
+ var feature = layer.features({geometry: {type: "Point", coordinates: [5.3, 7.4]}});
+ // select the feature again
+ feature.select();
+*/
+ select: function(exclusive) {
+ if (exclusive===undefined || exclusive===true) {
+ this.layer.map.selectFeatureControl.unselectAll();
+ }
+ this.layer.map.selectFeatureControl.select(this.olFeature);
+ },
+/**
+###*feature*.`unselect()`
+_version added 0.2.0_
+####**Description**: unselect a feature
+
+>Returns: layer (layer)
+
+
+The `.unselect()` method allows us to unselect a feature from the layer.
+A `featureunselected` will be fired.
+
+ // add a feature to a layer
+ var feature = layer.features({geometry: {type: "Point", coordinates: [5.3, 7.4]}});
+ // select the feature
+ feature.select();
+ // unselect the feature again
+ feature.unselect();
+*/
+ unselect: function() {
+ this.layer.map.selectFeatureControl.unselect(this.olFeature);
}
};
@@ -581,11 +990,11 @@ $.extend($.MapQuery.Layer, {
_version added 0.1_
####**Description**: create a Bing maps layer
-**view** a string ['road','hybrid','satellite'] to define which Bing maps
+ * **view** a string ['road','hybrid','satellite'] to define which Bing maps
layer to use (default road)
-**key** Bing Maps API key for your application. Get you own at
+ * **key** Bing Maps API key for your application. Get you own at
http://bingmapsportal.com/
-**label** string with the name of the layer
+ * **label** string with the name of the layer
layers:[{
@@ -629,9 +1038,9 @@ http://bingmapsportal.com/
_version added 0.1_
####**Description**: create a Google maps layer
-**view** a string ['road','hybrid','satellite'] to define which Google maps
+ * **view** a string ['road','hybrid','satellite'] to define which Google maps
layer to use (default road)
-**label** string with the name of the layer
+ * **label** string with the name of the layer
*Note* you need to include the google maps v3 API in your application by adding
@@ -669,7 +1078,7 @@ layer to use (default road)
_version added 0.1_
####**Description**: create a vector layer
-**label** string with the name of the layer
+ * **label** string with the name of the layer
layers:[{
@@ -692,13 +1101,13 @@ _version added 0.1_
_version added 0.1_
####**Description**: create a JSON layer
-**url** a string pointing to the location of the JSON data
-**strategies** a string ['bbox','cluster','filter','fixed','paging','refresh','save']
+ * **url** a string pointing to the location of the JSON data
+ * **strategies** a string ['bbox','cluster','filter','fixed','paging','refresh','save']
stating which update strategy should be used (default fixed)
(see also http://dev.openlayers.org/apidocs/files/OpenLayers/Strategy-js.html)
-**projection** a string with the projection of the JSON data (default EPSG:4326)
-**styleMap** {object} the style to be used to render the JSON data
-**label** string with the name of the layer
+ * **projection** a string with the projection of the JSON data (default EPSG:4326)
+ * **styleMap** {object} the style to be used to render the JSON data
+ * **label** string with the name of the layer
layers:[{
@@ -710,8 +1119,8 @@ stating which update strategy should be used (default fixed)
*/
json: function(options) {
var o = $.extend(true, {}, $.fn.mapQuery.defaults.layer.all,
- $.fn.mapQuery.defaults.layer.vector,
- options);
+ $.fn.mapQuery.defaults.layer.vector,
+ options);
this.isVector = true;
var strategies = [];
for (var i in o.strategies) {
@@ -742,26 +1151,31 @@ stating which update strategy should be used (default fixed)
}
}
var protocol;
- // only use JSONP if we use http(s)
- if (o.url.match(/^https?:\/\//)!==null &&
- !$.MapQuery.util.sameOrigin(o.url)) {
- protocol = 'Script';
- }
- else {
- protocol = 'HTTP';
- }
var params = {
- protocol: new OpenLayers.Protocol[protocol]({
- url: o.url,
- format: new OpenLayers.Format.GeoJSON()
- }),
strategies: strategies,
projection: o.projection || 'EPSG:4326',
styleMap: o.styleMap
};
+
+ if (o.url) {
+ // only use JSONP if we use http(s)
+ if (o.url.match(/^https?:\/\//)!==null &&
+ !$.MapQuery.util.sameOrigin(o.url)) {
+ protocol = 'Script';
+ }
+ else {
+ protocol = 'HTTP';
+ }
+ params.protocol = new OpenLayers.Protocol[protocol]({
+ url: o.url,
+ format: new OpenLayers.Format.GeoJSON()
+ });
+ };
+
+ var layer = new OpenLayers.Layer.Vector(o.label, params);
return {
- layer: new OpenLayers.Layer.Vector(o.label, params),
+ layer: layer,
options: o
};
},
@@ -771,10 +1185,10 @@ _version added 0.1_
####**Description**: create an OpenStreetMap layer
-**label** string with the name of the layer
-**url** A single URL (string) or an array of URLs to OSM-like server like
+ * **label** string with the name of the layer
+ * **url** A single URL (string) or an array of URLs to OSM-like server like
Cloudmade
-**attribution** A string to put some attribution on the map
+ * **attribution** A string to put some attribution on the map
layers:[{
type: 'osm',
@@ -801,15 +1215,51 @@ Cloudmade
};
},
/**
+###*layer* `{type:tms}`
+_version added 0.1_
+####**Description**: create an OpenStreetMap layer
+
+
+ * **label** string with the name of the layer
+ * **url** A single URL (string) or an array of URLs to the TMS end point
+ * **layer** The identifier for the <TileMap> as advertised by the service.
+ For example, if the service advertises a <TileMap> with ‘href=â€http://tms.osgeo.org/1.0.0/vmap0â€â€™,
+ the layer property would be set to “vmap0â€.
+ * **format** The image format (default png)
+
+ layers:[{
+ type: 'tms',
+ url: 'http://tilecache.osgeo.org/wms-c/Basic.py/',
+ layer: 'basic'
+ }]
+
+*/
+ tms: function(options) {
+ var o = $.extend(true, {}, $.fn.mapQuery.defaults.layer.all,
+ $.fn.mapQuery.defaults.layer.tms,
+ options);
+ var label = options.label || undefined;
+ var url = options.url || undefined;
+ var params = {
+ layername: o.layer,
+ type: o.format
+ };
+ return {
+ layer: new OpenLayers.Layer.TMS(label, url, params),
+ options: o
+ };
+ },
+/**
###*layer* `{type:wms}`
_version added 0.1_
####**Description**: create a WMS layer
-**url** a string pointing to the location of the WMS service
-**layers** a string with the name of the WMS layer(s)
-**format** a string with format of the WMS image (default image/jpeg)
-**transparent** a boolean for requesting images with transparency
-**label** string with the name of the layer
+ * **url** a string pointing to the location of the WMS service
+ * **layers** a string with the name of the WMS layer(s)
+ * **format** a string with format of the WMS image (default image/jpeg)
+ * **transparent** a boolean for requesting images with transparency
+ * **label** string with the name of the layer
+ * **wms_parameters** an hashtable of extra GetMap query string parameters and parameter values
layers:[{
@@ -828,6 +1278,9 @@ _version added 0.1_
transparent: o.transparent,
format: o.format
};
+ if(typeof o.wms_parameters != "undefined"){
+ params = $.extend(params, o.wms_parameters);
+ }
return {
layer: new OpenLayers.Layer.WMS(o.label, o.url, params, o),
options: o
@@ -839,11 +1292,11 @@ _version added 0.1_
_version added 0.1_
####**Description**: create a WMTS (tiling) layer
-**url** a string pointing to the location of the WMTS service
-**layer** a string with the name of the WMTS layer
-**matrixSet** a string with one of the advertised matrix set identifiers
-**style** a string with one of the advertised layer styles
-**label** string with the name of the layer
+ * **url** a string pointing to the location of the WMTS service
+ * **layer** a string with the name of the WMTS layer
+ * **matrixSet** a string with one of the advertised matrix set identifiers
+ * **style** a string with one of the advertised layer styles
+ * **label** string with the name of the layer
layers:[{
@@ -953,13 +1406,17 @@ $.fn.mapQuery.defaults = {
transitionEffect: 'resize',
sphericalMercator: true
},
+ tms: {
+ transitionEffect: 'resize',
+ format: 'png'
+ },
raster: {
// options for raster layers
transparent: true
},
vector: {
// options for vector layers
- strategies: ['fixed']
+ strategies: ['bbox']
},
wmts: {
format: 'image/jpeg',
diff --git a/view/theme/diabook/js/jquery.mapquery.legend.js b/view/theme/diabook/js/jquery.mapquery.legend.js
new file mode 100644
index 000000000..0a475408f
--- /dev/null
+++ b/view/theme/diabook/js/jquery.mapquery.legend.js
@@ -0,0 +1,87 @@
+/* Copyright (c) 2011 by MapQuery Contributors (see AUTHORS for
+ * full list of contributors). Published under the MIT license.
+ * See https://github.com/mapquery/mapquery/blob/master/LICENSE for the
+ * full text of the license. */
+
+/**
+#jquery.mapquery.legend.js
+A plugin on mapquery.core to add a legend to a layer. It will check if the layer
+is within a valid extent and zoom range. And if not will return an error message.
+*/
+
+(function($, MQ) {
+$.extend( $.fn.mapQuery.defaults.layer.all, {
+ legend: {
+ url: '',
+ msg: ''
+ }
+});
+//possible error messages to display in the legend
+LEGEND_ERRORS= ['E_ZOOMOUT', 'E_ZOOMIN', 'E_OUTSIDEBOX'];
+$.extend(MQ.Layer.prototype, {
+/**
+###**layer**.`legend([options])`
+_version added 0.1_
+####**Description**: get/set the legend of a layer
+
+**options** url:url the url to the legend image
+
+>Returns: {url:url, msg:'E\_ZOOMOUT' | 'E\_ZOOMIN' | 'E\_OUTSIDEBOX' | ''}
+
+
+The `.legend()` function allows us to attach a legend image to a layer. It will
+also check if the layer is not visible due to wrong extent or zoom level.
+It will return an error message which can be used to notify the user.
+
+
+ var legend = layer.legend(); //get the current legend
+ //set the legend url to legendimage.png
+ layer.legend({url:'legendimage.png'})
+
+ */
+ //get/set the legend object
+ legend: function(options) {
+ //get the legend object
+ var center = this.map.center();
+ if (arguments.length===0) {
+ this._checkZoom(center);
+ //if zoom = ok, check box
+ if(this.options.legend.msg==''){
+ this._checkBox(center);
+ }
+ return this.options.legend;
+ }
+ //set the legend url
+ if (options.url!==undefined) {
+ this.options.legend.url = options.url;
+ return this.options.legend;
+ }
+ },
+ //Check if the layer has a maximum box set and if the current box
+ //is outside these settings, set the legend.msg accordingly
+ _checkBox: function(center){
+ var maxExtent = this.options.maxExtent;
+ if(maxExtent!==undefined) {
+ var mapBounds = new OpenLayers.Bounds(
+ center.box[0],center.box[1],center.box[2],center.box[3]);
+ var layerBounds = new OpenLayers.Bounds(
+ maxExtent[0],maxExtent[1],maxExtent[2],maxExtent[3]);
+ var inside = layerBounds.containsBounds(mapBounds, true);
+ this.options.legend.msg = inside?'':LEGEND_ERRORS[2];
+ }
+ },
+ //Check if the layer has a minimum or maximum zoom set and if the
+ //current zoom is outside these settings, set the legend.msg accordingly
+ _checkZoom: function(center){
+ var zoom = center.zoom;
+ var maxZoom = this.options.maxZoom;
+ var minZoom = this.options.minZoom;
+ this.options.legend.msg=(
+ maxZoom!==undefined&&maxZoom<zoom)? LEGEND_ERRORS[0]:'';
+ this.options.legend.msg=(
+ minZoom!==undefined&&minZoom>zoom)? LEGEND_ERRORS[1]:'';
+ }
+
+});
+
+})(jQuery, $.MapQuery);
diff --git a/view/theme/diabook/js/jquery.mapquery.mqLayerManager.js b/view/theme/diabook/js/jquery.mapquery.mqLayerManager.js
new file mode 100644
index 000000000..885330cf1
--- /dev/null
+++ b/view/theme/diabook/js/jquery.mapquery.mqLayerManager.js
@@ -0,0 +1,310 @@
+/* Copyright (c) 2011 by MapQuery Contributors (see AUTHORS for
+ * full list of contributors). Published under the MIT license.
+ * See https://github.com/mapquery/mapquery/blob/master/LICENSE for the
+ * full text of the license. */
+
+/**
+#jquery.mapquery.mqLayerManager.js
+The file containing the mqLayerManager Widget
+
+### *$('selector')*.`mqLayerManager([options])`
+_version added 0.1_
+####**Description**: create a widget to manage layers
+
+ + **options**:
+ - **map**: the mapquery instance
+ - **title**: Title that will be displayed at the top of the
+ layer manager (default: Layer Manager)
+
+
+>Returns: widget
+
+>Requires: jquery.mapquery.legend.js
+
+
+The mqLayerManager allows us to control the order, opacity and visibility
+of layers. We can also remove layers. It also shows the legend of the layer if
+available and the error messages provided by the legend plugin. It listens to
+layerchange event for order, transparancy and opacity changes. It listens to
+addlayer and removelayer events to keep track which layers are on the map.
+
+
+ $('#layermanager').mqLayerManager({map:'#map'});
+
+
+ */
+(function($) {
+$.template('mqLayerManager',
+ '<div class="mq-layermanager ui-widget-content ">'+
+ '</div>');
+
+$.template('mqLayerManagerElement',
+ '<div class="mq-layermanager-element ui-widget-content ui-corner-all" id="mq-layermanager-element-${id}">'+
+ '<div class="mq-layermanager-element-header ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">'+
+ '<span class="mq-layermanager-label ui-dialog-title">${label}</span>'+
+ '<a class="ui-dialog-titlebar-close ui-corner-all" href="#" role="button">'+
+ '<span class="ui-icon ui-icon-closethick">close</span></a></div>'+
+ '<div class="mq-layermanager-element-content">'+
+ '<div class="mq-layermanager-element-visibility">'+
+ '<input type="checkbox" class="mq-layermanager-element-vischeckbox" id="${id}-visibility" {{if visible}}checked="${visible}"{{/if}} />'+
+ '<div class="mq-layermanager-element-slider-container">'+
+ '<div class="mq-layermanager-element-slider"></div></div>'+
+ '</div>'+
+ '<div class="mq-layermanager-element-legend">'+
+ '{{if imgUrl}}'+
+ '<img src="${imgUrl}" style="opacity:${opacity}"/>'+
+ '{{/if}}'+
+ '{{if errMsg}}'+
+ '${errMsg}'+
+ '{{/if}}'+
+ '</div>'+
+ '</div>'+
+ '</div>');
+
+$.widget("mapQuery.mqLayerManager", {
+ options: {
+ // The MapQuery instance
+ map: undefined,
+
+ // Title that will be displayed at the top of the popup
+ title: "Layer Manager"
+ },
+ _create: function() {
+ var map;
+ var zoom;
+ var numzoomlevels;
+ var self = this;
+ var element = this.element;
+
+ //get the mapquery object
+ map = $(this.options.map).data('mapQuery');
+
+ this.element.addClass('ui-widget ui-helper-clearfix ' +
+ 'ui-corner-all');
+
+ var lmElement = $.tmpl('mqLayerManager').appendTo(element);
+ element.find('.ui-icon-closethick').button();
+
+ lmElement.sortable({
+ axis:'y',
+ handle: '.mq-layermanager-element-header',
+ update: function(event, ui) {
+ var layerNodes = ui.item.siblings().andSelf();
+ var num = layerNodes.length-1;
+ layerNodes.each(function(i) {
+ var layer = $(this).data('layer');
+ var pos = num-i;
+ self._position(layer, pos);
+ });
+ }
+ });
+
+ //these layers are already added to the map as such won't trigger
+ //and event, we call the draw function directly
+ $.each(map.layers().reverse(), function(){
+ self._layerAdded(lmElement, this);
+ });
+
+ element.delegate('.mq-layermanager-element-vischeckbox',
+ 'change',function() {
+ var checkbox = $(this);
+ var element = checkbox.parents('.mq-layermanager-element');
+ var layer = element.data('layer');
+ var self = element.data('self');
+ self._visible(layer,checkbox.is(':checked'));
+ });
+
+ element.delegate('.ui-icon-closethick', 'click', function() {
+ var control = $(this).parents('.mq-layermanager-element');
+ self._remove(control.data('layer'));
+ });
+
+ //binding events
+ map.bind("addlayer",
+ {widget:self,control:lmElement},
+ self._onLayerAdd);
+
+ map.bind("removelayer",
+ {widget:self,control:lmElement},
+ self._onLayerRemove);
+
+ map.bind("changelayer",
+ {widget:self,map:map,control:lmElement},
+ self._onLayerChange);
+
+ map.bind("moveend",
+ {widget:self,map:map,control:lmElement},
+ self._onMoveEnd);
+ },
+ _destroy: function() {
+ this.element.removeClass(' ui-widget ui-helper-clearfix ' +
+ 'ui-corner-all')
+ .empty();
+ },
+ //functions that actually change things on the map
+ //call these from within the widget to do stuff on the map
+ //their actions will trigger events on the map and in return
+ //will trigger the _layer* functions
+ _add: function(map,layer) {
+ map.layers(layer);
+ },
+
+ _remove: function(layer) {
+ layer.remove();
+ },
+
+ _position: function(layer, pos) {
+ layer.position(pos);
+ },
+
+ _visible: function(layer, vis) {
+ layer.visible(vis);
+ },
+
+ _opacity: function(layer,opac) {
+ layer.opacity(opac);
+ },
+
+ //functions that change the widget
+ _layerAdded: function(widget, layer) {
+ var self = this;
+ var error = layer.legend().msg;
+ var url;
+ switch(error){
+ case '':
+ url =layer.legend().url;
+ if(url==''){error='No legend for this layer';}
+ break;
+ case 'E_ZOOMOUT':
+ error = 'Please zoom out to see this layer';
+ break;
+ case 'E_ZOOMIN':
+ error = 'Please zoom in to see this layer';
+ break;
+ case 'E_OUTSIDEBOX':
+ error = 'This layer is outside the current view';
+ break;
+ }
+
+ var layerElement = $.tmpl('mqLayerManagerElement',{
+ id: layer.id,
+ label: layer.label,
+ position: layer.position(),
+ visible: layer.visible(),
+ imgUrl: url,
+ opacity: layer.visible()?layer.opacity():0,
+ errMsg: error
+ })
+ // save layer layer in the DOM, so we can easily
+ // hide/show/delete the layer with live events
+ .data('layer', layer)
+ .data('self',self)
+ .prependTo(widget);
+
+ $(".mq-layermanager-element-slider", layerElement).slider({
+ max: 100,
+ step: 1,
+ value: layer.visible()?layer.opacity()*100:0,
+ slide: function(event, ui) {
+ var layer = layerElement.data('layer');
+ var self = layerElement.data('self');
+ self._opacity(layer,ui.value/100);
+ },
+ //using the slide event to check for the checkbox often gives errors.
+ change: function(event, ui) {
+ var layer = layerElement.data('layer');
+ var self = layerElement.data('self');
+ if(ui.value>=0.01) {
+ if(!layer.visible()){layer.visible(true);}
+ }
+ if(ui.value<0.01) {
+ if(layer.visible()){layer.visible(false);}
+ }
+ }
+ });
+ },
+
+ _layerRemoved: function(widget, id) {
+ var control = $("#mq-layermanager-element-"+id);
+ control.fadeOut(function() {
+ $(this).remove();
+ });
+ },
+
+ _layerPosition: function(widget, layer) {
+ var layerNodes = widget.element.find('.mq-layermanager-element');
+ var num = layerNodes.length-1;
+ var tmpNodes = [];
+ tmpNodes.length = layerNodes.length;
+ layerNodes.each(function() {
+ var layer = $(this).data('layer');
+ var pos = num-layer.position();
+ tmpNodes[pos]= this;
+ });
+ for (i=0;i<tmpNodes.length;i++) {
+ layerNodes.parent().append(tmpNodes[i]);
+ }
+ },
+
+ _layerVisible: function(widget, layer) {
+ var layerElement =
+ widget.element.find('#mq-layermanager-element-'+layer.id);
+ var checkbox =
+ layerElement.find('.mq-layermanager-element-vischeckbox');
+ checkbox[0].checked = layer.visible();
+ //update the opacity slider as well
+ var slider = layerElement.find('.mq-layermanager-element-slider');
+ var value = layer.visible()?layer.opacity()*100: 0;
+ slider.slider('value',value);
+
+ //update legend image
+ layerElement.find('.mq-layermanager-element-legend img').css(
+ {visibility:layer.visible()?true:'hidden'});
+ },
+
+ _layerOpacity: function(widget, layer) {
+ var layerElement = widget.element.find(
+ '#mq-layermanager-element-'+layer.id);
+ var slider = layerElement.find(
+ '.mq-layermanager-element-slider');
+ slider.slider('value',layer.opacity()*100);
+ //update legend image
+ layerElement.find(
+ '.mq-layermanager-element-legend img').css(
+ {opacity:layer.opacity()});
+ },
+
+ _moveEnd: function (widget,lmElement,map) {
+ lmElement.empty();
+ $.each(map.layers().reverse(), function(){
+ widget._layerAdded(lmElement, this);
+ });
+ },
+
+ //functions bind to the map events
+ _onLayerAdd: function(evt, layer) {
+ evt.data.widget._layerAdded(evt.data.control,layer);
+ },
+
+ _onLayerRemove: function(evt, layer) {
+ evt.data.widget._layerRemoved(evt.data.control,layer.id);
+ },
+
+ _onLayerChange: function(evt, layer, property) {
+ switch(property) {
+ case 'opacity':
+ evt.data.widget._layerOpacity(evt.data.widget,layer);
+ break;
+ case 'position':
+ evt.data.widget._layerPosition(evt.data.widget,layer);
+ break;
+ case 'visibility':
+ evt.data.widget._layerVisible(evt.data.widget,layer);
+ break;
+ }
+ },
+ _onMoveEnd: function(evt) {
+ evt.data.widget._moveEnd(evt.data.widget,evt.data.control,evt.data.map);
+ }
+});
+})(jQuery);
diff --git a/view/theme/diabook/js/jquery.mapquery.mqMousePosition.js b/view/theme/diabook/js/jquery.mapquery.mqMousePosition.js
index d4370bfe4..9f7e151ff 100644
--- a/view/theme/diabook/js/jquery.mapquery.mqMousePosition.js
+++ b/view/theme/diabook/js/jquery.mapquery.mqMousePosition.js
@@ -44,8 +44,8 @@ $.widget("mapQuery.mqMousePosition", {
// The number of decimals for the coordinates
// default: 2
- // TODO: JCB20110630 use dynamic precision based on the pixel
- // resolution, no need to configure precision
+ // TODO: JCB20110630 use dynamic precision based on the pixel
+ // resolution, no need to configure precision
precision: 2,
// The label of the x-value
@@ -57,51 +57,36 @@ $.widget("mapQuery.mqMousePosition", {
},
_create: function() {
- var map;
- var self = this;
- var element = this.element;
- var mousepos;
-
//get the mapquery object
- map = $(this.options.map).data('mapQuery');
-
- map.bind("mousemove",
- {widget:self,map:map},
- self._onMouseMove);
-
+ this.map = $(this.options.map).data('mapQuery');
- $.tmpl('mqMousePosition',{
- mouseposition:mousepos
- }).appendTo(element);
+ this.map.element.bind('mousemove', {widget: this}, this._onMousemove);
+ $.tmpl('mqMousePosition', {}).appendTo(this.element);
},
_destroy: function() {
- this.element.removeClass(' ui-widget ui-helper-clearfix ' +
+ this.element.removeClass('ui-widget ui-helper-clearfix ' +
'ui-corner-all')
.empty();
},
- _mouseMoved: function(data, element, map) {
- var x = data.layerX;
- var y = data.layerY;
- var mapProjection = map.options.projection;
- var displayProjection = map.options.projection;
+ _onMousemove: function(evt) {
+ var self = evt.data.widget;
+ var x = evt.pageX;
+ var y = evt.pageY;
+ var mapProjection = new OpenLayers.Projection(self.map.projection);
+ var displayProjection = new OpenLayers.Projection(
+ self.map.displayProjection);
+ var pos = self.map.olMap.getLonLatFromLayerPx(
+ new OpenLayers.Pixel(x, y));
//if the coordinates should be displayed in something else,
- //set them via the map displayProjection option
- var pos = map.olMap.getLonLatFromLayerPx(new OpenLayers.Pixel(x,y));
- if(map.options.displayProjection) {
- displayProjection = map.options.displayProjection;
- pos=pos.transform(
- new OpenLayers.Projection(mapProjection),
- new OpenLayers.Projection(displayProjection));
+ //set them via the map displayProjection option
+ if(!mapProjection.equals(self.map.displayProjection)) {
+ pos = pos.transform(mapProjection, displayProjection);
}
- $("#id_diabook_ELPosX", element).val(
- this.options.x+pos.lon.toFixed(this.options.precision));
- $("#id_diabook_ELPosY", element).val(
- this.options.y+pos.lat.toFixed(this.options.precision));
- },
-
- _onMouseMove: function(evt, data) {
- evt.data.widget._mouseMoved(data,evt.data.control,evt.data.map);
+ $("#id_diabook_ELPosX", document.element).val(
+ self.options.x + pos.lon.toFixed(self.options.precision));
+ $("#id_diabook_ELPosY", document.element).val(
+ self.options.y + pos.lat.toFixed(self.options.precision));
}
});
})(jQuery);
diff --git a/view/theme/diabook/js/jquery.twitter.search.js b/view/theme/diabook/js/jquery.twitter.search.js
index d3ccfe68e..a57bd255d 100644
--- a/view/theme/diabook/js/jquery.twitter.search.js
+++ b/view/theme/diabook/js/jquery.twitter.search.js
@@ -202,7 +202,7 @@
// default styling
a: { textDecoration: 'none', color: '#3B5998' },
bird: { width: '50px', height: '20px', position: 'absolute', left: '-30px', top: '-20px', border: 'none' },
- container: { overflow: 'hidden', backgroundColor: '', height: '600px' },
+ container: { overflow: 'hidden', backgroundColor: '', height: '600px', width: '170px' },
fail: { background: '#6cc5c3 url(http://cloud.github.com/downloads/malsup/twitter/failwhale.png) no-repeat 50% 50%', height: '100%', padding: '10px' },
frame: { border: '0px solid #C2CFF1', borderRadius: '0px', '-moz-border-radius': '0px', '-webkit-border-radius': '0px' },
tweet: { padding: '5px 10px', clear: 'left' },
diff --git a/view/theme/diabook/nav.tpl b/view/theme/diabook/nav.tpl
index f611de004..4165656bd 100644
--- a/view/theme/diabook/nav.tpl
+++ b/view/theme/diabook/nav.tpl
@@ -136,7 +136,7 @@
</nav>
-<div id="scrollup" style="position: fixed; bottom: 5px; right: 10px;z-index: 97;"><a id="down" onclick="scrolldown()" ><img id="scroll_top_bottom" src="view/theme/diabook/icons/scroll_bottom.png" style="display:cursor !important;" alt="back to top" title="Back to top"></a></div>
+<div id="scrollup" style="position: fixed; bottom: 5px; right: 10px;z-index: 97;"><a id="down" onclick="scrolldown()" ><img id="scroll_top_bottom" src="view/theme/diabook/icons/scroll_bottom.png" style="display:cursor !important;" alt="back to top" title="Scroll to bottom"></a></div>
<div style="position: fixed; bottom: 3px; left: 25px;">$langselector</div>
<div style="position: fixed; bottom: 23px; left: 5px;"><a href="http://pad.toktan.org/p/diabook" target="blank" ><img src="view/theme/diabook/icons/bluebug.png" title="report bugs for the theme diabook"/></a></div>
diff --git a/view/theme/diabook/prv_message.tpl b/view/theme/diabook/prv_message.tpl
new file mode 100644
index 000000000..c59cc622f
--- /dev/null
+++ b/view/theme/diabook/prv_message.tpl
@@ -0,0 +1,40 @@
+
+<h3>$header</h3>
+
+<div id="prvmail-wrapper" >
+<form id="prvmail-form" action="message" method="post" >
+
+$parent
+
+<div id="prvmail-to-label">$to</div>
+
+{{ if $showinputs }}
+<input type="text" id="recip" style="background: none repeat scroll 0 0 white;border: 1px solid #CCC;border-radius: 5px 5px 5px 5px;height: 20px;margin: 0 0 5px;
+vertical-align: middle;" name="messageto" value="$prefill" maxlength="255" size="64" tabindex="10" />
+<input type="hidden" id="recip-complete" name="messageto" value="$preid">
+{{ else }}
+$select
+{{ endif }}
+
+<div id="prvmail-subject-label">$subject</div>
+<input type="text" size="64" maxlength="255" id="prvmail-subject" name="subject" value="$subjtxt" $readonly tabindex="11" />
+
+<div id="prvmail-message-label">$yourmessage</div>
+<textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" tabindex="12">$text</textarea>
+
+
+<div id="prvmail-submit-wrapper" >
+ <input type="submit" id="prvmail-submit" name="submit" value="Submit" tabindex="13" />
+ <div id="prvmail-upload-wrapper" >
+ <div id="prvmail-upload" class="icon border camera" title="$upload" ></div>
+ </div>
+ <div id="prvmail-link-wrapper" >
+ <div id="prvmail-link" class="icon border link" title="$insert" onclick="jotGetLink();" ></div>
+ </div>
+ <div id="prvmail-rotator-wrapper" >
+ <img id="prvmail-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
+ </div>
+</div>
+<div id="prvmail-end"></div>
+</form>
+</div>
diff --git a/view/theme/diabook/style-wide.css b/view/theme/diabook/style-wide.css
index cf54e5b58..64393bdff 100644
--- a/view/theme/diabook/style-wide.css
+++ b/view/theme/diabook/style-wide.css
@@ -610,9 +610,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
#message-new {
diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css
index 2834e76f2..736817c7b 100644
--- a/view/theme/diabook/style.css
+++ b/view/theme/diabook/style.css
@@ -611,9 +611,7 @@ header #banner #logo-img {
margin-top: 3px;
}
header #banner #logo-text {
- font-size: 20px;
- position: absolute;
- top: 10%;
+ font-size: 20px!important;position: relative!important;top: -4px!important;
}
/* messages */
#message-new {
diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php
index 607414f17..de7e41841 100755
--- a/view/theme/diabook/theme.php
+++ b/view/theme/diabook/theme.php
@@ -3,7 +3,7 @@
/*
* Name: Diabook
* Description: Diabook: report bugs and request here: http://pad.toktan.org/p/diabook or contact me : thomas_bierey@friendica.eu
- * Version: (Version: 1.026)
+ * Version: (Version: 1.027)
* Author:
*/
@@ -13,12 +13,12 @@ $a = get_app();
function diabook_init(&$a) {
//print diabook-version for debugging
-$diabook_version = "Diabook (Version: 1.026)";
-$a->page['htmlhead'] .= sprintf('<META NAME="theme" CONTENT="%s"/>', $diabook_version);
+$diabook_version = "Diabook (Version: 1.027)";
+$a->page['htmlhead'] .= sprintf('<META NAME=generator CONTENT="%s"/>', $diabook_version);
-//change css on network and profilepages
+//init css on network and profilepages
$cssFile = null;
-
+//get statuses of boxes at right-hand-column
$close_pages = false;
$site_close_pages = get_config("diabook", "close_pages" );
if (local_user()) {$close_pages = get_pconfig(local_user(), "diabook", "close_pages");}
@@ -79,7 +79,7 @@ if (local_user()) {$close_mapquery = get_pconfig(local_user(), "diabook", "close
if ($close_mapquery===false) $close_mapquery=$site_close_mapquery;
if ($close_mapquery===false) $close_mapquery="1";
-
+//get resolution (wide/normal)
$resolution=false;
$resolution = get_pconfig(local_user(), "diabook", "resolution");
if ($resolution===false) $resolution="normal";
@@ -90,8 +90,7 @@ if ($resolution=="wide") {
} else {
$a->page['htmlhead'] .= '<meta name="viewport" content="width=980" />';
}
-
-
+//get colour-scheme
$color = false;
$site_color = get_config("diabook", "color" );
if (local_user()) {$color = get_pconfig(local_user(), "diabook", "color");}
@@ -107,7 +106,7 @@ if ($color=="green") $color_path = "/diabook-green/";
if ($color=="dark") $color_path = "/diabook-dark/";
- //profile_side at networkpages
+ //build personal menue at lefthand-col (id="profile_side") and boxes at right-hand-col at networkpages
if ($a->argv[0] === "network" && local_user()){
// USER MENU
@@ -139,6 +138,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
}
$ccCookie = $close_pages + $close_mapquery + $close_profiles + $close_helpers + $close_services + $close_friends + $close_twitter + $close_lastusers + $close_lastphotos + $close_lastlikes;
+ //if all boxes closed, dont build right-hand-col and dont use special css
if($ccCookie != "10") {
// COMMUNITY
diabook_community_info();
@@ -151,7 +151,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
- //right_aside at profile pages
+ //build boxes at right_aside at profile pages
if ($a->argv[0].$a->argv[1] === "profile".$a->user['nickname']){
if($ccCookie != "10") {
// COMMUNITY
@@ -164,46 +164,45 @@ if ($color=="dark") $color_path = "/diabook-dark/";
}
}
- //js scripts
+ //write js-scripts to the head-section:
//load jquery.cookie.js
$cookieJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.cookie.js";
- $a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s"></script>', $cookieJS);
-
+ $a->page['htmlhead'] .= sprintf('<script type="text/javascript" src="%s"></script>', $cookieJS);
//load jquery.ae.image.resize.js
- $imageresizeJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.ae.image.resize.js";
- $a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $imageresizeJS);
-
+ $imageresizeJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.ae.image.resize.min.js";
+ $a->page['htmlhead'] .= sprintf('<script type="text/javascript" src="%s" ></script>', $imageresizeJS);
//load jquery.ui.js
if($ccCookie != "10") {
$jqueryuiJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery-ui-1.8.20.custom.min.js";
- $a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $jqueryuiJS);
+ $a->page['htmlhead'] .= sprintf('<script type="text/javascript" src="%s" ></script>', $jqueryuiJS);
+ $jqueryuicssJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/jquery-ui-1.8.20.custom.css";
+ $a->page['htmlhead'] .= sprintf('<link rel="stylesheet" type="text/css" href="%s" />', $jqueryuicssJS);
}
-
//load jquery.twitter.search.js
if($close_twitter != "1") {
$twitterJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.twitter.search.js";
- $a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $twitterJS);
+ $a->page['htmlhead'] .= sprintf('<script type="text/javascript" src="%s" ></script>', $twitterJS);
}
-
//load jquery.mapquery.js
-
if($close_mapquery != "1") {
$mqtmplJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.tmpl.js";
- $a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $mqtmplJS);
+ $a->page['htmlhead'] .= sprintf('<script type="text/javascript" src="%s" ></script>', $mqtmplJS);
$mapqueryJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.mapquery.core.js";
- $a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $mapqueryJS);
+ $a->page['htmlhead'] .= sprintf('<script type="text/javascript" src="%s" ></script>', $mapqueryJS);
$openlayersJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/OpenLayers.js";
- $a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $openlayersJS);
+ $a->page['htmlhead'] .= sprintf('<script type="text/javascript" src="%s" ></script>', $openlayersJS);
$mqmouseposJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.mapquery.mqMousePosition.js";
- $a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $mqmouseposJS);
+ $a->page['htmlhead'] .= sprintf('<script type="text/javascript" src="%s" ></script>', $mqmouseposJS);
$mousewheelJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.mousewheel.js";
- $a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $mousewheelJS);
-
+ $a->page['htmlhead'] .= sprintf('<script type="text/javascript" src="%s" ></script>', $mousewheelJS);
+ $mqlegendJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.mapquery.legend.js";
+ $a->page['htmlhead'] .= sprintf('<script type="text/javascript" src="%s" ></script>', $mqlegendJS);
+ $mqlayermanagerJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.mapquery.mqLayerManager.js";
+ $a->page['htmlhead'] .= sprintf('<script type="text/javascript" src="%s" ></script>', $mqlayermanagerJS);
}
$a->page['htmlhead'] .= '
<script>
-
$(function() {
$("a.lightbox").fancybox(); // Select all links with lightbox class
$("a#twittersettings-link").fancybox({onClosed: function() { $("#twittersettings").attr("style","display: none;");}} );
@@ -216,8 +215,8 @@ if ($color=="dark") $color_path = "/diabook-dark/";
$("div#footerbox").attr("style", "border-top: 1px solid #D2D2D2; width: 70%;right: 15%;position: absolute;top:"+footer_top+"px;");
});
</script>';
+
//check if mapquerybox is active and print
-
if($close_mapquery != "1") {
$ELZoom=false;
$ELPosX=false;
@@ -237,7 +236,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
$a->page['htmlhead'] .= '
<script>
- $(document).ready(function() {
+ $(function() {
$("#map").mapQuery({
layers:[{ //add layers to your map; you need to define at least one to be able to see anything on the map
type:"osm" //add a layer of the type osm (OpenStreetMap)
@@ -248,9 +247,16 @@ if ($color=="dark") $color_path = "/diabook-dark/";
});
function open_mapcontrol() {
- $("div#mapcontrol").attr("style","display: block;width:900px;height:600px;");
- $("#map2").mapQuery({layers:[{type:"osm"}],
- center:({zoom:'.$ELZoom.',position:['.$ELPosX.','.$ELPosY.']})});
+ $("div#mapcontrol").attr("style","display: block;width:900px;height:900px;");
+ $("#map2").mapQuery({
+ layers:[{type:"osm", label:"OpenStreetMap" },
+ {type:"wms", label:"Population density 2010", legend:{url:"http://mapserver.edugis.nl/cgi-bin/mapserv?map=maps/edugis/cache/population.map&version=1.1.1&service=WMS&request=GetLegendGraphic&layer=Bevolkingsdichtheid_2010&format=image/png"}, url:"http://t1.edugis.nl/tiles/tilecache.py?map=maps/edugis/cache/population.map",
+ layers:"Bevolkingsdichtheid_2010" },
+ {type:"wms",
+ label:"OpenLayers WMS",
+ url:"http://labs.metacarta.com/wms/vmap0",
+ layers:"basic" }],
+ center:({zoom:'.$ELZoom.',position:['.$ELPosX.','.$ELPosY.']})});
$("#mouseposition").mqMousePosition({
map: "#map2",
@@ -259,13 +265,18 @@ if ($color=="dark") $color_path = "/diabook-dark/";
precision:4
});
-
+ $("#layermanager").mqLayerManager({map:"#map2"});
+ $( "div#layermanager" ).accordion({header: ".mq-layermanager-element-header"});
+ $(".mq-layermanager-element-content").attr("style", "");
+
map = $("#map2").mapQuery().data("mapQuery");
textarea = document.getElementById("id_diabook_ELZoom");
-
+ textarea.value = "'.$ELZoom.'";
$("#map2").bind("mousewheel", function(event, delta) {
- if (delta > 0 || delta < 0){
- textarea.value = map.center().zoom; }
+ if (delta > 0 && textarea.value < 18){
+ textarea.value = textarea.value - delta*-1; }
+ if (delta < 0 && textarea.value > "0"){
+ textarea.value = textarea.value - delta*-1; }
});
};
</script>';
@@ -293,20 +304,19 @@ if ($color=="dark") $color_path = "/diabook-dark/";
};
</script>';}
- //check if community_home-plugin is activated and change css
+ //check if community_home-plugin is activated and change css.. we need this, that the submit-wrapper doesn't overlay the login-panel if communityhome-plugin is active
$nametocheck = "communityhome";
$r = q("select id from addon where name = '%s' and installed = 1", dbesc($nametocheck));
- if(count($r) == "1") {
+ if(count($r) == "1" && $a->argv[0] === "home" ) {
$a->page['htmlhead'] .= '
<script>
- $(document).ready(function() {
+ $(function() {
$("div#login-submit-wrapper").attr("style","padding-top: 120px;");
-
});
</script>';
}
- //comment-edit-wrapper on photo_view
+ //comment-edit-wrapper on photo_view... we need this to workaround a global bug in photoview, where the comment-box is between the last comment the the comment before the last
if ($a->argv[0].$a->argv[2] === "photos"."image"){
$a->page['htmlhead'] .= '
<script>
@@ -315,7 +325,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
});
</script>';
}
- //restore right hand col at settingspage
+ //restore (only) the order right hand col at settingspage
if($a->argv[0] === "settings" && local_user()) {
$a->page['htmlhead'] .= '
<script>
@@ -389,11 +399,6 @@ if ($color=="dark") $color_path = "/diabook-dark/";
};}
);
-
- function open_boxsettings() {
- $("div#boxsettings").attr("style","display: block;height:500px;width:450px;");
- $("label").attr("style","width: 350px;");
- };
</script>';}
}
@@ -401,7 +406,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
// custom css
if (!is_null($cssFile)) $a->page['htmlhead'] .= sprintf('<link rel="stylesheet" type="text/css" href="%s" />', $cssFile);
-
+
//footer
$tpl = get_markup_template('footer.tpl');
$a->page['footer'] .= replace_macros($tpl, array());
@@ -413,6 +418,68 @@ if ($color=="dark") $color_path = "/diabook-dark/";
function diabook_community_info() {
$a = get_app();
+
+ $close_pages = false;
+ $site_close_pages = get_config("diabook", "close_pages" );
+ if (local_user()) {$close_pages = get_pconfig(local_user(), "diabook", "close_pages");}
+ if ($close_pages===false) $close_pages=$site_close_pages;
+ if ($close_pages===false) $close_pages="1";
+
+ $close_profiles = false;
+ $site_close_profiles = get_config("diabook", "close_profiles" );
+ if (local_user()) {$close_profiles = get_pconfig(local_user(), "diabook", "close_profiles");}
+ if ($close_profiles===false) $close_profiles=$site_close_profiles;
+ if ($close_profiles===false) $close_profiles="0";
+
+ $close_helpers = false;
+ $site_close_helpers = get_config("diabook", "close_helpers" );
+ if (local_user()) {$close_helpers = get_pconfig(local_user(), "diabook", "close_helpers");}
+ if ($close_helpers===false) $close_helpers=$site_close_helpers;
+ if ($close_helpers===false) $close_helpers="0";
+
+ $close_services = false;
+ $site_close_services = get_config("diabook", "close_services" );
+ if (local_user()) {$close_services = get_pconfig(local_user(), "diabook", "close_services");}
+ if ($close_services===false) $close_services=$site_close_services;
+ if ($close_services===false) $close_services="0";
+
+ $close_friends = false;
+ $site_close_friends = get_config("diabook", "close_friends" );
+ if (local_user()) {$close_friends = get_pconfig(local_user(), "diabook", "close_friends");}
+ if ($close_friends===false) $close_friends=$site_close_friends;
+ if ($close_friends===false) $close_friends="0";
+
+ $close_lastusers = false;
+ $site_close_lastusers = get_config("diabook", "close_lastusers" );
+ if (local_user()) {$close_lastusers = get_pconfig(local_user(), "diabook", "close_lastusers");}
+ if ($close_lastusers===false) $close_lastusers=$site_close_lastusers;
+ if ($close_lastusers===false) $close_lastusers="0";
+
+ $close_lastphotos = false;
+ $site_close_lastphotos = get_config("diabook", "close_lastphotos" );
+ if (local_user()) {$close_lastphotos = get_pconfig(local_user(), "diabook", "close_lastphotos");}
+ if ($close_lastphotos===false) $close_lastphotos=$site_close_lastphotos;
+ if ($close_lastphotos===false) $close_lastphotos="0";
+
+ $close_lastlikes = false;
+ $site_close_lastlikes = get_config("diabook", "close_lastlikes" );
+ if (local_user()) {$close_lastlikes = get_pconfig(local_user(), "diabook", "close_lastlikes");}
+ if ($close_lastlikes===false) $close_lastlikes=$site_close_lastlikes;
+ if ($close_lastlikes===false) $close_lastlikes="0";
+
+ $close_twitter = false;
+ $site_close_twitter = get_config("diabook", "close_twitter" );
+ if (local_user()) {$close_twitter = get_pconfig(local_user(), "diabook", "close_twitter");}
+ if ($close_twitter===false) $close_twitter=$site_close_twitter;
+ if ($close_twitter===false) $close_twitter="1";
+
+ $close_mapquery = false;
+ $site_close_mapquery = get_config("diabook", "close_mapquery" );
+ if (local_user()) {$close_mapquery = get_pconfig(local_user(), "diabook", "close_mapquery");}
+ if ($close_mapquery===false) $close_mapquery=$site_close_mapquery;
+ if ($close_mapquery===false) $close_mapquery="1";
+
+
// comunity_profiles
if($close_profiles != "1") {
$aside['$comunity_profiles_title'] = t('Community Profiles');
@@ -509,7 +576,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
}}
// last 12 photos
- if($close_photos != "1") {
+ if($close_lastphotos != "1") {
$aside['$photos_title'] = t('Last photos');
$aside['$photos_items'] = array();
$r = q("SELECT `photo`.`id`, `photo`.`resource-id`, `photo`.`scale`, `photo`.`desc`, `user`.`nickname`, `user`.`username` FROM
@@ -568,7 +635,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
if($close_pages != "1") {
if(local_user()) {
$page = '
- <h3 style="margin-top:0px;">'.t("Community Pages").'<a id="closeicon" href="#boxsettings" onClick="open_boxsettings(); return false;" style="text-decoration:none;" class="icon close_box" title="close"></a></h3>
+ <h3 style="margin-top:0px;">'.t("Community Pages").'<a id="closeicon" href="#boxsettings" onClick="open_boxsettings(); return false;" style="text-decoration:none;" class="icon close_box" title="'.t("Settings").'"></a></h3>
<div id=""><ul style="margin-left: 7px;margin-top: 0px;padding-left: 0px;padding-top: 0px;">';
$pagelist = array();
@@ -608,9 +675,9 @@ if ($color=="dark") $color_path = "/diabook-dark/";
$ELZoom = get_pconfig(local_user(), 'diabook', 'ELZoom' );
$ELPosX = get_pconfig(local_user(), 'diabook', 'ELPosX' );
$ELPosY = get_pconfig(local_user(), 'diabook', 'ELPosY' );
- $aside['$ELZoom'] = array('diabook_ELZoom', t('Set zoomfactor for Earth Layer'), $ELZoom, '', $ELZoom);
- $aside['$ELPosX'] = array('diabook_ELPosX', t('Set longitude (X) for Earth Layer'), $ELPosX, '', $ELPosX);
- $aside['$ELPosY'] = array('diabook_ELPosY', t('Set latitude (Y) for Earth Layer'), $ELPosY, '', $ELPosY);
+ $aside['$ELZoom'] = array('diabook_ELZoom', t('Set zoomfactor for Earth Layers'), $ELZoom, '', $ELZoom);
+ $aside['$ELPosX'] = array('diabook_ELPosX', t('Set longitude (X) for Earth Layers'), $ELPosX, '', $ELPosX);
+ $aside['$ELPosY'] = array('diabook_ELPosY', t('Set latitude (Y) for Earth Layers'), $ELPosY, '', $ELPosY);
if (isset($_POST['diabook-settings-map-sub']) && $_POST['diabook-settings-map-sub']!=''){
set_pconfig(local_user(), 'diabook', 'ELZoom', $_POST['diabook_ELZoom']);
set_pconfig(local_user(), 'diabook', 'ELPosX', $_POST['diabook_ELPosX']);
@@ -660,26 +727,28 @@ if ($color=="dark") $color_path = "/diabook-dark/";
$close_lastusers = get_pconfig(local_user(), 'diabook', 'close_lastusers' );
$close_lastphotos = get_pconfig(local_user(), 'diabook', 'close_lastphotos' );
$close_lastlikes = get_pconfig(local_user(), 'diabook', 'close_lastlikes' );
- $close_pagesC = array('1'=>'hide', '0'=>'show',);
- $close_mapqueryC = array('1'=>'hide', '0'=>'show',);
- $close_profilesC = array('0'=>'show', '1'=>'hide',);
- $close_helpersC = array('0'=>'show', '1'=>'hide',);
- $close_servicesC = array('0'=>'show', '1'=>'hide',);
- $close_friendsC = array('0'=>'show', '1'=>'hide',);
- $close_twitterC = array('1'=>'hide', '0'=>'show',);
- $close_lastusersC = array('0'=>'show', '1'=>'hide',);
- $close_lastphotosC = array('0'=>'show','1'=>'hide',);
- $close_lastlikesC = array('0'=>'show', '1'=>'hide',);
- $aside['$close_pages'] = array('diabook_close_pages', t('Show "Cummunity Pages" at right-hand coloumn?'), $close_pages, '', $close_pagesC);
- $aside['$close_mapquery'] = array('diabook_close_mapquery', t('Show "Earth Layers" at right-hand coloumn?'), $close_mapquery, '', $close_mapqueryC);
- $aside['$close_profiles'] = array('diabook_close_profiles', t('Show "Cummunity Profiles" at right-hand coloumn?'), $close_profiles, '', $close_profilesC);
- $aside['$close_helpers'] = array('diabook_close_helpers', t('Show "Help or @NewHere" at right-hand coloumn?'), $close_helpers, '', $close_helpersC);
- $aside['$close_services'] = array('diabook_close_services', t('Show "Connect Services" at right-hand coloumn?'), $close_services, '', $close_servicesC);
- $aside['$close_friends'] = array('diabook_close_friends', t('Show "Find Friends" at right-hand coloumn?'), $close_friends, '', $close_friendsC);
- $aside['$close_twitter'] = array('diabook_close_twitter', t('Show "Last Tweets" at right-hand coloumn?'), $close_twitter, '', $close_twitterC);
- $aside['$close_lastusers'] = array('diabook_close_lastusers', t('Show "Last Users" at right-hand coloumn?'), $close_lastusers, '', $close_lastusersC);
- $aside['$close_lastphotos'] = array('diabook_close_lastphotos', t('Show "Last Photos" at right-hand coloumn?'), $close_lastphotos, '', $close_lastphotosC);
- $aside['$close_lastlikes'] = array('diabook_close_lastlikes', t('Show "Last Likes" at right-hand coloumn?'), $close_lastlikes, '', $close_lastlikesC);
+ $close_pagesC = array('1'=>t("don't show"), '0'=>t("show"),);
+ $close_mapqueryC = array('1'=>t("don't show"), '0'=>t("show"),);
+ $close_profilesC = array('1'=>t("don't show"), '0'=>t("show"),);
+ $close_helpersC = array('1'=>t("don't show"), '0'=>t("show"),);
+ $close_servicesC = array('1'=>t("don't show"), '0'=>t("show"),);
+ $close_friendsC = array('1'=>t("don't show"), '0'=>t("show"),);
+ $close_twitterC = array('1'=>t("don't show"), '0'=>t("show"),);
+ $close_lastusersC = array('1'=>t("don't show"), '0'=>t("show"),);
+ $close_lastphotosC = array('1'=>t("don't show"), '0'=>t("show"),);
+ $close_lastlikesC = array('1'=>t("don't show"), '0'=>t("show"),);
+ $boxsettings['title'] = Array("", t('Show/hide boxes at right-hand column:'), "", "");
+ $aside['$boxsettings'] = $boxsettings;
+ $aside['$close_pages'] = array('diabook_close_pages', t('Community Pages'), $close_pages, '', $close_pagesC);
+ $aside['$close_mapquery'] = array('diabook_close_mapquery', t('Earth Layers'), $close_mapquery, '', $close_mapqueryC);
+ $aside['$close_profiles'] = array('diabook_close_profiles', t('Community Profiles'), $close_profiles, '', $close_profilesC);
+ $aside['$close_helpers'] = array('diabook_close_helpers', t('Help or @NewHere ?'), $close_helpers, '', $close_helpersC);
+ $aside['$close_services'] = array('diabook_close_services', t('Connect Services'), $close_services, '', $close_servicesC);
+ $aside['$close_friends'] = array('diabook_close_friends', t('Find Friends'), $close_friends, '', $close_friendsC);
+ $aside['$close_twitter'] = array('diabook_close_twitter', t('Last Tweets'), $close_twitter, '', $close_twitterC);
+ $aside['$close_lastusers'] = array('diabook_close_lastusers', t('Last users'), $close_lastusers, '', $close_lastusersC);
+ $aside['$close_lastphotos'] = array('diabook_close_lastphotos', t('Last photos'), $close_lastphotos, '', $close_lastphotosC);
+ $aside['$close_lastlikes'] = array('diabook_close_lastlikes', t('Last likes'), $close_lastlikes, '', $close_lastlikesC);
$aside['$sub'] = t('Submit');
$baseurl = $a->get_baseurl($ssl_state);
$aside['$baseurl'] = $baseurl;
@@ -694,7 +763,6 @@ if ($color=="dark") $color_path = "/diabook-dark/";
set_pconfig(local_user(), 'diabook', 'close_lastusers', $_POST['diabook_close_lastusers']);
set_pconfig(local_user(), 'diabook', 'close_lastphotos', $_POST['diabook_close_lastphotos']);
set_pconfig(local_user(), 'diabook', 'close_lastlikes', $_POST['diabook_close_lastlikes']);
- header("Location: network");
}
}
$close = t('Settings');
diff --git a/view/theme/diabook/theme_settings.tpl b/view/theme/diabook/theme_settings.tpl
index 68b22a168..ad024dfe9 100644
--- a/view/theme/diabook/theme_settings.tpl
+++ b/view/theme/diabook/theme_settings.tpl
@@ -6,18 +6,11 @@
{{inc field_select.tpl with $field=$resolution}}{{endinc}}
-{{inc field_input.tpl with $field=$TSearchTerm}}{{endinc}}
-
-{{inc field_input.tpl with $field=$ELPosX}}{{endinc}}
-
-{{inc field_input.tpl with $field=$ELPosY}}{{endinc}}
-
-{{inc field_input.tpl with $field=$ELZoom}}{{endinc}}
-
<div class="settings-submit-wrapper">
<input type="submit" value="$submit" class="settings-submit" name="diabook-settings-submit" />
</div>
-
+<br>
+<h3>Show/hide boxes at right-hand column</h3>
{{inc field_select.tpl with $field=$close_pages}}{{endinc}}
{{inc field_select.tpl with $field=$close_profiles}}{{endinc}}
{{inc field_select.tpl with $field=$close_helpers}}{{endinc}}
@@ -27,13 +20,22 @@
{{inc field_select.tpl with $field=$close_lastphotos}}{{endinc}}
{{inc field_select.tpl with $field=$close_lastlikes}}{{endinc}}
{{inc field_select.tpl with $field=$close_twitter}}{{endinc}}
+{{inc field_input.tpl with $field=$TSearchTerm}}{{endinc}}
{{inc field_select.tpl with $field=$close_mapquery}}{{endinc}}
+{{inc field_input.tpl with $field=$ELPosX}}{{endinc}}
+
+{{inc field_input.tpl with $field=$ELPosY}}{{endinc}}
+
+{{inc field_input.tpl with $field=$ELZoom}}{{endinc}}
+
<div class="settings-submit-wrapper">
<input type="submit" value="$submit" class="settings-submit" name="diabook-settings-submit" />
</div>
+<br>
+
<div class="field select">
-<a onClick="restore_boxes()" title="Restore order at right-hand column" style="cursor: pointer;">Restore order at right-hand column</a>
+<a onClick="restore_boxes()" title="Restore boxorder at right-hand column" style="cursor: pointer;">Restore boxorder at right-hand column</a>
</div>
diff --git a/view/theme/dispy/dark/_base.less b/view/theme/dispy/dark/_base.less
index aee933135..000cdbd5a 100644
--- a/view/theme/dispy/dark/_base.less
+++ b/view/theme/dispy/dark/_base.less
@@ -23,7 +23,6 @@
@med_bg_colour: #4e4f4e;
@menu_bg_colour: #555753;
-
//* font colour, aka color: */
@lt_main_colour: #ffff99;
@main_colour: #eeeecc;
@@ -48,6 +47,7 @@
@orange: #f8911b;
@lt_orange: #fcaf3e;
@shadow_colour: darken(@main_alt_colour, 86.5%);
+@lt_shadow_colour: #888888;
@friendica_blue: #3465a4;
@border2: #babdb6;
@group_show: #9ade00;
@@ -66,6 +66,9 @@
//@hover_colour: #729fcf;
@hover_colour: @dk_link_colour;
+// other colours
+@med_border_colour: #c8bebe;
+
//* box shadows */
@menu_shadow: 5px 0 10px 0 @shadow_colour;
@main_shadow: 3px 3px 3px 10px 0 @shadow_colour;
@@ -96,7 +99,7 @@
//*/
//* text-shadow */
-.text_shadow (@h: 1px, @v: 1px, @c: #111) {
+.text_shadow (@h: 1px, @v: 1px, @c: @shadow_colour) {
-moz-text-shadow: @h @v @c;
-o-text-shadow: @h @v @c;
-webkit-text-shadow: @h @v @c;
@@ -104,7 +107,7 @@
text-shadow: @h @v @c;
}
//* transitions */
-.transition (@type: all, @dur: 0.5s, @effect: ease-in-out) {
+.transition (@type: all, @dur: 0.75s, @effect: ease-in-out) {
-webkit-transition: @arguments;
-moz-transition: @arguments;
-o-transition: @arguments;
@@ -116,7 +119,9 @@
.borders (@size: 1px, @style: solid, @colour: @main_colour) {
border: @size @style @colour;
}
-
+.med_borders (@sz: 2px, @st: solid, @c: @med_border_colour) {
+ border: @sz @st @c;
+}
//* rounded box corners */
.rounded_corners (@r: 5px) {
-o-border-radius: @r;
@@ -145,6 +150,12 @@
line-height: 1.1em;
font-family: sans-serif;
}
+.font_size_adjust () {
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ -o-text-size-adjust: 100%;
+ font-size-adjust: 100%;
+}
//* reset ul, ol */
.list_reset () {
diff --git a/view/theme/dispy/dark/screenshot.jpg b/view/theme/dispy/dark/screenshot.jpg
index ada60ca61..f54873e8e 100644
--- a/view/theme/dispy/dark/screenshot.jpg
+++ b/view/theme/dispy/dark/screenshot.jpg
Binary files differ
diff --git a/view/theme/dispy/dark/screenshot_small.jpg b/view/theme/dispy/dark/screenshot_small.jpg
new file mode 100644
index 000000000..32d869331
--- /dev/null
+++ b/view/theme/dispy/dark/screenshot_small.jpg
Binary files differ
diff --git a/view/theme/dispy/dark/style.css b/view/theme/dispy/dark/style.css
index 7582c9add..60e7db6e1 100644
--- a/view/theme/dispy/dark/style.css
+++ b/view/theme/dispy/dark/style.css
@@ -11,13 +11,14 @@ q{quotes:"" "";}
article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
audio,canvas,video,time{display:inline-block;*display:inline;*zoom:1;}
audio:not([controls]),[hidden]{display:none;}
-html{font-size:100%;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
+html{font-size:100%;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-o-text-size-adjust:100%;font-size-adjust:100%;}
body{margin:0;padding:0;font-size:14pt;line-height:1.1em;font-family:sans-serif;color:#eeeecc;background-color:#2e2f2e;}
button,input,select,textarea{color:#eeeecc;background-color:#2e2f2e;}
select{border:1px dotted #555555;padding:1px;margin:3px;color:#eeeecc;background:#2e2f2e;max-width:85%;min-width:85px;}
option{padding:1px;color:#eeeecc;background:#2e2f2e;}option[selected="selected"]{color:#2e2f2e;background:#eeeecc;}
tr:nth-child(even){background-color:#474947;}
-:focus{outline:0;}
+:focus{outline:none;}
+a:focus{outline:invert, dashed, thin;}
[disabled="disabled"]{background:#4e4f4e;color:#ddddbb;}
ins,mark{background-color:#2e302e;color:#474947;}
ins{text-decoration:none;}
@@ -25,6 +26,9 @@ mark{font-style:italic;font-weight:bold;}
pre,code,kbd,samp,.wall-item-body code{font-family:monospace, monospace;_font-family:monospace;font-size:1em;}
pre,.wall-item-body code{white-space:pre-wrap;white-space:pre;word-wrap:none;}
q{quotes:none;}q:before,q:after{content:"";content:none;}
+em{font-style:italic;}
+strong{font-weight:bold;}
+strike{text-decoration:line-through;}
small{font-size:85%;}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}
sub{bottom:-0.25em;}
@@ -33,22 +37,34 @@ img{border:0 none;}
a{color:#88a9d2;text-decoration:none;margin-bottom:1px;}a:hover{color:#638ec4;border-bottom:1px dotted #638ec4;}
a:hover img{text-decoration:none;}
blockquote{background:#444444;color:#eeeecc;text-indent:5px;padding:5px;border:1px solid #9a9a9a;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
-label{width:38%;display:inline-block;font-size:0.95em;margin:0 10px 1em 0;border:1px solid #2e2f2e;padding:5px;background:#eeeecc;color:#111111;-moz-box-shadow:3px 3px 5px 0px #111111;-o-box-shadow:3px 3px 5px 0px #111111;-webkit-box-shadow:3px 3px 5px 0px #111111;-ms-box-shadow:3px 3px 5px 0px #111111;box-shadow:3px 3px 5px 0px #111111;}
+label{width:38%;display:inline-block;font-size:small;margin:0 10px 1em 0;border:1px solid #2e2f2e;padding:5px;background:#eeeecc;color:#111111;-moz-box-shadow:3px 3px 5px 0px #111111;-o-box-shadow:3px 3px 5px 0px #111111;-webkit-box-shadow:3px 3px 5px 0px #111111;-ms-box-shadow:3px 3px 5px 0px #111111;box-shadow:3px 3px 5px 0px #111111;}
input{width:250px;height:25px;border:1px solid #999999;}input[type="checkbox"],input[type="radio"]{margin:0;width:15px;height:15px;}
input[type="submit"],input[type="button"]{background-color:#eeeeee;border:2px outset #b1b1b1;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 3px 4px 0 #111111;-o-box-shadow:1px 3px 4px 0 #111111;-webkit-box-shadow:1px 3px 4px 0 #111111;-ms-box-shadow:1px 3px 4px 0 #111111;box-shadow:1px 3px 4px 0 #111111;color:#2e302e;cursor:pointer;font-weight:bold;width:auto;-moz-text-shadow:1px 1px #111111;-o-text-shadow:1px 1px #111111;-webkit-text-shadow:1px 1px #111111;-ms-text-shadow:1px 1px #111111;text-shadow:1px 1px #111111;}
input[type="submit"]:active,input[type="button"]:active{-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
h1,h2,h3,h4,h5,h6{margin:10px 0px;font-weight:bold;border-bottom:1px solid #638ec4;}
-.required{display:inline;color:#ff0;font-size:16px;font-weight:bold;margin:3px;}
+h1{font-size:x-large;}
+h2{font-size:large;}
+h3{font-size:medium;}
+h4{font-size:small;}
+h5{font-size:x-small;}
+h6{font-size:xx-small;}
+.required{display:inline;color:red;font-size:16px;font-weight:bold;margin:3px;}
.fakelink,.lockview{color:#88a9d2;cursor:pointer;}
.fakelink:hover{color:#638ec4;}
.smalltext{font-size:0.7em;}
-#panel{position:absolute;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;border:1px solid #eeeeee;background-color:#2e302e;color:#eeeecc;padding:1em;}
-.pager{margin-top:60px;display:block;clear:both;text-align:center;font-size:small;font-weight:bold;}.pager span{padding:4px;margin:4px;}
-.pager_current{background-color:#88a9d2;color:#2e2f2e;}
.action{margin:5px 0;}
.tool{margin:5px 0;list-style:none;}
#articlemain{width:100%;height:100%;margin:0 auto;}
-[class$="-desc"],[id$="-desc"]{color:#2e2f2e;background:#eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:3px 3px 5px 0px #111111;-o-box-shadow:3px 3px 5px 0px #111111;-webkit-box-shadow:3px 3px 5px 0px #111111;-ms-box-shadow:3px 3px 5px 0px #111111;box-shadow:3px 3px 5px 0px #111111;margin:3px 10px 7px 0;padding:6px 7px;font-weight:bold;font-size:smaller;}
+.button,#profile-listing-desc{width:25%;height:auto;background:#555753;color:#eeeecc;border:2px outset #222321;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:5px;font-size:smaller;cursor:pointer;}.button.active,#profile-listing-desc.active{-moz-box-shadow:4px 4px 7px 0px #111111;-o-box-shadow:4px 4px 7px 0px #111111;-webkit-box-shadow:4px 4px 7px 0px #111111;-ms-box-shadow:4px 4px 7px 0px #111111;box-shadow:4px 4px 7px 0px #111111;}
+.button a,#profile-listing-desc a{color:#eeeecc;font-size:smaller;font-weight:bold;}
+[class$="-desc"],[id$="-desc"]{color:#2e2f2e;border:1px outset #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;}
+#item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;}
+.intro-approve-as-friend-desc{margin-top:10px;}
+.intro-desc{margin-bottom:20px;font-weight:bold;}
+#group-edit-desc{margin:10px 0px;}
+#settings-nickname-desc{background:#eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;border:1px solid #eeeecc;padding:5px;color:#2e2f2e;}
+.contactname,.contact-name{font-weight:bold;font-size:smaller;}
+.contact-details{font-style:italic;font-size:smaller;}
#asidemain .field{overflow:hidden;width:200px;}
#login-extra-links{overflow:auto !important;padding-top:60px !important;width:100% !important;}#login-extra-links a{margin-right:20px;}
#login_standard{display:block !important;float:none !important;height:100% !important;position:relative !important;width:100% !important;}#login_standard .field label{width:200px !important;}
@@ -60,7 +76,7 @@ h1,h2,h3,h4,h5,h6{margin:10px 0px;font-weight:bold;border-bottom:1px solid #638e
#login_openid label{width:180px !important;}
nav{height:60px;background-color:#1d1f1d;color:#eeeeee;position:relative;padding:20px 20px 10px 95px;}nav a{text-decoration:none;color:#eeeeee;border:0px;}nav a:hover{text-decoration:none;color:#eeeeee;border:0px;}
nav #banner{display:block;position:absolute;left:51px;top:25px;}nav #banner #logo-text a{font-size:40px;font-weight:bold;margin-left:3px;}
-ul#user-menu-popup{display:none;position:absolute;background-color:#555753;width:100%;padding:10px 0px;margin:0px;top:20px;left:0;font-size:small;line-height:1;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-moz-box-shadow:5px 5px 10px 0px #111111;-o-box-shadow:5px 5px 10px 0px #111111;-webkit-box-shadow:5px 5px 10px 0px #111111;-ms-box-shadow:5px 5px 10px 0px #111111;box-shadow:5px 5px 10px 0px #111111;z-index:10000;}ul#user-menu-popup li{display:block;}ul#user-menu-popup li a{display:block;padding:5px;}ul#user-menu-popup li a:hover{color:#eeeecc;background-color:#2e302e;}
+ul#user-menu-popup{display:none;position:absolute;background-color:#555753;width:100%;padding:10px 0px;margin:0px;top:20px;left:0;font-size:small;line-height:1;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-moz-box-shadow:5px 5px 10px 0px #111111;-o-box-shadow:5px 5px 10px 0px #111111;-webkit-box-shadow:5px 5px 10px 0px #111111;-ms-box-shadow:5px 5px 10px 0px #111111;box-shadow:5px 5px 10px 0px #111111;z-index:10000;}ul#user-menu-popup li{display:block;}ul#user-menu-popup li a{display:block;padding:5px;color:#eeeeee;background-color:#555753;}ul#user-menu-popup li a:hover{color:#2e2f2e;background-color:#eeeeee;}
ul#user-menu-popup li a.nav-sep{border-top:1px solid #2e302e;}
nav .nav-link{display:inline-block;width:22px;height:22px;overflow:hidden;margin:0px 5px 5px;text-indent:50px;background:transparent url(dark/icons.png) 0 0 no-repeat;}
#nav-apps-link{background-position:0 -66px;}#nav-apps-link:hover{background-position:-22px -66px;}
@@ -78,8 +94,7 @@ nav .nav-link{display:inline-block;width:22px;height:22px;overflow:hidden;margin
#jot-title,#profile-link,#profile-title,#profile-attach-wrapper,#profile-audio,#profile-link,#profile-location,#profile-nolocation,#profile-title,#profile-upload-wrapper,#profile-video,#profile-jot-submit,#wall-image-upload,#wall-file-upload,#wall-image-upload-div,#wall-file-upload-div,.icon,.hover,.focus,.pointer{cursor:pointer;}
div.jGrowl div.notice{background:#3320bc url("../../../images/icons/48/notice.png") no-repeat 5px center;color:white;padding-left:58px;margin-top:50px;}
div.jGrowl div.info{background:#1353b1 url("../../../images/icons/48/info.png") no-repeat 5px center;color:white;padding-left:58px;margin-top:50px;}
-#nav-notifications-menu{margin:30px 0 0 -20px;width:275px;max-height:300px;overflow-y:auto;font-size:9pt;}#nav-notifications-menu .contactname{font-weight:bold;font-size:0.9em;}
-#nav-notifications-menu img{float:left;margin-right:5px;}
+#nav-notifications-menu{margin:30px 0 0 -20px;width:275px;max-height:300px;overflow-y:auto;font-size:9pt;}#nav-notifications-menu img{float:left;margin-right:5px;}
#nav-notifications-menu .notif-when{font-size:0.8em;display:block;}
#nav-notifications-menu li{word-wrap:normal;border-bottom:1px solid black;}#nav-notifications-menu li:hover{color:black;}
#nav-notifications-menu a:hover{color:black;text-decoration:underline;}
@@ -90,11 +105,13 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
#nav-buttons{clear:both;list-style:none;padding:0px;margin:0px;height:25px;}#nav-buttons>li{padding:0;display:inline-block;margin:0px -4px 0px 0px;}
.floaterflip{display:block;position:fixed;z-index:110;top:56px;right:19px;width:22px;height:22px;overflow:hidden;margin:0px;background:transparent url(dark/icons.png) -190px -60px no-repeat;}
.search-box{display:inline-block;margin:5px;position:fixed;right:0px;bottom:0px;z-index:100;background:#1d1f1d;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
-#search-text{border:1px solid #eeeecc;background:#2e2f2e;color:#eeeecc;font-size:8pt;margin:8px;width:10em;height:14px;}
+#search-text,#mini-search-text{background:#2e2f2e;color:#eeeecc;margin:8px;}
+#search-text{border:1px solid #eeeecc;}
+#mini-search-text{font-size:8pt;height:14px;width:10em;}
#scrollup{position:fixed;right:5px;bottom:40px;z-index:100;}#scrollup a:hover{text-decoration:none;border:0;}
-#user-menu{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;display:block;width:75%;margin:3px 0 0 0;position:relative;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-color:#555753;background-image:url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");background-position:98% center;background-repeat:no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;}
+#user-menu{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;display:block;width:75%;margin:3px 0 0 0;position:relative;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-color:#555753;background-image:url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");background-position:98% center;background-repeat:no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;outline:0 none;}
#user-menu-label{font-size:small;padding:3px 20px 9px 5px;height:10px;}
-.nav-ajax-update,.nav-ajax-left{width:30px;height:19px;background:transparent url(dark/notifications.png) 0 0 no-repeat;color:#222;font-weight:bold;font-size:0.8em;padding-top:0.2em;text-align:center;float:left;margin:0 -1px 0 3px;display:block;visibility:hidden;}
+.nav-ajax-update,.nav-ajax-left{width:30px;height:19px;background:transparent url(dark/notifications.png) 0 0 no-repeat;color:#111111;font-weight:bold;font-size:0.8em;padding-top:0.2em;text-align:center;float:left;margin:0 -1px 0 3px;display:block;visibility:hidden;}
.nav-ajax-update.show,.nav-ajax-left.show{visibility:visible;}
#net-update{background-position:0px 0px;}
#mail-update{background-position:-30px 0;}
@@ -103,17 +120,18 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
#intro-update{background-position:-120px 0px;}
#lang-select-icon{cursor:pointer;position:fixed;left:28px;bottom:6px;z-index:10;}
#language-selector{position:fixed;bottom:2px;left:52px;z-index:10;}
-.menu-popup{position:absolute;display:none;width:11em;background:white;color:#2e2f2e;margin:0px;padding:0px;border:3px solid #2e3436;z-index:100000;-moz-box-shadow:5px 5px 5px 0px #111111;-o-box-shadow:5px 5px 5px 0px #111111;-webkit-box-shadow:5px 5px 5px 0px #111111;-ms-box-shadow:5px 5px 5px 0px #111111;box-shadow:5px 5px 5px 0px #111111;}.menu-popup a{display:block;color:#2e2f2e;padding:5px 10px;text-decoration:none;}.menu-popup a:hover{background-color:#b9c1c3;}
+.menu-popup{position:absolute;display:none;width:11em;background:white;color:#2e2f2e;margin:0px;padding:0px;border:3px solid #88a9d2;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;z-index:100000;-moz-box-shadow:5px 5px 5px 0px #111111;-o-box-shadow:5px 5px 5px 0px #111111;-webkit-box-shadow:5px 5px 5px 0px #111111;-ms-box-shadow:5px 5px 5px 0px #111111;box-shadow:5px 5px 5px 0px #111111;}.menu-popup a{display:block;color:#2e2f2e;padding:5px 10px;text-decoration:none;}.menu-popup a:hover{color:#eeeecc;background-color:#88a9d2;}
.menu-popup .menu-sep{border-top:1px solid #4e4f4e;}
.menu-popup li{float:none;overflow:auto;height:auto;display:block;}.menu-popup li img{float:left;width:16px;height:16px;padding-right:5px;}
.menu-popup .empty{padding:5px;text-align:center;color:#9ea8ac;}
.notif-item{font-size:small;}.notif-item a{vertical-align:middle;}
.notif-image{width:32px;height:32px;padding:7px 7px 0px 0px;}
-.notify-seen{background:#bbbbbb;}
+.notify-seen{background:#ddddbb;color:#eeeecc;}
+.notify-unseen{color:#eeeecc;}
#sysmsg_info{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-o-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-webkit-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-ms-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
#sysmsg{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-o-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-webkit-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-ms-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
#sysmsg_info br,#sysmsg br{display:block;margin:2px 0px;border-top:1px solid #eeeecc;}
-#asidemain{float:left;font-size:0.75em;margin:20px 0 20px 35px;width:25%;display:inline;}
+#asidemain{float:left;font-size:small;margin:20px 0 20px 35px;width:25%;display:inline;}
#asideright,#asideleft{display:none;}
.vcard .fn{font-size:1.5em;font-weight:bold;border-bottom:1px solid #638ec4;padding-bottom:3px;}
.vcard #profile-photo-wrapper{margin:20px;}.vcard #profile-photo-wrapper img{-moz-box-shadow:3px 3px 10px 0 #111111;-o-box-shadow:3px 3px 10px 0 #111111;-webkit-box-shadow:3px 3px 10px 0 #111111;-ms-box-shadow:3px 3px 10px 0 #111111;box-shadow:3px 3px 10px 0 #111111;}
@@ -150,11 +168,11 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
#profile-jot-net{margin:5px 0;}
#jot-preview-link{margin:0 0 0 10px;border:0;text-decoration:none;float:right;}
.icon-text-preview{margin:0 0 -18px 0;display:block;width:20px;height:20px;background:url(dark/icons.png) no-repeat -128px -40px;border:0;text-decoration:none;float:right;cursor:pointer;}
-#profile-jot-perms{float:right;background-color:#555753;width:22px;height:22px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;overflow:hidden;border:0px;margin:0 10px 0 10px;}
+#profile-jot-perms{float:right;color:#555753;width:20px;height:20px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:3px 3px 5px 0 #111111;-o-box-shadow:3px 3px 5px 0 #111111;-webkit-box-shadow:3px 3px 5px 0 #111111;-ms-box-shadow:3px 3px 5px 0 #111111;box-shadow:3px 3px 5px 0 #111111;border:2px outset #555753;overflow:hidden;margin:0 10px 0 10px;}
#profile-jot-plugin-wrapper{width:1px;margin:10px 0 0 0;float:right;}
#profile-jot-submit-wrapper{float:right;width:100%;margin:10px 0 0 0;padding:0;}
#profile-jot-submit{height:auto;background-color:#555753;color:#eeeeee;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;border:2px outset #2e3436;margin:0;float:right;-moz-text-shadow:1px 1px #111111;-o-text-shadow:1px 1px #111111;-webkit-text-shadow:1px 1px #111111;-ms-text-shadow:1px 1px #111111;text-shadow:1px 1px #111111;width:auto;}#profile-jot-submit:active{-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
-#jot-perms-icon{width:20px;height:22px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;overflow:hidden;}
+#jot-perms-icon{width:22px;height:22px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;overflow:hidden;background:#555753 url("dark/icons.png") -88px -40px;}
#group_allow_wrapper,#group_deny_wrapper,#acl-permit-outer-wrapper,#contact_allow_wrapper,#contact_deny_wrapper,#acl-deny-outer-wrapper{width:47%;}
#group_allow_wrapper,#group_deny_wrapper,#acl-permit-outer-wrapper{float:left;}
#contact_allow_wrapper,#contact_deny_wrapper,#acl-deny-outer-wrapper{float:right;}
@@ -162,18 +180,18 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
#jot-public{background-color:#555555;color:#ff0000;padding:5px;float:left;}
#acl-deny-text{background-color:#555555;color:#eeeecc;padding:5px;float:left;}
#jot-title-desc{color:#cdcdcd;}
-#profile-jot-desc{color:#ff2000;margin:5px 0;}
+#profile-jot-desc{background:#2e2f2e;border:1px solid #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;color:#ff2000;margin:5px 0;}
#jot-title-wrapper{margin-bottom:5px;}
#jot-title-display{font-weight:bold;}
.jothidden{display:none;}
-#jot-preview-content{background-color:#2e302e;color:#eeeecc;border:1px solid #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:5px 0 10px 0px #111111;-o-box-shadow:5px 0 10px 0px #111111;-webkit-box-shadow:5px 0 10px 0px #111111;-ms-box-shadow:5px 0 10px 0px #111111;box-shadow:5px 0 10px 0px #111111;padding:3px 3px 6px 10px;}#jot-preview-content .wall-item-outside-wrapper{border:0;-o-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;-moz-border-radius:0px 0px 0px 0px;-ms-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
+#jot-preview-content{background-color:#2e3436;color:#eeeecc;border:1px solid #2e2f2e;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:5px 0 10px 0px #111111;-o-box-shadow:5px 0 10px 0px #111111;-webkit-box-shadow:5px 0 10px 0px #111111;-ms-box-shadow:5px 0 10px 0px #111111;box-shadow:5px 0 10px 0px #111111;padding:3px 3px 6px 10px;}#jot-preview-content .wall-item-outside-wrapper{border:0;-o-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;-moz-border-radius:0px 0px 0px 0px;-ms-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
#sectionmain{margin:20px;font-size:0.8em;min-width:475px;width:67%;float:left;display:inline;}
-.tabs{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:10px 0;}.tabs li{display:inline;font-size:smaller;font-weight:bold;}
-.tab{border:1px solid #88a9d2;padding:4px;}.tab:hover,.tab.active:hover,.tab:active{background:#88a9d2;color:#2e2f2e;}
-.tab.active{background:#eeeecc;color:#2e2f2e;}.tab.active a{color:#2e2f2e;}
+.tabs{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:10px 0;}.tabs li{display:inline;font-size:smaller;}
+.tab{border:1px solid #638ec4;padding:4px;}.tab:hover,.tab:active{background:#2e3436;color:#eeeecc;border:1px solid #638ec4;}
+.tab.active{background:#eeeecc;color:#2e2f2e;border:1px solid #638ec4;}.tab.active:hover{background:#2e3436;color:#eeeecc;border:1px solid #638ec4;}
+.tab.active a{color:#2e2f2e;text-decoration:none;}
.tab a{border:0;text-decoration:none;}
-.wall-item-outside-wrapper{border:1px solid #aaaaaa;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;}.wall-item-outside-wrapper.comment{margin-top:5px;}
-.wall-item-outside-wrapper-end{clear:both;}
+.wall-item-outside-wrapper{border:1px solid #a9a9a9;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:6px 1px 10px -2px #111111;-o-box-shadow:6px 1px 10px -2px #111111;-webkit-box-shadow:6px 1px 10px -2px #111111;-ms-box-shadow:6px 1px 10px -2px #111111;box-shadow:6px 1px 10px -2px #111111;}.wall-item-outside-wrapper.comment{margin-top:5px;}
.wall-item-content-wrapper{position:relative;padding:0.75em;width:auto;}
.wall-item-outside-wrapper .wall-item-comment-wrapper{}
.shiny{background:#2e3436;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
@@ -183,33 +201,32 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
[id^="tread-wrapper"],[class^="tread-wrapper"]{margin:1.2em 0 0 0;padding:0px;}
.wall-item-photo-menu{display:none;}
.wall-item-photo-menu-button{display:none;text-indent:-99999px;background:#555753 url(dark/menu-user-pin.jpg) no-repeat 75px center;position:absolute;overflow:hidden;width:90px;height:20px;top:85px;left:0;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}
-.wall-item-info{float:left;width:110px;}
+.wall-item-info{float:left;width:8em;}
.wall-item-photo-wrapper{width:80px;height:80px;position:relative;padding:5px;background-color:#555753;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
[class^="wall-item-tools"] *{}[class^="wall-item-tools"] *>*{}
-.wall-item-tools{float:right;opacity:0.4;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}.wall-item-tools:hover{opacity:1;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}
+.wall-item-tools{float:right;opacity:0.4;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}.wall-item-tools:hover{opacity:1;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}
.wall-item-subtools1{width:30px;height:30px;list-style:none outside none;margin:18px 0 30px -20px;padding:0;}
.wall-item-subtools2{width:25px;height:25px;list-style:none outside none;margin:-78px 0 0 5px;padding:0;}
.wall-item-title{font-size:1.2em;font-weight:bold;margin-bottom:1.4em;}
.wall-item-body{margin:15px 10px 10px 0px;text-align:left;overflow-x:auto;}
.wall-item-lock-wrapper{float:right;width:22px;height:22px;margin:0 -5px 0 0;opacity:1;}
-.wall-item-dislike,.wall-item-like{clear:left;font-size:0.8em;color:#888b85;margin:5px 0 5px 10.2em;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;opacity:0.5;}.wall-item-dislike:hover,.wall-item-like:hover{opacity:1;}
-.wall-item-author,.wall-item-actions-author{clear:left;float:left;font-size:0.8em;color:#888b85;margin:1em auto 0 0.2em;}
-.wall-item-ago{display:inline;padding-left:10px;}
-.wall-item-wrapper-end{clear:both;}
+.wall-item-dislike,.wall-item-like{clear:left;font-size:0.8em;color:#888b85;margin:5px 0 5px 10.2em;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;opacity:0.5;}.wall-item-dislike:hover,.wall-item-like:hover{opacity:1;}
+.wall-item-author,.wall-item-actions-author,.wall-item-ago{clear:left;float:left;color:#eeeecc;line-height:1;display:inline-block;font-size:0.75em;margin:0.5em auto 0;}
+.wall-item-author,.wall-item-actions-author{margin:0.5em auto 0;font-size:0.75em;font-weight:bold;}
.wall-item-location{margin-top:15px;width:100px;overflow:hidden;-moz-text-overflow:ellipsis;-ms-text-verflow:ellipsis;-o-text-overflow:ellipsis;-webkit-text-overflow:ellipsis;text-overflow:ellipsis;}.wall-item-location .icon{float:left;}
.wall-item-location>a,.wall-item-location .smalltext{margin-left:25px;font-size:0.7em;display:block;}
.wall-item-location>br{display:none;}
.wallwall .wwto{left:5px;margin:0;position:absolute;top:75px;z-index:10001;width:30px;height:30px;}.wallwall .wwto img{width:30px !important;height:30px !important;}
.wallwall .wall-item-photo-end{clear:both;}
.wall-item-arrowphoto-wrapper{position:absolute;left:35px;top:80px;z-index:10002;}
-.wall-item-photo-menu{min-width:92px;border:2px solid #ffffff;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 2px;color:#eeeeee;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeee;}
+.wall-item-photo-menu{min-width:92px;font-size:0.75em;border:2px solid #555753;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-o-border-radius:0 5px 5px 5px;-webkit-border-radius:0 5px 5px 5px;-moz-border-radius:0 5px 5px 5px;-ms-border-radius:0 5px 5px 5px;border-radius:0 5px 5px 5px;}.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 6px;color:#eeeeee;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeee;}
#item-delete-selected{overflow:auto;width:100%;}
#connect-services-header,#connect-services,#extra-help-header,#extra-help,#postit-header,#postit{margin:5px 0 0 0;}
.ccollapse-wrapper{font-size:0.9em;margin-left:5em;}
+.hide-comments-outer{font-size:small;}
.wall-item-outside-wrapper.comment{margin-left:5em;}.wall-item-outside-wrapper.comment .wall-item-photo{width:40px !important;height:40px !important;}
.wall-item-outside-wrapper.comment .wall-item-photo-wrapper{width:40px;height:40px;}
.wall-item-outside-wrapper.comment .wall-item-photo-menu-button{width:50px;top:45px;background-position:35px center;}
-.wall-item-outside-wrapper.comment .wall-item-info{width:60px;}
.wall-item-outside-wrapper.comment .wall-item-body{margin-left:10px;}
.wall-item-outside-wrapper.comment .wall-item-author{margin-left:0.2em;}
.wall-item-outside-wrapper.comment .wall-item-photo-menu{min-width:50px;top:60px;}
@@ -220,11 +237,11 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
.comment-edit-photo-link,.comment-edit-photo{margin-left:10px;}
.my-comment-photo{width:40px;height:40px;padding:5px;}
[class^="comment-edit-text"]{margin:5px 0 10px 20px;width:94%;}
-.comment-edit-text-empty{height:20px;border:2px #c8bebe solid;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;color:#c8bebe;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}.comment-edit-text-empty:hover{color:#999999;}
-.comment-edit-text-full{height:10em;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}
+.comment-edit-text-empty{height:20px;border:2px solid #c8bebe;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;color:#c8bebe;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}.comment-edit-text-empty:hover{color:#999999;}
+.comment-edit-text-full{height:10em;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}
.comment-edit-submit-wrapper{width:90%;margin:5px 5px 10px 50px;text-align:right;}
.comment-edit-submit{height:22px;background-color:#555753;color:#eeeeee;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;border:0;}
-.wall-item-body code{background-color:#444444;border-bottom:1px dashed #cccccc;border-left:5px solid #cccccc;border-top:1px dashed #cccccc;display:block;overflow-x:auto;padding:5px 0 15px 10px;width:95%;}.wall-item-body code a{color:#adc4e0;}
+.wall-item-body code{background-color:#444444;border-bottom:1px dashed #cccccc;border-left:5px solid #cccccc;border-top:1px dashed #cccccc;color:#eeeecc;display:block;overflow-x:auto;padding:5px 0 15px 10px;width:95%;}.wall-item-body code a{color:#adc4e0;}
div[id$="text"]{font-weight:bold;border-bottom:1px solid #cccccc;}
div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:left;}
.profile-match-wrapper{float:left;margin:0 5px 40px 0;width:120px;height:120px;padding:3px;position:relative;}
@@ -236,7 +253,7 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
#advanced-profile-with{margin-left:200px;}
.photos{height:auto;overflow:auto;}
#photo-top-links{margin-bottom:30px;}
-.photo-album-image-wrapper,.photo-top-image-wrapper{float:left;-moz-box-shadow:5px 5px 5px 0px #111111;-o-box-shadow:5px 5px 5px 0px #111111;-webkit-box-shadow:5px 5px 5px 0px #111111;-ms-box-shadow:5px 5px 5px 0px #111111;box-shadow:5px 5px 5px 0px #111111;background-color:#222222;color:#2e2f2e;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding-bottom:30px;position:relative;margin:0 10px 10px 0;}
+.photo-album-image-wrapper,.photo-top-image-wrapper{float:left;-moz-box-shadow:3px 3px 10px 0 #111111;-o-box-shadow:3px 3px 10px 0 #111111;-webkit-box-shadow:3px 3px 10px 0 #111111;-ms-box-shadow:3px 3px 10px 0 #111111;box-shadow:3px 3px 10px 0 #111111;background-color:#222222;color:#2e2f2e;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding-bottom:30px;position:relative;margin:0 10px 10px 0;}
#photo-photo{max-width:100%;}#photo-photo img{max-width:100%;}
.photo-top-image-wrapper a:hover,#photo-photo a:hover,.photo-album-image-wrapper a:hover{border-bottom:0;}
.photo-top-photo,.photo-album-photo{-o-border-radius:5px 5px 0 0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-ms-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}
@@ -279,11 +296,12 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
.mail-conv-subject{clear:right;font-weight:bold;font-size:1.2em;}
.mail-conv-body{clear:both;}
.mail-conv-delete-wrapper{margin-top:5px;}
-.view-contact-wrapper,.contact-entry-wrapper{float:left;margin:0 5px 40px 0;width:120px;height:120px;padding:3px;position:relative;}
+.view-contact-wrapper,.contact-entry-wrapper{float:left;margin:0 5px 40px 0;width:120px;height:135px;padding:3px;position:relative;}
.contact-direction-wrapper{position:absolute;top:20px;}
.contact-edit-links{position:absolute;top:60px;}
.contact-entry-photo{margin-left:20px;}
-.contact-entry-name{width:120px;font-weight:bold;}
+.contact-entry-name{width:120px;font-weight:bold;font-size:small;}
+.contact-entry-details{font-size:x-small;}
.contact-entry-photo{position:relative;}
.contact-entry-edit-links .icon{border:1px solid #babdb6;-o-border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;background-color:white;}
#contact-entry-url,[id^="contact-entry-url"],#contact-entry-network,[id^="contact-entry-network"]{font-size:smaller;}
@@ -304,7 +322,6 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
.contact-photo-menu-button{position:absolute;background:url("dark/photo-menu.jpg") top left no-repeat transparent;margin:0px;padding:0px;width:16px;height:16px;top:64px;left:0px;overflow:hidden;text-indent:40px;display:none;}
.contact-photo-menu{width:auto;border:2px solid #444444;background:#2e2f2e;color:#eeeecc;position:absolute;left:0px;top:90px;display:none;z-index:10000;}.contact-photo-menu li a{display:block;padding:2px;}.contact-photo-menu li a:hover{color:white;background:#3465A4;text-decoration:none;}
#id_openid_url{background:url(dark/login-bg.gif) no-repeat;background-position:0 50%;padding-left:18px;}
-#settings-nickname-desc{background-color:#eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:5px;color:#111111;}
#settings-default-perms{margin-bottom:20px;}
#register-form div,#profile-edit-form div{clear:both;}
.settings-block label{clear:left;}
@@ -312,7 +329,7 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
#register-form label,#profile-edit-form label{width:300px;float:left;}
#register-form span,#profile-edit-form span{color:#555753;display:block;margin-bottom:20px;}
#profile-edit-marital-label span{margin:-4px;}
-.settings-submit-wrapper,.profile-edit-submit-wrapper{margin:0 0 30px -3px;}
+.settings-submit-wrapper,.profile-edit-submit-wrapper{margin:0 0 30px;}
.profile-edit-side-div{display:none;}
#profiles-menu-trigger{margin:0px 0px 0px 25px;}
.profile-listing{float:left;margin:20px 20px 0px 0px;}
@@ -325,7 +342,6 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
#theme-preview img{margin:10px 10px 10px 288px;}
.group-delete-wrapper{margin:-31px 50px 0 0;float:right;}
#group-edit-submit-wrapper{margin:0 0 10px 0;display:inline;}
-#group-edit-desc{margin:10px 0px;}
#group-members,#prof-members{height:200px;overflow:auto;border:1px solid #555753;-o-border-radius:5px 5px 0 0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-ms-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}
#group-all-contacts,#prof-all-contacts{height:200px;overflow:auto;border:1px solid #555753;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}
#group-members h3,#group-all-contacts h3,#prof-members h3,#prof-all-contacts h3{color:#eeeeee;background-color:#555753;margin:0;padding:5px;}
@@ -334,18 +350,16 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
#crop-image-form{clear:both;}
.intro-wrapper{margin-top:20px;}
.intro-fullname{font-size:1.1em;font-weight:bold;}
-.intro-desc{margin-bottom:20px;font-weight:bold;}
.intro-note{padding:10px;}
.intro-end{padding:30px;}
.intro-form{float:left;}
-.intro-approve-form,.intro-approve-as-friend-end{clear:both;}
+.intro-approve-form{clear:both;}
.intro-submit-approve,.intro-submit-ignore{margin-right:20px;}
.intro-submit-approve{margin-top:15px;}
.intro-approve-as-friend-label,.intro-approve-as-fan-label,.intro-approve-as-friend,.intro-approve-as-fan{float:left;}
.intro-form-end{clear:both;margin-bottom:10px;}
-.intro-approve-as-friend-desc{margin-top:10px;}
.intro-approve-as-end{clear:both;margin-bottom:10px;}
-.intro-end,.clear{clear:both;}
+.clear{clear:both;}
.eventcal{float:left;font-size:20px;}
.event{background:#2e2f2e;}
.vevent{border:1px solid #cccccc;}.vevent .event-description,.vevent .event-location,.vevent .event-start{margin-left:10px;margin-right:10px;}
@@ -372,17 +386,16 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
#item-delete-selected{margin-top:30px;}
.delete-checked{position:absolute;left:35px;margin-top:20px;}
#item-delete-selected-icon{float:left;margin-right:5px;}
-#item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;}
.fc-state-highlight{background:#eeeecc;color:#2e2f2e;}
.directory-item{float:left;margin:0 5px 4px 0;padding:3px;width:180px;height:250px;position:relative;}
#group-sidebar{margin-bottom:10px;}
-.group-selected,.nets-selected,.fileas-selected{padding:3px;color:#2e2f2e;background:#eeeecc;font-weight:bold;}
-.group-selected:hover,.nets-selected:hover,.fileas-selected:hover{color:#88a9d2;background:#2e2f2e;}
+.group-selected,.nets-selected,.fileas-selected{padding:3px;color:#2e2f2e;background:#eeeecc;border:1px solid #88a9d2;}
+.group-selected:hover,.nets-selected:hover,.fileas-selected:hover{padding:3px;color:#88a9d2;background:#2e2f2e;border:1px solid #88a9d2;}
.groupsideedit{margin-right:10px;}
#sidebar-group-ul{padding-left:0;}
#sidebar-group-list{margin:0 0 5px 0;}#sidebar-group-list li{margin-top:10px;}
#sidebar-group-list .icon{display:inline-block;width:12px;height:12px;}
-.sidebar-group-element{padding:3px;}.sidebar-group-element:hover{color:#2e2f2e;background:#88a9d2;font-weight:bold;padding:3px;}
+.sidebar-group-element{padding:3px;}.sidebar-group-element:hover{color:#2e2f2e;background:#2e3436;border:1px solid #638ec4;padding:3px;}
#sidebar-new-group{margin:auto;display:inline-block;color:#eeeeee;text-decoration:none;text-align:center;}
#peoplefind-sidebar form{margin-bottom:10px;}
#sidebar-new-group:hover{}
@@ -394,7 +407,7 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
#pending-update{float:right;color:white;font-weight:bold;background-color:red;padding:0 0.3em;}
.admin.linklist{border:0;padding:0;}
.admin.link{margin:0px;padding:0px;list-style:none;list-style-position:inside;}
-#adminpage{color:#eeeecc;background:#2e2f2e;margin:5px;padding:10px;}#adminpage dl{clear:left;margin-bottom:2px;padding-bottom:2px;border-bottom:1px solid #111111;}
+#adminpage{color:#eeeecc;background:#2e2f2e;margin:5px;padding:10px;font-size:smaller;}#adminpage dl{clear:left;margin-bottom:2px;padding-bottom:2px;border-bottom:1px solid #111111;}
#adminpage dt{width:250px;float:left;font-weight:bold;}
#adminpage dd{margin-left:250px;}
#adminpage h3{border-bottom:1px solid #cccccc;}
@@ -402,24 +415,28 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
#adminpage #pluginslist{margin:0;padding:0;}
#adminpage .plugin{display:block;border:1px solid #888888;padding:1em;margin-bottom:5px;clear:left;}
#adminpage .toggleplugin{float:left;margin-right:1em;}
-#adminpage table{width:100%;border-bottom:1px solid #111111;margin:5px 0;}#adminpage table th{text-align:left;}
+#adminpage table{width:100%;border-bottom:1px solid #111111;margin:5px 0;}#adminpage table th{font-weight:bold;text-align:left;}
+#adminpage table td{padding:5px;vertical-align:middle;}
+#adminpage table#users{padding:5px;}#adminpage table#users img{width:16px;height:16px;}
+#adminpage table#users a{color:#eeeecc;text-decoration:underline;}
#adminpage td .icon{float:left;}
-#adminpage table#users img{width:16px;height:16px;}
#adminpage .selectall{text-align:right;}
-#adminpage #users a{color:#eeeecc;text-decoration:underline;}
#users .name{color:#eeeecc;}
-.field{overflow:auto;}.field label{width:38%;display:inline-block;margin:0 10px 1em 0;border:1px #2e2f2e solid;padding:5px;background:#eeeecc;color:#111;}
+#users .tools{padding:5px 0;vertical-align:middle;}
+.field{overflow:auto;}
.field .onoff{float:right;margin:0 330px 0 auto;width:80px;}.field .onoff a{display:block;border:1px solid #666666;padding:3px 6px 4px 10px;height:16px;text-decoration:none;}
.field .onoff .on,.field .onoff .off{background-image:url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAUACIDASIAAhEBAxEB/8QAGgABAQACAwAAAAAAAAAAAAAAAAQDBQEGCf/EACgQAAIBAwIFAwUAAAAAAAAAAAECAAMEERIUBRMxUpEhIoEjM1Nxkv/EABcBAAMBAAAAAAAAAAAAAAAAAAABAgT/xAAaEQEAAgMBAAAAAAAAAAAAAAAAAQIRMVES/9oADAMBAAIRAxEAPwD1ERKFNFVaNNVUYACgACcNVt1dEKUwzZwNI9cSDczDVdnuKDjomrPyJOQ2SXNq/L0rTPMzp9vXHWZfo/jT+RNFQV6e2yPt6s/Ms3EWQofhnDqjszWFqzMcljRUknxEn3ES/dup8xxPZ0hXtKFViQzorEDpkiZtqvc3mIkzs40bVe5vMbVe5vMREbrN3xy4t7utSVaZVHZQSDnAP7iIm+K1xpkm09f/2Q==');background-repeat:no-repeat;}
.field .onoff .on{background-position:42px 1px;background-color:#999999;color:#111111;text-align:left;}
.field .onoff .off{background-position:2px 1px;background-color:#cccccc;color:#333333;text-align:right;}
.hidden{display:none !important;}
.field textarea{width:80%;height:100px;}
-.field_help{display:block;margin-left:297px;color:#b1b1b1;}
+.field_help{display:block;margin-left:297px;color:#b1b1b1;font-size:small;}
.field.radio .field_help{margin-left:297px;}
.popup{width:100%;height:100%;top:0px;left:0px;position:absolute;display:none;}.popup .background{background-color:#111111;opacity:0.5;width:100%;height:100%;position:absolute;top:0px;left:0px;}
.popup .panel{top:25%;left:25%;width:50%;height:50%;padding:1em;position:absolute;border:4px solid #000000;background-color:white;}
-#panel{z-index:100;}
+#panel{position:absolute;font-size:small;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;border:1px solid #eeeeee;background-color:#2e302e;color:#eeeecc;padding:1em;z-index:100;}
+.pager{margin-top:60px;display:block;clear:both;text-align:center;font-size:small;font-weight:bold;}.pager span{padding:4px;margin:4px;}
+.pager_current{background-color:#88a9d2;color:#2e2f2e;}
.grey,.gray{color:gray;}
.orange{color:orange;}
.red{color:red;}
@@ -430,8 +447,8 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
.oauthapp{height:auto;overflow:auto;border-bottom:2px solid #cccccc;padding-bottom:1em;margin-bottom:1em;}.oauthapp img{float:left;width:48px;height:48px;margin:10px;}.oauthapp img.noicon{background-image:url("../../../images/icons/48/plugin.png");background-position:center center;background-repeat:no-repeat;}
.oauthapp a{float:left;}
.iconspacer{display:block;width:16px;height:16px;}
-.icon{display:block;width:20px;height:20px;background:url(dark/icons.png) no-repeat;border:0;text-decoration:none;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}.icon:hover{border:0;text-decoration:none;}
-.editicon{display:inline-block;width:21px;height:21px;background:url(dark/editicons.png) no-repeat;border:0;text-decoration:none;}
+.icon{display:block;width:20px;height:20px;background:transparent url("dark/icons.png") no-repeat;border:0;text-decoration:none;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}.icon:hover{border:0;text-decoration:none;}
+.editicon{display:inline-block;width:21px;height:21px;background:url("dark/editicons.png") no-repeat;border:0;text-decoration:none;}
.shadow{-moz-box-shadow:2px 2px 5px 2px #111111;-o-box-shadow:2px 2px 5px 2px #111111;-webkit-box-shadow:2px 2px 5px 2px #111111;-ms-box-shadow:2px 2px 5px 2px #111111;box-shadow:2px 2px 5px 2px #111111;}.shadow:active,.shadow:focus,.shadow:hover{-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
.editicon:hover{border:0;}
.boldbb{background-position:0px 0px;}.boldbb:hover{background-position:-22px 0px;}
@@ -475,7 +492,7 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
.lock{background-position:-70px -40px;}
.unlock{background-position:-88px -40px;}
.video{background-position:-110px -40px;}
-.attach{background-position:-190px -40px;}
+.attach{background-position:-191px -40px;}
.language{background-position:-210px -40px;}
.starred{background-position:-130px -60px;}
.unstarred{background-position:-150px -60px;}
@@ -485,7 +502,7 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
.prev{background-position:-90px -60px;}
.next{background-position:-110px -60px;}
.icon.dim{opacity:0.3;}
-#pause{position:fixed;bottom:40px;right:30px;}
+#pause{position:fixed;bottom:40px;right:30px;z-index:10;}
.border{border:1px solid #babdb6;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}.border:hover{border:1px solid #babdb6;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
.attachtype{display:block;width:20px;height:23px;background-image:url(../../../images/content-types.png);}
.type-video{background-position:0px 0px;}
@@ -495,9 +512,9 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
.type-unkn{background-position:-80px 0;}
.cc-license{margin-top:100px;font-size:0.7em;}
footer{display:block;clear:both;}
-#profile-jot-text{height:20px;color:#eeeecc;border:1px solid #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;width:99.5%;}
+#profile-jot-text{height:20px;color:#eeeecc;background:#2e2f2e;border:1px solid #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;width:99.5%;}
#photo-edit-perms-select,#photos-upload-permissions-wrapper,#profile-jot-acl-wrapper{display:block !important;background:#2e2f2e;color:#eeeecc;}
-#profile-jot-acl-wrapper{margin:0 10px;border:1px solid #555753;border-top:0;}
+#profile-jot-acl-wrapper{margin:0 10px;border:1px solid #555753;border-top:0;font-size:small;}
#acl-wrapper{width:660px;margin:0 auto;}
#acl-search{float:right;background:#ffffff url("../../../images/search_18.png") no-repeat right center;padding-right:20px;margin:6px;color:#111111;}
#acl-showall{float:left;display:block;width:auto;height:18px;background:#eeeecc url("../../../images/show_all_off.png") 8px 8px no-repeat;padding:7px 10px 7px 30px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;color:#999999;margin:5px 0;}#acl-showall.selected{color:black;background:#ff9900 url(../../../images/show_all_on.png) 8px 8px no-repeat;}
diff --git a/view/theme/dispy/dark/style.less b/view/theme/dispy/dark/style.less
index f48a77e27..7634db1d7 100644
--- a/view/theme/dispy/dark/style.less
+++ b/view/theme/dispy/dark/style.less
@@ -34,7 +34,8 @@ time {
*display: inline;
*zoom: 1;
}
-audio:not([controls]), [hidden] {
+audio:not([controls]),
+[hidden] {
display: none;
}
///*
@@ -46,8 +47,7 @@ audio:not([controls]), [hidden] {
html {
font-size: 100%;
overflow-y: scroll;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%;
+ .font_size_adjust;
}
body {
margin: 0;
@@ -56,7 +56,10 @@ body {
color: @main_colour;
background-color: @bg_colour;
}
-button, input, select, textarea {
+button,
+input,
+select,
+textarea {
color: @main_colour;
background-color: @bg_colour;
}
@@ -82,15 +85,23 @@ tr:nth-child(even) {
background-color: lighten(@bg_colour, 10%);
}
///* remember to define focus styles! */
+//outline Sets all the outline properties in one declaration
+//outline-color Sets the color of an outline color_name,hex_number,rgb_number,invert,inherit
+//outline-style Sets the style of an outline dotted,dashed,solid,double,groove,ridge,inset,outset,inherit
+//outline-width Sets the width of an outline thin,medium,thick,length,inherit
:focus {
- outline: 0;
+ outline: none;
+}
+a:focus {
+ outline: invert, dashed, thin;
}
[disabled="disabled"] {
background: @med_bg_colour;
color: @disabled_colour;
}
///* remember to highlight inserts somehow! */
-ins, mark {
+ins,
+mark {
background-color: @bg_alt_colour;
color: @lt_main_colour;
}
@@ -123,12 +134,22 @@ q {
content: none;
}
}
+em {
+ font-style: italic;
+}
+strong {
+ font-weight: bold;
+}
+strike {
+ text-decoration: line-through;
+}
small {
font-size: 85%;
}
///* Position subscript and superscript content without affecting
// * line-height: h5bp.com/k */
-sub, sup {
+sub,
+sup {
font-size: 75%;
line-height: 0;
position: relative;
@@ -166,7 +187,7 @@ blockquote {
label {
width: 38%;
display: inline-block;
- font-size: 0.95em;
+ font-size: small;
margin: 0 10px 1em 0;
.borders(1px, solid, @bg_colour);
padding: 5px;
@@ -205,11 +226,29 @@ h4, h5, h6 {
font-weight: bold;
border-bottom: 1px solid @hover_colour;
}
+h1 {
+ font-size: x-large;
+}
+h2 {
+ font-size: large;
+}
+h3 {
+ font-size: medium;
+}
+h4 {
+ font-size: small;
+}
+h5 {
+ font-size: x-small;
+}
+h6 {
+ font-size: xx-small;
+}
//
.required {
display: inline;
- color: #ff0;
+ color: red;
font-size: 16px;
font-weight: bold;
margin: 3px;
@@ -224,30 +263,6 @@ h4, h5, h6 {
.smalltext {
font-size: 0.7em;
}
-#panel {
- position: absolute;
- .rounded_corners;
- .borders(1px, solid, @main_alt_colour);
- background-color: @bg_alt_colour;
- color: @main_colour;
- padding: 1em;
-}
-.pager {
- margin-top: 60px;
- display: block;
- clear: both;
- text-align: center;
- font-size: small;
- font-weight: bold;
- span {
- padding: 4px;
- margin: 4px;
- }
-}
-.pager_current {
- background-color: @link_colour;
- color: @bg_colour;
-}
/**
@@ -265,16 +280,70 @@ h4, h5, h6 {
.box(100%, 100%);
margin: 0 auto;
}
-[class$="-desc"], [id$="-desc"] {
+.button,
+#profile-listing-desc {
+ .box(25%, auto);
+ background: @menu_bg_colour;
+ color: @main_colour;
+ .borders(2px, outset, darken(@menu_bg_colour, 20%));
+ .rounded_corners;
+ padding: 5px;
+ font-size: smaller;
+ cursor: pointer;
+ &.active {
+ .box_shadow(4px, 4px, 7px);
+ }
+ a {
+ color: @main_colour;
+ font-size: smaller;
+ font-weight: bold;
+ }
+}
+[class$="-desc"],
+[id$="-desc"] {
color: @bg_colour;
- background: @main_colour;
+ // background: @main_colour;
+ .borders(1px, outset, @main_colour);
.rounded_corners;
- .box_shadow(3px, 3px, 5px);
+ // .box_shadow(3px, 3px, 5px);
margin: 3px 10px 7px 0;
- padding: 6px 7px;
+ padding: 5px;
font-weight: bold;
font-size: smaller;
}
+#item-delete-selected-desc {
+ float: left;
+ margin-right: 5px;
+ &:hover {
+ text-decoration: underline;
+ }
+}
+.intro-approve-as-friend-desc {
+ margin-top: 10px;
+}
+.intro-desc {
+ margin-bottom: 20px;
+ font-weight: bold;
+}
+#group-edit-desc {
+ margin: 10px 0px;
+}
+#settings-nickname-desc {
+ background: @main_colour;
+ .rounded_corners;
+ .borders;
+ padding: 5px;
+ color: @bg_colour;
+}
+.contactname,
+.contact-name {
+ font-weight: bold;
+ font-size: smaller;
+}
+.contact-details {
+ font-style: italic;
+ font-size: smaller;
+}
/**
@@ -378,9 +447,11 @@ ul#user-menu-popup {
a {
display: block;
padding: 5px;
+ color: @main_alt_colour;
+ background-color: @menu_bg_colour;
&:hover {
- color: @main_colour;
- background-color: @bg_alt_colour;
+ color: @bg_colour;
+ background-color: @main_alt_colour;
}
&.nav-sep {
border-top: 1px solid @bg_alt_colour; } } }
@@ -396,42 +467,51 @@ nav .nav-link {
#nav-apps-link {
background-position: 0 -66px;
&:hover {
- background-position: -22px -66px; }
+ background-position: -22px -66px;
+ }
}
-#nav-community-link, #nav-contacts-link {
+#nav-community-link,
+#nav-contacts-link {
background-position: 0 -22px;
&:hover {
- background-position: -22px -22px; }
+ background-position: -22px -22px;
+ }
}
#nav-directory-link {
background-position: -44px -154px;
&:hover {
- background-position: -66px -154px; }
+ background-position: -66px -154px;
+ }
}
#nav-help-link {
background-position: 0 -110px;
&:hover {
- background-position: -22px -110px; }
+ background-position: -22px -110px;
+ }
}
#nav-home-link {
background-position: -44px -132px;
&:hover {
- background-position: -66px -132px; }
+ background-position: -66px -132px;
+ }
}
#nav-intro-link {
background-position: 0px -190px;
&:hover {
- background-position: -44px -190px; }
+ background-position: -44px -190px;
+ }
}
#nav-login-link, #nav-logout-link {
background-position: 0 -88px;
&:hover {
- background-position: -22px -88px; }
+ background-position: -22px -88px;
+ }
}
#nav-messages-link {
background-position: -44px -88px;
&:hover {
- background-position: -66px -88px; }
+ background-position: -66px -88px;
+ }
}
#nav-notify-link,
#nav-notifications-linkmenu {
@@ -443,7 +523,8 @@ nav .nav-link {
#nav-network-link {
background-position: 0px -177px;
&:hover {
- background-position: -22px -177px; }
+ background-position: -22px -177px;
+ }
}
#nav-search-link {
background-position: 0 -44px;
@@ -494,9 +575,6 @@ div.jGrowl div {
max-height: 300px;
overflow-y: auto;
font-size: 9pt;
- .contactname {
- font-weight: bold;
- font-size: 0.9em; }
img {
float: left;
margin-right: 5px; }
@@ -542,7 +620,6 @@ nav #nav-notifications-linkmenu {
z-index: 100;
.box(300px, 60px);
}
-
#nav-buttons {
clear: both;
list-style: none;
@@ -576,13 +653,19 @@ nav #nav-notifications-linkmenu {
background: @dk_bg_colour;
.rounded_corners;
}
-#search-text {
- .borders;
+#search-text,
+#mini-search-text {
background: @bg_colour;
color: @main_colour;
- font-size: 8pt;
margin: 8px;
- .box(10em, 14px);
+}
+#search-text {
+ .borders;
+}
+#mini-search-text {
+ font-size: 8pt;
+ height: 14px;
+ width: 10em;
}
#scrollup {
position: fixed;
@@ -611,6 +694,7 @@ nav #nav-notifications-linkmenu {
padding: 2px;
> a {
vertical-align: top;
+ outline: 0 none;
}
}
#user-menu-label {
@@ -618,10 +702,11 @@ nav #nav-notifications-linkmenu {
padding: 3px 20px 9px 5px;
height: 10px;
}
-.nav-ajax-update, .nav-ajax-left {
+.nav-ajax-update,
+.nav-ajax-left {
.box(30px, 19px);
background: transparent url(dark/notifications.png) 0 0 no-repeat;
- color: #222;
+ color: @shadow_colour;
font-weight: bold;
font-size: 0.8em;
padding-top: 0.2em;
@@ -631,7 +716,8 @@ nav #nav-notifications-linkmenu {
display: block;
visibility: hidden;
}
-.nav-ajax-update.show, .nav-ajax-left.show {
+.nav-ajax-update.show,
+.nav-ajax-left.show {
visibility: visible;
}
#net-update {
@@ -670,7 +756,8 @@ nav #nav-notifications-linkmenu {
color: @bg_colour;
margin: 0px;
padding: 0px;
- .borders(3px, solid, @shiny_colour);
+ .borders(3px, solid, @link_colour);
+ .rounded_corners;
z-index: 100000;
.box_shadow;
a {
@@ -679,7 +766,8 @@ nav #nav-notifications-linkmenu {
padding: 5px 10px;
text-decoration: none;
&:hover {
- background-color: lighten(@shiny_colour, 55%);
+ color: @main_colour;
+ background-color: @link_colour;
}
}
.menu-sep {
@@ -713,7 +801,11 @@ nav #nav-notifications-linkmenu {
padding: 7px 7px 0px 0px;
}
.notify-seen {
- background: darken(@main_alt_colour, 20%);
+ background: @disabled_colour;
+ color: @main_colour;
+}
+.notify-unseen {
+ color: @main_colour;
}
@@ -742,7 +834,8 @@ nav #nav-notifications-linkmenu {
padding-bottom: 50px;
z-index: 1000;
}
-#sysmsg_info br, #sysmsg br {
+#sysmsg_info br,
+#sysmsg br {
display: block;
margin: 2px 0px;
border-top: 1px solid @main_colour;
@@ -754,12 +847,11 @@ nav #nav-notifications-linkmenu {
*/
#asidemain {
float: left;
- font-size: 0.75em;
+ font-size: small;
margin: 20px 0 20px 35px;
width: 25%;
display: inline;
}
-
/* for now, disappear these */
#asideright, #asideleft {
display: none;
@@ -795,7 +887,6 @@ nav #nav-notifications-linkmenu {
padding: 3px;
position: relative; } } }
}
-
.aprofile dt {
background: @main_colour;
color: @bg_colour;
@@ -909,7 +1000,7 @@ nav #nav-notifications-linkmenu {
padding: 2px 20px 5px 0;
}
#profile-jot-text_parent {
- .box_shadow(5px, 0, 10px, 0, @shadow_colour);
+ .box_shadow(5px, 0, 10px, 0);
}
#profile-jot-text_tbl {
margin-bottom: 10px;
@@ -999,11 +1090,12 @@ nav #nav-notifications-linkmenu {
}
#profile-jot-perms {
float: right;
- background-color: @menu_bg_colour;
- .box(22px, 22px);
+ color: @menu_bg_colour;
+ .box(20px, 20px);
.rounded_corners;
+ .box_shadow(3px, 3px, 5px, 0);
+ .borders(2px, outset, @menu_bg_colour);
overflow: hidden;
- border: 0px;
margin: 0 10px 0 10px;
}
#profile-jot-plugin-wrapper {
@@ -1032,9 +1124,10 @@ nav #nav-notifications-linkmenu {
}
}
#jot-perms-icon {
- .box(20px, 22px);
+ .box(22px, 22px);
.rounded_corners;
overflow: hidden;
+ background: @menu_bg_colour url("dark/icons.png") -88px -40px;
}
#group_allow_wrapper,
#group_deny_wrapper,
@@ -1076,6 +1169,9 @@ nav #nav-notifications-linkmenu {
color: darken(@main_alt_colour, 13%);
}
#profile-jot-desc {
+ background: @bg_colour;
+ .borders;
+ .rounded_corners;
color: @red_orange;
margin: 5px 0;
}
@@ -1089,9 +1185,9 @@ nav #nav-notifications-linkmenu {
display: none;
}
#jot-preview-content {
- background-color: @bg_alt_colour;
+ background-color: @shiny_colour;
color: @main_colour;
- .borders(1px, solid, @main_colour);
+ .borders(1px, solid, @bg_colour);
.rounded_corners;
.box_shadow(5px, 0, 10px);
padding: 3px 3px 6px 10px;
@@ -1125,21 +1221,29 @@ nav #nav-notifications-linkmenu {
li {
display: inline;
font-size: smaller;
- font-weight: bold;
}
}
.tab {
- .borders(1px, solid, @link_colour);
+ .borders(1px, solid, @hover_colour);
padding: 4px;
- &:hover, &.active:hover, &:active {
- background: @link_colour;
- color: @bg_colour;
+ &:hover,
+ &:active {
+ background: @shiny_colour;
+ color: @main_colour;
+ .borders(1px, solid, @hover_colour);
}
&.active {
background: @main_colour;
color: @bg_colour;
+ .borders(1px, solid, @hover_colour);
+ &:hover {
+ background: @shiny_colour;
+ color: @main_colour;
+ .borders(1px, solid, @hover_colour);
+ }
a {
color: @bg_colour;
+ text-decoration: none;
}
}
a {
@@ -1148,20 +1252,18 @@ nav #nav-notifications-linkmenu {
}
}
+
/**
* items
*/
.wall-item-outside-wrapper {
- .borders(1px, solid, #aaa);
+ .borders(1px, solid, darken(@main_alt_colour, 27%));
.rounded_corners;
- .box_shadow(5px, 0, 10px, 0);
+ .box_shadow(6px, 1px, 10px, -2px);//@lt_shadow_colour
&.comment {
margin-top: 5px;
}
}
-.wall-item-outside-wrapper-end {
- clear: both;
-}
.wall-item-content-wrapper {
position: relative;
padding: 0.75em;
@@ -1205,7 +1307,7 @@ nav #nav-notifications-linkmenu {
}
.wall-item-info {
float: left;
- width: 110px;
+ width: 8em;
}
.wall-item-photo-wrapper {
.box(80px, 80px);
@@ -1270,19 +1372,21 @@ nav #nav-notifications-linkmenu {
}
}
.wall-item-author,
-.wall-item-actions-author {
+.wall-item-actions-author,
+.wall-item-ago {
clear: left;
float: left;
- font-size: 0.8em;
- color: lighten(@menu_bg_colour, 20%);
- margin: 1em auto 0 0.2em;
-}
-.wall-item-ago {
- display: inline;
- padding-left: 10px;
+ color: @main_colour;
+ line-height: 1;
+ display: inline-block;
+ font-size: 0.75em;
+ margin: 0.5em auto 0;
}
-.wall-item-wrapper-end {
- clear: both;
+.wall-item-author,
+.wall-item-actions-author {
+ margin: 0.5em auto 0;
+ font-size: 0.75em;
+ font-weight: bold;
}
.wall-item-location {
margin-top: 15px;
@@ -1292,7 +1396,8 @@ nav #nav-notifications-linkmenu {
.icon {
float: left;
}
- > a, .smalltext {
+ > a,
+ .smalltext {
margin-left: 25px;
font-size: 0.7em;
display: block;
@@ -1326,7 +1431,8 @@ nav #nav-notifications-linkmenu {
}
.wall-item-photo-menu {
min-width: 92px;
- .borders(2px, solid, white);
+ font-size: 0.75em;
+ .borders(2px, solid, @menu_bg_colour);
border-top: 0px;
background: @menu_bg_colour;
position: absolute;
@@ -1334,11 +1440,11 @@ nav #nav-notifications-linkmenu {
top: 101px;
display: none;
z-index: 10003;
- .rounded_corners;
+ .rounded_corners(0 5px 5px 5px);
li a {
white-space: nowrap;
display: block;
- padding: 5px 2px;
+ padding: 5px 6px;
color: @main_alt_colour;
&:hover {
color: @menu_bg_colour;
@@ -1367,6 +1473,9 @@ nav #nav-notifications-linkmenu {
font-size: 0.9em;
margin-left: 5em;
}
+.hide-comments-outer {
+ font-size: small;
+}
.wall-item-outside-wrapper.comment {
margin-left: 5em;
.wall-item-photo {
@@ -1381,9 +1490,6 @@ nav #nav-notifications-linkmenu {
top: 45px;
background-position: 35px center;
}
- .wall-item-info {
- width: 60px;
- }
.wall-item-body {
margin-left: 10px;
}
@@ -1396,7 +1502,7 @@ nav #nav-notifications-linkmenu {
}
}
.comment-wwedit-wrapper {
- /*margin: 30px 0px 0px 80px;*/
+ /*margin: 30px 0px 0px 80px;*/
}
.comment-edit-wrapper {
border-top: 1px #aaa solid;
@@ -1424,16 +1530,15 @@ nav #nav-notifications-linkmenu {
.box(40px, 40px);
padding: 5px;
}
-
[class^="comment-edit-text"] {
margin: 5px 0 10px 20px;
width: 94%;
}
.comment-edit-text-empty {
height: 20px;
- border: 2px #c8bebe solid;
+ .med_borders;
.rounded_corners;
- color: #c8bebe;
+ color: @med_border_colour;
.transition;
&:hover {
color: darken(@main_alt_colour, 33.5%);
@@ -1466,6 +1571,7 @@ nav #nav-notifications-linkmenu {
border-bottom: 1px dashed darken(@main_alt_colour, 13.5%);
border-left: 5px solid darken(@main_alt_colour, 13.5%);
border-top: 1px dashed darken(@main_alt_colour, 13.5%);
+ color: @main_colour;
display: block;
overflow-x: auto;
padding: 5px 0 15px 10px;
@@ -1538,7 +1644,7 @@ div {
.photo-album-image-wrapper,
.photo-top-image-wrapper {
float: left;
- .box_shadow;
+ .box_shadow(3px, 3px, 10px, 0);
background-color: darken(@main_alt_colour, 80%);
color: @bg_colour;
.rounded_corners;
@@ -1549,7 +1655,8 @@ div {
#photo-photo {
max-width: 100%;
img {
- max-width: 100%; }
+ max-width: 100%;
+ }
}
.photo-top-image-wrapper a:hover,
#photo-photo a:hover,
@@ -1559,7 +1666,8 @@ div {
.photo-top-photo, .photo-album-photo {
.rounded_corners(5px 5px 0 0);
}
-.photo-top-album-name, .caption {
+.photo-top-album-name,
+.caption {
position: absolute;
bottom: 0;
padding: 0 5px;
@@ -1694,7 +1802,8 @@ div {
font-size: 0.9em;
padding-left: 10px;
}
-.mail-list-sender-name, .mail-list-date {
+.mail-list-sender-name,
+.mail-list-date {
font-style: italic;
}
.mail-list-subject {
@@ -1736,10 +1845,11 @@ div {
/**
* contacts
*/
-.view-contact-wrapper, .contact-entry-wrapper {
+.view-contact-wrapper,
+.contact-entry-wrapper {
float: left;
margin: 0 5px 40px 0;
- .box(120px, 120px);
+ .box(120px, 135px);
padding: 3px;
position: relative;
}
@@ -1752,13 +1862,16 @@ div {
top: 60px;
}
.contact-entry-photo-wrapper {}
-
.contact-entry-photo {
margin-left: 20px;
}
.contact-entry-name {
width: 120px;
font-weight: bold;
+ font-size: small;
+}
+.contact-entry-details {
+ font-size: x-small;
}
.contact-entry-photo {
position: relative;
@@ -1820,7 +1933,8 @@ div {
#contact-edit-info_tbl,
#contact-edit-info_parent,
.mceLayout {
- width: 100%; }
+ width: 100%;
+}
#contact-edit-end {
clear: both;
margin-bottom: 65px;
@@ -1863,18 +1977,11 @@ div {
* register, settings & profile forms
*/
.openid {}
-
#id_openid_url {
background: url(dark/login-bg.gif) no-repeat;
background-position: 0 50%;
padding-left: 18px;
}
-#settings-nickname-desc {
- background-color: @main_colour;
- .rounded_corners;
- padding: 5px;
- color: @shadow_colour;
-}
#settings-default-perms {
margin-bottom: 20px;
}
@@ -1903,8 +2010,9 @@ div {
#profile-edit-marital-label span {
margin: -4px;
}
-.settings-submit-wrapper, .profile-edit-submit-wrapper {
- margin: 0 0 30px -3px;
+.settings-submit-wrapper,
+.profile-edit-submit-wrapper {
+ margin: 0 0 30px;
}
.profile-edit-side-div {
display: none;
@@ -1915,7 +2023,6 @@ div {
.profile-edit-side-link {
margin: 3px 0px 0px 70px;
}*/
-
#profiles-menu-trigger {
margin: 0px 0px 0px 25px;
}
@@ -1971,19 +2078,16 @@ div {
margin: 0 0 10px 0;
display: inline;
}
-#group-edit-desc {
- margin: 10px 0px;
-}
#group-members, #prof-members {
height: 200px;
overflow: auto;
- .borders(1px, solid, #555753);
+ .borders(1px, solid, @menu_bg_colour);
.rounded_corners(5px 5px 0 0);
}
#group-all-contacts, #prof-all-contacts {
height: 200px;
overflow: auto;
- .borders(1px, solid, #555753);
+ .borders(1px, solid, @menu_bg_colour);
.rounded_corners(0 0 5px 5px);
}
#group-members h3,
@@ -1991,7 +2095,7 @@ div {
#prof-members h3,
#prof-all-contacts h3 {
color: @main_alt_colour;
- background-color: #555753;
+ background-color: @menu_bg_colour;
margin: 0;
padding: 5px;
}
@@ -2021,10 +2125,6 @@ div {
font-size: 1.1em;
font-weight: bold;
}
-.intro-desc {
- margin-bottom: 20px;
- font-weight: bold;
-}
.intro-note {
padding: 10px;
}
@@ -2034,11 +2134,11 @@ div {
.intro-form {
float: left;
}
-.intro-approve-form,
-.intro-approve-as-friend-end {
+.intro-approve-form {
clear: both;
}
-.intro-submit-approve, .intro-submit-ignore {
+.intro-submit-approve,
+.intro-submit-ignore {
margin-right: 20px;
}
.intro-submit-approve {
@@ -2054,14 +2154,11 @@ div {
clear: both;
margin-bottom: 10px;
}
-.intro-approve-as-friend-desc {
- margin-top: 10px;
-}
.intro-approve-as-end {
clear: both;
margin-bottom: 10px;
}
-.intro-end, .clear {
+.clear {
clear: both;
}
@@ -2078,7 +2175,9 @@ div {
}
.vevent {
border: 1px solid darken(@main_alt_colour, 13.5%);
- .event-description, .event-location, .event-start {
+ .event-description,
+ .event-location,
+ .event-start {
margin-left: 10px;
margin-right: 10px;
}
@@ -2086,7 +2185,8 @@ div {
#new-event-link {
margin-bottom: 10px;
}
-.edit-event-link, .plink-event-link {
+.edit-event-link,
+.plink-event-link {
/*float: left; */
/*margin-top: 4px; */
/*margin-right: 4px;*/
@@ -2120,7 +2220,8 @@ div {
font-weight: bold;
color: red;
}
-#event-start-text, #event-finish-text {
+#event-start-text,
+#event-finish-text {
margin-top: 10px;
margin-bottom: 5px;
}
@@ -2139,7 +2240,8 @@ div {
#event-share-break {
clear: both;
}
-#event-desc-text, #event-location-text {
+#event-desc-text,
+#event-location-text {
margin-top: 10px;
margin-bottom: 5px;
}
@@ -2153,11 +2255,13 @@ div {
opacity: 1.0 !important;
}
}
-.filesavetags, .categorytags {
+.filesavetags,
+.categorytags {
margin: 20px 0;
opacity: 0.5;
}
-.filesavetags:hover, .categorytags:hover {
+.filesavetags:hover,
+.categorytags:hover {
margin: 20px 0;
opacity: 1.0 !important;
}
@@ -2185,13 +2289,6 @@ div {
float: left;
margin-right: 5px;
}
-#item-delete-selected-desc {
- float: left;
- margin-right: 5px;
- &:hover {
- text-decoration: underline;
- }
-}
.fc-state-highlight {
background: @main_colour;
color: @bg_colour;
@@ -2223,13 +2320,15 @@ div {
padding: 3px;
color: @bg_colour;
background: @main_colour;
- font-weight: bold;
+ .borders(1px, solid, @link_colour);
}
.group-selected:hover,
.nets-selected:hover,
.fileas-selected:hover {
+ padding: 3px;
color: @link_colour;
background: @bg_colour;
+ .borders(1px, solid, @link_colour);
}
.groupsideedit {
margin-right: 10px;
@@ -2251,8 +2350,8 @@ div {
padding: 3px;
&:hover {
color: @bg_colour;
- background: @link_colour;
- font-weight: bold;
+ background: @shiny_colour;
+ .borders(1px, solid, @hover_colour);
padding: 3px;
}
}
@@ -2270,7 +2369,8 @@ div {
&:hover {
/*background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b20202), color-stop(1, #d60808) );*/
/*background: -moz-linear-gradient( center top, #b20202 5%, #d60808 100% );*/
- /*background-color: #b20202;*/ }
+ /*background-color: #b20202;*/
+ }
&:active {
position: relative;
top: 1px;
@@ -2282,7 +2382,8 @@ div {
.borders(1px, solid, darken(@main_alt_colour, 33.5%));
margin-right: 3px;
width: 75%;
- &:hover, &:focus {
+ &:hover,
+ &:focus {
background-color: @main_alt_colour;
color: darken(@main_alt_colour, 80%);
.borders(1px, solid, darken(@main_alt_colour, 73.5%));
@@ -2294,7 +2395,8 @@ div {
margin: 10px 0 0;
}
}
-.nets-link, .nets-all {
+.nets-link,
+.nets-all {
margin-left: 0px;
}
#netsearch-box {
@@ -2330,6 +2432,7 @@ div {
background: @bg_colour;
margin: 5px;
padding: 10px;
+ font-size: smaller;
dl {
clear: left;
margin-bottom: 2px;
@@ -2370,28 +2473,38 @@ div {
border-bottom: 1px solid @shadow_colour;
margin: 5px 0;
th {
+ font-weight: bold;
text-align: left;
}
+ td {
+ padding: 5px;
+ vertical-align: middle;
+ }
+ &#users {
+ padding: 5px;
+ img {
+ .box(16px, 16px);
+ }
+ a {
+ color: @main_colour;
+ text-decoration: underline;
+ }
+ }
}
td .icon {
float: left;
}
- table {
- &#users img {
- .box(16px, 16px);
- }
- }
.selectall {
text-align: right;
}
- #users a {
- color: @main_colour;
- text-decoration: underline;
- }
}
#users .name {
color: @main_colour;
}
+#users .tools {
+ padding: 5px 0;
+ vertical-align: middle;
+}
/**
@@ -2399,15 +2512,6 @@ div {
*/
.field {
overflow: auto;
- label {
- width: 38%;
- display: inline-block;
- margin: 0 10px 1em 0;
- border: 1px @bg_colour solid;
- padding: 5px;
- background: @main_colour;
- color: #111;
- }
}
.field .onoff {
float: right;
@@ -2447,6 +2551,7 @@ div {
display: block;
margin-left: 297px;
color: darken(@main_alt_colour, 24%);
+ font-size: small;
}
.field.radio .field_help {
margin-left: 297px;
@@ -2481,9 +2586,33 @@ div {
}
}
#panel {
+ position: absolute;
+ font-size: small;
+ .rounded_corners;
+ .borders(1px, solid, @main_alt_colour);
+ background-color: @bg_alt_colour;
+ color: @main_colour;
+ padding: 1em;
z-index: 100;
}
-.grey, .gray {
+.pager {
+ margin-top: 60px;
+ display: block;
+ clear: both;
+ text-align: center;
+ font-size: small;
+ font-weight: bold;
+ span {
+ padding: 4px;
+ margin: 4px;
+ }
+}
+.pager_current {
+ background-color: @link_colour;
+ color: @bg_colour;
+}
+.grey,
+.gray {
color: gray;
}
.orange {
@@ -2560,7 +2689,7 @@ div {
.icon {
display: block;
.box;
- background: url(dark/icons.png) no-repeat;
+ background: transparent url("dark/icons.png") no-repeat;
border: 0;
text-decoration: none;
.rounded_corners;
@@ -2572,7 +2701,7 @@ div {
.editicon {
display: inline-block;
.box(21px, 21px);
- background: url(dark/editicons.png) no-repeat;
+ background: url("dark/editicons.png") no-repeat;
border: 0;
text-decoration: none;
}
@@ -2737,7 +2866,7 @@ div {
background-position: -110px -40px;
}
.attach {
- background-position: -190px -40px;
+ background-position: -191px -40px;
}
.language {
background-position: -210px -40px;
@@ -2770,6 +2899,7 @@ div {
position: fixed;
bottom: 40px;
right: 30px;
+ z-index: 10;
}
.border {
.borders(1px, solid, @border2);
@@ -2815,6 +2945,7 @@ footer {
#profile-jot-text {
height: 20px;
color: @main_colour;
+ background: @bg_colour;
.borders;
.rounded_corners;
width: 99.5%;
@@ -2835,6 +2966,7 @@ footer {
margin: 0 10px;
.borders(1px, solid, @menu_bg_colour);
border-top: 0;
+ font-size: small;
// .box_shadow;
}
#acl-wrapper {
diff --git a/view/theme/dispy/light/_base.less b/view/theme/dispy/light/_base.less
index 35a539acc..70576145c 100644
--- a/view/theme/dispy/light/_base.less
+++ b/view/theme/dispy/light/_base.less
@@ -1,48 +1,104 @@
-//*
-//* _base.less
-//*
-//*
+// _base.less
+//
+// the base file for dispy's light "sub-theme".
+//
+// Notes:
+// this is used to define mixins (think of them as functions)
+// and variables. the mixins are the ".foo () {}" things, vars are
+// like "@bar".
+//
+// (BTW, this will make it a LOT easier to maintain.)
+//
+// Dev. Note: the // style comments don't show up at all when
+// you "compile" the css (with `lessc`), but css (/**/) comments
+// do. i use them to our advantage :).
+
+// import our reset styles first
+@import "../css/reset";
//* backgrounds */
-@dk_bg_colour: #1d1f1d;
-@bg_colour: #2e2f2e;
+@dk_bg_colour: #2e3436;
+@bg_colour: #eeeeec;
@bg_alt_colour: #2e302e;
-@med_bg_colour: #4e4f4f;
+@med_bg_colour: #4e4f4e;
@menu_bg_colour: #555753;
-
//* font colour, aka color: */
@lt_main_colour: #ffff99;
-@main_colour: #eeeecc;
-@main_alt_colour: #eeeeee;
-@disabled_colour: #ddddbb;
-@shiny_colour: #2e3436;
+@main_colour: #111;
+@main_alt_colour: #999999;
+// darken(@main_alt_colour, 6.5%) > #888888
+// //#9eabb0
+// darken(@main_alt_colour, 10%) > #777777
+// darken(@main_alt_colour, 20%) > #666666
+// darken(@main_alt_colour, 26.8%) > #555555
+// darken(@main_alt_colour, 33.5%) > #444444
+// darken(@main_alt_colour, 40%) > #333333
+//
+// lighten(@main_alt_colour, 26.5%) > #dddddd
+// lighten(@main_alt_colour, 20%) > #cccccc
+// lighten(@main_alt_colour, 13.5%) > #bbbbbb
+// lighten(@main_alt_colour, 6.5%) > #aaaaaa
+// lighten(@main_alt_colour, 30%)
+@disabled_colour: #dddddd;
+@shiny_colour: #f2f2c3;
+@red_orange: #ff2000;
+@orange: #f8911b;
+@lt_orange: #fcaf3e;
+@shadow_colour: @main_colour;
+@lt_shadow_colour: #888888;
+@friendica_blue: #3465a4;
+@border2: #babdb6;
+@group_show: #9ade00;
+@group_hide: #ff4141;
+@notice: #511919;
+@info: #364e59;
+@alert: #ff0000;
@lt_main_colour: lighten(@bg_colour, 10%);
@dk_main_colour: darken(@bg_colour, 10%);
//* links */
-@link_colour: #88a9d2;
+@link_colour: #3465a4;
@dk_link_colour: darken(@link_colour, 10%);
@lt_link_colour: lighten(@link_colour, 10%);
//@hover_colour: #729fcf;
-@hover_colour: darken(@link_colour, 10%);
+@hover_colour: @dk_link_colour;
+
+// other colours
+@med_border_colour: #babdd6;
//* box shadows */
-@menu_shadow: 5px 0 10px 0 #111;
-@main_shadow: 3px 3px 3px 10px 0 #111;
+@menu_shadow: 5px 0 10px 0 @shadow_colour;
+@main_shadow: 3px 3px 3px 10px 0 @shadow_colour;
-// default here is @main_shadow
-.box_shadow(@h: 5px, @v: 5px, @blur: 5px, @spread: 0px, @colour: #111) {
+// default here was @main_shadow
+.box_shadow(@h: 5px, @v: 5px, @blur: 5px, @spread: 0px, @colour: @shadow_colour) {
-moz-box-shadow: @h @v @blur @spread @colour;
-o-box-shadow: @h @v @blur @spread @colour;
-webkit-box-shadow: @h @v @blur @spread @colour;
-ms-box-shadow: @h @v @blur @spread @colour;
box-shadow: @h @v @blur @spread @colour;
}
+//* http://css-tricks.com/snippets/css/css-box-shadow/
+//* box-shadow:
+//* 1. The horizontal offset of the shadow, positive means
+//* the shadow will be on the right of the box, a negative
+//* offset will put the shadow on the left of the box.
+//* 2. The vertical offset of the shadow, a negative one
+//* means the box-shadow will be above the box, a
+//* positive one means the shadow will be below the box.
+//* 3. The blur radius (optional), if set to 0 the shadow
+//* will be sharp, the higher the number, the more blurred
+//* it will be.
+//* 4. The spread radius (optional), positive values increase
+//* the size of the shadow, negative values decrease the size.
+//* Default is 0 (the shadow is same size as blur).
+//* 5. Colo[u]r
+//*/
//* text-shadow */
-.text_shadow (@h: 1px, @v: 1px, @c: #111) {
+.text_shadow (@h: 1px, @v: 1px, @c: @shadow_colour) {
-moz-text-shadow: @h @v @c;
-o-text-shadow: @h @v @c;
-webkit-text-shadow: @h @v @c;
@@ -50,7 +106,7 @@
text-shadow: @h @v @c;
}
//* transitions */
-.transition (@type: all, @dur: 0.5s, @effect: ease-in-out) {
+.transition (@type: all, @dur: 0.75s, @effect: ease-in-out) {
-webkit-transition: @arguments;
-moz-transition: @arguments;
-o-transition: @arguments;
@@ -62,7 +118,9 @@
.borders (@size: 1px, @style: solid, @colour: @main_colour) {
border: @size @style @colour;
}
-
+.med_borders (@sz: 2px, @st: solid, @c: @med_border_colour) {
+ border: @sz @st @c;
+}
//* rounded box corners */
.rounded_corners (@r: 5px) {
-o-border-radius: @r;
@@ -71,19 +129,32 @@
-ms-border-radius: @r;
border-radius: @r;
}
+.text_overflow (@t: ellipsis) {
+ -moz-text-overflow: @t;
+ -ms-text-verflow: @t;
+ -o-text-overflow: @t;
+ -webkit-text-overflow: @t;
+ text-overflow: @t;
+}
//* pre wrap */
.wrap () {
white-space: pre-wrap;
white-space: pre;
- word-wrap: break-word;
+ word-wrap: none;
}
//* font size sizing */
-.default_font_size () {
- font-size: 16px;
+.default_font () {
+ font-size: 14pt;
line-height: 1.1em;
font-family: sans-serif;
}
+.font_size_adjust () {
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ -o-text-size-adjust: 100%;
+ font-size-adjust: 100%;
+}
//* reset ul, ol */
.list_reset () {
diff --git a/view/theme/dispy/light/screenshot.jpg b/view/theme/dispy/light/screenshot.jpg
index 81ee35afb..46a01ccb8 100644
--- a/view/theme/dispy/light/screenshot.jpg
+++ b/view/theme/dispy/light/screenshot.jpg
Binary files differ
diff --git a/view/theme/dispy/light/screenshot_small.jpg b/view/theme/dispy/light/screenshot_small.jpg
new file mode 100644
index 000000000..043d0415f
--- /dev/null
+++ b/view/theme/dispy/light/screenshot_small.jpg
Binary files differ
diff --git a/view/theme/dispy/light/style.css b/view/theme/dispy/light/style.css
index 19ae9b6e8..e89ee7d24 100644
--- a/view/theme/dispy/light/style.css
+++ b/view/theme/dispy/light/style.css
@@ -1,37 +1,70 @@
+html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;}
+article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block;}
+body{line-height:1;}
+ul,ol{margin:0px;padding:0px;list-style:none;list-style-position:inside;}
+blockquote,q{quotes:none;}
+blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}
+table{border-collapse:collapse;border-spacing:0;}
+address{font-style:normal;}
+a img,:link img,:visited img{border:none;}
+q{quotes:"" "";}
article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
audio,canvas,video,time{display:inline-block;*display:inline;*zoom:1;}
audio:not([controls]),[hidden]{display:none;}
-html{font-size:100%;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
-body{margin:0;font-size:16px;line-height:1.1em;font-family:sans-serif;color:#111;background-color:#eee;}
-button,input,select,textarea{font-family:sans-serif;color:#222;background-color:#eee;}
-select{border:1px #555 dotted;padding:3px;margin:3px;color:#222;background:#eee;}
-option{padding:3px;color:#222;background:#eee;}option[selected="selected"]{color:#111;background:#cca;}
-ul,ol{padding:0;}
-:focus{outline:0;}
-[disabled="disabled"]{background:#ddd;color:#333;}
-ins{background-color:#ff9;color:#000;text-decoration:none;}
-mark{background-color:#ff9;color:#000;font-style:italic;font-weight:bold;}
+html{font-size:100%;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-o-text-size-adjust:100%;font-size-adjust:100%;}
+body{margin:0;padding:0;font-size:14pt;line-height:1.1em;font-family:sans-serif;color:#111111;background-color:#eeeeec;}
+button,input,select,textarea{color:#111111;background-color:#eeeeec;}
+select{border:1px dotted #555555;padding:1px;margin:3px;color:#111111;background:#eeeeec;max-width:85%;min-width:85px;}
+option{padding:1px;color:#111111;background:#eeeeec;}option[selected="selected"]{color:#eeeeec;background:#2e3436;}
+tr:nth-child(even){background-color:#d6d6d1;}
+:focus{outline:none;}
+a:focus{outline:invert, dashed, thin;}
+[disabled="disabled"]{background:#2e3436;color:#dddddd;}
+ins,mark{background-color:#eeeeec;color:#111111;}
+ins{text-decoration:none;}
+mark{font-style:italic;font-weight:bold;}
pre,code,kbd,samp,.wall-item-body code{font-family:monospace, monospace;_font-family:monospace;font-size:1em;}
-pre,.wall-item-body code{white-space:pre;white-space:pre-wrap;word-wrap:break-word;}
+pre,.wall-item-body code{white-space:pre-wrap;white-space:pre;word-wrap:none;}
q{quotes:none;}q:before,q:after{content:"";content:none;}
+em{font-style:italic;}
+strong{font-weight:bold;}
+strike{text-decoration:line-through;}
small{font-size:85%;}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}
sub{bottom:-0.25em;}
sup{top:-0.5em;}
img{border:0 none;}
-a{color:#3465a4;text-decoration:none;margin-bottom:1px;}a:hover img{text-decoration:none;}
-blockquote{background:#eee;color:#111;text-indent:5px;padding:5px;border:1px #aaa solid;border-radius:5px;}
-a:hover{color:#729fcf;border-bottom:1px dotted #729fcf;}
-.required{display:inline;color:#f00;font-size:16px;font-weight:bold;margin:3px;}
+a{color:#3465a4;text-decoration:none;margin-bottom:1px;}a:hover{color:#284d7d;border-bottom:1px dotted #284d7d;}
+a:hover img{text-decoration:none;}
+blockquote{background:#aaaaaa;color:#111111;text-indent:5px;padding:5px;border:1px solid #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
+label{width:38%;display:inline-block;font-size:small;margin:0 10px 1em 0;border:1px solid #eeeeec;padding:5px;background:#cccccc;color:#111111;-moz-box-shadow:3px 3px 5px 0px #111111;-o-box-shadow:3px 3px 5px 0px #111111;-webkit-box-shadow:3px 3px 5px 0px #111111;-ms-box-shadow:3px 3px 5px 0px #111111;box-shadow:3px 3px 5px 0px #111111;}
+input{width:250px;height:25px;border:1px solid #444444;}input[type="checkbox"],input[type="radio"]{margin:0;width:15px;height:15px;}
+input[type="submit"],input[type="button"]{background-color:#555753;border:2px outset #444444;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 3px 4px 0 #111111;-o-box-shadow:1px 3px 4px 0 #111111;-webkit-box-shadow:1px 3px 4px 0 #111111;-ms-box-shadow:1px 3px 4px 0 #111111;box-shadow:1px 3px 4px 0 #111111;color:#eeeeec;cursor:pointer;font-weight:bold;width:auto;-moz-text-shadow:1px 1px #111111;-o-text-shadow:1px 1px #111111;-webkit-text-shadow:1px 1px #111111;-ms-text-shadow:1px 1px #111111;text-shadow:1px 1px #111111;}
+input[type="submit"]:active,input[type="button"]:active{-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
+h1,h2,h3,h4,h5,h6{margin:10px 0px;font-weight:bold;border-bottom:1px solid #284d7d;}
+h1{font-size:x-large;}
+h2{font-size:large;}
+h3{font-size:medium;}
+h4{font-size:small;}
+h5{font-size:x-small;}
+h6{font-size:xx-small;}
+.required{display:inline;color:red;font-size:16px;font-weight:bold;margin:3px;}
.fakelink,.lockview{color:#3465a4;cursor:pointer;}
-.fakelink:hover{color:#729fcf;}
+.fakelink:hover{color:#284d7d;}
.smalltext{font-size:0.7em;}
-#panel{position:absolute;font-size:0.8em;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;border:1px solid #fff;background-color:#2e3436;color:#eeeeec;padding:1em;}
-.pager{margin-top:60px;display:block;clear:both;text-align:center;}.pager span{padding:4px;margin:4px;}
-.pager_current{background-color:#729fcf;color:#fff;}
.action{margin:5px 0;}
.tool{margin:5px 0;list-style:none;}
#articlemain{width:100%;height:100%;margin:0 auto;}
+.button,#profile-listing-desc{width:25%;height:auto;background:#555753;color:#eeeeec;border:2px outset #222321;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:5px;font-size:smaller;cursor:pointer;}.button.active,#profile-listing-desc.active{-moz-box-shadow:4px 4px 7px 0px #111111;-o-box-shadow:4px 4px 7px 0px #111111;-webkit-box-shadow:4px 4px 7px 0px #111111;-ms-box-shadow:4px 4px 7px 0px #111111;box-shadow:4px 4px 7px 0px #111111;}
+.button a,#profile-listing-desc a{color:#eeeeec;font-size:smaller;font-weight:bold;}
+[class$="-desc"],[id$="-desc"]{color:#eeeeec;border:1px outset #eeeeec;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;}
+#item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;}
+.intro-approve-as-friend-desc{margin-top:10px;}
+.intro-desc{margin-bottom:20px;font-weight:bold;}
+#group-edit-desc{margin:10px 0px;}
+#settings-nickname-desc{background:#2e3436;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;border:1px solid #111111;padding:5px;color:#eeeeec;}
+.contactname,.contact-name{font-weight:bold;font-size:smaller;}
+.contact-details{font-style:italic;font-size:smaller;}
#asidemain .field{overflow:hidden;width:200px;}
#login-extra-links{overflow:auto !important;padding-top:60px !important;width:100% !important;}#login-extra-links a{margin-right:20px;}
#login_standard{display:block !important;float:none !important;height:100% !important;position:relative !important;width:100% !important;}#login_standard .field label{width:200px !important;}
@@ -43,8 +76,8 @@ a:hover{color:#729fcf;border-bottom:1px dotted #729fcf;}
#login_openid label{width:180px !important;}
nav{height:60px;background-color:#2e3436;color:#eeeeec;position:relative;padding:20px 20px 10px 95px;}nav a{text-decoration:none;color:#eeeeec;border:0px;}nav a:hover{text-decoration:none;color:#eeeeec;border:0px;}
nav #banner{display:block;position:absolute;left:51px;top:25px;}nav #banner #logo-text a{font-size:40px;font-weight:bold;margin-left:3px;}
-ul#user-menu-popup{display:none;position:absolute;background-color:#555753;width:100%;padding:10px 0px;margin:0px;top:20px;left:0;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;box-shadow:5px 10px 10px 0 #111;z-index:10000;}ul#user-menu-popup li{display:block;}ul#user-menu-popup li a{display:block;padding:5px;}ul#user-menu-popup li a:hover{color:#2e3436;background-color:#eeeeec;}
-ul#user-menu-popup li a.nav-sep{border-top:1px solid #eeeeec;}
+ul#user-menu-popup{display:none;position:absolute;background-color:#555753;width:100%;padding:10px 0px;margin:0px;top:20px;left:0;font-size:small;line-height:1;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-moz-box-shadow:5px 5px 10px 0px #111111;-o-box-shadow:5px 5px 10px 0px #111111;-webkit-box-shadow:5px 5px 10px 0px #111111;-ms-box-shadow:5px 5px 10px 0px #111111;box-shadow:5px 5px 10px 0px #111111;z-index:10000;}ul#user-menu-popup li{display:block;}ul#user-menu-popup li a{display:block;padding:5px;color:#eeeeec;background-color:#555753;}ul#user-menu-popup li a:hover{color:#eeeeec;background-color:#111111;}
+ul#user-menu-popup li a.nav-sep{border-top:1px solid #2e302e;}
nav .nav-link{display:inline-block;width:22px;height:22px;overflow:hidden;margin:0px 5px 5px;text-indent:50px;background:transparent url(light/icons.png) 0 0 no-repeat;}
#nav-apps-link{background-position:0 -66px;}#nav-apps-link:hover{background-position:-22px -66px;}
#nav-community-link,#nav-contacts-link{background-position:0 -22px;}#nav-community-link:hover,#nav-contacts-link:hover{background-position:-22px -22px;}
@@ -58,26 +91,27 @@ nav .nav-link{display:inline-block;width:22px;height:22px;overflow:hidden;margin
#nav-notify-link:hover{background-position:-66px -110px;}
#nav-network-link{background-position:0px -177px;}#nav-network-link:hover{background-position:-22px -177px;}
#nav-search-link{background-position:0 -44px;}#nav-search-link:hover{background-position:-22px -44px;}
-#profile-link,#profile-title,#wall-image-upload,#wall-file-upload,#profile-attach-wrapper,#profile-audio,#profile-link,#profile-location,#profile-nolocation,#profile-title,#jot-title,#profile-upload-wrapper,#profile-video,#profile-jot-submit,#wall-image-upload-div,#wall-file-upload-div,.icon,.hover,.focus,.pointer{cursor:pointer;}
-div.jGrowl div.notice{background:#511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;color:#ffffff;padding-left:58px;}
-div.jGrowl div.info{background:#364e59 url("../../../images/icons/48/info.png") no-repeat 5px center;color:#ffffff;padding-left:58px;}
-#nav-notifications-menu{margin:30px 0 0 -20px;width:275px;max-height:300px;overflow-y:auto;font-size:9pt;}#nav-notifications-menu .contactname{font-weight:bold;font-size:0.9em;}
-#nav-notifications-menu img{float:left;margin-right:5px;}
+#jot-title,#profile-link,#profile-title,#profile-attach-wrapper,#profile-audio,#profile-link,#profile-location,#profile-nolocation,#profile-title,#profile-upload-wrapper,#profile-video,#profile-jot-submit,#wall-image-upload,#wall-file-upload,#wall-image-upload-div,#wall-file-upload-div,.icon,.hover,.focus,.pointer{cursor:pointer;}
+div.jGrowl div.notice{background:#511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;color:white;padding-left:58px;margin-top:50px;}
+div.jGrowl div.info{background:#364e59 url("../../../images/icons/48/info.png") no-repeat 5px center;color:white;padding-left:58px;margin-top:50px;}
+#nav-notifications-menu{margin:30px 0 0 -20px;width:275px;max-height:300px;overflow-y:auto;font-size:9pt;}#nav-notifications-menu img{float:left;margin-right:5px;}
#nav-notifications-menu .notif-when{font-size:0.8em;display:block;}
-#nav-notifications-menu li{word-wrap:normal;border-bottom:1px solid #000;}#nav-notifications-menu li:hover{color:black;}
+#nav-notifications-menu li{word-wrap:normal;border-bottom:1px solid black;}#nav-notifications-menu li:hover{color:black;}
#nav-notifications-menu a:hover{color:black;text-decoration:underline;}
-nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkmenu.selected .icon.s22.notify{background-image:url("../../../images/icons/22/notify_on.png");}
+nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkmenu.selected .icon.s22.notify{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAQAAABuvaSwAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAUJcAAFCXAZtv64UAAAHuSURBVCjPbZPbTlNBFIYHLixXRIhEQGNRMUopJAJyAyZ4Z2l8B+XwEBqKtjwOp8oDIAJKIJFUjdFIQCUYrRytdyb0459ht8wG9rrYs9b618y/TsYEH4ZK4qRYYIdDybZOI7TKakIfVhrJ8J2i5IBNyV93/kaaBuv3oV3MgwCTPKGHPkkPA0xRUMBrOgN4AP0o6BseEpF2m3es0qJTFQneyvMhgDsC9tZprnEcGuOPeMcDLUpW3jlLxlDBmJTFY6gLvsVv8tyh9G7U3Z6mwtCuJAoiECSh/w1+8otmTjLqF2KDNsNzRY1bruV0o6rFFtc9S5USh5RRWvAYv4xX9dYPS8ur1oBQC4Y99m2uHriRNda5ErLdU1l3jCI2xdJ3XOYLX6kP2W6K2OF54Et84jN154F31d6ukKOG92pSbcjWLRrbRhVGLTZeOtXqX46LoQSHhJo3jOo3ESrdBQbljIRKNyXUiKHNNSXhTdbZiUzyT/WJ23Zn3BBFy+2u4ZHc1eV2N7EkxAvbbqMRmZOSlbE0g/uajRgl6Iy8r1wpnaFTQ4ji+8XOEsuxYmdDWpJleXJ0+BPdoduL4p5Vavd5IOllmJfiWmSWu6d3pV4jteFWqaAGbLkdKSqtUXXUnN3DSvF8phfy/JfkxfOp9sVb2COz+hY/T0qkwwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMS0wOS0xNlQwOTozOTowMCswMjowMC9Oi90AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTEtMDktMTZUMDk6Mzk6MDArMDI6MDBeEzNhAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg==");}
.show{display:block;}
-#notifications{height:20px;width:170px;position:absolute;top:-19px;left:4px;}
-#nav-floater{position:fixed;top:20px;right:1%;padding:5px;background:#2e3436;color:transparent;border-radius:5px;z-index:100;width:300px;height:60px;}
+#notifications{width:170px;height:20px;font-size:small;top:-19px;left:4px;position:absolute;}
+#nav-floater{position:fixed;top:20px;right:1%;padding:5px;background:#2e3436;color:transparent;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;z-index:100;width:300px;height:60px;}
#nav-buttons{clear:both;list-style:none;padding:0px;margin:0px;height:25px;}#nav-buttons>li{padding:0;display:inline-block;margin:0px -4px 0px 0px;}
.floaterflip{display:block;position:fixed;z-index:110;top:56px;right:19px;width:22px;height:22px;overflow:hidden;margin:0px;background:transparent url(light/icons.png) -190px -60px no-repeat;}
-.search-box{display:inline-block;margin:5px;position:fixed;right:0px;bottom:0px;z-index:100;background:#1d1f1d;border-radius:5px;}
-#search-text{border:1px #eec solid;background:#2e3436;color:#eec;font-size:8pt;margin:8px;width:10em;height:14px;}
+.search-box{display:inline-block;margin:5px;position:fixed;right:0px;bottom:0px;z-index:100;background:#2e3436;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
+#search-text,#mini-search-text{background:white;color:#111111;margin:8px;}
+#search-text{border:1px solid #999999;}
+#mini-search-text{font-size:8pt;height:14px;width:10em;}
#scrollup{position:fixed;right:5px;bottom:40px;z-index:100;}#scrollup a:hover{text-decoration:none;border:0;}
-#user-menu{box-shadow:5px 0 10px 0 #111;display:block;width:75%;margin:3px 0 0 0;position:relative;background-color:#555753;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;background:#555753 url("light/menu-user-pin.jpg") 98% center no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;}
-#user-menu-label{font-size:12px;padding:3px 20px 9px 5px;height:10px;}
-.nav-ajax-update,.nav-ajax-left{width:30px;height:19px;background:transparent url(light/notifications.png) 0 0 no-repeat;color:#222;font-weight:bold;font-size:0.8em;padding-top:0.2em;text-align:center;float:left;margin:0 -1px 0 3px;display:block;visibility:hidden;}
+#user-menu{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;display:block;width:75%;margin:3px 0 0 0;position:relative;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-color:#555753;background-image:url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");background-position:98% center;background-repeat:no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;outline:0 none;}
+#user-menu-label{font-size:small;padding:3px 20px 9px 5px;height:10px;}
+.nav-ajax-update,.nav-ajax-left{width:30px;height:19px;background:transparent url(light/notifications.png) 0 0 no-repeat;color:#111111;font-weight:bold;font-size:0.8em;padding-top:0.2em;text-align:center;float:left;margin:0 -1px 0 3px;display:block;visibility:hidden;}
.nav-ajax-update.show,.nav-ajax-left.show{visibility:visible;}
#net-update{background-position:0px 0px;}
#mail-update{background-position:-30px 0;}
@@ -86,133 +120,129 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
#intro-update{background-position:-120px 0px;}
#lang-select-icon{cursor:pointer;position:fixed;left:28px;bottom:6px;z-index:10;}
#language-selector{position:fixed;bottom:2px;left:52px;z-index:10;}
-.menu-popup{position:absolute;display:none;width:11em;background:#ffffff;color:#2d2d2d;margin:0px;padding:0px;list-style:none;border:3px solid #364e59;z-index:100000;-webkit-box-shadow:3px 3px 10px 0 rgba(0, 0, 0, 0.7);-moz-box-shadow:3px 3px 10px 0 rgba(0, 0, 0, 0.7);box-shadow:3px 3px 10px 0 rgba(0, 0, 0, 0.7);}.menu-popup a{display:block;color:#2d2d2d;padding:5px 10px;text-decoration:none;}.menu-popup a:hover{background-color:#bdcdd4;}
-.menu-popup .menu-sep{border-top:1px solid #9eabb0;}
+.menu-popup{position:absolute;display:none;width:11em;background:white;color:#111111;margin:0px;padding:0px;border:3px solid #3465a4;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;z-index:100000;-moz-box-shadow:5px 5px 5px 0px #111111;-o-box-shadow:5px 5px 5px 0px #111111;-webkit-box-shadow:5px 5px 5px 0px #111111;-ms-box-shadow:5px 5px 5px 0px #111111;box-shadow:5px 5px 5px 0px #111111;}.menu-popup a{display:block;color:#111111;padding:5px 10px;text-decoration:none;}.menu-popup a:hover{color:#eeeeec;background-color:#3465a4;}
+.menu-popup .menu-sep{border-top:1px solid #4e4f4e;}
.menu-popup li{float:none;overflow:auto;height:auto;display:block;}.menu-popup li img{float:left;width:16px;height:16px;padding-right:5px;}
-.menu-popup .empty{padding:5px;text-align:center;color:#9eabb0;}
+.menu-popup .empty{padding:5px;text-align:center;color:#ffffff;}
.notif-item{font-size:small;}.notif-item a{vertical-align:middle;}
.notif-image{width:32px;height:32px;padding:7px 7px 0px 0px;}
-.notify-seen{background:#ddd;}
-#sysmsg_info{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #000;-webkit-box-shadow:3px 3px 10px 0 #000;box-shadow:3px 3px 10px 0 #000;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
-#sysmsg{position:fixed;bottom:0;-moz-box-shadow:3px 3px 10px 0 #000;-webkit-box-shadow:3px 3px 10px 0 #000;box-shadow:3px 3px 10px 0 #000;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
-#sysmsg_info br,#sysmsg br{display:block;margin:2px 0px;border-top:1px solid #ccccce;}
-#asidemain{float:left;font-size:smaller;margin:20px 0 20px 35px;width:25%;display:inline;}
+.notify-seen{background:#dddddd;color:#111111;}
+.notify-unseen{color:#111111;}
+#sysmsg_info{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-o-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-webkit-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-ms-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
+#sysmsg{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-o-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-webkit-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-ms-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
+#sysmsg_info br,#sysmsg br{display:block;margin:2px 0px;border-top:1px solid #eeeeec;}
+#asidemain{float:left;font-size:small;margin:20px 0 20px 35px;width:25%;display:inline;}
#asideright,#asideleft{display:none;}
-.vcard .fn{font-size:1.7em;font-weight:bold;border-bottom:1px solid #729fcf;padding-bottom:3px;}
-.vcard #profile-photo-wrapper{margin:20px;}.vcard #profile-photo-wrapper img{box-shadow:3px 3px 10px 0 #000;}
+.vcard .fn{font-size:1.5em;font-weight:bold;border-bottom:1px solid #284d7d;padding-bottom:3px;}
+.vcard #profile-photo-wrapper{margin:20px;}.vcard #profile-photo-wrapper img{-moz-box-shadow:3px 3px 10px 0 #111111;-o-box-shadow:3px 3px 10px 0 #111111;-webkit-box-shadow:3px 3px 10px 0 #111111;-ms-box-shadow:3px 3px 10px 0 #111111;box-shadow:3px 3px 10px 0 #111111;}
#asidemain h4{font-size:1.2em;}
#asidemain #viewcontacts{text-align:right;}
#asidemain #contact-block{width:99%;}#asidemain #contact-block .contact-block-content{width:99%;}#asidemain #contact-block .contact-block-content .contact-block-div{float:left;margin:0 5px 5px 0;width:50px;height:50px;padding:3px;position:relative;}
-.aprofile dt{background:transparent;color:#666666;font-weight:bold;box-shadow:1px 1px 5px 0 #000;margin:15px 0 5px;padding-left:5px;}
+.aprofile dt{background:transparent;color:#666666;font-weight:bold;-moz-box-shadow:3px 3px 5px 0px #111111;-o-box-shadow:3px 3px 5px 0px #111111;-webkit-box-shadow:3px 3px 5px 0px #111111;-ms-box-shadow:3px 3px 5px 0px #111111;box-shadow:3px 3px 5px 0px #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:15px 0 5px;padding-left:5px;}
#profile-extra-links ul{margin-left:0px;padding-left:0px;list-style:none;}
-#dfrn-request-link{background:#3465a4 url(light/connect.png) no-repeat 95% center;border-radius:5px 5px 5px 5px;color:#fff;display:block;font-size:1.2em;padding:0.2em 0.5em;}
-#wallmessage-link{color:#eee;display:block;font-size:1.2em;padding:0.2em 0.5em;}
-.ttright{margin:0px 0px 0px 0px;}
+#dfrn-request-link{-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;color:#111111;display:block;font-size:1.2em;padding:0.2em 0.5em;background-color:#3465a4;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAYAAAAmL5yKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAE4SURBVCiRpZKxLgRRFIa//64dKruZFRIlolBviFKiVHsHrRaFikTCC+hEQtRegMQDqDUKJOPOvauSMJmjYEU2M0viT071/+fLOTlHZkadQgjLkh1LPEoj661WKw5mXG034JxtAgtmrJoVK5WZYYCy1AVQSOYbjeSqMmRmQ8v755Ne77lb5w+d4HMNJopCT7X+bwDQZKfTyf4BIAHeawHe+/kQ/FGM+QagvpFl2VSM/tyMmV7PV14AYMQ5nUp0AULIp0HXzpVvSdLYMmNVAjNdAuNAUQHgxy/ZvEQTSMw0A33DxkIIi2ma3gwC9PKSzRWF2wbdpml62DfyPF9yjlNgAnQGLJjZnXON3Xa7ff8NGPbKQPNrbAOI0a9J2ilLEzAL7P0GqJJizF+BUeDhL2cclJnZPvAg6eADf+imKjSMX1wAAAAASUVORK5CYII=");background-repeat:no-repeat;background-position:95% center;}
+#wallmessage-link{color:#eeeeec;display:block;font-size:1.2em;padding:0.2em 0.5em;}
+.ttright{margin:0px;}
.contact-block-div{width:50px;height:50px;float:left;}
.contact-block-textdiv{width:150px;height:34px;float:left;}
-#contact-block-end{clear:both;}
-#jot{margin:10px 0 20px 0px;width:100%;}#jot #jot-tools{margin:0px;padding:0px;height:35px;overflow:none;width:100%;}#jot #jot-tools span{float:left;margin:10px 20px 2px 0px;}#jot #jot-tools span a{display:block;}
+#jot{margin:10px 0 20px 0px;width:100%;}#jot #jot-tools{margin:0px;padding:0px;width:100%;height:35px;overflow:none;}#jot #jot-tools span{float:left;margin:10px 20px 2px 0px;}#jot #jot-tools span a{display:block;}
#jot #jot-tools .perms{float:right;width:40px;}
-#jot #jot-tools li.loading{float:right;background-color:#ffffff;width:20px;vertical-align:center;text-align:center;border-top:2px solid #9eabb0;height:38px;}#jot #jot-tools li.loading img{margin-top:10px;}
-#jot #jot-title{border:1px solid #ccc;margin:0 0 5px;height:20px;width:90%;font-weight:bold;border-radius:5px;vertical-align:middle;}
-#jot-category{margin:5px 0;border-radius:5px;border:1px #ccc solid;color:#666;font-size:smaller;}#jot-category:focus{color:#111;}
-#jot #character-counter{width:6%;float:right;text-align:right;height:15px;line-height:20px;padding:2px 20px 5px 0;}
-#profile-jot-text_parent{box-shadow:5px 0 10px 0 #111;}
-#profile-jot-text_tbl{margin-bottom:10px;background:#777;}
+#jot #jot-tools li.loading{float:right;background-color:white;width:20px;height:38px;vertical-align:center;text-align:center;border-top:2px solid #9eabb0;}#jot #jot-tools li.loading img{margin-top:10px;}
+#jot #jot-title{border:1px solid #cccccc;margin:0 0 5px;width:90%;height:20px;font-weight:bold;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;vertical-align:middle;}
+#jot-category{margin:5px 0;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;border:1px solid #cccccc;color:#666666;font-size:smaller;}#jot-category:focus{color:#111111;}
+#jot #character-counter{width:6%;height:15px;float:right;text-align:right;line-height:20px;padding:2px 20px 5px 0;}
+#profile-jot-text_parent{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;}
+#profile-jot-text_tbl{margin-bottom:10px;background:#808080;}
#profile-jot-text_ifr{width:99.900002% !important;}
-#profile-jot-text_toolbargroup,.mceCenter tr{background:#777;}
-[id$="jot-text_ifr"]{width:99.900002% !important;color:#2e2f2e;background:#eec;}[id$="jot-text_ifr"] .mceContentBody{color:#2e2f2e;background:#eec;}
-.defaultSkin tr.mceFirst{background:#777;}
-.defaultSkin td.mceFirst,.defaultSkin td.mceLast{background-color:#eec;}
-.defaultSkin span.mceIcon,.defaultSkin img.mceIcon,.defaultSkin .mceButtonDisabled .mceIcon{background-color:#eec;}
+#profile-jot-text_toolbargroup,.mceCenter tr{background:#808080;}
+[id$="jot-text_ifr"]{width:99.900002% !important;color:#111111;background:#eeeeec;}[id$="jot-text_ifr"] .mceContentBody{color:#111111;background:#eeeeec;}
+.defaultSkin tr.mceFirst{background:#808080;}
+.defaultSkin td.mceFirst,.defaultSkin td.mceLast{background-color:#eeeeec;}
+.defaultSkin span.mceIcon,.defaultSkin img.mceIcon,.defaultSkin .mceButtonDisabled .mceIcon{background-color:#eeeeec;}
#profile-attach-wrapper,#profile-audio-wrapper,#profile-link-wrapper,#profile-location-wrapper,#profile-nolocation-wrapper,#profile-title-wrapper,#profile-upload-wrapper,#profile-video-wrapper{float:left;margin:0 20px 0 0;}
#profile-rotator-wrapper{float:right;}
-#profile-jot-tools-end,#profile-jot-banner-end{clear:both;}
#profile-jot-email-wrapper{margin:10px 10% 0;border:1px solid #555753;border-bottom:0;}
-#profile-jot-email-label{background-color:#555753;color:#ccccce;padding:5px;}
+#profile-jot-email-label{background-color:#555753;color:#eeeeec;padding:5px;}
#profile-jot-email{width:90%;margin:5px;}
#profile-jot-networks{margin:0 10%;border:1px solid #555753;border-top:0;border-bottom:0;padding:5px;}
#profile-jot-net{margin:5px 0;}
#jot-preview-link{margin:0 0 0 10px;border:0;text-decoration:none;float:right;}
.icon-text-preview{margin:0 0 -18px 0;display:block;width:20px;height:20px;background:url(light/icons.png) no-repeat -128px -40px;border:0;text-decoration:none;float:right;cursor:pointer;}
-#profile-jot-perms{float:right;background-color:#555753;height:22px;width:20px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;overflow:hidden;border:0px;margin:0 10px 0 10px;}
+#profile-jot-perms{float:right;color:#555753;width:20px;height:20px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:3px 3px 5px 0 #111111;-o-box-shadow:3px 3px 5px 0 #111111;-webkit-box-shadow:3px 3px 5px 0 #111111;-ms-box-shadow:3px 3px 5px 0 #111111;box-shadow:3px 3px 5px 0 #111111;border:2px outset #555753;overflow:hidden;margin:0 10px 0 10px;}
#profile-jot-plugin-wrapper{width:1px;margin:10px 0 0 0;float:right;}
-#profile-jot-submit-wrapper{float:right;width:100%;list-style:none;margin:10px 0 0 0;padding:0;}
-#profile-jot-submit{height:auto;background-color:#555753;color:#eeeeec;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;border:2px outset #222420;margin:0;float:right;text-shadow:1px 1px #111;width:auto;}#profile-jot-submit:active{box-shadow:0 0 0 0;}
-#jot-perms-icon{height:22px;width:20px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;overflow:hidden;border:0;}
-#profile-jot-acl-wrapper{margin:0 10px;border:1px solid #555753;border-top:0;display:block !important;}
-#group_allow_wrapper,#group_deny_wrapper,#acl-permit-outer-wrapper{width:47%;float:left;}
-#contact_allow_wrapper,#contact_deny_wrapper,#acl-deny-outer-wrapper{width:47%;float:right;}
-#acl-permit-text{background-color:#555753;color:#ccccce;padding:5px;float:left;}
+#profile-jot-submit-wrapper{float:right;width:100%;margin:10px 0 0 0;padding:0;}
+#profile-jot-submit{height:auto;background-color:#555753;color:#eeeeec;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;border:2px outset #555753;margin:0;float:right;-moz-text-shadow:1px 1px #111111;-o-text-shadow:1px 1px #111111;-webkit-text-shadow:1px 1px #111111;-ms-text-shadow:1px 1px #111111;text-shadow:1px 1px #111111;width:auto;}#profile-jot-submit:active{-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
+#jot-perms-icon{width:22px;height:22px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;overflow:hidden;background:#555753 url("dark/icons.png") -88px -40px;}
+#group_allow_wrapper,#group_deny_wrapper,#acl-permit-outer-wrapper,#contact_allow_wrapper,#contact_deny_wrapper,#acl-deny-outer-wrapper{width:47%;}
+#group_allow_wrapper,#group_deny_wrapper,#acl-permit-outer-wrapper{float:left;}
+#contact_allow_wrapper,#contact_deny_wrapper,#acl-deny-outer-wrapper{float:right;}
+#acl-permit-text{background-color:#555753;color:#111111;padding:5px;float:left;}
#jot-public{background-color:#555753;color:#ff0000;padding:5px;float:left;}
-#acl-deny-text{background-color:#555753;color:#ccccce;padding:5px;float:left;}
-#acl-permit-text-end,#acl-deny-text-end{clear:both;}
-#jot-title-desc{color:#ccc;}
-#profile-jot-desc{color:#a00;margin:5px 0;}
+#acl-deny-text{background-color:#555753;color:#eeeeec;padding:5px;float:left;}
+#jot-title-desc{color:#cccccc;}
+#profile-jot-desc{background:#eeeeec;border:1px solid #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;color:#ff2000;margin:5px 0;}
#jot-title-wrapper{margin-bottom:5px;}
#jot-title-display{font-weight:bold;}
.jothidden{display:none;}
-#jot-preview-content{background-color:#ffffe0;color:#111;border:1px #aa0 solid;border-radius:5px;padding:3px 3px 6px 10px;}#jot-preview-content .wall-item-outside-wrapper{border:0;border-radius:0px;}
+#jot-preview-content{background-color:#f2f2c3;color:#111111;border:1px solid #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:5px 0 10px 0px #111111;-o-box-shadow:5px 0 10px 0px #111111;-webkit-box-shadow:5px 0 10px 0px #111111;-ms-box-shadow:5px 0 10px 0px #111111;box-shadow:5px 0 10px 0px #111111;padding:3px 3px 6px 10px;}#jot-preview-content .wall-item-outside-wrapper{border:0;-o-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;-moz-border-radius:0px 0px 0px 0px;-ms-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
#sectionmain{margin:20px;font-size:0.8em;min-width:475px;width:67%;float:left;display:inline;}
-.tabs{list-style:none;margin:10px 0;padding:0;}.tabs li{display:inline;font-size:smaller;font-weight:bold;}
-.tab{border:1px solid #729fcf;padding:4px;}.tab:hover,.tab.active:hover,.tab:active{background:#729fcf;color:#eeeeec;}
-.tab.active{background:#729fcf;color:#eeeeec;}.tab.active a{color:#729fcf;}
+.tabs{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:10px 0;}.tabs li{display:inline;font-size:smaller;}
+.tab{border:1px solid #284d7d;padding:4px;}.tab:hover,.tab:active{background:#f2f2c3;color:#111111;border:1px solid #284d7d;}
+.tab.active{background:#2e3436;color:#eeeeec;border:1px solid #284d7d;}.tab.active:hover{background:#f2f2c3;color:#111111;border:1px solid #284d7d;}
+.tab.active a{color:#eeeeec;text-decoration:none;}
.tab a{border:0;text-decoration:none;}
-.wall-item-outside-wrapper{border:1px solid #aaa;border-radius:5px;box-shadow:5px 0 10px 0 #888;}.wall-item-outside-wrapper.comment{margin-top:5px;}
-.wall-item-outside-wrapper-end{clear:both;}
-.wall-item-content-wrapper{position:relative;padding:10px;width:auto;}
+.wall-item-outside-wrapper{border:1px solid #545454;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:6px 1px 10px -2px #111111;-o-box-shadow:6px 1px 10px -2px #111111;-webkit-box-shadow:6px 1px 10px -2px #111111;-ms-box-shadow:6px 1px 10px -2px #111111;box-shadow:6px 1px 10px -2px #111111;}.wall-item-outside-wrapper.comment{margin-top:5px;}
+.wall-item-content-wrapper{position:relative;padding:0.75em;width:auto;}
.wall-item-outside-wrapper .wall-item-comment-wrapper{}
-.shiny{background:#efefdf;border-radius:5px;}
-.wall-outside-wrapper .shiny{border-radius:5px;}
+.shiny{background:#f2f2c3;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
+.wall-outside-wrapper .shiny{-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
.heart{color:red;}
-.wall-item-content{overflow-x:auto;margin:0px 15px 0px 5px;}
-[id^="tread-wrapper"],[class^="tread-wrapper"]{margin:15px 0 0 0;padding:0px;}
+.wall-item-content{overflow-x:auto;margin:0px 4em 1em 5px;}
+[id^="tread-wrapper"],[class^="tread-wrapper"]{margin:1.2em 0 0 0;padding:0px;}
.wall-item-photo-menu{display:none;}
-.wall-item-photo-menu-button{display:none;text-indent:-99999px;background:#555753 url(light/menu-user-pin.jpg) no-repeat 75px center;position:absolute;overflow:hidden;height:20px;width:90px;top:85px;left:0;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}
-.wall-item-info{float:left;width:110px;}
-.wall-item-photo-wrapper{width:80px;height:80px;position:relative;padding:5px;background-color:#555753;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
+.wall-item-photo-menu-button{display:none;text-indent:-99999px;background:#555753 url(light/menu-user-pin.jpg) no-repeat 75px center;position:absolute;overflow:hidden;width:90px;height:20px;top:85px;left:0;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}
+.wall-item-info{float:left;width:8em;}
+.wall-item-photo-wrapper{width:80px;height:80px;position:relative;padding:5px;background-color:#555753;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
[class^="wall-item-tools"] *{}[class^="wall-item-tools"] *>*{}
-.wall-item-tools{float:right;opacity:0.4;-webkit-transition:all 1s ease-in-out;-moz-transition:all 1s ease-in-out;-o-transition:all 1s ease-in-out;-ms-transition:all 1s ease-in-out;transition:all 1s ease-in-out;}.wall-item-tools:hover{opacity:1;-webkit-transition:all 1s ease-in-out;-moz-transition:all 1s ease-in-out;-o-transition:all 1s ease-in-out;-ms-transition:all 1s ease-in-out;transition:all 1s ease-in-out;}
-.wall-item-subtools1{height:30px;list-style:none outside none;margin:20px 0 30px -20px;padding:0;width:30px;}
-.wall-item-subtools2{height:25px;list-style:none outside none;margin:-75px 0 0 5px;padding:0;width:25px;}
-.wall-item-title{font-size:1.2em;font-weight:bold;margin-bottom:1em;}
-.wall-item-body{margin:20px 20px 10px 0px;text-align:left;overflow-x:auto;}
-.wall-item-lock-wrapper{float:right;height:22px;margin:0 -5px 0 0;width:22px;opacity:1;}
-.wall-item-dislike,.wall-item-like{clear:left;font-size:0.8em;color:#878883;margin:5px 0 5px 120px;}
-.wall-item-author,.wall-item-actions-author{clear:left;font-size:0.8em;color:#878883;margin:20px 20px 0 110px;}
-.wall-item-ago{display:inline;padding-left:10px;}
-.wall-item-wrapper-end{clear:both;}
-.wall-item-location{margin-top:15px;width:100px;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;}.wall-item-location .icon{float:left;}
+.wall-item-tools{float:right;opacity:0.4;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}.wall-item-tools:hover{opacity:1;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}
+.wall-item-subtools1{width:30px;height:30px;list-style:none outside none;margin:18px 0 30px -20px;padding:0;}
+.wall-item-subtools2{width:25px;height:25px;list-style:none outside none;margin:-78px 0 0 5px;padding:0;}
+.wall-item-title{font-size:1.2em;font-weight:bold;margin-bottom:1.4em;}
+.wall-item-body{margin:15px 10px 10px 0px;text-align:left;overflow-x:auto;}
+.wall-item-lock-wrapper{float:right;width:22px;height:22px;margin:0 -5px 0 0;opacity:1;}
+.wall-item-dislike,.wall-item-like{clear:left;font-size:0.8em;color:#888b85;margin:5px 0 5px 10.2em;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;opacity:0.5;}.wall-item-dislike:hover,.wall-item-like:hover{opacity:1;}
+.wall-item-author,.wall-item-actions-author,.wall-item-ago{clear:left;float:left;color:#eeeeec;line-height:1;display:inline-block;font-size:0.75em;margin:0.5em auto 0;}
+.wall-item-author,.wall-item-actions-author{margin:0.5em auto 0;font-size:0.75em;font-weight:bold;}
+.wall-item-location{margin-top:15px;width:100px;overflow:hidden;-moz-text-overflow:ellipsis;-ms-text-verflow:ellipsis;-o-text-overflow:ellipsis;-webkit-text-overflow:ellipsis;text-overflow:ellipsis;}.wall-item-location .icon{float:left;}
.wall-item-location>a,.wall-item-location .smalltext{margin-left:25px;font-size:0.7em;display:block;}
.wall-item-location>br{display:none;}
-.wallwall .wwto{left:5px;margin:0;position:absolute;top:75px;width:30px;z-index:10001;width:30px;height:30px;}.wallwall .wwto img{width:30px !important;height:30px !important;}
+.wallwall .wwto{left:5px;margin:0;position:absolute;top:75px;z-index:10001;width:30px;height:30px;}.wallwall .wwto img{width:30px !important;height:30px !important;}
.wallwall .wall-item-photo-end{clear:both;}
.wall-item-arrowphoto-wrapper{position:absolute;left:35px;top:80px;z-index:10002;}
-.wall-item-photo-menu{min-width:92px;border:2px solid #FFFFFF;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-webkit-border-radius:0px 5px 5px 5px;-moz-border-radius:0px 5px 5px 5px;border-radius:0px 5px 5px 5px;}.wall-item-photo-menu ul{margin:0px;padding:0px;list-style:none;}
-.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 2px;color:#eeeeec;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeec;}
+.wall-item-photo-menu{min-width:92px;font-size:0.75em;border:2px solid #555753;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-o-border-radius:0 5px 5px 5px;-webkit-border-radius:0 5px 5px 5px;-moz-border-radius:0 5px 5px 5px;-ms-border-radius:0 5px 5px 5px;border-radius:0 5px 5px 5px;}.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 6px;color:#eeeeec;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeec;}
#item-delete-selected{overflow:auto;width:100%;}
#connect-services-header,#connect-services,#extra-help-header,#extra-help,#postit-header,#postit{margin:5px 0 0 0;}
-.ccollapse-wrapper{font-size:0.9em;margin-left:80px;}
-.wall-item-outside-wrapper.comment{margin-left:80px;}.wall-item-outside-wrapper.comment .wall-item-photo{width:40px!important;height:40px!important;}
+.ccollapse-wrapper{font-size:0.9em;margin-left:5em;}
+.hide-comments-outer{font-size:small;}
+.wall-item-outside-wrapper.comment{margin-left:5em;}.wall-item-outside-wrapper.comment .wall-item-photo{width:40px !important;height:40px !important;}
.wall-item-outside-wrapper.comment .wall-item-photo-wrapper{width:40px;height:40px;}
.wall-item-outside-wrapper.comment .wall-item-photo-menu-button{width:50px;top:45px;background-position:35px center;}
-.wall-item-outside-wrapper.comment .wall-item-info{width:60px;}
.wall-item-outside-wrapper.comment .wall-item-body{margin-left:10px;}
-.wall-item-outside-wrapper.comment .wall-item-author{margin-left:50px;}
+.wall-item-outside-wrapper.comment .wall-item-author{margin-left:0.2em;}
.wall-item-outside-wrapper.comment .wall-item-photo-menu{min-width:50px;top:60px;}
.comment-wwedit-wrapper{}
.comment-edit-wrapper{border-top:1px #aaa solid;}
-[class^="comment-edit-bb"]{list-style:none;display:none;margin:-40px 0 5px 60px;width:75%;}[class^="comment-edit-bb"]>li{display:inline-block;margin:0 10px 0 0;visibility:none;}
+[class^="comment-edit-bb"]{margin:0px;padding:0px;list-style:none;list-style-position:inside;display:none;margin:-40px 0 5px 60px;width:75%;}[class^="comment-edit-bb"]>li{display:inline-block;margin:0 10px 0 0;visibility:none;}
.comment-wwedit-wrapper img,.comment-edit-wrapper img{width:20px;height:20px;}
.comment-edit-photo-link,.comment-edit-photo{margin-left:10px;}
.my-comment-photo{width:40px;height:40px;padding:5px;}
-[class^="comment-edit-text"]{margin:5px 0 10px 20px;width:84.5%;}
-.comment-edit-text-empty{height:20px;border:2px #babdd6 solid;border-radius:5px;color:#babdb6;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}.comment-edit-text-empty:hover{color:#999999;}
-.comment-edit-text-full{height:10em;border-radius:5px;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}
+[class^="comment-edit-text"]{margin:5px 0 10px 20px;width:94%;}
+.comment-edit-text-empty{height:20px;border:2px solid #babdd6;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;color:#babdd6;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}.comment-edit-text-empty:hover{color:#444444;}
+.comment-edit-text-full{height:10em;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}
.comment-edit-submit-wrapper{width:90%;margin:5px 5px 10px 50px;text-align:right;}
-.comment-edit-submit{height:22px;background-color:#555753;color:#eeeeec;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;border:0;}
-.wall-item-body code{display:block;padding:0 0 10px 5px;border-color:#ccc;border-style:solid;border-width:1px 1px 1px 10px;background:#eee;color:#444;width:95%;}
-div[id$="text"]{font-weight:bold;border-bottom:1px solid #ccc;}
+.comment-edit-submit{height:22px;background-color:#555753;color:#eeeeec;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;border:0;}
+.wall-item-body code{background-color:#dddddd;border-bottom:1px dashed #888888;border-left:5px solid #888888;border-top:1px dashed #888888;color:#191919;display:block;overflow-x:auto;padding:5px 0 15px 10px;width:95%;}.wall-item-body code a{color:#477ec4;}
+div[id$="text"]{font-weight:bold;border-bottom:1px solid #eeeeec;}
div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:left;}
.profile-match-wrapper{float:left;margin:0 5px 40px 0;width:120px;height:120px;padding:3px;position:relative;}
.icon.drophide.profile-match-ignore{margin:0 6px 0 -3px;}
@@ -223,21 +253,17 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
#advanced-profile-with{margin-left:200px;}
.photos{height:auto;overflow:auto;}
#photo-top-links{margin-bottom:30px;}
-.photo-album-image-wrapper,.photo-top-image-wrapper{float:left;-moz-box-shadow:3px 3px 10px 0 #000;-webkit-box-shadow:3px 3px 10px 0 #000;box-shadow:3px 3px 10px 0 #000;background-color:#eee;color:#111;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding-bottom:30px;position:relative;margin:0 10px 10px 0;}
+.photo-album-image-wrapper,.photo-top-image-wrapper{float:left;-moz-box-shadow:3px 3px 10px 0 #111111;-o-box-shadow:3px 3px 10px 0 #111111;-webkit-box-shadow:3px 3px 10px 0 #111111;-ms-box-shadow:3px 3px 10px 0 #111111;box-shadow:3px 3px 10px 0 #111111;background-color:#eeeeec;color:#111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding-bottom:30px;position:relative;margin:0 10px 10px 0;}
#photo-photo{max-width:100%;}#photo-photo img{max-width:100%;}
.photo-top-image-wrapper a:hover,#photo-photo a:hover,.photo-album-image-wrapper a:hover{border-bottom:0;}
-.photo-top-photo,.photo-album-photo{-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}
-.photo-top-album-name{position:absolute;bottom:0;padding:0 5px;}
-.caption{position:absolute;bottom:0;margin:0 5px;}
-#photo-photo{position:relative;float:left;}
-#photo-prev-link,#photo-next-link{position:absolute;width:30%;height:100%;background-color:rgba(255, 255, 255, 0.5);opacity:0;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;background-position:center center;background-repeat:no-repeat;}
-#photo-prev-link{background-image:url(light/prev.png);height:350px;left:1%;top:215px;width:50px;z-index:10;}
-#photo-next-link{background-image:url(light/next.png);height:350px;right:45%;top:215px;width:50px;}
-#photo-prev-link a,#photo-next-link a{display:block;width:100%;height:100%;overflow:hidden;text-indent:-900000px;}
-#photo-prev-link:hover{opacity:1;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;}
-#photo-next-link:hover{opacity:1;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;}
-#photo-next-link .icon{display:none;}
-#photo-prev-link .icon{display:none;}
+.photo-top-photo,.photo-album-photo{-o-border-radius:5px 5px 0 0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-ms-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}
+.photo-top-album-name,.caption{position:absolute;bottom:0;padding:0 5px;}
+#photo-photo{position:relative;margin:5px 45%;}
+#photo-prev-link,#photo-next-link{position:absolute;width:50px;height:150px;background:#ffffff center center no-repeat;opacity:0;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;z-index:10;top:175px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}#photo-prev-link:hover,#photo-next-link:hover{opacity:0.6;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}
+#photo-prev-link .icon,#photo-next-link .icon{display:none;}
+#photo-prev-link{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAnCAMAAADTjiM/AAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAALpQTFRF////AAAAQEBAZmZmVVVVSUlJTU1NXV1dVVVVTk5OW1tbWlpaWFhPWFhQU1pTVVVVVlZSVVlRVlZTVFdUVFdUVVdTVFZSVldUVldSVldSVldTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVZUVVdTVVdTVVhSVVdTVVdTVVhSVVdTVVdTVVhSVVdTVVdTVVdTVVdTVVdTVVdTVVhTVVdTVVdTVVdTVVdT3XYY/AAAAD10Uk5TAAEEBQYHCgsMDQ4RHSAlP0FFR1hee3+JnqSqq6ytrq+wsbKztLW2t7y9vr/AwcLDxMXGx8jU1dng7O/3+TmOwVsAAADASURBVCjPddPXEoIwEAXQINh7Q8WKYu+95v9/S0dxZxNy83hgMpvdu0Jox642r25GVxGfys+5540sZV3jyY/lWeVxyDLg7AR/lhXOI+KZZeRFgvGQeMnY9olXScYD4jXnPvHGzNsU4x7xjnGsa+YO8T7NnukRHzgXiY/KNKiUkzqkZ8ivnDoKD/xfBvdbbXM9sH70Xtgf2E/YfzgvOF+YB5gf5cPcAfmsgTy3QP5vYF8akf36XvXIRhZPlPyLWxBvNENWsZXDKukAAAAASUVORK5CYII=");left:22%;}
+#photo-next-link{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAnCAMAAADTjiM/AAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAKVQTFRF////gICAQEBAZmZmVVVVSUlJYGBgVVVVTU1NXV1dVVVVWVlZU1hTVlZSVlZTVlZTVVlRVVhSVFdUVlhTVVdTVFZTVVdTVldTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVhSVVdTVVdTVVdTVVdTVVdTVVdTVVdTVVdTVVdT8E3YQQAAADZ0Uk5TAAIEBQYHCAkKCwwUN0FER0hOW2uNjqWqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCxcjT3PP3B0dhfwAAANlJREFUKM910+cSgjAQRtEIomAXu4iIYge7ef9Hs+ZzN4b9eW4mk1kGIaqdU9wQf2Nf5XPSiu4d+Z6jp/n54/KghZ40h5ZymbFQGCCkLg3WKC+MEfYs2AHCrszCBGHLQ5gXpggbFooRwrrEwgxhxUOcE5w5wtJiYYHQZjt0EuUhX3r19vU7Y++ozgeMD7i/buYhYTcDj8gz3RQ8prwHB/aPyzvwhPLWzBtwSLi0Bk8pr8BR0cgzwiIycw0cUxZ9xXOH7VZ9vAVn4X840Vh4F9Pp1w/gZ92mpesDuLpM+1blc68AAAAASUVORK5CYII=");left:44%;}
+#photo-prev-link a,#photo-next-link a{display:block;width:100%;height:100%;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;overflow:hidden;text-indent:-900000px;}
#photos-upload-spacer,#photos-upload-new-wrapper,#photos-upload-exist-wrapper{margin-bottom:1em;}
#photos-upload-existing-album-text,#photos-upload-newalbum-div{background-color:#555753;color:#eeeeec;padding:1px;}
#photos-upload-album-select,#photos-upload-newalbum{width:99%;}
@@ -246,12 +272,11 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
#photo-edit-link-wrap{margin-bottom:15px;}
#photo-edit-caption,#photo-edit-newtag{width:100%;}
#photo-like-div{margin-bottom:25px;}
-#photo-edit-caption-end,#photo-edit-tags-end,#photo-edit-albumname-end{clear:both;}
#photo-edit-delete-button{margin-left:200px;}
#photo-edit-end{margin-bottom:35px;}
#photo-caption{font-size:110%;font-weight:bold;margin-top:15px;margin-bottom:15px;}
.prvmail-text{width:100%;}
-#prvmail-subject{width:100%;color:#eec;background:#444;}
+#prvmail-subject{width:100%;color:#eeeeec;background:#111111;}
#prvmail-submit-wrapper{margin-top:10px;}
#prvmail-submit{float:right;margin-top:0;}
#prvmail-submit-wrapper div{margin-right:5px;float:left;}
@@ -263,7 +288,7 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
.mail-list-sender-name,.mail-list-date{font-style:italic;}
.mail-list-subject{font-size:1.2em;}
.mail-list-delete-wrapper{float:right;}
-.mail-list-outside-wrapper-end{clear:both;border-bottom:1px #eec dotted;}
+.mail-list-outside-wrapper-end{clear:both;border-bottom:1px #111111 dotted;}
.mail-conv-sender{float:left;margin:0px 5px 5px 0px;}
.mail-conv-sender-photo{width:32px;height:32px;}
.mail-conv-sender-name{float:left;}
@@ -271,85 +296,82 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
.mail-conv-subject{clear:right;font-weight:bold;font-size:1.2em;}
.mail-conv-body{clear:both;}
.mail-conv-delete-wrapper{margin-top:5px;}
-.view-contact-wrapper,.contact-entry-wrapper{float:left;margin:0 5px 40px 0;width:120px;height:120px;padding:3px;position:relative;}
+.view-contact-wrapper,.contact-entry-wrapper{float:left;margin:0 5px 40px 0;width:120px;height:135px;padding:3px;position:relative;}
.contact-direction-wrapper{position:absolute;top:20px;}
.contact-edit-links{position:absolute;top:60px;}
.contact-entry-photo{margin-left:20px;}
-.contact-entry-name{width:120px;font-weight:bold;}
+.contact-entry-name{width:120px;font-weight:bold;font-size:small;}
+.contact-entry-details{font-size:x-small;}
.contact-entry-photo{position:relative;}
-.contact-entry-edit-links .icon{border:1px solid #babdb6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#fff;}
-#contact-entry-url,[id^="contact-entry-url"]{font-size:smaller;}
-#contact-entry-network,[id^="contact-entry-network"]{font-size:smaller;font-style:italic;}
+.contact-entry-edit-links .icon{border:1px solid #babdb6;-o-border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;background-color:white;}
+#contact-entry-url,[id^="contact-entry-url"],#contact-entry-network,[id^="contact-entry-network"]{font-size:smaller;}
+#contact-entry-network,[id^="contact-entry-network"]{font-style:italic;}
#contact-edit-banner-name{font-size:1.5em;}
#contact-edit-photo-wrapper{position:relative;float:left;padding:20px;}
#contact-edit-direction-icon{position:absolute;top:60px;left:0;}
#contact-edit-nav-wrapper{margin-left:0px;}
-#contact-edit-links{margin-top:23px;}#contact-edit-links ul{list-style-type:none;}
+#contact-edit-links{margin-top:23px;}
#contact-drop-links{margin-left:5px;}
-#contact-edit-nav-wrapper .icon{border:1px solid #babdb6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+#contact-edit-nav-wrapper .icon{border:1px solid #babdb6;-o-border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;}
#contact-edit-poll-wrapper{margin-left:0px;}
#contact-edit-last-update-text{margin-bottom:15px;}
#contact-edit-last-updated{font-weight:bold;}
#contact-edit-poll-text{display:inline;}
#contact-edit-info_tbl,#contact-edit-info_parent,.mceLayout{width:100%;}
#contact-edit-end{clear:both;margin-bottom:65px;}
-.contact-photo-menu-button{position:absolute;background-image:url("light/photo-menu.jpg");background-position:top left;background-repeat:no-repeat;margin:0px;padding:0px;width:16px;height:16px;top:64px;left:0px;overflow:hidden;text-indent:40px;display:none;}
-.contact-photo-menu{width:auto;border:2px solid #444;background:#eee;color:#111;position:absolute;left:0px;top:90px;display:none;z-index:10000;}.contact-photo-menu ul{margin:0px;padding:0px;list-style:none;}
-.contact-photo-menu li a{display:block;padding:2px;}.contact-photo-menu li a:hover{color:#fff;background:#3465A4;text-decoration:none;}
+.contact-photo-menu-button{position:absolute;background:url("light/photo-menu.jpg") top left no-repeat transparent;margin:0px;padding:0px;width:16px;height:16px;top:64px;left:0px;overflow:hidden;text-indent:40px;display:none;}
+.contact-photo-menu{width:auto;border:2px solid #444444;background:#eeeeec;color:#111111;position:absolute;left:0px;top:90px;display:none;z-index:10000;}.contact-photo-menu li a{display:block;padding:2px;}.contact-photo-menu li a:hover{color:white;background:#3465A4;text-decoration:none;}
#id_openid_url{background:url(light/login-bg.gif) no-repeat;background-position:0 50%;padding-left:18px;}
-#settings-nickname-desc{background-color:#eee;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:5px;color:#111;}
#settings-default-perms{margin-bottom:20px;}
#register-form div,#profile-edit-form div{clear:both;}
.settings-block label{clear:left;}
.settings-block input{margin:10px 5px;}
+#register-form label,#profile-edit-form label{width:300px;float:left;}
+#register-form span,#profile-edit-form span{color:#555753;display:block;margin-bottom:20px;}
#profile-edit-marital-label span{margin:-4px;}
-.settings-submit-wrapper,.profile-edit-submit-wrapper{margin:0 0 30px -3px;}
+.settings-submit-wrapper,.profile-edit-submit-wrapper{margin:0 0 30px;}
.profile-edit-side-div{display:none;}
#profiles-menu-trigger{margin:0px 0px 0px 25px;}
.profile-listing{float:left;margin:20px 20px 0px 0px;}
-.icon-profile-edit{background:url("light/icons.png") -150px 0px no-repeat;border:0;cursor:pointer;display:block;float:right;width:20px;height:20px;margin:0 0 -18px;position:absolute;text-decoration:none;top:113px;right:260px;}
-#profile-edit-links ul{margin:20px 0;padding:0;list-style:none;}
+.icon-profile-edit{background:url("light/icons.png") -150px 0px no-repeat;border:0;cursor:pointer;display:block;width:20px;height:20px;margin:0 0 -18px;text-decoration:none;top:113px;right:260px;}
+#profile-edit-links ul{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:20px 0;}
.marital{margin-top:5px;}
#register-sitename{display:inline;font-weight:bold;}
-#advanced-expire-popup{background:#2e2f2e;color:#eec;}
+#advanced-expire-popup{background:#111111;color:#eeeeec;}
#id_ssl_policy{width:374px;}
#theme-preview img{margin:10px 10px 10px 288px;}
.group-delete-wrapper{margin:-31px 50px 0 0;float:right;}
#group-edit-submit-wrapper{margin:0 0 10px 0;display:inline;}
-#group-edit-desc{margin:10px 0px;}
-#group-members,#prof-members{height:200px;overflow:auto;border:1px solid #555753;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}
-#group-all-contacts,#prof-all-contacts{height:200px;overflow:auto;border:1px solid #555753;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}
+#group-members,#prof-members{height:200px;overflow:auto;border:1px solid #555753;-o-border-radius:5px 5px 0 0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-ms-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}
+#group-all-contacts,#prof-all-contacts{height:200px;overflow:auto;border:1px solid #555753;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}
#group-members h3,#group-all-contacts h3,#prof-members h3,#prof-all-contacts h3{color:#eeeeec;background-color:#555753;margin:0;padding:5px;}
#group-separator,#prof-separator{display:none;}
#cropimage-wrapper{float:left;}
#crop-image-form{clear:both;}
.intro-wrapper{margin-top:20px;}
.intro-fullname{font-size:1.1em;font-weight:bold;}
-.intro-desc{margin-bottom:20px;font-weight:bold;}
.intro-note{padding:10px;}
.intro-end{padding:30px;}
.intro-form{float:left;}
-.intro-approve-form,.intro-approve-as-friend-end{clear:both;}
+.intro-approve-form{clear:both;}
.intro-submit-approve,.intro-submit-ignore{margin-right:20px;}
.intro-submit-approve{margin-top:15px;}
.intro-approve-as-friend-label,.intro-approve-as-fan-label,.intro-approve-as-friend,.intro-approve-as-fan{float:left;}
.intro-form-end{clear:both;margin-bottom:10px;}
-.intro-approve-as-friend-desc{margin-top:10px;}
.intro-approve-as-end{clear:both;margin-bottom:10px;}
-.intro-end,.clear{clear:both;}
+.clear{clear:both;}
.eventcal{float:left;font-size:20px;}
-.event{background:#2e2f2e;}
-.vevent{border:1px solid #ccc;}.vevent .event-description,.vevent .event-location,.vevent .event-start{margin-left:10px;margin-right:10px;}
+.event{background:#eeeeec;}
+.vevent{border:1px solid #eeeeec;}.vevent .event-description,.vevent .event-location,.vevent .event-start{margin-left:10px;margin-right:10px;}
#new-event-link{margin-bottom:10px;}
.edit-event-link,.plink-event-link{}
.event-description:before{content:url('../../../images/calendar.png');margin-right:15px;}
.event-start,.event-end{margin-left:10px;width:330px;font-size:smaller;}
.event-start .dtstart,.event-end .dtend{float:right;}
.event-list-date{margin-bottom:10px;}
-.prevcal,.nextcal{float:left;margin-left:32px;margin-right:32px;margin-top:64px;}
-.event-calendar-end{clear:both;}
+.prevcal,.nextcal{float:left;margin:64px 32px auto 32px;}
.calendar{font-family:monospace;}
-.today{font-weight:bold;color:#FF0000;}
+.today{font-weight:bold;color:red;}
#event-start-text,#event-finish-text{margin-top:10px;margin-bottom:5px;}
#event-nofinish-checkbox,#event-nofinish-text,#event-adjust-checkbox,#event-adjust-text,#event-share-checkbox{float:left;}
#event-datetime-break{margin-bottom:10px;}
@@ -363,74 +385,71 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
.checkeditem{opacity:1;}
#item-delete-selected{margin-top:30px;}
.delete-checked{position:absolute;left:35px;margin-top:20px;}
-#item-delete-selected-end{clear:both;}
#item-delete-selected-icon{float:left;margin-right:5px;}
-#item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;}
-.fc-state-highlight{background:#eec;color:#2e2f2e;}
+.fc-state-highlight{background:#eeeeec;color:#111111;}
.directory-item{float:left;margin:0 5px 4px 0;padding:3px;width:180px;height:250px;position:relative;}
#group-sidebar{margin-bottom:10px;}
-.group-selected,.nets-selected,.fileas-selected{padding:3px;color:#111;background:#f8f8f8;font-weight:bold;}
-.group-selected:hover,.nets-selected:hover,.fileas-selected:hover{color:#111;}
+.group-selected,.nets-selected,.fileas-selected{padding:3px;color:#eeeeec;background:#2e3436;border:1px solid #3465a4;}
+.group-selected:hover,.nets-selected:hover,.fileas-selected:hover{padding:3px;color:#3465a4;background:#eeeeec;border:1px solid #3465a4;}
.groupsideedit{margin-right:10px;}
#sidebar-group-ul{padding-left:0;}
-#sidebar-group-list{margin:0 0 5px 0;}#sidebar-group-list ul{list-style-type:none;list-style-position:inside;}
-#sidebar-group-list li{margin-top:10px;}
-#sidebar-group-list .icon{display:inline-block;height:12px;width:12px;}
-#sidebar-new-group{margin:auto;display:inline-block;color:#efefef;text-decoration:none;text-align:center;}
+#sidebar-group-list{margin:0 0 5px 0;}#sidebar-group-list li{margin-top:10px;}
+#sidebar-group-list .icon{display:inline-block;width:12px;height:12px;}
+.sidebar-group-element{padding:3px;}.sidebar-group-element:hover{color:#111111;background:#f2f2c3;border:1px solid #284d7d;padding:3px;}
+#sidebar-new-group{margin:auto;display:inline-block;color:#eeeeec;text-decoration:none;text-align:center;}
#peoplefind-sidebar form{margin-bottom:10px;}
#sidebar-new-group:hover{}
#sidebar-new-group:active{position:relative;top:1px;}
-#side-peoplefind-url{background-color:#e5e0cf;color:#666;border:1px #666 solid;margin-right:3px;width:75%;}#side-peoplefind-url:hover,#side-peoplefind-url:focus{background-color:#efefef;color:#222;border:1px 333 solid;}
-.nets-ul{list-style-type:none;padding-left:0px;}.nets-ul li{margin:10px 0 0;}
+#side-peoplefind-url{background-color:#eeeeec;color:#666666;border:1px solid #666666;margin-right:3px;width:75%;}#side-peoplefind-url:hover,#side-peoplefind-url:focus{background-color:#999999;color:#eeeeec;border:1px solid #111111;}
+.nets-ul{margin:0px;padding:0px;list-style:none;list-style-position:inside;}.nets-ul li{margin:10px 0 0;}
.nets-link,.nets-all{margin-left:0px;}
#netsearch-box{margin:20px 0px 30px;width:135px;}#netsearch-box #search-submit{margin:5px 5px 0px 0px;}
-#pending-update{float:right;color:#fff;font-weight:bold;background-color:#ff0000;padding:0 .3em;}
+#pending-update{float:right;color:white;font-weight:bold;background-color:red;padding:0 0.3em;}
.admin.linklist{border:0;padding:0;}
-.admin.link{list-style-position:inside;}
-#adminpage{color:#111;background:transparent;margin:5px;padding:10px;}#adminpage dl{clear:left;margin-bottom:2px;padding-bottom:2px;border-bottom:1px solid #000;}
+.admin.link{margin:0px;padding:0px;list-style:none;list-style-position:inside;}
+#adminpage{color:#111111;background:#eeeeec;margin:5px;padding:10px;font-size:smaller;}#adminpage dl{clear:left;margin-bottom:2px;padding-bottom:2px;border-bottom:1px solid #111111;}
#adminpage dt{width:250px;float:left;font-weight:bold;}
#adminpage dd{margin-left:250px;}
-#adminpage h3{border-bottom:1px solid #ccc;}
+#adminpage h3{border-bottom:1px solid #cccccc;}
#adminpage .submit{clear:left;}
#adminpage #pluginslist{margin:0;padding:0;}
-#adminpage .plugin{list-style:none;display:block;border:1px solid #888;padding:1em;margin-bottom:5px;clear:left;}
+#adminpage .plugin{display:block;border:1px solid #888888;padding:1em;margin-bottom:5px;clear:left;}
#adminpage .toggleplugin{float:left;margin-right:1em;}
-#adminpage table{width:100%;border-bottom:1px solid #000;margin:5px 0;}#adminpage table th{text-align:left;}
+#adminpage table{width:100%;border-bottom:1px solid #111111;margin:5px 0;}#adminpage table th{font-weight:bold;text-align:left;}
+#adminpage table td{padding:5px;vertical-align:middle;}
+#adminpage table#users{padding:5px;}#adminpage table#users img{width:16px;height:16px;}
+#adminpage table#users a{color:#111111;text-decoration:underline;}
#adminpage td .icon{float:left;}
-#adminpage table#users img{width:16px;height:16px;}
-#adminpage table tr:hover{background-color:#bbc7d7;}
#adminpage .selectall{text-align:right;}
-#adminpage #users a{text-decoration:underline;}
-#users .name{color:#eec;}
-.field{overflow:auto;}.field label{width:38%;display:inline-block;font-size:1.077em;margin:0 10px 1em 0;border:1px #999 solid;padding:5px;background:#ccc;color:#111;}
-.field .onoff{float:right;margin:0 330px 0 auto;width:80px;}.field .onoff a{display:block;border:1px solid #666;padding:3px 6px 4px 10px;height:16px;text-decoration:none;}
-.field .onoff .on{background:url("../../../images/onoff.jpg") no-repeat 42px 1px #999999;color:#111;text-align:left;}
-.field .onoff .off{background:url("../../../images/onoff.jpg") no-repeat 2px 1px #cccccc;color:#333;text-align:right;}
+#users .name{color:#111111;}
+#users .tools{padding:5px 0;vertical-align:middle;}
+.field{overflow:auto;}
+.field .onoff{float:right;margin:0 330px 0 auto;width:80px;}.field .onoff a{display:block;border:1px solid #666666;padding:3px 6px 4px 10px;height:16px;text-decoration:none;}
+.field .onoff .on,.field .onoff .off{background-image:url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAUACIDASIAAhEBAxEB/8QAGgABAQACAwAAAAAAAAAAAAAAAAQDBQEGCf/EACgQAAIBAwIFAwUAAAAAAAAAAAECAAMEERIUBRMxUpEhIoEjM1Nxkv/EABcBAAMBAAAAAAAAAAAAAAAAAAABAgT/xAAaEQEAAgMBAAAAAAAAAAAAAAAAAQIRMVES/9oADAMBAAIRAxEAPwD1ERKFNFVaNNVUYACgACcNVt1dEKUwzZwNI9cSDczDVdnuKDjomrPyJOQ2SXNq/L0rTPMzp9vXHWZfo/jT+RNFQV6e2yPt6s/Ms3EWQofhnDqjszWFqzMcljRUknxEn3ES/dup8xxPZ0hXtKFViQzorEDpkiZtqvc3mIkzs40bVe5vMbVe5vMREbrN3xy4t7utSVaZVHZQSDnAP7iIm+K1xpkm09f/2Q==');background-repeat:no-repeat;}
+.field .onoff .on{background-position:42px 1px;background-color:#333333;color:#cccccc;text-align:left;}
+.field .onoff .off{background-position:2px 1px;background-color:#cccccc;color:#333333;text-align:right;}
.hidden{display:none !important;}
.field textarea{width:80%;height:100px;}
-.field_help{display:block;margin-left:297px;color:#666;}
+.field_help{display:block;margin-left:297px;color:#666666;font-size:small;}
.field.radio .field_help{margin-left:297px;}
-label{width:38%;display:inline-block;font-size:1.077em;margin:0 10px 1em 0;border:1px #999 solid;padding:5px;background:#ccc;color:#111;}
-input{width:250px;height:25px;border:1px #999 solid;}input[type="text"],input[type="password"],input[type="search"]{width:250px;height:25px;border:1px #999 solid;}
-input[type="checkbox"],input[type="radio"]{border:1px #999 solid;margin:0 0 0 0;height:15px;width:15px;}
-input[type="submit"],input[type="button"]{background-color:#555753;border:2px outset #444;border-radius:5px;box-shadow:1px 3px 4px 0 #111;color:#eeeeec;cursor:pointer;font-weight:bold;width:auto;text-shadow:1px 1px #111;-webkit-border-radius:5px;-moz-border-radius:5px;}
-input[type="submit"]:active,input[type="button"]:active{box-shadow:0 0 0 0;}
-.popup{width:100%;height:100%;top:0px;left:0px;position:absolute;display:none;}.popup .background{background-color:#000;opacity:0.5;width:100%;height:100%;position:absolute;top:0px;left:0px;}
-.popup .panel{top:25%;left:25%;width:50%;height:50%;padding:1em;position:absolute;border:4px solid #000000;background-color:#FFFFFF;}
-#panel{z-index:100;}
-.grey{color:grey;}
+.popup{width:100%;height:100%;top:0px;left:0px;position:absolute;display:none;}.popup .background{background-color:#111111;opacity:0.5;width:100%;height:100%;position:absolute;top:0px;left:0px;}
+.popup .panel{top:25%;left:25%;width:50%;height:50%;padding:1em;position:absolute;border:4px solid #000000;background-color:white;}
+#panel{position:absolute;font-size:small;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;border:1px solid #eeeeec;background-color:#2e3436;color:#eeeeec;padding:1em;z-index:100;}
+.pager{margin-top:60px;display:block;clear:both;text-align:center;font-size:small;font-weight:bold;}.pager span{padding:4px;margin:4px;}
+.pager_current{background-color:#3465a4;color:#eeeeec;}
+.grey,.gray{color:gray;}
.orange{color:orange;}
.red{color:red;}
.popup .panel .panel_text{display:block;overflow:auto;height:80%;}
.popup .panel .panel_in{width:100%;height:100%;position:relative;}
.popup .panel .panel_actions{width:100%;bottom:4px;left:0px;position:absolute;}
-.panel_text .progress{width:50%;overflow:hidden;height:auto;border:1px solid #cccccc;margin-bottom:5px;}.panel_text .progress span{float:right;display:block;width:25%;background-color:#eeeeee;text-align:right;}
+.panel_text .progress{width:50%;overflow:hidden;height:auto;border:1px solid #cccccc;margin-bottom:5px;}.panel_text .progress span{float:right;display:block;width:25%;background-color:#eeeeec;text-align:right;}
.oauthapp{height:auto;overflow:auto;border-bottom:2px solid #cccccc;padding-bottom:1em;margin-bottom:1em;}.oauthapp img{float:left;width:48px;height:48px;margin:10px;}.oauthapp img.noicon{background-image:url("../../../images/icons/48/plugin.png");background-position:center center;background-repeat:no-repeat;}
.oauthapp a{float:left;}
.iconspacer{display:block;width:16px;height:16px;}
-.icon{display:block;width:20px;height:20px;background:url(light/icons.png) no-repeat;border:0;text-decoration:none;border-radius:5px;}.icon:hover{border:0;text-decoration:none;}
-.editicon{display:inline-block;width:21px;height:21px;background:url(light/editicons.png) no-repeat;border:0;text-decoration:none;}
-.shadow{box-shadow:2px 2px 5px 2px #111;}.shadow:active,.shadow:focus,.shadow:hover{box-shadow:0 0 0 0;}
+.icon{display:block;width:20px;height:20px;background:transparent url("light/icons.png") no-repeat;border:0;text-decoration:none;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}.icon:hover{border:0;text-decoration:none;}
+.editicon{display:inline-block;width:21px;height:21px;background:url("light/editicons.png") no-repeat;border:0;text-decoration:none;}
+.shadow{-moz-box-shadow:2px 2px 5px 2px #111111;-o-box-shadow:2px 2px 5px 2px #111111;-webkit-box-shadow:2px 2px 5px 2px #111111;-ms-box-shadow:2px 2px 5px 2px #111111;box-shadow:2px 2px 5px 2px #111111;}.shadow:active,.shadow:focus,.shadow:hover{-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
.editicon:hover{border:0;}
.boldbb{background-position:0px 0px;}.boldbb:hover{background-position:-22px 0px;}
.italicbb{background-position:0px -22px;}.italicbb:hover{background-position:-22px -22px;}
@@ -445,6 +464,7 @@ input[type="submit"]:active,input[type="button"]:active{box-shadow:0 0 0 0;}
.icon.s22.text{padding:10px 0px 0px 25px;width:200px;}
.icon.text{text-indent:0px;}
.icon.s16{min-width:16px;height:16px;}
+.wall-item-delete-wrapper.icon.delete,.wall-item-delete-wrapper.icon.drophide{margin:0;}
.s16 .add{background:url("../../../images/icons/16/add.png") no-repeat;}
.add{margin:0px 5px;}
.article{background-position:-50px 0;}
@@ -472,7 +492,7 @@ input[type="submit"]:active,input[type="button"]:active{box-shadow:0 0 0 0;}
.lock{background-position:-70px -40px;}
.unlock{background-position:-88px -40px;}
.video{background-position:-110px -40px;}
-.attach{background-position:-190px -40px;}
+.attach{background-position:-191px -40px;}
.language{background-position:-210px -40px;}
.starred{background-position:-130px -60px;}
.unstarred{background-position:-150px -60px;}
@@ -482,8 +502,8 @@ input[type="submit"]:active,input[type="button"]:active{box-shadow:0 0 0 0;}
.prev{background-position:-90px -60px;}
.next{background-position:-110px -60px;}
.icon.dim{opacity:0.3;}
-#pause{position:fixed;bottom:40px;right:30px;}
-.border{border:1px solid #babdb6;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}.border:hover{border:1px solid #babdb6;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
+#pause{position:fixed;bottom:40px;right:30px;z-index:10;}
+.border{border:1px solid #babdb6;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}.border:hover{border:1px solid #babdb6;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
.attachtype{display:block;width:20px;height:23px;background-image:url(../../../images/content-types.png);}
.type-video{background-position:0px 0px;}
.type-image{background-position:-20px 0;}
@@ -492,23 +512,24 @@ input[type="submit"]:active,input[type="button"]:active{box-shadow:0 0 0 0;}
.type-unkn{background-position:-80px 0;}
.cc-license{margin-top:100px;font-size:0.7em;}
footer{display:block;clear:both;}
-#profile-jot-text{height:20px;color:#666;border:1px solid #ccc;border-radius:5px;width:99.5%;}
-#photo-edit-perms-select,#photos-upload-permissions-wrapper,#profile-jot-acl-wrapper{display:block !important;background:#eec;color:#2e2f2e;}
+#profile-jot-text{height:20px;color:#666666;background:#cccccc;border:1px solid #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;width:99.5%;}
+#photo-edit-perms-select,#photos-upload-permissions-wrapper,#profile-jot-acl-wrapper{display:block !important;background:#eeeeec;color:#111111;}
+#profile-jot-acl-wrapper{margin:0 10px;border:1px solid #555753;border-top:0;font-size:small;}
#acl-wrapper{width:660px;margin:0 auto;}
-#acl-search{float:right;background:#ffffff url("../../../images/search_18.png") no-repeat right center;padding-right:20px;margin:6px;color:#111;}
-#acl-showall{float:left;display:block;width:auto;height:18px;background:#eeeecc url("../../../images/show_all_off.png") 8px 8px no-repeat;padding:7px 10px 7px 30px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;color:#999;margin:5px 0;}#acl-showall.selected{color:#000;background:#ff9900 url(../../../images/show_all_on.png) 8px 8px no-repeat;}
-#acl-list{height:210px;border:1px solid #ccc;clear:both;margin-top:30px;overflow:auto;}
-.acl-list-item{border:1px solid #ccc;display:block;float:left;height:110px;margin:3px 0 5px 5px;width:120px;}.acl-list-item img{width:22px;height:22px;float:left;margin:5px 5px 20px;}
+#acl-search{float:right;background:#ffffff url("../../../images/search_18.png") no-repeat right center;padding-right:20px;margin:6px;color:#111111;}
+#acl-showall{float:left;display:block;width:auto;height:18px;background:#eeeeec url("../../../images/show_all_off.png") 8px 8px no-repeat;padding:7px 10px 7px 30px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;color:#999999;margin:5px 0;}#acl-showall.selected{color:black;background:#ff9900 url(../../../images/show_all_on.png) 8px 8px no-repeat;}
+#acl-list{height:210px;border:1px solid #cccccc;clear:both;margin-top:30px;overflow:auto;}
+.acl-list-item{border:1px solid #cccccc;width:120px;height:110px;display:block;float:left;margin:3px 0 5px 5px;}.acl-list-item img{width:22px;height:22px;float:left;margin:5px 5px 20px;}
.acl-list-item p{height:12px;font-size:10px;margin:0 0 22px;padding:2px 0 1px;}
-.acl-list-item a{background:#cccccc 3px 3px no-repeat;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;clear:both;font-size:10px;display:block;width:55px;height:20px;color:#999;margin:5px auto 0;padding:0 3px;text-align:center;vertical-align:middle;}
-#acl-wrapper a:hover{text-decoration:none;color:#000;border:0;}
-.acl-button-show{background-image:url('../../../images/show_off.png');margin:0 auto;}
-.acl-button-hide{background-image:url('../../../images/hide_off.png');margin:0 auto;}
-.acl-button-show.selected{color:#000;background-color:#9ade00;background-image:url(../../../images/show_on.png);}
-.acl-button-hide.selected{color:#000;background-color:#ff4141;background-image:url(../../../images/hide_on.png);}
+.acl-list-item a{background:#cccccc 3px 3px no-repeat;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;width:55px;height:20px;clear:both;font-size:10px;display:block;color:#999999;margin:5px auto 0;padding:0 3px;text-align:center;vertical-align:middle;}
+#acl-wrapper a:hover{text-decoration:none;color:#111111;border:0;}
+.acl-button-show{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABxSURBVAiZY/z//z8DDMyaNUuEgYEhk4GBwZ8JJrhv3z5DZmbmMwwMDOoMDAxpLKtWraqTl5d3fPv2rcn///9XpKWlpTIwMDCwfPr0SePWrVtmP378YPn//385zASmf//+Rf/8+XMpIyPj2bS0tHcwCQBWkiq6M5HGDgAAAABJRU5ErkJggg==');margin:0 auto;}
+.acl-button-hide{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACWSURBVAiZBcEhDsIwFAbg/72+VXQ7wPSCIlj8JMlmcKQGgdgRCCfpEz0HjgSDw3IA1AQC1QqSpXwfqeoZwHOaphsAqGpfVVVHIYQNM1+J6MLMOwA9gAOVUhBC6Ky1r7quv03TrMZxzAwAIjKIyCel9JvneQ8ApKprY8zdObfNOXMp5bEsyyDGmJaITt77NwDEGI/W2vYP0nYuQ/Tw9H4AAAAASUVORK5CYII=');margin:0 auto;}
+.acl-button-show.selected{background:#9ade00 url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABXSURBVAiZTcyhDYNQGADh7xEGwGDxhD2qUWxAwIBgE9BdoxO03YaEEX7USzh5l1yKCJl0pBoT+uIhK3zRYk52Az5444w1FijxwoYOTT4UGPHHL9a4crgBhcYSpxKVgzIAAAAASUVORK5CYII=');color:black;}
+.acl-button-hide.selected{background:#ff4141 url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACSSURBVAiZBcGhDoJQFAbg/z/3cGliJDOTszmLichGstkMPoTzvfA2N4vN6gMYCGhwMifMTY7fxyCy4zBcCrMjAFRk7p3LWAEzRwYT2StQgMwBrGlmOJCZV72Ok+QpcTyZ1/VHAEBEyiiKHq+2/d6bZgUADMCUIqeR94t338tAns2sVKea/sy2y667AUAgN+pc+gcI6S733PoZRAAAAABJRU5ErkJggg==');color:black;}
.acl-list-item.groupshow{border-color:#9ade00;}
.acl-list-item.grouphide{border-color:#ff4141;}
-.acpopup{max-height:175px;max-width:42%;background-color:#555753;color:#fff;overflow:auto;z-index:100000;border:1px solid #cccccc;}
+.acpopup{max-height:175px;max-width:42%;background-color:#555753;color:white;overflow:auto;z-index:100000;border:1px solid #cccccc;}
.acpopupitem{background-color:#555753;padding:4px;clear:left;}.acpopupitem img{float:left;margin-right:4px;}
.acpopupitem.selected{color:#2e3436;background-color:#eeeeec;}
.qcomment-wrapper{padding:0px;margin:5px 5px 5px 81%;}
@@ -519,4 +540,4 @@ footer{display:block;clear:both;}
#sidebar-page-list ul{padding:0;margin:5px 0;}
#sidebar-page-list li{list-style:none;}
#jappix_mini{margin-left:130px;position:fixed;bottom:0;right:175px !important;z-index:999;}
-@media handheld{body{font-size:15pt;}}
+@media handheld and screen{body{font-size:15pt;}}@media only screen and (min-device-width:320px) and (max-device-width:480px){body{font-size:12pt;}}@media only screen and (min-width:321px){body{font-size:12pt;}}@media only screen and (max-width:320px){body{font-size:12pt;}}@media only screen and (min-device-width:768px) and (max-device-width:1024px){body{font-size:14pt;}}@media only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:landscape){body{font-size:14pt;}}@media only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:portrait){body{font-size:14pt;}}@media only screen and (min-width:1024px){body{font-size:14pt;}}@media only screen and (min-width:1520px){body{font-size:16pt;}}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5){body{font-size:14pt;}}
diff --git a/view/theme/dispy/light/style.less b/view/theme/dispy/light/style.less
index 848e4f16d..51ffbd1f2 100644
--- a/view/theme/dispy/light/style.less
+++ b/view/theme/dispy/light/style.less
@@ -1,699 +1,876 @@
/*
- * dispy
- *
+ * dispy light
+ * Description: Dispy Dark: light, sleek, functional
* maintainer: simon <http://simon.kisikew.org/>
* author: unknown
*
- * Author's notes:
+ * Maintainer's notes:
* A few things of note here. The less file is our working copy,
* and the CSS is *generated* from it. The CSS is the one that's
* included in the HTML, and not the less one. This is to save
- * bandwidth and processing time.
- */
-/* from html5boilerplate */
-/* these are to tell browsers they should be displayed a certain way */
-
-//@import "_base.less";
-
-article, aside, details, figcaption, figure, footer, header, hgroup, nav, section {
- display: block; }
-
-audio, canvas, video, time {
- display: inline-block;
- *display: inline;
- *zoom: 1; }
-
-audio:not([controls]), [hidden] {
- display: none; }
-
-/*
- * Base
- */
-/*
- * 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units
- * 2. Force vertical scrollbar in non-IE
- * 3. Prevent iOS text size adjust on device orientation change, without disabling user zoom: h5bp.com/g
+ * bandwidth and processing time, by not including less.js.
*/
+@import "_base";
+
+///* from html5boilerplate */
+///* these are to tell browsers they should be displayed a certain way */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+ display: block;
+}
+audio,
+canvas,
+video,
+time {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+}
+audio:not([controls]),
+[hidden] {
+ display: none;
+}
+///*
+// * 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units
+// * 2. Force vertical scrollbar in non-IE
+// * 3. Prevent iOS text size adjust on device orientation change,
+// * without disabling user zoom: h5bp.com/g
+// */
html {
- font-size: 100%;
- overflow-y: scroll;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%; }
-
+ font-size: 100%;
+ overflow-y: scroll;
+ .font_size_adjust;
+}
body {
- margin: 0;
- font-size: 16px;
- line-height: 1.1em;
- font-family: sans-serif;
- color: #111;
- background-color: #eee; }
-
-button, input, select, textarea {
- font-family: sans-serif;
- color: #222;
- background-color: #eee; }
-
+ margin: 0;
+ padding: 0;
+ .default_font;
+ color: @main_colour;
+ background-color: @bg_colour;
+}
+button,
+input,
+select,
+textarea {
+ color: @main_colour;
+ background-color: @bg_colour;
+}
select {
- border: 1px #555 dotted;
- padding: 3px;
- margin: 3px;
- color: #222;
- background: #eee;
+ .borders(1px, dotted, darken(@main_alt_colour, 26.8%));
+ padding: 1px;
+ margin: 3px;
+ color: @main_colour;
+ background: @bg_colour;
+ max-width: 85%;
+ min-width: 85px;
}
-
option {
- padding: 3px;
- color: #222;
- background: #eee;
- &[selected="selected"] {
- color: #111;
- background: #cca; }
+ padding: 1px;
+ color: @main_colour;
+ background: @bg_colour;
+ &[selected="selected"] {
+ color: @bg_colour;
+ background: @dk_bg_colour;
+ }
}
-ul, ol {
- padding: 0;
+tr:nth-child(even) {
+ background-color: darken(@bg_colour, 10%);
}
-
-/* remember to define focus styles! */
+///* remember to define focus styles! */
+//outline Sets all the outline properties in one declaration
+//outline-color Sets the color of an outline color_name,hex_number,rgb_number,invert,inherit
+//outline-style Sets the style of an outline dotted,dashed,solid,double,groove,ridge,inset,outset,inherit
+//outline-width Sets the width of an outline thin,medium,thick,length,inherit
:focus {
- outline: 0; }
-
+ outline: none;
+}
+a:focus {
+ outline: invert, dashed, thin;
+}
[disabled="disabled"] {
- background: #ddd;
- color: #333; }
-
-/* remember to highlight inserts somehow! */
-
+ background: @dk_bg_colour;
+ color: @disabled_colour;
+}
+///* remember to highlight inserts somehow! */
+ins,
+mark {
+ background-color: @bg_colour;
+ color: @main_colour;
+}
ins {
- background-color: #ff9;
- color: #000;
- text-decoration: none; }
-
+ text-decoration: none;
+}
mark {
- background-color: #ff9;
- color: #000;
- font-style: italic;
- font-weight: bold; }
-
-/* Redeclare monospace font family: h5bp.com/j */
-
-pre, code, kbd, samp, .wall-item-body code {
- font-family: monospace, monospace;
- _font-family: monospace;
- font-size: 1em; }
-
-/* Improve readability of pre-formatted text in all browsers */
-
-pre, .wall-item-body code {
- white-space: pre;
- white-space: pre-wrap;
- word-wrap: break-word; }
-
+ font-style: italic;
+ font-weight: bold;
+}
+///* Redeclare monospace font family: h5bp.com/j */
+pre,
+code,
+kbd,
+samp,
+.wall-item-body code {
+ font-family: monospace, monospace;
+ _font-family: monospace;
+ font-size: 1em;
+}
+///* Improve readability of pre-formatted text in all browsers */
+pre,
+.wall-item-body code {
+ .wrap;
+}
q {
- quotes: none;
- &:before, &:after {
- content: "";
- content: none; } }
-
+ quotes: none;
+ &:before, &:after {
+ content: "";
+ content: none;
+ }
+}
+em {
+ font-style: italic;
+}
+strong {
+ font-weight: bold;
+}
+strike {
+ text-decoration: line-through;
+}
small {
- font-size: 85%; }
-
-/* Position subscript and superscript content without affecting line-height: h5bp.com/k */
-
-sub, sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline; }
-
+ font-size: 85%;
+}
+///* Position subscript and superscript content without affecting
+// * line-height: h5bp.com/k */
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
sub {
- bottom: -0.25em; }
-
+ bottom: -0.25em;
+}
sup {
- top: -0.5em; }
-
+ top: -0.5em;
+}
img {
- border: 0 none; }
-
+ border: 0 none;
+}
a {
- color: #3465a4;
- text-decoration: none;
- margin-bottom: 1px;
- &:hover img {
- text-decoration: none; } }
-
+ color: @link_colour;
+ text-decoration: none;
+ margin-bottom: 1px;
+ &:hover {
+ color: @hover_colour;
+ border-bottom: 1px dotted @hover_colour;
+ }
+ &:hover img {
+ text-decoration: none;
+ }
+}
blockquote {
- background: #eee;
- color: #111;
- text-indent: 5px;
- padding: 5px;
- border: 1px #aaa solid;
- border-radius: 5px; }
-
-a:hover {
- color: #729fcf;
- border-bottom: 1px dotted #729fcf; }
+ background: lighten(@main_alt_colour, 6.5%);
+ color: @main_colour;
+ text-indent: 5px;
+ padding: 5px;
+ .borders(1px, solid, @main_colour);
+ .rounded_corners;
+}
+label {
+ width: 38%;
+ display: inline-block;
+ font-size: small;
+ margin: 0 10px 1em 0;
+ .borders(1px, solid, @bg_colour);
+ padding: 5px;
+ background: lighten(@main_alt_colour, 20%);
+ color: @main_colour;
+ .box_shadow(3px, 3px, 5px);
+}
+input {
+ .box(250px, 25px);
+ .borders(1px, solid, darken(@main_alt_colour, 33.5%));
+ &[type="checkbox"],
+ &[type="radio"] {
+ margin: 0;
+ .box(15px, 15px);
+ }
+ &[type="submit"],
+ &[type="button"] {
+ background-color: @menu_bg_colour;
+ .borders(2px, outset, darken(@main_alt_colour, 33.5%));
+ .rounded_corners;
+ .box_shadow(1px, 3px, 4px, 0);
+ color: @bg_colour;
+ cursor: pointer;
+ font-weight: bold;
+ width: auto;
+ .text_shadow;
+ }
+ &[type="submit"]:active,
+ &[type="button"]:active {
+ .box_shadow(0, 0, 0, 0);
+ }
+}
+h1, h2, h3,
+h4, h5, h6 {
+ margin: 10px 0px;
+ font-weight: bold;
+ border-bottom: 1px solid @hover_colour;
+}
+h1 {
+ font-size: x-large;
+}
+h2 {
+ font-size: large;
+}
+h3 {
+ font-size: medium;
+}
+h4 {
+ font-size: small;
+}
+h5 {
+ font-size: x-small;
+}
+h6 {
+ font-size: xx-small;
+}
+//
.required {
- display: inline;
- color: #f00;
- font-size: 16px;
- font-weight: bold;
- margin: 3px; }
-
+ display: inline;
+ color: red;
+ font-size: 16px;
+ font-weight: bold;
+ margin: 3px;
+}
.fakelink, .lockview {
- color: #3465a4;
- cursor: pointer; }
-
+ color: @link_colour;
+ cursor: pointer;
+}
.fakelink:hover {
- color: #729fcf; }
-
+ color: @hover_colour;
+}
.smalltext {
- font-size: 0.7em; }
-
-#panel {
- position: absolute;
- font-size: 0.8em;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- border: 1px solid #fff;
- background-color: #2e3436;
- color: #eeeeec;
- padding: 1em; }
-
-.pager {
- margin-top: 60px;
- display: block;
- clear: both;
- text-align: center;
- span {
- padding: 4px;
- margin: 4px; } }
+ font-size: 0.7em;
+}
-.pager_current {
- background-color: #729fcf;
- color: #fff; }
/**
* global
*/
/* .tool .action */
-
.action {
- margin: 5px 0; }
-
+ margin: 5px 0;
+}
.tool {
- margin: 5px 0;
- list-style: none; }
-
+ margin: 5px 0;
+ list-style: none;
+}
#articlemain {
- width: 100%;
- height: 100%;
- margin: 0 auto; }
+ .box(100%, 100%);
+ margin: 0 auto;
+}
+.button,
+#profile-listing-desc {
+ .box(25%, auto);
+ background: @menu_bg_colour;
+ color: @bg_colour;
+ .borders(2px, outset, darken(@menu_bg_colour, 20%));
+ .rounded_corners;
+ padding: 5px;
+ font-size: smaller;
+ cursor: pointer;
+ &.active {
+ .box_shadow(4px, 4px, 7px);
+ }
+ a {
+ color: @bg_colour;
+ font-size: smaller;
+ font-weight: bold;
+ }
+}
+[class$="-desc"],
+[id$="-desc"] {
+ color: @bg_colour;
+ // background: @main_colour;
+ .borders(1px, outset, @bg_colour);
+ .rounded_corners;
+ // .box_shadow(3px, 3px, 5px);
+ margin: 3px 10px 7px 0;
+ padding: 5px;
+ font-weight: bold;
+ font-size: smaller;
+}
+#item-delete-selected-desc {
+ float: left;
+ margin-right: 5px;
+ &:hover {
+ text-decoration: underline;
+ }
+}
+.intro-approve-as-friend-desc {
+ margin-top: 10px;
+}
+.intro-desc {
+ margin-bottom: 20px;
+ font-weight: bold;
+}
+#group-edit-desc {
+ margin: 10px 0px;
+}
+#settings-nickname-desc {
+ background: @dk_bg_colour;
+ .rounded_corners;
+ .borders;
+ padding: 5px;
+ color: @bg_colour;
+}
+.contactname,
+.contact-name {
+ font-weight: bold;
+ font-size: smaller;
+}
+.contact-details {
+ font-style: italic;
+ font-size: smaller;
+}
+
/**
* login
*/
-
#asidemain .field {
- overflow: hidden;
- width: 200px; }
-
+ overflow: hidden;
+ width: 200px;
+}
#login-extra-links {
- overflow: auto !important;
- padding-top: 60px !important;
- width: 100% !important;
- a {
- margin-right: 20px; } }
-
+ overflow: auto !important;
+ padding-top: 60px !important;
+ width: 100% !important;
+ a {
+ margin-right: 20px;
+ }
+}
#login_standard {
- display: block !important;
- float: none !important;
- height: 100% !important;
- position: relative !important;
- width: 100% !important;
- .field label {
- width: 200px !important; }
- input {
- margin: 0 0 8px !important;
- width: 210px !important;
- &[type="text"] {
- margin: 0 0 8px !important;
- width: 210px !important; } } }
-
+ display: block !important;
+ float: none !important;
+ height: 100% !important;
+ position: relative !important;
+ width: 100% !important;
+ .field label {
+ width: 200px !important;
+ }
+ input {
+ margin: 0 0 8px !important;
+ width: 210px !important;
+ &[type="text"] {
+ margin: 0 0 8px !important;
+ width: 210px !important; }
+ }
+}
#login-submit-wrapper {
- margin: 0 !important; }
-
+ margin: 0 !important;
+}
#login-submit-button {
- margin-left: 0px !important; }
-
+ margin-left: 0px !important;
+}
#asidemain #login_openid {
- position: relative !important;
- float: none !important;
- margin-left: 0px !important;
- height: auto !important;
- width: 200px !important; }
-
+ position: relative !important;
+ float: none !important;
+ margin-left: 0px !important;
+ height: auto !important;
+ width: 200px !important;
+}
#login_openid {
- #id_openid_url {
- width: 180px !important;
- overflow: hidden !important; }
- label {
- width: 180px !important; } }
+ #id_openid_url {
+ width: 180px !important;
+ overflow: hidden !important; }
+ label {
+ width: 180px !important;
+ }
+}
+
/**
* nav
*/
-
nav {
- height: 60px;
- background-color: #2e3436;
- color: #eeeeec;
- position: relative;
- padding: 20px 20px 10px 95px;
- a {
- text-decoration: none;
- color: #eeeeec;
- border: 0px;
- &:hover {
- text-decoration: none;
- color: #eeeeec;
- border: 0px; } }
- #banner {
- display: block;
- position: absolute;
- left: 51px;
- top: 25px;
- #logo-text a {
- font-size: 40px;
- font-weight: bold;
- margin-left: 3px; } } }
-
+ height: 60px;
+ background-color: @dk_bg_colour;
+ color: @bg_colour;
+ position: relative;
+ padding: 20px 20px 10px 95px;
+ a {
+ text-decoration: none;
+ color: @bg_colour;
+ border: 0px;
+ &:hover {
+ text-decoration: none;
+ color: @bg_colour;
+ border: 0px; } }
+ #banner {
+ display: block;
+ position: absolute;
+ left: 51px;
+ top: 25px;
+ #logo-text a {
+ font-size: 40px;
+ font-weight: bold;
+ margin-left: 3px; } }
+}
ul#user-menu-popup {
- display: none;
- position: absolute;
- background-color: #555753;
- width: 100%;
- padding: 10px 0px;
- margin: 0px;
- top: 20px;
- left: 0;
- -webkit-border-radius: 0 0 5px 5px;
- -moz-border-radius: 0 0 5px 5px;
- border-radius: 0 0 5px 5px;
- box-shadow: 5px 10px 10px 0 #111;
- z-index: 10000;
- li {
- display: block;
- a {
- display: block;
- padding: 5px;
- &:hover {
- color: #2e3436;
- background-color: #eeeeec; }
- &.nav-sep {
- border-top: 1px solid #eeeeec; } } } }
-
+ display: none;
+ position: absolute;
+ background-color: @menu_bg_colour;
+ width: 100%;
+ padding: 10px 0px;
+ margin: 0px;
+ top: 20px;
+ left: 0;
+ font-size: small;
+ line-height: 1;
+ .rounded_corners(0 0 5px 5px);
+ .box_shadow(5px, 5px, 10px, 0px);
+ z-index: 10000;
+ li {
+ display: block;
+ a {
+ display: block;
+ padding: 5px;
+ color: @bg_colour;
+ background-color: @menu_bg_colour;
+ &:hover {
+ color: @bg_colour;
+ background-color: @main_colour;
+ }
+ &.nav-sep {
+ border-top: 1px solid @bg_alt_colour; } } }
+}
nav .nav-link {
- display: inline-block;
- width: 22px;
- height: 22px;
- overflow: hidden;
- margin: 0px 5px 5px;
- text-indent: 50px;
- background: transparent url(light/icons.png) 0 0 no-repeat; }
-
+ display: inline-block;
+ .box(22px, 22px);
+ overflow: hidden;
+ margin: 0px 5px 5px;
+ text-indent: 50px;
+ background: transparent url(light/icons.png) 0 0 no-repeat;
+}
#nav-apps-link {
- background-position: 0 -66px;
- &:hover {
- background-position: -22px -66px; } }
-
-#nav-community-link, #nav-contacts-link {
- background-position: 0 -22px;
- &:hover {
- background-position: -22px -22px; } }
-
+ background-position: 0 -66px;
+ &:hover {
+ background-position: -22px -66px;
+ }
+}
+#nav-community-link,
+#nav-contacts-link {
+ background-position: 0 -22px;
+ &:hover {
+ background-position: -22px -22px;
+ }
+}
#nav-directory-link {
- background-position: -44px -154px;
- &:hover {
- background-position: -66px -154px; } }
-
+ background-position: -44px -154px;
+ &:hover {
+ background-position: -66px -154px;
+ }
+}
#nav-help-link {
- background-position: 0 -110px;
- &:hover {
- background-position: -22px -110px; } }
-
+ background-position: 0 -110px;
+ &:hover {
+ background-position: -22px -110px;
+ }
+}
#nav-home-link {
- background-position: -44px -132px;
- &:hover {
- background-position: -66px -132px; } }
-
+ background-position: -44px -132px;
+ &:hover {
+ background-position: -66px -132px;
+ }
+}
#nav-intro-link {
- background-position: 0px -190px;
- &:hover {
- background-position: -44px -190px; } }
-
+ background-position: 0px -190px;
+ &:hover {
+ background-position: -44px -190px;
+ }
+}
#nav-login-link, #nav-logout-link {
- background-position: 0 -88px;
- &:hover {
- background-position: -22px -88px; } }
-
+ background-position: 0 -88px;
+ &:hover {
+ background-position: -22px -88px;
+ }
+}
#nav-messages-link {
- background-position: -44px -88px;
- &:hover {
- background-position: -66px -88px; } }
-
-#nav-notify-link, #nav-notifications-linkmenu {
- background-position: -44px -110px; }
-
+ background-position: -44px -88px;
+ &:hover {
+ background-position: -66px -88px;
+ }
+}
+#nav-notify-link,
+#nav-notifications-linkmenu {
+ background-position: -44px -110px;
+}
#nav-notify-link:hover {
- background-position: -66px -110px; }
-
+ background-position: -66px -110px;
+}
#nav-network-link {
- background-position: 0px -177px;
- &:hover {
- background-position: -22px -177px; } }
-
+ background-position: 0px -177px;
+ &:hover {
+ background-position: -22px -177px;
+ }
+}
#nav-search-link {
- background-position: 0 -44px;
- &:hover {
- background-position: -22px -44px; } }
-
-#profile-link, #profile-title, #wall-image-upload, #wall-file-upload, #profile-attach-wrapper, #profile-audio, #profile-link, #profile-location, #profile-nolocation, #profile-title, #jot-title, #profile-upload-wrapper, #profile-video, #profile-jot-submit, #wall-image-upload-div, #wall-file-upload-div, .icon, .hover, .focus, .pointer {
- cursor: pointer; }
-
-/* popup notifications */
-
+ background-position: 0 -44px;
+ &:hover {
+ background-position: -22px -44px;
+ }
+}
+#jot-title,
+#profile-link,
+#profile-title,
+#profile-attach-wrapper,
+#profile-audio,
+#profile-link,
+#profile-location,
+#profile-nolocation,
+#profile-title,
+#profile-upload-wrapper,
+#profile-video,
+#profile-jot-submit,
+#wall-image-upload,
+#wall-file-upload,
+#wall-image-upload-div,
+#wall-file-upload-div,
+.icon,
+.hover,
+.focus,
+.pointer {
+ cursor: pointer;
+}
+//* popup notifications */
div.jGrowl div {
- &.notice {
- background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
- color: #ffffff;
- padding-left: 58px; }
- &.info {
- background: #364e59 url("../../../images/icons/48/info.png") no-repeat 5px center;
- color: #ffffff;
- padding-left: 58px; } }
-
+ &.notice {
+ background: @notice url("../../../images/icons/48/notice.png") no-repeat 5px center;
+ color: white;
+ padding-left: 58px;
+ margin-top: 50px;
+ }
+ &.info {
+ background: @info url("../../../images/icons/48/info.png") no-repeat 5px center;
+ color: white;
+ padding-left: 58px;
+ margin-top: 50px;
+ }
+}
#nav-notifications-menu {
- margin: 30px 0 0 -20px;
- width: 275px;
- max-height: 300px;
- overflow-y: auto;
- font-size: 9pt;
- .contactname {
- font-weight: bold;
- font-size: 0.9em; }
- img {
- float: left;
- margin-right: 5px; }
- .notif-when {
- font-size: 0.8em;
- display: block; }
- li {
- word-wrap: normal;
- border-bottom: 1px solid #000;
- &:hover {
- color: black; } }
- a:hover {
- color: black;
- text-decoration: underline; } }
-
+ margin: 30px 0 0 -20px;
+ width: 275px;
+ max-height: 300px;
+ overflow-y: auto;
+ font-size: 9pt;
+ img {
+ float: left;
+ margin-right: 5px; }
+ .notif-when {
+ font-size: 0.8em;
+ display: block; }
+ li {
+ word-wrap: normal;
+ border-bottom: 1px solid black;
+ &:hover {
+ color: black; }
+ }
+ a:hover {
+ color: black;
+ text-decoration: underline;
+ }
+}
nav #nav-notifications-linkmenu {
- &.on .icon.s22.notify, &.selected .icon.s22.notify {
- background-image: url("../../../images/icons/22/notify_on.png"); } }
-
+ &.on .icon.s22.notify,
+ &.selected .icon.s22.notify {
+ // background-image: url("../../../images/icons/22/notify_on.png");
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAQAAABuvaSwAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAUJcAAFCXAZtv64UAAAHuSURBVCjPbZPbTlNBFIYHLixXRIhEQGNRMUopJAJyAyZ4Z2l8B+XwEBqKtjwOp8oDIAJKIJFUjdFIQCUYrRytdyb0459ht8wG9rrYs9b618y/TsYEH4ZK4qRYYIdDybZOI7TKakIfVhrJ8J2i5IBNyV93/kaaBuv3oV3MgwCTPKGHPkkPA0xRUMBrOgN4AP0o6BseEpF2m3es0qJTFQneyvMhgDsC9tZprnEcGuOPeMcDLUpW3jlLxlDBmJTFY6gLvsVv8tyh9G7U3Z6mwtCuJAoiECSh/w1+8otmTjLqF2KDNsNzRY1bruV0o6rFFtc9S5USh5RRWvAYv4xX9dYPS8ur1oBQC4Y99m2uHriRNda5ErLdU1l3jCI2xdJ3XOYLX6kP2W6K2OF54Et84jN154F31d6ukKOG92pSbcjWLRrbRhVGLTZeOtXqX46LoQSHhJo3jOo3ESrdBQbljIRKNyXUiKHNNSXhTdbZiUzyT/WJ23Zn3BBFy+2u4ZHc1eV2N7EkxAvbbqMRmZOSlbE0g/uajRgl6Iy8r1wpnaFTQ4ji+8XOEsuxYmdDWpJleXJ0+BPdoduL4p5Vavd5IOllmJfiWmSWu6d3pV4jteFWqaAGbLkdKSqtUXXUnN3DSvF8phfy/JfkxfOp9sVb2COz+hY/T0qkwwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMS0wOS0xNlQwOTozOTowMCswMjowMC9Oi90AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTEtMDktMTZUMDk6Mzk6MDArMDI6MDBeEzNhAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg==");
+ }
+}
.show {
- display: block; }
-
+ display: block;
+}
#notifications {
- height: 20px;
- width: 170px;
- position: absolute;
- top: -19px;
- left: 4px; }
-
+ .box(170px, 20px);
+ font-size: small;
+ top: -19px;
+ left: 4px;
+ position: absolute;
+}
#nav-floater {
- position: fixed;
- top: 20px;
- right: 1%;
- padding: 5px;
- background: #2e3436;
- color: transparent;
- border-radius: 5px;
- z-index: 100;
- width: 300px;
- height: 60px; }
-
+ position: fixed;
+ top: 20px;
+ right: 1%;
+ padding: 5px;
+ background: @dk_bg_colour;
+ color: transparent;
+ .rounded_corners;
+ z-index: 100;
+ .box(300px, 60px);
+}
#nav-buttons {
- clear: both;
- list-style: none;
- padding: 0px;
- margin: 0px;
- height: 25px;
- > li {
- padding: 0;
- display: inline-block;
- margin: 0px -4px 0px 0px; } }
-
+ clear: both;
+ list-style: none;
+ padding: 0px;
+ margin: 0px;
+ height: 25px;
+ > li {
+ padding: 0;
+ display: inline-block;
+ margin: 0px -4px 0px 0px;
+ }
+}
.floaterflip {
- display: block;
- position: fixed;
- z-index: 110;
- top: 56px;
- right: 19px;
- width: 22px;
- height: 22px;
- overflow: hidden;
- margin: 0px;
- background: transparent url(light/icons.png) -190px -60px no-repeat; }
-
+ display: block;
+ position: fixed;
+ z-index: 110;
+ top: 56px;
+ right: 19px;
+ .box(22px, 22px);
+ overflow: hidden;
+ margin: 0px;
+ background: transparent url(light/icons.png) -190px -60px no-repeat;
+}
.search-box {
- display: inline-block;
- margin: 5px;
- position: fixed;
- right: 0px;
- bottom: 0px;
- z-index: 100;
- background: #1d1f1d;
- border-radius: 5px; }
-
+ display: inline-block;
+ margin: 5px;
+ position: fixed;
+ right: 0px;
+ bottom: 0px;
+ z-index: 100;
+ background: @dk_bg_colour;
+ .rounded_corners;
+}
+#search-text,
+#mini-search-text {
+ background: white;
+ color: @main_colour;
+ margin: 8px;
+}
#search-text {
- border: 1px #eec solid;
- background: #2e3436;
- color: #eec;
- font-size: 8pt;
- margin: 8px;
- width: 10em;
- height: 14px; }
-
+ .borders(1px, solid, @main_alt_colour);
+}
+#mini-search-text {
+ font-size: 8pt;
+ height: 14px;
+ width: 10em;
+}
#scrollup {
- position: fixed;
- right: 5px;
- bottom: 40px;
- z-index: 100;
- a:hover {
- text-decoration: none;
- border: 0; } }
-
+ position: fixed;
+ right: 5px;
+ bottom: 40px;
+ z-index: 100;
+ a:hover {
+ text-decoration: none;
+ border: 0;
+ }
+}
#user-menu {
- box-shadow: 5px 0 10px 0 #111;
- display: block;
- width: 75%;
- margin: 3px 0 0 0;
- position: relative;
- background-color: #555753;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- background: #555753 url("light/menu-user-pin.jpg") 98% center no-repeat;
- clear: both;
- top: 4px;
- left: 10px;
- padding: 2px;
- > a {
- vertical-align: top; } }
-
+ .box_shadow(5px, 0, 10px, 0);
+ display: block;
+ width: 75%;
+ margin: 3px 0 0 0;
+ position: relative;
+ .rounded_corners;
+ background-color: @menu_bg_colour;
+ background-image: url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");
+ background-position: 98% center;
+ background-repeat: no-repeat;
+ clear: both;
+ top: 4px;
+ left: 10px;
+ padding: 2px;
+ > a {
+ vertical-align: top;
+ outline: 0 none;
+ }
+}
#user-menu-label {
- font-size: 12px;
- padding: 3px 20px 9px 5px;
- height: 10px; }
-
-.nav-ajax-update, .nav-ajax-left {
- width: 30px;
- height: 19px;
- background: transparent url(light/notifications.png) 0 0 no-repeat;
- color: #222;
- font-weight: bold;
- font-size: 0.8em;
- padding-top: 0.2em;
- text-align: center;
- float: left;
- margin: 0 -1px 0 3px;
- display: block;
- visibility: hidden; }
-
-.nav-ajax-update.show, .nav-ajax-left.show {
- visibility: visible; }
-
+ font-size: small;
+ padding: 3px 20px 9px 5px;
+ height: 10px;
+}
+.nav-ajax-update,
+.nav-ajax-left {
+ .box(30px, 19px);
+ background: transparent url(light/notifications.png) 0 0 no-repeat;
+ color: @main_colour;
+ font-weight: bold;
+ font-size: 0.8em;
+ padding-top: 0.2em;
+ text-align: center;
+ float: left;
+ margin: 0 -1px 0 3px;
+ display: block;
+ visibility: hidden;
+}
+.nav-ajax-update.show,
+.nav-ajax-left.show {
+ visibility: visible;
+}
#net-update {
- background-position: 0px 0px; }
-
+ background-position: 0px 0px;
+}
#mail-update {
- background-position: -30px 0; }
-
+ background-position: -30px 0;
+}
#notify-update {
- background-position: -60px 0px; }
-
+ background-position: -60px 0px;
+}
#home-update {
- background-position: -90px 0px; }
-
+ background-position: -90px 0px;
+}
#intro-update {
- background-position: -120px 0px; }
-
+ background-position: -120px 0px;
+}
#lang-select-icon {
- cursor: pointer;
- position: fixed;
- left: 28px;
- bottom: 6px;
- z-index: 10; }
-
+ cursor: pointer;
+ position: fixed;
+ left: 28px;
+ bottom: 6px;
+ z-index: 10;
+}
#language-selector {
- position: fixed;
- bottom: 2px;
- left: 52px;
- z-index: 10; }
-
+ position: fixed;
+ bottom: 2px;
+ left: 52px;
+ z-index: 10;
+}
.menu-popup {
- position: absolute;
- display: none;
- width: 11em;
- background: #ffffff;
- color: #2d2d2d;
- margin: 0px;
- padding: 0px;
- list-style: none;
- border: 3px solid #364e59;
- z-index: 100000;
- -webkit-box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7);
- -moz-box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7);
- box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7);
- a {
- display: block;
- color: #2d2d2d;
- padding: 5px 10px;
- text-decoration: none;
- &:hover {
- background-color: #bdcdd4; } }
- .menu-sep {
- border-top: 1px solid #9eabb0; }
- li {
- float: none;
- overflow: auto;
- height: auto;
- display: block;
- img {
- float: left;
- width: 16px;
- height: 16px;
- padding-right: 5px; } }
- .empty {
- padding: 5px;
- text-align: center;
- color: #9eabb0; } }
-
+ position: absolute;
+ display: none;
+ width: 11em;
+ background: white;
+ color: @main_colour;
+ margin: 0px;
+ padding: 0px;
+ .borders(3px, solid, @link_colour);
+ .rounded_corners;
+ z-index: 100000;
+ .box_shadow;
+ a {
+ display: block;
+ color: @main_colour;
+ padding: 5px 10px;
+ text-decoration: none;
+ &:hover {
+ color: @bg_colour;
+ background-color: @link_colour;
+ }
+ }
+ .menu-sep {
+ border-top: 1px solid @med_bg_colour;
+ }
+ li {
+ float: none;
+ overflow: auto;
+ height: auto;
+ display: block;
+ img {
+ float: left;
+ .box(16px, 16px);
+ padding-right: 5px;
+ }
+ }
+ .empty {
+ padding: 5px;
+ text-align: center;
+ color: lighten(@shiny_colour, 45%);
+ }
+}
.notif-item {
- font-size: small;
- a {
- vertical-align: middle; } }
-
+ font-size: small;
+ a {
+ vertical-align: middle;
+ }
+}
.notif-image {
- width: 32px;
- height: 32px;
- padding: 7px 7px 0px 0px; }
-
+ .box(32px, 32px);
+ padding: 7px 7px 0px 0px;
+}
.notify-seen {
- background: #ddd; }
+ background: @disabled_colour;
+ color: @main_colour;
+}
+.notify-unseen {
+ color: @main_colour;
+}
+
/**
* sysmsg
*/
-
#sysmsg_info {
- position: fixed;
- bottom: 0;
- -moz-box-shadow: 3px 3px 3px 10px 0 #000;
- -webkit-box-shadow: 3px 3px 10px 0 #000;
- box-shadow: 3px 3px 10px 0 #000;
- padding: 10px;
- background-color: #fcaf3e;
- border: 2px solid #f8911b;
- border-bottom: 0;
- padding-bottom: 50px;
- z-index: 1000; }
-
+ position: fixed;
+ bottom: 0;
+ .box_shadow(@main_shadow);
+ padding: 10px;
+ background-color: @lt_orange;
+ .borders(2px, solid, @orange);
+ border-bottom: 0;
+ padding-bottom: 50px;
+ z-index: 1000;
+}
#sysmsg {
- position: fixed;
- bottom: 0;
- -moz-box-shadow: 3px 3px 10px 0 #000;
- -webkit-box-shadow: 3px 3px 10px 0 #000;
- box-shadow: 3px 3px 10px 0 #000;
- padding: 10px;
- background-color: #fcaf3e;
- border: 2px solid #f8911b;
- border-bottom: 0;
- padding-bottom: 50px;
- z-index: 1000; }
-
-#sysmsg_info br, #sysmsg br {
- display: block;
- margin: 2px 0px;
- border-top: 1px solid #ccccce; }
+ position: fixed;
+ bottom: 0;
+ .box_shadow(@main_shadow);
+ padding: 10px;
+ background-color: @lt_orange;
+ .borders(2px, solid, @orange);
+ border-bottom: 0;
+ padding-bottom: 50px;
+ z-index: 1000;
+}
+#sysmsg_info br,
+#sysmsg br {
+ display: block;
+ margin: 2px 0px;
+ border-top: 1px solid @bg_colour;
+}
+
/**
* aside
*/
-
#asidemain {
- float: left;
- font-size: smaller;
- margin: 20px 0 20px 35px;
- width: 25%;
- display: inline; }
-
+ float: left;
+ font-size: small;
+ margin: 20px 0 20px 35px;
+ width: 25%;
+ display: inline;
+}
/* for now, disappear these */
-
#asideright, #asideleft {
- display: none; }
-
+ display: none;
+}
.vcard {
- .fn {
- font-size: 1.7em;
- font-weight: bold;
- border-bottom: 1px solid #729fcf;
- padding-bottom: 3px; }
- #profile-photo-wrapper {
- margin: 20px;
- img {
- box-shadow: 3px 3px 10px 0 #000; } } }
-
-/* http://css-tricks.com/snippets/css/css-box-shadow/
-* box-shadow:
-* 1. The horizontal offset of the shadow, positive means
-* the shadow will be on the right of the box, a negative
-* offset will put the shadow on the left of the box.
-* 2. The vertical offset of the shadow, a negative one
-* means the box-shadow will be above the box, a
-* positive one means the shadow will be below the box.
-* 3. The blur radius (optional), if set to 0 the shadow
-* will be sharp, the higher the number, the more blurred
-* it will be.
-* 4. The spread radius (optional), positive values increase
-* the size of the shadow, negative values decrease the size.
-* Default is 0 (the shadow is same size as blur).
-* 5. Colo[u]r
-*/
-
+ .fn {
+ font-size: 1.5em;
+ font-weight: bold;
+ border-bottom: 1px solid @hover_colour;
+ padding-bottom: 3px;
+ }
+ #profile-photo-wrapper {
+ margin: 20px;
+ img {
+ .box_shadow(3px, 3px, 10px, 0);
+ }
+ }
+}
#asidemain {
h4 {
font-size: 1.2em; }
@@ -707,701 +884,725 @@ nav #nav-notifications-linkmenu {
.contact-block-div {
float: left;
margin: 0 5px 5px 0;
- width: 50px;
- height: 50px;
+ .box(50px, 50px);
padding: 3px;
- position: relative;
- }
- }
- }
+ position: relative; } } }
}
-
.aprofile dt {
- background: transparent;
- color: #666666;
- font-weight: bold;
- box-shadow: 1px 1px 5px 0 #000;
- margin: 15px 0 5px;
- padding-left: 5px; }
-
+ background: transparent;
+ color: darken(@main_alt_colour, 20%);
+ font-weight: bold;
+ .box_shadow(3px, 3px, 5px);
+ .rounded_corners;
+ margin: 15px 0 5px;
+ padding-left: 5px;
+}
#profile-extra-links ul {
- margin-left: 0px;
- padding-left: 0px;
- list-style: none; }
-
+ margin-left: 0px;
+ padding-left: 0px;
+ list-style: none;
+}
#dfrn-request-link {
- background: #3465a4 url(light/connect.png) no-repeat 95% center;
- border-radius: 5px 5px 5px 5px;
- color: #fff;
- display: block;
- font-size: 1.2em;
- padding: 0.2em 0.5em; }
-
+ .rounded_corners;
+ color: @main_colour;
+ display: block;
+ font-size: 1.2em;
+ padding: 0.2em 0.5em;
+ background-color: @friendica_blue;
+ // background-image: url(icons/connect.png);
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAYAAAAmL5yKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAE4SURBVCiRpZKxLgRRFIa//64dKruZFRIlolBviFKiVHsHrRaFikTCC+hEQtRegMQDqDUKJOPOvauSMJmjYEU2M0viT071/+fLOTlHZkadQgjLkh1LPEoj661WKw5mXG034JxtAgtmrJoVK5WZYYCy1AVQSOYbjeSqMmRmQ8v755Ne77lb5w+d4HMNJopCT7X+bwDQZKfTyf4BIAHeawHe+/kQ/FGM+QagvpFl2VSM/tyMmV7PV14AYMQ5nUp0AULIp0HXzpVvSdLYMmNVAjNdAuNAUQHgxy/ZvEQTSMw0A33DxkIIi2ma3gwC9PKSzRWF2wbdpml62DfyPF9yjlNgAnQGLJjZnXON3Xa7ff8NGPbKQPNrbAOI0a9J2ilLEzAL7P0GqJJizF+BUeDhL2cclJnZPvAg6eADf+imKjSMX1wAAAAASUVORK5CYII=");
+ background-repeat: no-repeat;
+ background-position: 95% center;
+}
#wallmessage-link {
- /*background: #3465A4 url(light/connect.png) no-repeat 95% center;*/
- /*border-radius: 5px 5px 5px 5px;*/
- color: #eee;
- display: block;
- font-size: 1.2em;
- padding: 0.2em 0.5em; }
-
+ ///*background: #3465A4 url(dark/connect.png) no-repeat 95% center;*/
+ ///*border-radius: 5px 5px 5px 5px;*/
+ color: @bg_colour;
+ display: block;
+ font-size: 1.2em;
+ padding: 0.2em 0.5em;
+}
.ttright {
- margin: 0px 0px 0px 0px; }
+ margin: 0px;
+}
+
/**
* contacts block
*/
-
.contact-block-div {
- width: 50px;
- height: 50px;
- float: left; }
-
+ .box(50px, 50px);
+ float: left;
+}
.contact-block-textdiv {
- width: 150px;
- height: 34px;
- float: left; }
+ .box(150px, 34px);
+ float: left;
+}
-#contact-block-end {
- clear: both; }
/**
* jot
*/
-
#jot {
- /*width: 785px;*/
- margin: 10px 0 20px 0px;
- width: 100%;
- #jot-tools {
- margin: 0px;
- padding: 0px;
- height: 35px;
- overflow: none;
- width: 100%;
- /*background-color: #0e232e;*/
- /*border-bottom: 2px solid #9eabb0;*/
- span {
- float: left;
- margin: 10px 20px 2px 0px;
- a {
- display: block; } }
- .perms {
- float: right;
- width: 40px; }
- li.loading {
- float: right;
- background-color: #ffffff;
- width: 20px;
- vertical-align: center;
- text-align: center;
- border-top: 2px solid #9eabb0;
- height: 38px;
- img {
- margin-top: 10px; } } }
- #jot-title {
- border: 1px solid #ccc;
- margin: 0 0 5px;
- height: 20px;
- width: 90%;
- font-weight: bold;
- border-radius: 5px;
- vertical-align: middle; } }
-
+ margin: 10px 0 20px 0px;
+ width: 100%;
+ #jot-tools {
+ margin: 0px;
+ padding: 0px;
+ .box(100%, 35px);
+ overflow: none;
+ span {
+ float: left;
+ margin: 10px 20px 2px 0px;
+ a {
+ display: block;
+ }
+ }
+ .perms {
+ float: right;
+ width: 40px;
+ }
+ li.loading {
+ float: right;
+ background-color: white;
+ .box(20px, 38px);
+ vertical-align: center;
+ text-align: center;
+ border-top: 2px solid #9eabb0;
+ img {
+ margin-top: 10px;
+ }
+ }
+ }
+ #jot-title {
+ .borders(1px, solid, lighten(@main_alt_colour, 20%));
+ margin: 0 0 5px;
+ .box(90%, 20px);
+ font-weight: bold;
+ .rounded_corners;
+ vertical-align: middle;
+ }
+}
#jot-category {
- margin: 5px 0;
- border-radius: 5px;
- border: 1px #ccc solid;
- color: #666;
- font-size: smaller;
- &:focus {
- color: #111; } }
-
+ margin: 5px 0;
+ .rounded_corners;
+ .borders(1px, solid, lighten(@main_alt_colour, 20%));
+ color: darken(@main_alt_colour, 20%);
+ font-size: smaller;
+ &:focus {
+ color: @main_colour;
+ }
+}
#jot #character-counter {
- width: 6%;
- float: right;
- text-align: right;
- height: 15px;
- line-height: 20px;
- padding: 2px 20px 5px 0; }
-
+ .box(6%, 15px);
+ float: right;
+ text-align: right;
+ line-height: 20px;
+ padding: 2px 20px 5px 0;
+}
#profile-jot-text_parent {
- box-shadow: 5px 0 10px 0 #111; }
-
+ .box_shadow(5px, 0, 10px, 0);
+}
#profile-jot-text_tbl {
- margin-bottom: 10px;
- background: #777; }
-
+ margin-bottom: 10px;
+ background: darken(@main_alt_colour, 10%);
+}
#profile-jot-text_ifr {
- width: 99.900002% !important; }
-
+ width: 99.900002% !important;
+}
#profile-jot-text_toolbargroup, .mceCenter tr {
- background: #777; }
-
+ background: darken(@main_alt_colour, 10%);
+}
[id$="jot-text_ifr"] {
- width: 99.900002% !important;
- color: #2e2f2e;
- background: #eec;
- .mceContentBody {
- color: #2e2f2e;
- background: #eec; } }
-
+ width: 99.900002% !important;
+ color: @main_colour;
+ background: @bg_colour;
+ .mceContentBody {
+ color: @main_colour;
+ background: @bg_colour;
+ }
+}
.defaultSkin {
- tr.mceFirst {
- background: #777; }
- td {
- &.mceFirst, &.mceLast {
- background-color: #eec; } }
- span.mceIcon, img.mceIcon, .mceButtonDisabled .mceIcon {
- background-color: #eec; } }
-
-#profile-attach-wrapper, #profile-audio-wrapper, #profile-link-wrapper, #profile-location-wrapper, #profile-nolocation-wrapper, #profile-title-wrapper, #profile-upload-wrapper, #profile-video-wrapper {
- float: left;
- margin: 0 20px 0 0; }
-
+ tr.mceFirst {
+ background: darken(@main_alt_colour, 10%);
+ }
+ td {
+ &.mceFirst, &.mceLast {
+ background-color: @bg_colour;
+ }
+ }
+ span.mceIcon, img.mceIcon, .mceButtonDisabled .mceIcon {
+ background-color: @bg_colour;
+ }
+}
+#profile-attach-wrapper,
+#profile-audio-wrapper,
+#profile-link-wrapper,
+#profile-location-wrapper,
+#profile-nolocation-wrapper,
+#profile-title-wrapper,
+#profile-upload-wrapper,
+#profile-video-wrapper {
+ float: left;
+ margin: 0 20px 0 0;
+}
#profile-rotator-wrapper {
- float: right; }
-
-#profile-jot-tools-end, #profile-jot-banner-end {
- clear: both; }
-
+ float: right;
+}
#profile-jot-email-wrapper {
- margin: 10px 10% 0;
- border: 1px solid #555753;
- border-bottom: 0; }
-
+ margin: 10px 10% 0;
+ .borders(1px, solid, @menu_bg_colour);
+ border-bottom: 0;
+}
#profile-jot-email-label {
- background-color: #555753;
- color: #ccccce;
- padding: 5px; }
-
+ background-color: @menu_bg_colour;
+ color: @bg_colour;
+ padding: 5px;
+}
#profile-jot-email {
- width: 90%;
- margin: 5px; }
-
+ width: 90%;
+ margin: 5px;
+}
#profile-jot-networks {
- margin: 0 10%;
- border: 1px solid #555753;
- border-top: 0;
- border-bottom: 0;
- padding: 5px; }
-
+ margin: 0 10%;
+ border: 1px solid @menu_bg_colour;
+ border-top: 0;
+ border-bottom: 0;
+ padding: 5px;
+}
#profile-jot-net {
- margin: 5px 0; }
-
+ margin: 5px 0;
+}
#jot-preview-link {
- margin: 0 0 0 10px;
- border: 0;
- text-decoration: none;
- float: right; }
-
+ margin: 0 0 0 10px;
+ border: 0;
+ text-decoration: none;
+ float: right;
+}
.icon-text-preview {
- margin: 0 0 -18px 0;
- display: block;
- width: 20px;
- height: 20px;
- background: url(light/icons.png) no-repeat -128px -40px;
- border: 0;
- text-decoration: none;
- float: right;
- cursor: pointer; }
-
+ margin: 0 0 -18px 0;
+ display: block;
+ .box(20px, 20px);
+ background: url(light/icons.png) no-repeat -128px -40px;
+ border: 0;
+ text-decoration: none;
+ float: right;
+ cursor: pointer;
+}
#profile-jot-perms {
- float: right;
- background-color: #555753;
- height: 22px;
- width: 20px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- overflow: hidden;
- border: 0px;
- margin: 0 10px 0 10px; }
-
+ float: right;
+ color: @menu_bg_colour;
+ .box(20px, 20px);
+ .rounded_corners;
+ .box_shadow(3px, 3px, 5px, 0);
+ .borders(2px, outset, @menu_bg_colour);
+ overflow: hidden;
+ margin: 0 10px 0 10px;
+}
#profile-jot-plugin-wrapper {
- width: 1px;
- margin: 10px 0 0 0;
- float: right; }
-
+ width: 1px;
+ margin: 10px 0 0 0;
+ float: right;
+}
#profile-jot-submit-wrapper {
- float: right;
- width: 100%;
- list-style: none;
- margin: 10px 0 0 0;
- padding: 0; }
-
+ float: right;
+ width: 100%;
+ margin: 10px 0 0 0;
+ padding: 0;
+}
#profile-jot-submit {
- height: auto;
- background-color: #555753;
- color: #eeeeec;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- border: 2px outset #222420;
- margin: 0;
- float: right;
- text-shadow: 1px 1px #111;
- width: auto;
- &:active {
- box-shadow: 0 0 0 0; } }
-
+ height: auto;
+ background-color: @menu_bg_colour;
+ color: @bg_colour;
+ .rounded_corners;
+ .borders(2px, outset, @menu_bg_colour);
+ margin: 0;
+ float: right;
+ .text_shadow;
+ width: auto;
+ &:active {
+ .box_shadow(0, 0, 0, 0);
+ }
+}
#jot-perms-icon {
- height: 22px;
- width: 20px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- overflow: hidden;
- border: 0; }
-
-#profile-jot-acl-wrapper {
- margin: 0 10px;
- border: 1px solid #555753;
- border-top: 0;
- display: block !important; }
-
-#group_allow_wrapper, #group_deny_wrapper, #acl-permit-outer-wrapper {
- width: 47%;
- float: left; }
-
-#contact_allow_wrapper, #contact_deny_wrapper, #acl-deny-outer-wrapper {
- width: 47%;
- float: right; }
-
+ .box(22px, 22px);
+ .rounded_corners;
+ overflow: hidden;
+ background: @menu_bg_colour url("dark/icons.png") -88px -40px;
+}
+#group_allow_wrapper,
+#group_deny_wrapper,
+#acl-permit-outer-wrapper,
+#contact_allow_wrapper,
+#contact_deny_wrapper,
+#acl-deny-outer-wrapper {
+ width: 47%;
+}
+#group_allow_wrapper,
+#group_deny_wrapper,
+#acl-permit-outer-wrapper {
+ float: left;
+}
+#contact_allow_wrapper,
+#contact_deny_wrapper,
+#acl-deny-outer-wrapper {
+ float: right;
+}
#acl-permit-text {
- background-color: #555753;
- color: #ccccce;
- padding: 5px;
- float: left; }
-
+ background-color: @menu_bg_colour;
+ color: @main_colour;
+ padding: 5px;
+ float: left;
+}
#jot-public {
- background-color: #555753;
- color: #ff0000;
- padding: 5px;
- float: left; }
-
+ background-color: @menu_bg_colour;
+ color: @alert;
+ padding: 5px;
+ float: left;
+}
#acl-deny-text {
- background-color: #555753;
- color: #ccccce;
- padding: 5px;
- float: left; }
-
-#acl-permit-text-end, #acl-deny-text-end {
- clear: both; }
-
+ background-color: @menu_bg_colour;
+ color: @bg_colour;
+ padding: 5px;
+ float: left;
+}
#jot-title-desc {
- color: #ccc; }
-
+ color: lighten(@main_alt_colour, 20%);
+}
#profile-jot-desc {
- color: #a00;
- margin: 5px 0; }
-
+ background: @bg_colour;
+ .borders;
+ .rounded_corners;
+ color: @red_orange;
+ margin: 5px 0;
+}
#jot-title-wrapper {
- margin-bottom: 5px; }
-
+ margin-bottom: 5px;
+}
#jot-title-display {
- font-weight: bold; }
-
+ font-weight: bold;
+}
.jothidden {
- display: none; }
-
+ display: none;
+}
#jot-preview-content {
- background-color: #ffffe0;
- color: #111;
- border: 1px #aa0 solid;
- border-radius: 5px;
- padding: 3px 3px 6px 10px;
- .wall-item-outside-wrapper {
- border: 0;
- border-radius: 0px; } }
+ background-color: @shiny_colour;
+ color: @main_colour;
+ .borders(1px, solid, @main_colour);
+ .rounded_corners;
+ .box_shadow(5px, 0, 10px);
+ padding: 3px 3px 6px 10px;
+ .wall-item-outside-wrapper {
+ border: 0;
+ .rounded_corners(0px 0px 0px 0px);
+ .box_shadow(0, 0, 0, 0);
+ }
+}
+
/**
* section
*/
-
#sectionmain {
- margin: 20px;
- font-size: 0.8em;
- min-width: 475px;
- width: 67%;
- float: left;
- display: inline; }
+ margin: 20px;
+ font-size: 0.8em;
+ min-width: 475px;
+ width: 67%;
+ float: left;
+ display: inline;
+}
+
/**
* tabs
*/
-
.tabs {
- list-style: none;
- margin: 10px 0;
- padding: 0;
- li {
- display: inline;
- font-size: smaller;
- font-weight: bold; } }
-
+ .list_reset;
+ margin: 10px 0;
+ li {
+ display: inline;
+ font-size: smaller;
+ }
+}
.tab {
- border: 1px solid #729fcf;
- padding: 4px;
- &:hover, &.active:hover, &:active {
- background: #729fcf;
- color: #eeeeec; }
- &.active {
- background: #729fcf;
- color: #eeeeec;
- a {
- color: #729fcf; } }
- a {
- border: 0;
- text-decoration: none; } }
+ .borders(1px, solid, @hover_colour);
+ padding: 4px;
+ &:hover,
+ &:active {
+ background: @shiny_colour;
+ color: @main_colour;
+ .borders(1px, solid, @hover_colour);
+ }
+ &.active {
+ background: @dk_bg_colour;
+ color: @bg_colour;
+ .borders(1px, solid, @hover_colour);
+ &:hover {
+ background: @shiny_colour;
+ color: @main_colour;
+ .borders(1px, solid, @hover_colour);
+ }
+ a {
+ color: @bg_colour;
+ text-decoration: none;
+ }
+ }
+ a {
+ border: 0;
+ text-decoration: none;
+ }
+}
+
/**
* items
*/
-
.wall-item-outside-wrapper {
- border: 1px solid #aaa;
- border-radius: 5px;
- box-shadow: 5px 0 10px 0 #888;
- &.comment {
- margin-top: 5px; } }
-
-.wall-item-outside-wrapper-end {
- clear: both; }
-
+ .borders(1px, solid, darken(@main_alt_colour, 27%));
+ .rounded_corners;
+ .box_shadow(6px, 1px, 10px, -2px);//@lt_shadow_colour
+ &.comment {
+ margin-top: 5px;
+ }
+}
.wall-item-content-wrapper {
- position: relative;
- padding: 10px;
- width: auto; }
-
+ position: relative;
+ padding: 0.75em;
+ width: auto;
+}
.wall-item-outside-wrapper .wall-item-comment-wrapper {
- /*margin-left: 90px;*/ }
-
+ /*margin-left: 90px;*/
+}
.shiny {
- background: #efefdf;
- border-radius: 5px; }
-
+ background: @shiny_colour;
+ .rounded_corners;
+}
.wall-outside-wrapper .shiny {
- border-radius: 5px; }
-
+ .rounded_corners;
+}
.heart {
- color: red; }
-
+ color: red;
+}
.wall-item-content {
- overflow-x: auto;
- margin: 0px 15px 0px 5px; }
-
-/* removing it from here, vs. putting it in .wall-item-content
-* might break things for people. we shall see ;) */
-
-[id^="tread-wrapper"], [class^="tread-wrapper"] {
- margin: 15px 0 0 0;
- padding: 0px;
- /*overflow-x: auto;*/ }
-
+ overflow-x: auto;
+ margin: 0px 4em 1em 5px;
+}
+[id^="tread-wrapper"],
+[class^="tread-wrapper"] {
+ margin: 1.2em 0 0 0;
+ padding: 0px;
+}
.wall-item-photo-menu {
- display: none; }
-
+ display: none;
+}
.wall-item-photo-menu-button {
- display: none;
- text-indent: -99999px;
- background: #555753 url(light/menu-user-pin.jpg) no-repeat 75px center;
- position: absolute;
- overflow: hidden;
- height: 20px;
- width: 90px;
- top: 85px;
- left: 0;
- -webkit-border-radius: 0 0 5px 5px;
- -moz-border-radius: 0 0 5px 5px;
- border-radius: 0 0 5px 5px; }
-
+ display: none;
+ text-indent: -99999px;
+ background: @menu_bg_colour url(light/menu-user-pin.jpg) no-repeat 75px center;
+ position: absolute;
+ overflow: hidden;
+ .box(90px, 20px);
+ top: 85px;
+ left: 0;
+ .rounded_corners(0 0 5px 5px);
+}
.wall-item-info {
- float: left;
- width: 110px; }
-
+ float: left;
+ width: 8em;
+}
.wall-item-photo-wrapper {
- width: 80px;
- height: 80px;
- position: relative;
- padding: 5px;
- background-color: #555753;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px; }
-
+ .box(80px, 80px);
+ position: relative;
+ padding: 5px;
+ background-color: @menu_bg_colour;
+ .rounded_corners;
+}
[class^="wall-item-tools"] * {
- /*margin: 0 0 5px 0;*/
- > * {
- /*margin: 0 0 5px 0;*/ } }
-
+ /*margin: 0 0 5px 0;*/
+ > * {
+ /*margin: 0 0 5px 0;*/
+ }
+}
.wall-item-tools {
- float: right;
- opacity: 0.4;
- -webkit-transition: all 1s ease-in-out;
- -moz-transition: all 1s ease-in-out;
- -o-transition: all 1s ease-in-out;
- -ms-transition: all 1s ease-in-out;
- transition: all 1s ease-in-out;
- &:hover {
- opacity: 1;
- -webkit-transition: all 1s ease-in-out;
- -moz-transition: all 1s ease-in-out;
- -o-transition: all 1s ease-in-out;
- -ms-transition: all 1s ease-in-out;
- transition: all 1s ease-in-out; } }
-
+ float: right;
+ opacity: 0.4;
+ .transition;
+ &:hover {
+ opacity: 1;
+ .transition;
+ }
+}
.wall-item-subtools1 {
- height: 30px;
- list-style: none outside none;
- margin: 20px 0 30px -20px;
- padding: 0;
- width: 30px; }
-
+ .box(30px, 30px);
+ list-style: none outside none;
+ margin: 18px 0 30px -20px;
+ padding: 0;
+}
.wall-item-subtools2 {
- height: 25px;
- list-style: none outside none;
- margin: -75px 0 0 5px;
- padding: 0;
- width: 25px; }
-
+ .box(25px, 25px);
+ list-style: none outside none;
+ margin: -78px 0 0 5px;
+ padding: 0;
+}
.wall-item-title {
- font-size: 1.2em;
- font-weight: bold;
- margin-bottom: 1em; }
-
+ font-size: 1.2em;
+ font-weight: bold;
+ margin-bottom: 1.4em;
+}
.wall-item-body {
- margin: 20px 20px 10px 0px;
- text-align: left;
- overflow-x: auto; }
-
+ margin: 15px 10px 10px 0px;
+ text-align: left;
+ overflow-x: auto;
+}
.wall-item-lock-wrapper {
- float: right;
- height: 22px;
- margin: 0 -5px 0 0;
- width: 22px;
- opacity: 1; }
-
-.wall-item-dislike, .wall-item-like {
- clear: left;
- font-size: 0.8em;
- color: #878883;
- margin: 5px 0 5px 120px; }
-
-.wall-item-author, .wall-item-actions-author {
- clear: left;
- font-size: 0.8em;
- color: #878883;
- margin: 20px 20px 0 110px; }
-
+ float: right;
+ .box(22px, 22px);
+ margin: 0 -5px 0 0;
+ opacity: 1;
+}
+.wall-item-dislike,
+.wall-item-like {
+ clear: left;
+ font-size: 0.8em;
+ color: lighten(@menu_bg_colour, 20%);
+ margin: 5px 0 5px 10.2em;
+ .transition;
+ opacity: 0.5;
+ &:hover {
+ opacity: 1;
+ }
+}
+.wall-item-author,
+.wall-item-actions-author,
.wall-item-ago {
- display: inline;
- padding-left: 10px; }
-
-.wall-item-wrapper-end {
- clear: both; }
-
+ clear: left;
+ float: left;
+ color: @bg_colour;
+ line-height: 1;
+ display: inline-block;
+ font-size: 0.75em;
+ margin: 0.5em auto 0;
+}
+.wall-item-author,
+.wall-item-actions-author {
+ margin: 0.5em auto 0;
+ font-size: 0.75em;
+ font-weight: bold;
+}
.wall-item-location {
- margin-top: 15px;
- width: 100px;
- overflow: hidden;
- text-overflow: ellipsis;
- -o-text-overflow: ellipsis;
- .icon {
- float: left; }
- > a, .smalltext {
- margin-left: 25px;
- font-size: 0.7em;
- display: block; }
- > br {
- display: none; } }
-
+ margin-top: 15px;
+ width: 100px;
+ overflow: hidden;
+ .text_overflow;
+ .icon {
+ float: left;
+ }
+ > a,
+ .smalltext {
+ margin-left: 25px;
+ font-size: 0.7em;
+ display: block;
+ }
+ > br {
+ display: none;
+ }
+}
.wallwall {
- .wwto {
- left: 5px;
- margin: 0;
- position: absolute;
- top: 75px;
- width: 30px;
- z-index: 10001;
- width: 30px;
- height: 30px;
- img {
- width: 30px !important;
- height: 30px !important; } }
- .wall-item-photo-end {
- clear: both; } }
-
+ .wwto {
+ left: 5px;
+ margin: 0;
+ position: absolute;
+ top: 75px;
+ z-index: 10001;
+ .box(30px, 30px);
+ img {
+ width: 30px !important;
+ height: 30px !important;
+ }
+ }
+ .wall-item-photo-end {
+ clear: both;
+ }
+}
.wall-item-arrowphoto-wrapper {
- position: absolute;
- left: 35px;
- top: 80px;
- z-index: 10002; }
-
+ position: absolute;
+ left: 35px;
+ top: 80px;
+ z-index: 10002;
+}
.wall-item-photo-menu {
- min-width: 92px;
- border: 2px solid #FFFFFF;
- border-top: 0px;
- background: #555753;
- position: absolute;
- left: -2px;
- top: 101px;
- display: none;
- z-index: 10003;
- -webkit-border-radius: 0px 5px 5px 5px;
- -moz-border-radius: 0px 5px 5px 5px;
- border-radius: 0px 5px 5px 5px;
- ul {
- margin: 0px;
- padding: 0px;
- list-style: none; }
- li a {
- white-space: nowrap;
- display: block;
- padding: 5px 2px;
- color: #eeeeec;
- &:hover {
- color: #555753;
- background: #eeeeec; } } }
-
+ min-width: 92px;
+ font-size: 0.75em;
+ .borders(2px, solid, @menu_bg_colour);
+ border-top: 0px;
+ background: @menu_bg_colour;
+ position: absolute;
+ left: -2px;
+ top: 101px;
+ display: none;
+ z-index: 10003;
+ .rounded_corners(0 5px 5px 5px);
+ li a {
+ white-space: nowrap;
+ display: block;
+ padding: 5px 6px;
+ color: @bg_colour;
+ &:hover {
+ color: @menu_bg_colour;
+ background: @bg_colour;
+ }
+ }
+}
#item-delete-selected {
- overflow: auto;
- width: 100%; }
+ overflow: auto;
+ width: 100%;
+}
+#connect-services-header,
+#connect-services,
+#extra-help-header,
+#extra-help,
+#postit-header,
+#postit {
+ margin: 5px 0 0 0;
+}
-#connect-services-header, #connect-services, #extra-help-header, #extra-help, #postit-header, #postit {
- margin: 5px 0 0 0; }
/**
* comment
*/
-
.ccollapse-wrapper {
- font-size: 0.9em;
- margin-left: 80px; }
-
+ font-size: 0.9em;
+ margin-left: 5em;
+}
+.hide-comments-outer {
+ font-size: small;
+}
.wall-item-outside-wrapper.comment {
- margin-left: 80px;
- .wall-item-photo {
- width: 40px!important;
- height: 40px!important; }
- .wall-item-photo-wrapper {
- width: 40px;
- height: 40px; }
- .wall-item-photo-menu-button {
- width: 50px;
- top: 45px;
- background-position: 35px center; }
- .wall-item-info {
- width: 60px; }
- .wall-item-body {
- margin-left: 10px; }
- .wall-item-author {
- margin-left: 50px; }
- .wall-item-photo-menu {
- min-width: 50px;
- top: 60px; } }
-
+ margin-left: 5em;
+ .wall-item-photo {
+ width: 40px !important;
+ height: 40px !important;
+ }
+ .wall-item-photo-wrapper {
+ .box(40px, 40px);
+ }
+ .wall-item-photo-menu-button {
+ width: 50px;
+ top: 45px;
+ background-position: 35px center;
+ }
+ .wall-item-body {
+ margin-left: 10px;
+ }
+ .wall-item-author {
+ margin-left: 0.2em;
+ }
+ .wall-item-photo-menu {
+ min-width: 50px;
+ top: 60px;
+ }
+}
.comment-wwedit-wrapper {
- /*margin: 30px 0px 0px 80px;*/ }
-
+ /*margin: 30px 0px 0px 80px;*/
+}
.comment-edit-wrapper {
- border-top: 1px #aaa solid; }
-
+ border-top: 1px #aaa solid;
+}
[class^="comment-edit-bb"] {
- list-style: none;
- display: none;
- margin: -40px 0 5px 60px;
- width: 75%;
- > li {
- display: inline-block;
- margin: 0 10px 0 0;
- visibility: none; } }
-
-.comment-wwedit-wrapper img, .comment-edit-wrapper img {
- width: 20px;
- height: 20px; }
-
-.comment-edit-photo-link, .comment-edit-photo {
- margin-left: 10px; }
-
+ .list_reset;
+ display: none;
+ margin: -40px 0 5px 60px;
+ width: 75%;
+ > li {
+ display: inline-block;
+ margin: 0 10px 0 0;
+ visibility: none;
+ }
+}
+.comment-wwedit-wrapper img,
+.comment-edit-wrapper img {
+ .box;
+}
+.comment-edit-photo-link,
+.comment-edit-photo {
+ margin-left: 10px;
+}
.my-comment-photo {
- width: 40px;
- height: 40px;
- padding: 5px; }
-
+ .box(40px, 40px);
+ padding: 5px;
+}
[class^="comment-edit-text"] {
- margin: 5px 0 10px 20px;
- width: 84.5%; }
-
+ margin: 5px 0 10px 20px;
+ width: 94%;
+}
.comment-edit-text-empty {
- height: 20px;
- border: 2px #babdd6 solid;
- border-radius: 5px;
- color: #babdb6;
- -webkit-transition: all 0.5s ease-in-out;
- -moz-transition: all 0.5s ease-in-out;
- -o-transition: all 0.5s ease-in-out;
- -ms-transition: all 0.5s ease-in-out;
- transition: all 0.5s ease-in-out;
- &:hover {
- color: #999999; } }
-
+ height: 20px;
+ .med_borders;
+ .rounded_corners;
+ color: @med_border_colour;
+ .transition;
+ &:hover {
+ color: darken(@main_alt_colour, 33.5%);
+ }
+}
.comment-edit-text-full {
- height: 10em;
- border-radius: 5px;
- -webkit-transition: all 0.5s ease-in-out;
- -moz-transition: all 0.5s ease-in-out;
- -o-transition: all 0.5s ease-in-out;
- -ms-transition: all 0.5s ease-in-out;
- transition: all 0.5s ease-in-out; }
-
+ height: 10em;
+ .rounded_corners;
+ .transition;
+}
.comment-edit-submit-wrapper {
- width: 90%;
- margin: 5px 5px 10px 50px;
- text-align: right; }
-
+ width: 90%;
+ margin: 5px 5px 10px 50px;
+ text-align: right;
+}
.comment-edit-submit {
- height: 22px;
- background-color: #555753;
- color: #eeeeec;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- border: 0; }
+ height: 22px;
+ background-color: @menu_bg_colour;
+ color: @bg_colour;
+ .rounded_corners;
+ border: 0;
+}
+
/**
* item text style
*/
-
.wall-item-body code {
- display: block;
- padding: 0 0 10px 5px;
- border-color: #ccc;
- border-style: solid;
- border-width: 1px 1px 1px 10px;
- background: #eee;
- color: #444;
- width: 95%; }
+ background-color: lighten(@main_alt_colour, 26.5%);
+ border-bottom: 1px dashed darken(@main_alt_colour, 6.5%);
+ border-left: 5px solid darken(@main_alt_colour, 6.5%);
+ border-top: 1px dashed darken(@main_alt_colour, 6.5%);
+ color: darken(@main_alt_colour, 50%);
+ display: block;
+ overflow-x: auto;
+ padding: 5px 0 15px 10px;
+ width: 95%;
+ a {
+ color: @lt_link_colour;
+ }
+}
+
/**
* profile
*/
-
div {
- &[id$="text"] {
- font-weight: bold;
- border-bottom: 1px solid #ccc; }
- &[id$="wrapper"] {
- height: 100%;
- margin-bottom: 1em;
- br {
- clear: left; } } }
-
+ &[id$="text"] {
+ font-weight: bold;
+ border-bottom: 1px solid @bg_colour;
+ }
+ &[id$="wrapper"] {
+ height: 100%;
+ margin-bottom: 1em;
+ br {
+ clear: left;
+ }
+ }
+}
.profile-match-wrapper {
float: left;
margin: 0 5px 40px 0;
- width: 120px;
- height: 120px;
+ .box(120px, 120px);
padding: 3px;
position: relative;
}
@@ -1411,11 +1612,10 @@ div {
.profile-match-photo {
}
-
[id$="-end"], [class$="-end"] {
- clear: both;
- margin: 0 0 10px 0; }
-
+ clear: both;
+ margin: 0 0 10px 0;
+}
.profile-match-end {
margin: 0 0 5px 0;
}
@@ -1428,795 +1628,778 @@ div {
margin: auto auto auto 23px;
}
#advanced-profile-with {
- margin-left: 200px; }
+ margin-left: 200px;
+}
+
/**
* photos
*/
-
.photos {
- height: auto;
- overflow: auto; }
-
+ height: auto;
+ overflow: auto;
+}
#photo-top-links {
- margin-bottom: 30px; }
-
-.photo-album-image-wrapper, .photo-top-image-wrapper {
- float: left;
- -moz-box-shadow: 3px 3px 10px 0 #000;
- -webkit-box-shadow: 3px 3px 10px 0 #000;
- box-shadow: 3px 3px 10px 0 #000;
- background-color: #eee;
- color: #111;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- padding-bottom: 30px;
- position: relative;
- margin: 0 10px 10px 0; }
-
+ margin-bottom: 30px;
+}
+.photo-album-image-wrapper,
+.photo-top-image-wrapper {
+ float: left;
+ .box_shadow(3px, 3px, 10px, 0);
+ background-color: @bg_colour;
+ color: @main_colour;
+ .rounded_corners;
+ padding-bottom: 30px;
+ position: relative;
+ margin: 0 10px 10px 0;
+}
#photo-photo {
- max-width: 100%;
- img {
- max-width: 100%; } }
-
-.photo-top-image-wrapper a:hover, #photo-photo a:hover, .photo-album-image-wrapper a:hover {
- border-bottom: 0; }
-
+ max-width: 100%;
+ img {
+ max-width: 100%;
+ }
+}
+.photo-top-image-wrapper a:hover,
+#photo-photo a:hover,
+.photo-album-image-wrapper a:hover {
+ border-bottom: 0;
+}
.photo-top-photo, .photo-album-photo {
- -webkit-border-radius: 5px 5px 0 0;
- -moz-border-radius: 5px 5px 0 0;
- border-radius: 5px 5px 0 0; }
-
-.photo-top-album-name {
- position: absolute;
- bottom: 0;
- padding: 0 5px; }
-
+ .rounded_corners(5px 5px 0 0);
+}
+.photo-top-album-name,
.caption {
- position: absolute;
- bottom: 0;
- margin: 0 5px; }
-
+ position: absolute;
+ bottom: 0;
+ padding: 0 5px;
+}
#photo-photo {
- position: relative;
- float: left; }
-
-#photo-prev-link, #photo-next-link {
- position: absolute;
- width: 30%;
- height: 100%;
- background-color: rgba(255, 255, 255, 0.5);
- opacity: 0;
- -webkit-transition: all .2s ease-in-out;
- -moz-transition: all .2s ease-in-out;
- -o-transition: all .2s ease-in-out;
- -ms-transition: all .2s ease-in-out;
- transition: all .2s ease-in-out;
- background-position: center center;
- background-repeat: no-repeat; }
-
-#photo-prev-link {
- background-image: url(light/prev.png);
- height: 350px;
- left: 1%;
- top: 215px;
- width: 50px;
- z-index: 10;
+ position: relative;
+ // float: left;
+ margin: 5px 45%;
}
-
+#photo-prev-link,
#photo-next-link {
- background-image: url(light/next.png);
- height: 350px;
- right: 45%;
- top: 215px;
- width: 50px;
-}
-
-#photo-prev-link a, #photo-next-link a {
- display: block;
- width: 100%;
- height: 100%;
- overflow: hidden;
- text-indent: -900000px; }
-
-#photo-prev-link:hover {
- opacity: 1;
- -webkit-transition: all .2s ease-in-out;
- -moz-transition: all .2s ease-in-out;
- -o-transition: all .2s ease-in-out;
- -ms-transition: all .2s ease-in-out;
- transition: all .2s ease-in-out; }
-
+ position: absolute;
+ // .box(30%, 100%);
+ .box(50px, 150px);
+ background: white center center no-repeat;
+ opacity: 0;
+ .transition(all, 0.5s);
+ z-index: 10;
+ top: 175px;
+ .rounded_corners;
+ &:hover {
+ opacity: 0.6;
+ .transition(all, 0.5s);
+ }
+ .icon {
+ display: none;
+ }
+}
+#photo-prev-link {
+ // background-image: url(light/prev.png);
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAnCAMAAADTjiM/AAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAALpQTFRF////AAAAQEBAZmZmVVVVSUlJTU1NXV1dVVVVTk5OW1tbWlpaWFhPWFhQU1pTVVVVVlZSVVlRVlZTVFdUVFdUVVdTVFZSVldUVldSVldSVldTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVZUVVdTVVdTVVhSVVdTVVdTVVhSVVdTVVdTVVhSVVdTVVdTVVdTVVdTVVdTVVdTVVhTVVdTVVdTVVdTVVdT3XYY/AAAAD10Uk5TAAEEBQYHCgsMDQ4RHSAlP0FFR1hee3+JnqSqq6ytrq+wsbKztLW2t7y9vr/AwcLDxMXGx8jU1dng7O/3+TmOwVsAAADASURBVCjPddPXEoIwEAXQINh7Q8WKYu+95v9/S0dxZxNy83hgMpvdu0Jox642r25GVxGfys+5540sZV3jyY/lWeVxyDLg7AR/lhXOI+KZZeRFgvGQeMnY9olXScYD4jXnPvHGzNsU4x7xjnGsa+YO8T7NnukRHzgXiY/KNKiUkzqkZ8ivnDoKD/xfBvdbbXM9sH70Xtgf2E/YfzgvOF+YB5gf5cPcAfmsgTy3QP5vYF8akf36XvXIRhZPlPyLWxBvNENWsZXDKukAAAAASUVORK5CYII=");
+ left: 22%;
+}
#photo-next-link {
- &:hover {
- opacity: 1;
- -webkit-transition: all .2s ease-in-out;
- -moz-transition: all .2s ease-in-out;
- -o-transition: all .2s ease-in-out;
- -ms-transition: all .2s ease-in-out;
- transition: all .2s ease-in-out; }
- .icon {
- display: none; } }
-
-#photo-prev-link .icon {
- display: none; }
-
-#photos-upload-spacer, #photos-upload-new-wrapper, #photos-upload-exist-wrapper {
- margin-bottom: 1em; }
-
-#photos-upload-existing-album-text, #photos-upload-newalbum-div {
- background-color: #555753;
- color: #eeeeec;
- padding: 1px; }
-
-#photos-upload-album-select, #photos-upload-newalbum {
- width: 99%; }
-
+ // background-image: url(light/next.png);
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAnCAMAAADTjiM/AAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAKVQTFRF////gICAQEBAZmZmVVVVSUlJYGBgVVVVTU1NXV1dVVVVWVlZU1hTVlZSVlZTVlZTVVlRVVhSVFdUVlhTVVdTVFZTVVdTVldTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVZUVVdTVVdTVVhSVVdTVVdTVVdTVVdTVVdTVVdTVVdTVVdTVVdT8E3YQQAAADZ0Uk5TAAIEBQYHCAkKCwwUN0FER0hOW2uNjqWqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCxcjT3PP3B0dhfwAAANlJREFUKM910+cSgjAQRtEIomAXu4iIYge7ef9Hs+ZzN4b9eW4mk1kGIaqdU9wQf2Nf5XPSiu4d+Z6jp/n54/KghZ40h5ZymbFQGCCkLg3WKC+MEfYs2AHCrszCBGHLQ5gXpggbFooRwrrEwgxhxUOcE5w5wtJiYYHQZjt0EuUhX3r19vU7Y++ozgeMD7i/buYhYTcDj8gz3RQ8prwHB/aPyzvwhPLWzBtwSLi0Bk8pr8BR0cgzwiIycw0cUxZ9xXOH7VZ9vAVn4X840Vh4F9Pp1w/gZ92mpesDuLpM+1blc68AAAAASUVORK5CYII=");
+ left: 44%;
+}
+#photo-prev-link a,
+#photo-next-link a {
+ display: block;
+ .box(100%, 100%);
+ .rounded_corners;
+ overflow: hidden;
+ text-indent: -900000px;
+}
+#photos-upload-spacer,
+#photos-upload-new-wrapper,
+#photos-upload-exist-wrapper {
+ margin-bottom: 1em;
+}
+#photos-upload-existing-album-text,
+#photos-upload-newalbum-div {
+ background-color: @menu_bg_colour;
+ color: @bg_colour;
+ padding: 1px;
+}
+#photos-upload-album-select,
+#photos-upload-newalbum {
+ width: 99%;
+}
#photos-upload-perms-menu {
- text-align: right; }
-
-#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname {
- float: left;
- margin-bottom: 25px; }
-
+ text-align: right;
+}
+#photo-edit-caption,
+#photo-edit-newtag,
+#photo-edit-albumname {
+ float: left;
+ margin-bottom: 25px;
+}
#photo-edit-link-wrap {
- margin-bottom: 15px; }
-
-#photo-edit-caption, #photo-edit-newtag {
- width: 100%; }
-
+ margin-bottom: 15px;
+}
+#photo-edit-caption,
+#photo-edit-newtag {
+ width: 100%;
+}
#photo-like-div {
- margin-bottom: 25px; }
-
-#photo-edit-caption-end, #photo-edit-tags-end, #photo-edit-albumname-end {
- clear: both; }
-
+ margin-bottom: 25px;
+}
#photo-edit-delete-button {
- margin-left: 200px; }
-
+ margin-left: 200px;
+}
#photo-edit-end {
- margin-bottom: 35px; }
-
+ margin-bottom: 35px;
+}
#photo-caption {
- font-size: 110%;
- font-weight: bold;
- margin-top: 15px;
- margin-bottom: 15px; }
+ font-size: 110%;
+ font-weight: bold;
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+
/**
* message
*/
-
.prvmail-text {
- width: 100%; }
-
+ width: 100%;
+}
#prvmail-subject {
- width: 100%;
- color: #eec;
- background: #444; }
-
+ width: 100%;
+ color: @bg_colour;
+ background: @main_colour;
+}
#prvmail-submit-wrapper {
- margin-top: 10px; }
-
+ margin-top: 10px;
+}
#prvmail-submit {
- float: right;
- margin-top: 0; }
-
+ float: right;
+ margin-top: 0;
+}
#prvmail-submit-wrapper div {
- margin-right: 5px;
- float: left; }
-
+ margin-right: 5px;
+ float: left;
+}
.mail-list-outside-wrapper {
- margin-top: 20px; }
-
+ margin-top: 20px;
+}
.mail-list-sender {
- float: left; }
-
+ float: left;
+}
.mail-list-detail {
- margin-left: 90px; }
-
+ margin-left: 90px;
+}
.mail-list-sender-name {
- display: inline;
- font-size: 1.1em; }
-
+ display: inline;
+ font-size: 1.1em;
+}
.mail-list-date {
- display: inline;
- font-size: 0.9em;
- padding-left: 10px; }
-
-.mail-list-sender-name, .mail-list-date {
- font-style: italic; }
-
+ display: inline;
+ font-size: 0.9em;
+ padding-left: 10px;
+}
+.mail-list-sender-name,
+.mail-list-date {
+ font-style: italic;
+}
.mail-list-subject {
- font-size: 1.2em; }
-
+ font-size: 1.2em;
+}
.mail-list-delete-wrapper {
- float: right; }
-
+ float: right;
+}
.mail-list-outside-wrapper-end {
- clear: both;
- border-bottom: 1px #eec dotted; }
-
+ clear: both;
+ border-bottom: 1px @main_colour dotted;
+}
.mail-conv-sender {
- float: left;
- margin: 0px 5px 5px 0px; }
-
+ float: left;
+ margin: 0px 5px 5px 0px;
+}
.mail-conv-sender-photo {
- width: 32px;
- height: 32px; }
-
+ .box(32px, 32px)
+}
.mail-conv-sender-name {
- float: left; }
-
+ float: left;
+}
.mail-conv-date {
- float: right; }
-
+ float: right;
+}
.mail-conv-subject {
- clear: right;
- font-weight: bold;
- font-size: 1.2em; }
-
+ clear: right;
+ font-weight: bold;
+ font-size: 1.2em;
+}
.mail-conv-body {
- clear: both; }
-
+ clear: both;
+}
.mail-conv-delete-wrapper {
- margin-top: 5px; }
+ margin-top: 5px;
+}
+
/**
* contacts
*/
-
-.view-contact-wrapper, .contact-entry-wrapper {
- float: left;
- margin: 0 5px 40px 0;
- width: 120px;
- height: 120px;
- padding: 3px;
- position: relative; }
-
+.view-contact-wrapper,
+.contact-entry-wrapper {
+ float: left;
+ margin: 0 5px 40px 0;
+ .box(120px, 135px);
+ padding: 3px;
+ position: relative;
+}
.contact-direction-wrapper {
- position: absolute;
- top: 20px; }
-
+ position: absolute;
+ top: 20px;
+}
.contact-edit-links {
- position: absolute;
- top: 60px; }
-
+ position: absolute;
+ top: 60px;
+}
.contact-entry-photo-wrapper {}
-
.contact-entry-photo {
- margin-left: 20px; }
-
+ margin-left: 20px;
+}
.contact-entry-name {
- width: 120px;
- font-weight: bold;
- /*overflow: hidden;*/ }
-
+ width: 120px;
+ font-weight: bold;
+ font-size: small;
+}
+.contact-entry-details {
+ font-size: x-small;
+}
.contact-entry-photo {
- position: relative; }
-
+ position: relative;
+}
.contact-entry-edit-links .icon {
- border: 1px solid #babdb6;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
- background-color: #fff; }
-
-#contact-entry-url, [id^="contact-entry-url"] {
- font-size: smaller;
- /*overflow: scroll;*/ }
-
-#contact-entry-network, [id^="contact-entry-network"] {
- font-size: smaller;
- font-style: italic; }
-
+ .borders(1px, solid, #babdb6);
+ .rounded_corners(3px);
+ background-color: white;
+}
+#contact-entry-url,
+[id^="contact-entry-url"],
+#contact-entry-network,
+[id^="contact-entry-network"] {
+ font-size: smaller;
+}
+#contact-entry-network,
+[id^="contact-entry-network"] {
+ font-style: italic;
+}
#contact-edit-banner-name {
- font-size: 1.5em; }
+ font-size: 1.5em;
+}
#contact-edit-photo-wrapper {
- position: relative;
- float: left;
- padding: 20px; }
-
+ position: relative;
+ float: left;
+ padding: 20px;
+}
#contact-edit-direction-icon {
- position: absolute;
- top: 60px;
- left: 0; }
-
+ position: absolute;
+ top: 60px;
+ left: 0;
+}
#contact-edit-nav-wrapper {
- margin-left: 0px; }
-
+ margin-left: 0px;
+}
#contact-edit-links {
- margin-top: 23px;
- ul {
- list-style-type: none; } }
-
+ margin-top: 23px;
+}
#contact-drop-links {
- margin-left: 5px; }
-
+ margin-left: 5px;
+}
#contact-edit-nav-wrapper .icon {
- border: 1px solid #babdb6;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px; }
-
+ .borders(1px, solid, #babdb6);
+ .rounded_corners(3px);
+}
#contact-edit-poll-wrapper {
- margin-left: 0px; }
-
+ margin-left: 0px;
+}
#contact-edit-last-update-text {
- margin-bottom: 15px; }
-
+ margin-bottom: 15px;
+}
#contact-edit-last-updated {
- font-weight: bold; }
-
+ font-weight: bold;
+}
#contact-edit-poll-text {
- display: inline; }
-
-#contact-edit-info_tbl, #contact-edit-info_parent, .mceLayout {
- width: 100%; }
-
+ display: inline;
+}
+#contact-edit-info_tbl,
+#contact-edit-info_parent,
+.mceLayout {
+ width: 100%;
+}
#contact-edit-end {
- clear: both;
- margin-bottom: 65px; }
-
+ clear: both;
+ margin-bottom: 65px;
+}
.contact-photo-menu-button {
- position: absolute;
- background-image: url("light/photo-menu.jpg");
- background-position: top left;
- background-repeat: no-repeat;
- margin: 0px;
- padding: 0px;
- width: 16px;
- height: 16px;
- top: 64px;
- left: 0px;
- overflow: hidden;
- text-indent: 40px;
- display: none; }
-
+ position: absolute;
+ background: url("light/photo-menu.jpg") top left no-repeat transparent;
+ margin: 0px;
+ padding: 0px;
+ .box(16px, 16px);
+ top: 64px;
+ left: 0px;
+ overflow: hidden;
+ text-indent: 40px;
+ display: none;
+}
.contact-photo-menu {
- width: auto;
- border: 2px solid #444;
- background: #eee;
- color: #111;
- position: absolute;
- left: 0px;
- top: 90px;
- display: none;
- z-index: 10000;
- ul {
- margin: 0px;
- padding: 0px;
- list-style: none; }
- li a {
- display: block;
- padding: 2px;
- &:hover {
- color: #fff;
- background: #3465A4;
- text-decoration: none; } } }
+ width: auto;
+ .borders(2px, solid, darken(@main_alt_colour, 33.5%));
+ background: @bg_colour;
+ color: @main_colour;
+ position: absolute;
+ left: 0px;
+ top: 90px;
+ display: none;
+ z-index: 10000;
+ li a {
+ display: block;
+ padding: 2px;
+ &:hover {
+ color: white;
+ background: #3465A4;
+ text-decoration: none;
+ }
+ }
+}
+
/**
* register, settings & profile forms
*/
-
.openid {}
-
#id_openid_url {
- background: url(light/login-bg.gif) no-repeat;
- background-position: 0 50%;
- padding-left: 18px; }
-
-#settings-nickname-desc {
- background-color: #eee;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- padding: 5px;
- color: #111; }
-
+ background: url(light/login-bg.gif) no-repeat;
+ background-position: 0 50%;
+ padding-left: 18px;
+}
#settings-default-perms {
- margin-bottom: 20px; }
-
+ margin-bottom: 20px;
+}
#register-form div, #profile-edit-form div {
- clear: both; }
-
+ clear: both;
+}
.settings-block {
- label {
- clear: left; }
- input {
- margin: 10px 5px; } }
-
-/*#register-form label, */
-/*#profile-edit-form label {*/
-/* width: 300px; */
-/* float: left; */
-/*} */
-
-/*#register-form span, */
-/*#profile-edit-form span {*/
-/* color: #555753; */
-/* display: block; */
-/* margin-bottom: 20px; */
-/*} */
-
+ label {
+ clear: left;
+ }
+ input {
+ margin: 10px 5px;
+ }
+}
+#register-form label,
+#profile-edit-form label {
+ width: 300px;
+ float: left;
+}
+#register-form span,
+#profile-edit-form span {
+ color: @menu_bg_colour;
+ display: block;
+ margin-bottom: 20px;
+}
#profile-edit-marital-label span {
- margin: -4px; }
-
-.settings-submit-wrapper, .profile-edit-submit-wrapper {
- margin: 0 0 30px -3px; }
-
+ margin: -4px;
+}
+.settings-submit-wrapper,
+.profile-edit-submit-wrapper {
+ margin: 0 0 30px;
+}
.profile-edit-side-div {
- display: none; }
-
+ display: none;
+}
/*.profile-edit-side-div:hover {
display: block;
}
.profile-edit-side-link {
margin: 3px 0px 0px 70px;
}*/
-
#profiles-menu-trigger {
- margin: 0px 0px 0px 25px; }
-
+ margin: 0px 0px 0px 25px;
+}
.profile-listing {
- float: left;
- margin: 20px 20px 0px 0px; }
-
+ float: left;
+ margin: 20px 20px 0px 0px;
+}
.icon-profile-edit {
- background: url("light/icons.png") -150px 0px no-repeat;
- border: 0;
- cursor: pointer;
- display: block;
- float: right;
- width: 20px;
- height: 20px;
- margin: 0 0 -18px;
- position: absolute;
- text-decoration: none;
- top: 113px;
- right: 260px; }
-
+ background: url("light/icons.png") -150px 0px no-repeat;
+ border: 0;
+ cursor: pointer;
+ display: block;
+ .box(20px, 20px);
+ margin: 0 0 -18px;
+ text-decoration: none;
+ top: 113px;
+ right: 260px;
+}
#profile-edit-links ul {
- margin: 20px 0;
- padding: 0;
- list-style: none; }
-
+ .list_reset;
+ margin: 20px 0;
+}
.marital {
- margin-top: 5px; }
-
+ margin-top: 5px;
+}
#register-sitename {
- display: inline;
- font-weight: bold; }
-
+ display: inline;
+ font-weight: bold;
+}
#advanced-expire-popup {
- background: #2e2f2e;
- color: #eec; }
-
+ background: @main_colour;
+ color: @bg_colour;
+}
#id_ssl_policy {
- width: 374px; }
-
+ width: 374px;
+}
#theme-preview img {
- margin: 10px 10px 10px 288px; }
+ margin: 10px 10px 10px 288px;
+}
+
/**
* contacts selector
*/
-
.group-delete-wrapper {
- margin: -31px 50px 0 0;
- float: right; }
-
+ margin: -31px 50px 0 0;
+ float: right;
+}
/*.group-delete-icon {
margin: 0 0 0 10px;
}*/
-
#group-edit-submit-wrapper {
- margin: 0 0 10px 0;
- display: inline; }
-
-#group-edit-desc {
- margin: 10px 0px; }
-
+ margin: 0 0 10px 0;
+ display: inline;
+}
#group-members, #prof-members {
- height: 200px;
- overflow: auto;
- border: 1px solid #555753;
- -webkit-border-radius: 5px 5px 0 0;
- -moz-border-radius: 5px 5px 0 0;
- border-radius: 5px 5px 0 0; }
-
+ height: 200px;
+ overflow: auto;
+ .borders(1px, solid, @menu_bg_colour);
+ .rounded_corners(5px 5px 0 0);
+}
#group-all-contacts, #prof-all-contacts {
- height: 200px;
- overflow: auto;
- border: 1px solid #555753;
- -webkit-border-radius: 0 0 5px 5px;
- -moz-border-radius: 0 0 5px 5px;
- border-radius: 0 0 5px 5px; }
-
-#group-members h3, #group-all-contacts h3, #prof-members h3, #prof-all-contacts h3 {
- color: #eeeeec;
- background-color: #555753;
- margin: 0;
- padding: 5px; }
-
+ height: 200px;
+ overflow: auto;
+ .borders(1px, solid, @menu_bg_colour);
+ .rounded_corners(0 0 5px 5px);
+}
+#group-members h3,
+#group-all-contacts h3,
+#prof-members h3,
+#prof-all-contacts h3 {
+ color: @bg_colour;
+ background-color: @menu_bg_colour;
+ margin: 0;
+ padding: 5px;
+}
#group-separator, #prof-separator {
- display: none; }
+ display: none;
+}
+
/**
* profile
*/
-
#cropimage-wrapper {
- float: left; }
-
+ float: left;
+}
#crop-image-form {
- clear: both; }
+ clear: both;
+}
+
/**
* intros
*/
-
.intro-wrapper {
- margin-top: 20px; }
-
+ margin-top: 20px;
+}
.intro-fullname {
- font-size: 1.1em;
- font-weight: bold; }
-
-.intro-desc {
- margin-bottom: 20px;
- font-weight: bold; }
-
+ font-size: 1.1em;
+ font-weight: bold;
+}
.intro-note {
- padding: 10px; }
-
+ padding: 10px;
+}
.intro-end {
- padding: 30px; }
-
+ padding: 30px;
+}
.intro-form {
- float: left; }
-
-.intro-approve-form, .intro-approve-as-friend-end {
- clear: both; }
-
-.intro-submit-approve, .intro-submit-ignore {
- margin-right: 20px; }
-
+ float: left;
+}
+.intro-approve-form {
+ clear: both;
+}
+.intro-submit-approve,
+.intro-submit-ignore {
+ margin-right: 20px;
+}
.intro-submit-approve {
- margin-top: 15px; }
-
-.intro-approve-as-friend-label, .intro-approve-as-fan-label, .intro-approve-as-friend, .intro-approve-as-fan {
- float: left; }
-
+ margin-top: 15px;
+}
+.intro-approve-as-friend-label,
+.intro-approve-as-fan-label,
+.intro-approve-as-friend,
+.intro-approve-as-fan {
+ float: left;
+}
.intro-form-end {
- clear: both;
- margin-bottom: 10px; }
-
-.intro-approve-as-friend-desc {
- margin-top: 10px; }
-
+ clear: both;
+ margin-bottom: 10px;
+}
.intro-approve-as-end {
- clear: both;
- margin-bottom: 10px; }
+ clear: both;
+ margin-bottom: 10px;
+}
+.clear {
+ clear: both;
+}
-.intro-end, .clear {
- clear: both; }
/**
* events
*/
-
.eventcal {
- float: left;
- font-size: 20px; }
-
+ float: left;
+ font-size: 20px;
+}
.event {
- background: #2e2f2e; }
-
+ background: @bg_colour;
+}
.vevent {
- border: 1px solid #ccc;
- .event-description, .event-location, .event-start {
- margin-left: 10px;
- margin-right: 10px; } }
-
+ border: 1px solid @bg_colour;
+ .event-description,
+ .event-location,
+ .event-start {
+ margin-left: 10px;
+ margin-right: 10px;
+ }
+}
#new-event-link {
- margin-bottom: 10px; }
-
-.edit-event-link, .plink-event-link {
+ margin-bottom: 10px;
+}
+.edit-event-link,
+.plink-event-link {
/*float: left; */
/*margin-top: 4px; */
/*margin-right: 4px;*/
- /*margin-bottom: 15px;*/ }
-
+ /*margin-bottom: 15px;*/
+}
.event-description:before {
- content: url('../../../images/calendar.png');
- margin-right: 15px; }
-
-.event-start, .event-end {
- margin-left: 10px;
- width: 330px;
- font-size: smaller; }
-
-.event-start .dtstart, .event-end .dtend {
- float: right; }
-
+ content: url('../../../images/calendar.png');
+ margin-right: 15px;
+}
+.event-start,
+.event-end {
+ margin-left: 10px;
+ width: 330px;
+ font-size: smaller;
+}
+.event-start .dtstart,
+.event-end .dtend {
+ float: right;
+}
.event-list-date {
- margin-bottom: 10px; }
-
+ margin-bottom: 10px;
+}
.prevcal, .nextcal {
- float: left;
- margin-left: 32px;
- margin-right: 32px;
- margin-top: 64px; }
-
-.event-calendar-end {
- clear: both; }
-
+ float: left;
+ margin: 64px 32px auto 32px;
+}
.calendar {
- font-family: monospace; }
-
+ font-family: monospace;
+}
.today {
- font-weight: bold;
- color: #FF0000; }
-
-#event-start-text, #event-finish-text {
- margin-top: 10px;
- margin-bottom: 5px; }
-
-#event-nofinish-checkbox, #event-nofinish-text, #event-adjust-checkbox, #event-adjust-text, #event-share-checkbox {
- float: left; }
-
+ font-weight: bold;
+ color: red;
+}
+#event-start-text,
+#event-finish-text {
+ margin-top: 10px;
+ margin-bottom: 5px;
+}
+#event-nofinish-checkbox,
+#event-nofinish-text,
+#event-adjust-checkbox,
+#event-adjust-text,
+#event-share-checkbox {
+ float: left;
+}
#event-datetime-break {
- margin-bottom: 10px; }
-
-#event-nofinish-break, #event-adjust-break, #event-share-break {
- clear: both; }
-
-#event-desc-text, #event-location-text {
- margin-top: 10px;
- margin-bottom: 5px; }
-
+ margin-bottom: 10px;
+}
+#event-nofinish-break,
+#event-adjust-break,
+#event-share-break {
+ clear: both;
+}
+#event-desc-text,
+#event-location-text {
+ margin-top: 10px;
+ margin-bottom: 5px;
+}
#event-submit {
- margin-top: 10px; }
-
+ margin-top: 10px;
+}
.body-tag {
- margin: 10px 0;
- opacity: 0.5;
- &:hover {
- opacity: 1.0 !important; } }
-
-.filesavetags, .categorytags {
- margin: 20px 0;
- opacity: 0.5; }
-
-.filesavetags:hover, .categorytags:hover {
- margin: 20px 0;
- opacity: 1.0 !important; }
-
+ margin: 10px 0;
+ opacity: 0.5;
+ &:hover {
+ opacity: 1.0 !important;
+ }
+}
+.filesavetags,
+.categorytags {
+ margin: 20px 0;
+ opacity: 0.5;
+}
+.filesavetags:hover,
+.categorytags:hover {
+ margin: 20px 0;
+ opacity: 1.0 !important;
+}
.item-select {
- opacity: 0.1;
- margin: 5px 0 0 6px !important;
- &:hover {
- opacity: 1; } }
-
+ opacity: 0.1;
+ margin: 5px 0 0 6px !important;
+ &:hover {
+ opacity: 1;
+ }
+}
.checkeditem {
- opacity: 1; }
-
+ opacity: 1;
+}
#item-delete-selected {
- margin-top: 30px; }
-
+ margin-top: 30px;
+}
/* was tired of having no way of moving it around, so
* here's a little 'hook' to do so */
-
.delete-checked {
- position: absolute;
- left: 35px;
- margin-top: 20px; }
-
-#item-delete-selected-end {
- clear: both; }
-
+ position: absolute;
+ left: 35px;
+ margin-top: 20px;
+}
#item-delete-selected-icon {
- float: left;
- margin-right: 5px; }
-
-#item-delete-selected-desc {
- float: left;
- margin-right: 5px;
- &:hover {
- text-decoration: underline; } }
-
+ float: left;
+ margin-right: 5px;
+}
.fc-state-highlight {
- background: #eec;
- color: #2e2f2e; }
+ background: @bg_colour;
+ color: @main_colour;
+}
+
/**
* directory
*/
-
.directory-item {
- float: left;
- margin: 0 5px 4px 0;
- padding: 3px;
- width: 180px;
- height: 250px;
- position: relative; }
+ float: left;
+ margin: 0 5px 4px 0;
+ padding: 3px;
+ width: 180px;
+ height: 250px;
+ position: relative;
+}
+
/**
* sidebar
*/
-
#group-sidebar {
- margin-bottom: 10px; }
-
-.group-selected, .nets-selected, .fileas-selected {
- padding: 3px;
- color: #111;
- background: #f8f8f8;
- font-weight: bold; }
-
-.group-selected:hover, .nets-selected:hover, .fileas-selected:hover {
- color: #111; }
-
+ margin-bottom: 10px;
+}
+.group-selected,
+.nets-selected,
+.fileas-selected {
+ padding: 3px;
+ color: @bg_colour;
+ background: @dk_bg_colour;
+ .borders(1px, solid, @link_colour);
+}
+.group-selected:hover,
+.nets-selected:hover,
+.fileas-selected:hover {
+ padding: 3px;
+ color: @link_colour;
+ background: @bg_colour;
+ .borders(1px, solid, @link_colour);
+}
.groupsideedit {
- margin-right: 10px; }
-
+ margin-right: 10px;
+}
#sidebar-group-ul {
- padding-left: 0; }
-
+ padding-left: 0;
+}
#sidebar-group-list {
- margin: 0 0 5px 0;
- ul {
- list-style-type: none;
- list-style-position: inside; }
- li {
- margin-top: 10px; }
- .icon {
- display: inline-block;
- height: 12px;
- width: 12px; } }
-
+ margin: 0 0 5px 0;
+ li {
+ margin-top: 10px;
+ }
+ .icon {
+ display: inline-block;
+ .box(12px, 12px);
+ }
+}
+.sidebar-group-element {
+ padding: 3px;
+ &:hover {
+ color: @main_colour;
+ background: @shiny_colour;
+ .borders(1px, solid, @hover_colour);
+ padding: 3px;
+ }
+}
#sidebar-new-group {
- margin: auto;
- display: inline-block;
- color: #efefef;
- text-decoration: none;
- text-align: center; }
-
+ margin: auto;
+ display: inline-block;
+ color: @bg_colour;
+ text-decoration: none;
+ text-align: center;
+}
#peoplefind-sidebar form {
- margin-bottom: 10px; }
-
+ margin-bottom: 10px;
+}
#sidebar-new-group {
- &:hover {
- /*background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b20202), color-stop(1, #d60808) );*/
- /*background: -moz-linear-gradient( center top, #b20202 5%, #d60808 100% );*/
- /*background-color: #b20202;*/ }
- &:active {
- position: relative;
- top: 1px; } }
-
+ &:hover {
+ /*background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b20202), color-stop(1, #d60808) );*/
+ /*background: -moz-linear-gradient( center top, #b20202 5%, #d60808 100% );*/
+ /*background-color: #b20202;*/
+ }
+ &:active {
+ position: relative;
+ top: 1px;
+ }
+}
#side-peoplefind-url {
- background-color: #e5e0cf;
- color: #666;
- border: 1px #666 solid;
- margin-right: 3px;
- width: 75%;
- &:hover, &:focus {
- background-color: #efefef;
- color: #222;
- border: 1px 333 solid; } }
-
+ background-color: @bg_colour;
+ color: darken(@main_alt_colour, 20%);
+ .borders(1px, solid, darken(@main_alt_colour, 20%));
+ margin-right: 3px;
+ width: 75%;
+ &:hover,
+ &:focus {
+ background-color: @main_alt_colour;
+ color: @bg_colour;
+ .borders(1px, solid, @main_colour);
+ }
+}
.nets-ul {
- list-style-type: none;
- padding-left: 0px;
- li {
- margin: 10px 0 0; } }
-
-.nets-link, .nets-all {
- margin-left: 0px; }
-
+ .list_reset;
+ li {
+ margin: 10px 0 0;
+ }
+}
+.nets-link,
+.nets-all {
+ margin-left: 0px;
+}
#netsearch-box {
margin: 20px 0px 30px;
width: 135px;
@@ -2225,701 +2408,740 @@ div {
}
}
+
/**
* admin
*/
-
#pending-update {
- float: right;
- color: #fff;
- font-weight: bold;
- background-color: #ff0000;
- padding: 0 .3em; }
-
+ float: right;
+ color: white;
+ font-weight: bold;
+ background-color: red;
+ padding: 0 0.3em;
+}
.admin {
- &.linklist {
- border: 0;
- padding: 0; }
- &.link {
- list-style-position: inside; } }
-
+ &.linklist {
+ border: 0;
+ padding: 0;
+ }
+ &.link {
+ .list_reset;
+ }
+}
#adminpage {
- color: #111;
- background: transparent;
- margin: 5px;
- padding: 10px;
- dl {
- clear: left;
- margin-bottom: 2px;
- padding-bottom: 2px;
- border-bottom: 1px solid #000; }
- dt {
- width: 250px;
- float: left;
- font-weight: bold; }
- dd {
- margin-left: 250px; }
- h3 {
- border-bottom: 1px solid #ccc; }
- .submit {
- clear: left; }
- #pluginslist {
- margin: 0;
- padding: 0; }
- .plugin {
- list-style: none;
- display: block;
- border: 1px solid #888;
- padding: 1em;
- margin-bottom: 5px;
- clear: left; }
- .toggleplugin {
- float: left;
- margin-right: 1em; }
- table {
- width: 100%;
- border-bottom: 1px solid #000;
- margin: 5px 0;
- th {
- text-align: left; } }
- td .icon {
- float: left; }
- table {
- &#users img {
- width: 16px;
- height: 16px; }
- tr:hover {
- /*color: ;*/
- background-color: #bbc7d7; } }
- .selectall {
- text-align: right; }
- #users a {
- /*color: #;*/
- text-decoration: underline; } }
-
+ color: @main_colour;
+ background: @bg_colour;
+ margin: 5px;
+ padding: 10px;
+ font-size: smaller;
+ dl {
+ clear: left;
+ margin-bottom: 2px;
+ padding-bottom: 2px;
+ border-bottom: 1px solid @shadow_colour;
+ }
+ dt {
+ width: 250px;
+ float: left;
+ font-weight: bold;
+ }
+ dd {
+ margin-left: 250px;
+ }
+ h3 {
+ border-bottom: 1px solid lighten(@main_alt_colour, 20%);
+ }
+ .submit {
+ clear: left;
+ }
+ #pluginslist {
+ margin: 0;
+ padding: 0;
+ }
+ .plugin {
+ display: block;
+ .borders(1px, solid, darken(@main_alt_colour, 6.5%));
+ padding: 1em;
+ margin-bottom: 5px;
+ clear: left;
+ }
+ .toggleplugin {
+ float: left;
+ margin-right: 1em;
+ }
+ table {
+ width: 100%;
+ border-bottom: 1px solid @shadow_colour;
+ margin: 5px 0;
+ th {
+ font-weight: bold;
+ text-align: left;
+ }
+ td {
+ padding: 5px;
+ vertical-align: middle;
+ }
+ &#users {
+ padding: 5px;
+ img {
+ .box(16px, 16px);
+ }
+ a {
+ color: @main_colour;
+ text-decoration: underline;
+ }
+ }
+ }
+ td .icon {
+ float: left;
+ }
+ .selectall {
+ text-align: right;
+ }
+}
#users .name {
- color: #eec; }
+ color: @main_colour;
+}
+#users .tools {
+ padding: 5px 0;
+ vertical-align: middle;
+}
+
/**
* form fields
*/
-
.field {
- /*margin-bottom: 10px;*/
- /*padding-bottom: 10px;*/
- overflow: auto;
- /* width: 100%;*/
- label {
- width: 38%;
- display: inline-block;
- font-size: 1.077em;
- margin: 0 10px 1em 0;
- border: 1px #999 solid;
- padding: 5px;
- background: #ccc;
- color: #111; } }
-
+ overflow: auto;
+}
.field .onoff {
- float: right;
- margin: 0 330px 0 auto;
- width: 80px;
- a {
- display: block;
- border: 1px solid #666;
- padding: 3px 6px 4px 10px;
- height: 16px;
- text-decoration: none; }
- .on {
- background: url("../../../images/onoff.jpg") no-repeat 42px 1px #999999;
- color: #111;
- text-align: left; }
- .off {
- background: url("../../../images/onoff.jpg") no-repeat 2px 1px #cccccc;
- color: #333;
- text-align: right; } }
-
+ float: right;
+ margin: 0 330px 0 auto;
+ width: 80px;
+ a {
+ display: block;
+ .borders(1px, solid, darken(@main_alt_colour, 20%));
+ padding: 3px 6px 4px 10px;
+ height: 16px;
+ text-decoration: none;
+ }
+ .on, .off {
+ background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAUACIDASIAAhEBAxEB/8QAGgABAQACAwAAAAAAAAAAAAAAAAQDBQEGCf/EACgQAAIBAwIFAwUAAAAAAAAAAAECAAMEERIUBRMxUpEhIoEjM1Nxkv/EABcBAAMBAAAAAAAAAAAAAAAAAAABAgT/xAAaEQEAAgMBAAAAAAAAAAAAAAAAAQIRMVES/9oADAMBAAIRAxEAPwD1ERKFNFVaNNVUYACgACcNVt1dEKUwzZwNI9cSDczDVdnuKDjomrPyJOQ2SXNq/L0rTPMzp9vXHWZfo/jT+RNFQV6e2yPt6s/Ms3EWQofhnDqjszWFqzMcljRUknxEn3ES/dup8xxPZ0hXtKFViQzorEDpkiZtqvc3mIkzs40bVe5vMbVe5vMREbrN3xy4t7utSVaZVHZQSDnAP7iIm+K1xpkm09f/2Q==');
+ background-repeat: no-repeat;
+ }
+ .on {
+ background-position: 42px 1px;
+ background-color: darken(@main_alt_colour, 40%);
+ color: lighten(@main_alt_colour, 20%);
+ text-align: left;
+ }
+ .off {
+ background-position: 2px 1px;
+ background-color: lighten(@main_alt_colour, 20%);
+ color: darken(@main_alt_colour, 40%);
+ text-align: right;
+ }
+}
.hidden {
- display: none !important; }
-
+ display: none !important;
+}
.field textarea {
- width: 80%;
- height: 100px; }
-
+ .box(80%, 100px);
+}
.field_help {
- display: block;
- margin-left: 297px;
- color: #666; }
-
+ display: block;
+ margin-left: 297px;
+ color: darken(@main_alt_colour, 20%);
+ font-size: small;
+}
.field.radio .field_help {
- margin-left: 297px; }
-
-label {
- width: 38%;
- display: inline-block;
- font-size: 1.077em;
- margin: 0 10px 1em 0;
- border: 1px #999 solid;
- padding: 5px;
- background: #ccc;
- color: #111; }
-
-input {
- width: 250px;
- height: 25px;
- border: 1px #999 solid;
- &[type="text"], &[type="password"], &[type="search"] {
- width: 250px;
- height: 25px;
- border: 1px #999 solid; }
- &[type="checkbox"], &[type="radio"] {
- border: 1px #999 solid;
- margin: 0 0 0 0;
- height: 15px;
- width: 15px; }
- &[type="submit"], &[type="button"] {
- background-color: #555753;
- border: 2px outset #444;
- border-radius: 5px;
- box-shadow: 1px 3px 4px 0 #111;
- color: #eeeeec;
- cursor: pointer;
- font-weight: bold;
- width: auto;
- text-shadow: 1px 1px #111;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px; }
- &[type="submit"]:active, &[type="button"]:active {
- box-shadow: 0 0 0 0; } }
+ margin-left: 297px;
+}
/*
* update
*/
-
.popup {
- width: 100%;
- height: 100%;
- top: 0px;
- left: 0px;
- position: absolute;
- display: none;
- .background {
- background-color: #000;
- opacity: 0.5;
- width: 100%;
- height: 100%;
- position: absolute;
- top: 0px;
- left: 0px; }
- .panel {
- top: 25%;
- left: 25%;
- width: 50%;
- height: 50%;
- padding: 1em;
- position: absolute;
- border: 4px solid #000000;
- background-color: #FFFFFF; } }
-
+ .box(100%, 100%);
+ top: 0px;
+ left: 0px;
+ position: absolute;
+ display: none;
+ .background {
+ background-color: @main_colour;
+ opacity: 0.5;
+ .box(100%, 100%);
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ }
+ .panel {
+ top: 25%;
+ left: 25%;
+ .box(50%, 50%);
+ padding: 1em;
+ position: absolute;
+ .borders(4px, solid, black);
+ background-color: white;
+ }
+}
#panel {
- z-index: 100; }
-
-.grey {
- color: grey; }
-
+ position: absolute;
+ font-size: small;
+ .rounded_corners;
+ .borders(1px, solid, @bg_colour);
+ background-color: @dk_bg_colour;
+ color: @bg_colour;
+ padding: 1em;
+ z-index: 100;
+}
+.pager {
+ margin-top: 60px;
+ display: block;
+ clear: both;
+ text-align: center;
+ font-size: small;
+ font-weight: bold;
+ span {
+ padding: 4px;
+ margin: 4px;
+ }
+}
+.pager_current {
+ background-color: @link_colour;
+ color: @bg_colour;
+}
+.grey,
+.gray {
+ color: gray;
+}
.orange {
- color: orange; }
-
+ color: orange;
+}
.red {
- color: red; }
-
+ color: red;
+}
.popup .panel {
- .panel_text {
- display: block;
- overflow: auto;
- height: 80%; }
- .panel_in {
- width: 100%;
- height: 100%;
- position: relative; }
- .panel_actions {
- width: 100%;
- bottom: 4px;
- left: 0px;
- position: absolute; } }
-
+ .panel_text {
+ display: block;
+ overflow: auto;
+ height: 80%;
+ }
+ .panel_in {
+ .box(100%, 100%);
+ position: relative;
+ }
+ .panel_actions {
+ width: 100%;
+ bottom: 4px;
+ left: 0px;
+ position: absolute;
+ }
+}
.panel_text .progress {
- width: 50%;
- overflow: hidden;
- height: auto;
- border: 1px solid #cccccc;
- margin-bottom: 5px;
- span {
- float: right;
- display: block;
- width: 25%;
- background-color: #eeeeee;
- text-align: right; } }
+ width: 50%;
+ overflow: hidden;
+ height: auto;
+ .borders(1px, solid, lighten(@main_alt_colour, 20%));
+ margin-bottom: 5px;
+ span {
+ float: right;
+ display: block;
+ width: 25%;
+ background-color: @bg_colour;
+ text-align: right;
+ }
+}
+
/**
* OAuth
*/
-
.oauthapp {
- height: auto;
- overflow: auto;
- border-bottom: 2px solid #cccccc;
- padding-bottom: 1em;
- margin-bottom: 1em;
- img {
- float: left;
- width: 48px;
- height: 48px;
- margin: 10px;
- &.noicon {
- background-image: url("../../../images/icons/48/plugin.png");
- background-position: center center;
- background-repeat: no-repeat; } }
- a {
- float: left; } }
+ height: auto;
+ overflow: auto;
+ border-bottom: 2px solid lighten(@main_alt_colour, 20%);
+ padding-bottom: 1em;
+ margin-bottom: 1em;
+ img {
+ float: left;
+ .box(48px, 48px);
+ margin: 10px;
+ &.noicon {
+ background-image: url("../../../images/icons/48/plugin.png");
+ background-position: center center;
+ background-repeat: no-repeat;
+ }
+ }
+ a {
+ float: left;
+ }
+}
+
/**
* icons
*/
-
.iconspacer {
- display: block;
- width: 16px;
- height: 16px; }
-
+ display: block;
+ .box(16px, 16px);
+}
.icon {
- display: block;
- width: 20px;
- height: 20px;
- background: url(light/icons.png) no-repeat;
- border: 0;
- text-decoration: none;
- border-radius: 5px;
- &:hover {
- border: 0;
- text-decoration: none; } }
-
+ display: block;
+ .box;
+ background: transparent url("light/icons.png") no-repeat;
+ border: 0;
+ text-decoration: none;
+ .rounded_corners;
+ &:hover {
+ border: 0;
+ text-decoration: none;
+ }
+}
.editicon {
- display: inline-block;
- width: 21px;
- height: 21px;
- background: url(light/editicons.png) no-repeat;
- border: 0;
- text-decoration: none; }
-
+ display: inline-block;
+ .box(21px, 21px);
+ background: url("light/editicons.png") no-repeat;
+ border: 0;
+ text-decoration: none;
+}
.shadow {
- box-shadow: 2px 2px 5px 2px #111;
- &:active, &:focus, &:hover {
- box-shadow: 0 0 0 0; } }
-
+ .box_shadow(2px, 2px, 5px, 2px);
+ &:active, &:focus, &:hover {
+ .box_shadow(0, 0, 0, 0);
+ }
+}
.editicon:hover {
- border: 0; }
-
+ border: 0;
+}
.boldbb {
- background-position: 0px 0px;
- &:hover {
- background-position: -22px 0px; } }
-
+ background-position: 0px 0px;
+ &:hover {
+ background-position: -22px 0px; }
+}
.italicbb {
- background-position: 0px -22px;
- &:hover {
- background-position: -22px -22px; } }
-
+ background-position: 0px -22px;
+ &:hover {
+ background-position: -22px -22px; }
+}
.underlinebb {
- background-position: 0px -44px;
- &:hover {
- background-position: -22px -44px; } }
-
+ background-position: 0px -44px;
+ &:hover {
+ background-position: -22px -44px; }
+}
.quotebb {
- background-position: 0px -66px;
- &:hover {
- background-position: -22px -66px; } }
-
+ background-position: 0px -66px;
+ &:hover {
+ background-position: -22px -66px; }
+}
.codebb {
- background-position: 0px -88px;
- &:hover {
- background-position: -22px -88px; } }
-
+ background-position: 0px -88px;
+ &:hover {
+ background-position: -22px -88px; }
+}
.imagebb {
- background-position: -44px 0px;
- &:hover {
- background-position: -66px 0px; } }
-
+ background-position: -44px 0px;
+ &:hover {
+ background-position: -66px 0px; }
+}
.urlbb {
- background-position: -44px -22px;
- &:hover {
- background-position: -66px -22px; } }
-
+ background-position: -44px -22px;
+ &:hover {
+ background-position: -66px -22px; }
+}
.videobb {
- background-position: -44px -44px;
- &:hover {
- background-position: -66px -44px; } }
-
+ background-position: -44px -44px;
+ &:hover {
+ background-position: -66px -44px; }
+}
.icon {
- &.drop, &.drophide, &.delete {
- float: left;
- margin: 0 2px; }
- &.s22 {
- &.delete {
- display: block;
- background-position: -110px 0; }
- &.text {
- padding: 10px 0px 0px 25px;
- width: 200px; } }
- &.text {
- text-indent: 0px; }
- &.s16 {
- min-width: 16px;
- height: 16px; } }
-
+ &.drop, &.drophide, &.delete {
+ float: left;
+ margin: 0 2px;
+ }
+ &.s22 {
+ &.delete {
+ display: block;
+ background-position: -110px 0;
+ }
+ &.text {
+ padding: 10px 0px 0px 25px;
+ width: 200px;
+ }
+ }
+ &.text {
+ text-indent: 0px;
+ }
+ &.s16 {
+ min-width: 16px;
+ height: 16px;
+ }
+}
+// special case for wall items
+.wall-item-delete-wrapper.icon.delete,
+.wall-item-delete-wrapper.icon.drophide {
+ margin: 0;
+}
.s16 .add {
- background: url("../../../images/icons/16/add.png") no-repeat; }
-
+ background: url("../../../images/icons/16/add.png") no-repeat;
+}
.add {
- margin: 0px 5px; }
-
+ margin: 0px 5px;
+}
.article {
- background-position: -50px 0; }
-
+ background-position: -50px 0;
+}
.audio {
- background-position: -70px 0; }
-
+ background-position: -70px 0;
+}
.block {
- background-position: -90px 0px; }
-
+ background-position: -90px 0px;
+}
.drop, .delete {
- background-position: -110px 0; }
-
+ background-position: -110px 0;
+}
.drophide {
- background-position: -130px 0; }
-
+ background-position: -130px 0;
+}
.edit {
- background-position: -150px 0; }
-
+ background-position: -150px 0;
+}
.camera {
- background-position: -170px 0; }
-
+ background-position: -170px 0;
+}
.dislike {
- background-position: -190px 0; }
-
+ background-position: -190px 0;
+}
.file-as {
- background-position: -230px -60px; }
-
+ background-position: -230px -60px;
+}
.like {
- background-position: -211px 0; }
-
+ background-position: -211px 0;
+}
.link {
- background-position: -230px 0; }
-
-.globe, .location {
- background-position: -50px -20px; }
-
-.noglobe, .nolocation {
- background-position: -70px -20px; }
-
+ background-position: -230px 0;
+}
+.globe,
+.location {
+ background-position: -50px -20px;
+}
+.noglobe,
+.nolocation {
+ background-position: -70px -20px;
+}
.no {
- background-position: -90px -20px; }
-
+ background-position: -90px -20px;
+}
.pause {
- background-position: -110px -20px; }
-
+ background-position: -110px -20px;
+}
.play {
- background-position: -130px -20px; }
-
+ background-position: -130px -20px;
+}
.pencil {
- background-position: -151px -18px; }
-
+ background-position: -151px -18px;
+}
.small-pencil {
- background-position: -170px -20px; }
-
+ background-position: -170px -20px;
+}
.recycle {
- background-position: -190px -20px; }
-
+ background-position: -190px -20px;
+}
.remote-link {
- background-position: -210px -20px; }
-
+ background-position: -210px -20px;
+}
.share {
- background-position: -230px -20px; }
-
+ background-position: -230px -20px;
+}
.tools {
- background-position: -50px -40px; }
-
+ background-position: -50px -40px;
+}
.lock {
- background-position: -70px -40px; }
-
+ background-position: -70px -40px;
+}
.unlock {
- background-position: -88px -40px; }
-
+ background-position: -88px -40px;
+}
.video {
- background-position: -110px -40px; }
-
+ background-position: -110px -40px;
+}
.attach {
- background-position: -190px -40px; }
-
+ background-position: -191px -40px;
+}
.language {
- background-position: -210px -40px; }
-
+ background-position: -210px -40px;
+}
.starred {
- background-position: -130px -60px; }
-
+ background-position: -130px -60px;
+}
.unstarred {
- background-position: -150px -60px; }
-
+ background-position: -150px -60px;
+}
.tagged {
- background-position: -170px -60px; }
-
+ background-position: -170px -60px;
+}
.on {
- background-position: -50px -60px; }
-
+ background-position: -50px -60px;
+}
.off {
- background-position: -70px -60px; }
-
+ background-position: -70px -60px;
+}
.prev {
- background-position: -90px -60px; }
-
+ background-position: -90px -60px;
+}
.next {
- background-position: -110px -60px; }
-
+ background-position: -110px -60px;
+}
.icon.dim {
- opacity: 0.3; }
-
+ opacity: 0.3;
+}
#pause {
- position: fixed;
- bottom: 40px;
- right: 30px; }
-
+ position: fixed;
+ bottom: 40px;
+ right: 30px;
+ z-index: 10;
+}
.border {
- border: 1px solid #babdb6;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- &:hover {
- border: 1px solid #babdb6;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px; } }
-
+ .borders(1px, solid, @border2);
+ .rounded_corners;
+ &:hover {
+ .borders(1px, solid, @border2);
+ .rounded_corners;
+ }
+}
.attachtype {
- display: block;
- width: 20px;
- height: 23px;
- background-image: url(../../../images/content-types.png); }
-
+ display: block;
+ .box(20px, 23px);
+ background-image: url(../../../images/content-types.png);
+}
.type-video {
- background-position: 0px 0px; }
-
+ background-position: 0px 0px;
+}
.type-image {
- background-position: -20px 0; }
-
+ background-position: -20px 0;
+}
.type-audio {
- background-position: -40px 0; }
-
+ background-position: -40px 0;
+}
.type-text {
- background-position: -60px 0px; }
-
+ background-position: -60px 0px;
+}
.type-unkn {
- background-position: -80px 0; }
+ background-position: -80px 0;
+}
+
/**
* footer
*/
-
.cc-license {
- margin-top: 100px;
- font-size: 0.7em; }
-
+ margin-top: 100px;
+ font-size: 0.7em;
+}
footer {
- display: block;
- /*margin: 50px 20%;*/
- clear: both; }
-
+ display: block;
+ clear: both;
+}
#profile-jot-text {
- height: 20px;
- color: #666;
- border: 1px solid #ccc;
- border-radius: 5px;
- width: 99.5%; }
+ height: 20px;
+ color: darken(@main_alt_colour, 20%);
+ background: lighten(@main_alt_colour, 20%);
+ .borders;
+ .rounded_corners;
+ width: 99.5%;
+}
+
/**
* acl
*/
-
-#photo-edit-perms-select, #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper {
- display: block !important;
- background: #eec;
- color: #2e2f2e; }
-
+#photo-edit-perms-select,
+#photos-upload-permissions-wrapper,
+#profile-jot-acl-wrapper {
+ display: block !important;
+ background: @bg_colour;
+ color: @main_colour;
+}
+#profile-jot-acl-wrapper {
+ margin: 0 10px;
+ .borders(1px, solid, @menu_bg_colour);
+ border-top: 0;
+ font-size: small;
+ // .box_shadow;
+}
#acl-wrapper {
- width: 660px;
- margin: 0 auto; }
-
+ width: 660px;
+ margin: 0 auto;
+}
#acl-search {
- float: right;
- background: white url("../../../images/search_18.png") no-repeat right center;
- padding-right: 20px;
- margin: 6px;
- color: #111; }
-
+ float: right;
+ background: white url("../../../images/search_18.png") no-repeat right center;
+ padding-right: 20px;
+ margin: 6px;
+ color: @main_colour;
+}
#acl-showall {
- float: left;
- display: block;
- width: auto;
- height: 18px;
- background: #eeeecc url("../../../images/show_all_off.png") 8px 8px no-repeat;
- padding: 7px 10px 7px 30px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- color: #999;
- margin: 5px 0;
- &.selected {
- color: #000;
- background: #ff9900 url(../../../images/show_all_on.png) 8px 8px no-repeat; } }
-
+ float: left;
+ display: block;
+ .box(auto, 18px);
+ background: @bg_colour url("../../../images/show_all_off.png") 8px 8px no-repeat;
+ padding: 7px 10px 7px 30px;
+ .rounded_corners;
+ color: @main_alt_colour;
+ margin: 5px 0;
+ &.selected {
+ color: black;
+ background: #ff9900 url(../../../images/show_all_on.png) 8px 8px no-repeat;
+ }
+}
#acl-list {
- height: 210px;
- border: 1px solid #ccc;
- clear: both;
- margin-top: 30px;
- overflow: auto; }
-
+ height: 210px;
+ .borders(1px, solid, lighten(@main_alt_colour, 20%);
+ clear: both;
+ margin-top: 30px;
+ overflow: auto;
+}
/*#acl-list-content {
}*/
-
.acl-list-item {
- border: 1px solid #ccc;
- display: block;
- float: left;
- height: 110px;
- margin: 3px 0 5px 5px;
- width: 120px;
- img {
- width: 22px;
- height: 22px;
- float: left;
- margin: 5px 5px 20px; }
- p {
- height: 12px;
- font-size: 10px;
- margin: 0 0 22px;
- padding: 2px 0 1px; }
- a {
- background: #ccc 3px 3px no-repeat;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- clear: both;
- font-size: 10px;
- display: block;
- width: 55px;
- height: 20px;
- color: #999;
- margin: 5px auto 0;
- padding: 0 3px;
- text-align: center;
- vertical-align: middle; } }
-
+ .borders(1px, solid, lighten(@main_alt_colour, 20%));
+ .box(120px, 110px);
+ display: block;
+ float: left;
+ margin: 3px 0 5px 5px;
+ img {
+ .box(22px, 22px);
+ float: left;
+ margin: 5px 5px 20px;
+ }
+ p {
+ height: 12px;
+ font-size: 10px;
+ margin: 0 0 22px;
+ padding: 2px 0 1px;
+ }
+ a {
+ background: lighten(@main_alt_colour, 20%) 3px 3px no-repeat;
+ .rounded_corners;
+ .box(55px, 20px);
+ clear: both;
+ font-size: 10px;
+ display: block;
+ color: @main_alt_colour;
+ margin: 5px auto 0;
+ padding: 0 3px;
+ text-align: center;
+ vertical-align: middle;
+ }
+}
#acl-wrapper a:hover {
- text-decoration: none;
- color: #000;
- border: 0; }
-
+ text-decoration: none;
+ color: @main_colour;
+ border: 0;
+}
+//data URI:
+// data:[<MIME-type>][;charset=<encoding>][;base64],<data>
.acl-button-show {
- background-image: url('../../../images/show_off.png');
- margin: 0 auto; }
-
+ // background-image: url('../../../images/show_off.png');
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABxSURBVAiZY/z//z8DDMyaNUuEgYEhk4GBwZ8JJrhv3z5DZmbmMwwMDOoMDAxpLKtWraqTl5d3fPv2rcn///9XpKWlpTIwMDCwfPr0SePWrVtmP378YPn//385zASmf//+Rf/8+XMpIyPj2bS0tHcwCQBWkiq6M5HGDgAAAABJRU5ErkJggg==');
+ margin: 0 auto;
+}
.acl-button-hide {
- background-image: url('../../../images/hide_off.png');
- margin: 0 auto; }
-
+ // background-image: url('../../../images/hide_off.png');
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACWSURBVAiZBcEhDsIwFAbg/72+VXQ7wPSCIlj8JMlmcKQGgdgRCCfpEz0HjgSDw3IA1AQC1QqSpXwfqeoZwHOaphsAqGpfVVVHIYQNM1+J6MLMOwA9gAOVUhBC6Ky1r7quv03TrMZxzAwAIjKIyCel9JvneQ8ApKprY8zdObfNOXMp5bEsyyDGmJaITt77NwDEGI/W2vYP0nYuQ/Tw9H4AAAAASUVORK5CYII=');
+ margin: 0 auto;
+}
.acl-button-show.selected {
- color: #000;
- background-color: #9ade00;
- background-image: url(../../../images/show_on.png); }
-
+ // background: #9ade00 url(../../../images/show_on.png);
+ background: #9ade00 url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABXSURBVAiZTcyhDYNQGADh7xEGwGDxhD2qUWxAwIBgE9BdoxO03YaEEX7USzh5l1yKCJl0pBoT+uIhK3zRYk52Az5444w1FijxwoYOTT4UGPHHL9a4crgBhcYSpxKVgzIAAAAASUVORK5CYII=');
+ color: black;
+}
.acl-button-hide.selected {
- color: #000;
- background-color: #ff4141;
- background-image: url(../../../images/hide_on.png); }
-
+ // background: #ff4141 url(../../../images/hide_on.png);
+ background: #ff4141 url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACSSURBVAiZBcGhDoJQFAbg/z/3cGliJDOTszmLichGstkMPoTzvfA2N4vN6gMYCGhwMifMTY7fxyCy4zBcCrMjAFRk7p3LWAEzRwYT2StQgMwBrGlmOJCZV72Ok+QpcTyZ1/VHAEBEyiiKHq+2/d6bZgUADMCUIqeR94t338tAns2sVKea/sy2y667AUAgN+pc+gcI6S733PoZRAAAAABJRU5ErkJggg==');
+ color: black;
+}
.acl-list-item {
- &.groupshow {
- border-color: #9ade00; }
- &.grouphide {
- border-color: #ff4141; } }
-
+ &.groupshow {
+ border-color: @group_show;
+ }
+ &.grouphide {
+ border-color: @group_hide;
+ }
+}
/** /acl **/
-/* autocomplete popup */
+/* autocomplete popup */
.acpopup {
- max-height: 175px;
- max-width: 42%;
- background-color: #555753;
- color: #fff;
- overflow: auto;
- z-index: 100000;
- border: 1px solid #cccccc; }
-
+ max-height: 175px;
+ max-width: 42%;
+ background-color: @menu_bg_colour;
+ color: white;
+ overflow: auto;
+ z-index: 100000;
+ border: 1px solid lighten(@main_alt_colour, 20%);
+}
.acpopupitem {
- background-color: #555753;
- padding: 4px;
- clear: left;
- img {
- float: left;
- margin-right: 4px; }
- &.selected {
- color: #2e3436;
- background-color: #eeeeec; } }
-
+ background-color: @menu_bg_colour;
+ padding: 4px;
+ clear: left;
+ img {
+ float: left;
+ margin-right: 4px;
+ }
+ &.selected {
+ color: @dk_bg_colour;
+ background-color: @bg_colour;
+ }
+}
.qcomment-wrapper {
- padding: 0px;
- margin: 5px 5px 5px 81%; }
-
+ padding: 0px;
+ margin: 5px 5px 5px 81%;
+}
.qcomment {
- opacity: 0.5;
- &:hover {
- opacity: 1.0; } }
-
+ opacity: 0.5;
+ &:hover {
+ opacity: 1.0;
+ }
+}
#network-star-link {
- margin-top: 10px; }
-
+ margin-top: 10px;
+}
.network-star {
- float: left;
- margin-right: 5px;
- &.icon.starred {
- display: inline-block; } }
-
+ float: left;
+ margin-right: 5px;
+ &.icon.starred {
+ display: inline-block;
+ }
+}
#fileas-sidebar {}
.fileas-ul {
- padding: 0; }
+ padding: 0;
+}
+
/*
* addons theming
*/
-
#sidebar-page-list {
- ul {
- padding: 0;
- margin: 5px 0; }
- li {
- list-style: none; } }
-
+ ul {
+ padding: 0;
+ margin: 5px 0;
+ }
+ li {
+ list-style: none;
+ }
+}
#jappix_mini {
- margin-left: 130px;
- position: fixed;
- bottom: 0;
- right: 175px !important;
- /* override the jappix css */
- z-index: 999; }
-
-/* media stuff */
-@media handheld {
- body {
- font-size: 15pt; } }
+ margin-left: 130px;
+ position: fixed;
+ bottom: 0;
+ /* override the jappix css */
+ right: 175px !important;
+ z-index: 999;
+}
+
+@import "../css/media";
diff --git a/view/theme/dispy/nav.tpl b/view/theme/dispy/nav.tpl
index 6ffd2b379..21343aea5 100644
--- a/view/theme/dispy/nav.tpl
+++ b/view/theme/dispy/nav.tpl
@@ -50,7 +50,7 @@
</ul>
<div id="user-menu">
- <a id="user-menu-label" onclick="openClose('user-menu-popup'); return false" href="$nav.home.0">$sitelocation</a>
+ <a id="user-menu-label" onclick="openClose('user-menu-popup'); return false;" href="$nav.home.0">$sitelocation</a>
<ul id="user-menu-popup"
onmouseover="if (typeof tmenu != 'undefined') clearTimeout(tmenu); openMenu('user-menu-popup')"
onmouseout="tmenu=setTimeout('closeMenu(\'user-menu-popup\');',200)">
@@ -90,7 +90,9 @@
{{ if $userinfo }}
<ul id="nav-user-menu" class="menu-popup">
{{ for $nav.usermenu as $usermenu }}
- <li><a class="$usermenu.2" href="$usermenu.0" title="$usermenu.3">$usermenu.1</a></li>
+ <li>
+ <a class="$usermenu.2" href="$usermenu.0" title="$usermenu.3">$usermenu.1</a>
+ </li>
{{ endfor }}
</ul>
{{ endif }}
@@ -121,18 +123,19 @@ $langselector
</div>
<div id="scrollup">
-<a href="#top"><img
- src="view/theme/dispy/icons/scroll_top.png"
+<a href="#top"><img src="view/theme/dispy/icons/scroll_top.png"
alt="back to top" title="Back to top" /></a>
</div>
<div class="search-box">
<form method="get" action="$nav.search.0">
- <input id="search-text" class="nav-menu-search" type="search" placeholder="Search" value="" id="search" name="search" />
+ <input id="mini-search-text" class="nav-menu-search" type="search" placeholder="Search" value="" id="search" name="search" />
</form>
</div>
<ul id="nav-notifications-template" style="display:none;" rel="template">
- <li class="{4}"><a href="{0}"><img src="{1}" height="24" width="24" alt="" />{2} <span class="notif-when">{3}</span></a></li>
+ <li class="{4}">
+ <a href="{0}"><img src="{1}" height="24" width="24" alt="" />{2} <span class="notif-when">{3}</span></a>
+ </li>
</ul>
diff --git a/view/theme/dispy/screenshot.jpg b/view/theme/dispy/screenshot.jpg
new file mode 100644
index 000000000..5be4d7745
--- /dev/null
+++ b/view/theme/dispy/screenshot.jpg
Binary files differ
diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css
deleted file mode 100644
index 3ae667003..000000000
--- a/view/theme/dispy/style.css
+++ /dev/null
@@ -1,518 +0,0 @@
-article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
-audio,canvas,video,time{display:inline-block;*display:inline;*zoom:1;}
-audio:not([controls]),[hidden]{display:none;}
-html{font-size:100%;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
-body{margin:0;font-size:16px;line-height:1.1em;font-family:sans-serif;color:#222;background-color:#e8e8e8;}
-button,input,select,textarea{font-family:sans-serif;color:#222;background-color:#e8e8e8;}
-select{border:1px #555 dotted;padding:3px;margin:3px;color:#222;background:#e8e8e8;}
-option{padding:3px;color:#222;background:#e8e8e8;}option[selected="selected"]{color:#111;background:#cca;}
-ul,ol{padding:0;}
-:focus{outline:0;}
-[disabled="disabled"]{background:#ddd;color:#333;}
-ins{background-color:#ff9;color:#000;text-decoration:none;}
-mark{background-color:#ff9;color:#000;font-style:italic;font-weight:bold;}
-pre,code,kbd,samp,.wall-item-body code{font-family:monospace, monospace;_font-family:monospace;font-size:1em;}
-pre,.wall-item-body code{white-space:pre;white-space:pre-wrap;word-wrap:break-word;}
-q{quotes:none;}q:before,q:after{content:"";content:none;}
-small{font-size:85%;}
-sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}
-sub{bottom:-0.25em;}
-sup{top:-0.5em;}
-img{border:0 none;}
-a{color:#3465a4;text-decoration:none;margin-bottom:1px;}a:hover img{text-decoration:none;}
-blockquote{background:#eee;color:#111;text-indent:5px;padding:5px;border:1px #aaa solid;border-radius:5px;}
-a:hover{color:#729fcf;border-bottom:1px dotted #729fcf;}
-.required{display:inline;color:#f00;font-size:16px;font-weight:bold;margin:3px;}
-.fakelink,.lockview{color:#3465a4;cursor:pointer;}
-.fakelink:hover{color:#729fcf;}
-.smalltext{font-size:0.7em;}
-#panel{position:absolute;font-size:0.8em;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;border:1px solid #fff;background-color:#2e3436;color:#eeeeec;padding:1em;}
-.pager{margin-top:60px;display:block;clear:both;text-align:center;}.pager span{padding:4px;margin:4px;}
-.pager_current{background-color:#729fcf;color:#fff;}
-.action{margin:5px 0;}
-.tool{margin:5px 0;list-style:none;}
-#articlemain{width:100%;height:100%;margin:0 auto;}
-#asidemain .field{overflow:hidden;width:200px;}
-#login-extra-links{overflow:auto !important;padding-top:60px !important;width:100% !important;}#login-extra-links a{margin-right:20px;}
-#login_standard{display:block !important;float:none !important;height:100% !important;position:relative !important;width:100% !important;}#login_standard .field label{width:200px !important;}
-#login_standard input{margin:0 0 8px !important;width:210px !important;}#login_standard input[type="text"]{margin:0 0 8px !important;width:210px !important;}
-#login-submit-wrapper{margin:0 !important;}
-#login-submit-button{margin-left:0px !important;}
-#asidemain #login_openid{position:relative !important;float:none !important;margin-left:0px !important;height:auto !important;width:200px !important;}
-#login_openid #id_openid_url{width:180px !important;overflow:hidden !important;}
-#login_openid label{width:180px !important;}
-nav{height:60px;background-color:#2e3436;color:#eeeeec;position:relative;padding:20px 20px 10px 95px;}nav a{text-decoration:none;color:#eeeeec;border:0px;}nav a:hover{text-decoration:none;color:#eeeeec;border:0px;}
-nav #banner{display:block;position:absolute;left:51px;top:25px;}nav #banner #logo-text a{font-size:40px;font-weight:bold;margin-left:3px;}
-ul#user-menu-popup{display:none;position:absolute;background-color:#555753;width:100%;padding:10px 0px;margin:0px;top:20px;left:0;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;box-shadow:5px 10px 10px 0 #111;z-index:10000;}ul#user-menu-popup li{display:block;}ul#user-menu-popup li a{display:block;padding:5px;}ul#user-menu-popup li a:hover{color:#2e3436;background-color:#eeeeec;}
-ul#user-menu-popup li a.nav-sep{border-top:1px solid #eeeeec;}
-nav .nav-link{display:inline-block;width:22px;height:22px;overflow:hidden;margin:0px 5px 5px;text-indent:50px;background:transparent url(icons.png) 0 0 no-repeat;}
-#nav-apps-link{background-position:0 -66px;}#nav-apps-link:hover{background-position:-22px -66px;}
-#nav-community-link,#nav-contacts-link{background-position:0 -22px;}#nav-community-link:hover,#nav-contacts-link:hover{background-position:-22px -22px;}
-#nav-directory-link{background-position:-44px -154px;}#nav-directory-link:hover{background-position:-66px -154px;}
-#nav-help-link{background-position:0 -110px;}#nav-help-link:hover{background-position:-22px -110px;}
-#nav-home-link{background-position:-44px -132px;}#nav-home-link:hover{background-position:-66px -132px;}
-#nav-intro-link{background-position:0px -190px;}#nav-intro-link:hover{background-position:-44px -190px;}
-#nav-login-link,#nav-logout-link{background-position:0 -88px;}#nav-login-link:hover,#nav-logout-link:hover{background-position:-22px -88px;}
-#nav-messages-link{background-position:-44px -88px;}#nav-messages-link:hover{background-position:-66px -88px;}
-#nav-notify-link,#nav-notifications-linkmenu{background-position:-44px -110px;}
-#nav-notify-link:hover{background-position:-66px -110px;}
-#nav-network-link{background-position:0px -177px;}#nav-network-link:hover{background-position:-22px -177px;}
-#nav-search-link{background-position:0 -44px;}#nav-search-link:hover{background-position:-22px -44px;}
-#profile-link,#profile-title,#wall-image-upload,#wall-file-upload,#profile-attach-wrapper,#profile-audio,#profile-link,#profile-location,#profile-nolocation,#profile-title,#jot-title,#profile-upload-wrapper,#profile-video,#profile-jot-submit,#wall-image-upload-div,#wall-file-upload-div,.icon,.hover,.focus,.pointer{cursor:pointer;}
-div.jGrowl div.notice{background:#511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;color:#ffffff;padding-left:58px;}
-div.jGrowl div.info{background:#364e59 url("../../../images/icons/48/info.png") no-repeat 5px center;color:#ffffff;padding-left:58px;}
-#nav-notifications-menu{margin:30px 0 0 -20px;width:275px;max-height:300px;overflow-y:auto;font-size:9pt;}#nav-notifications-menu .contactname{font-weight:bold;font-size:0.9em;}
-#nav-notifications-menu img{float:left;margin-right:5px;}
-#nav-notifications-menu .notif-when{font-size:0.8em;display:block;}
-#nav-notifications-menu li{word-wrap:normal;border-bottom:1px solid #000;}#nav-notifications-menu li:hover{color:black;}
-#nav-notifications-menu a:hover{color:black;text-decoration:underline;}
-nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkmenu.selected .icon.s22.notify{background-image:url("../../../images/icons/22/notify_on.png");}
-.show{display:block;}
-#notifications{height:20px;width:170px;position:absolute;top:-19px;left:4px;}
-#nav-floater{position:fixed;top:20px;right:1%;padding:5px;background:#2e3436;color:transparent;border-radius:5px;z-index:100;width:300px;height:60px;}
-#nav-buttons{clear:both;list-style:none;padding:0px;margin:0px;height:25px;}#nav-buttons>li{padding:0;display:inline-block;margin:0px -4px 0px 0px;}
-.floaterflip{display:block;position:fixed;z-index:110;top:56px;right:19px;width:22px;height:22px;overflow:hidden;margin:0px;background:transparent url(icons.png) -190px -60px no-repeat;}
-.search-box{display:inline-block;margin:5px;position:fixed;right:0px;bottom:0px;z-index:100;background:#1d1f1d;border-radius:5px;}
-#search-text{border:1px #eec solid;background:#2e3436;color:#eec;}
-.search-box #search-text{margin:8px;width:10em;height:14px;color:#eec;}
-#scrollup{position:fixed;right:5px;bottom:40px;z-index:100;}#scrollup a:hover{text-decoration:none;border:0;}
-#user-menu{box-shadow:5px 0 10px 0 #111;display:block;width:75%;margin:3px 0 0 0;position:relative;background-color:#555753;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;background:#555753 url("menu-user-pin.jpg") 98% center no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;}
-#user-menu-label{font-size:12px;padding:3px 20px 9px 5px;height:10px;}
-.nav-ajax-update,.nav-ajax-left{width:30px;height:19px;background:transparent url(notifications.png) 0 0 no-repeat;color:#222;font-weight:bold;font-size:0.8em;padding-top:0.2em;text-align:center;float:left;margin:0 -1px 0 3px;display:block;visibility:hidden;}
-.nav-ajax-update.show,.nav-ajax-left.show{visibility:visible;}
-#net-update{background-position:0px 0px;}
-#mail-update{background-position:-30px 0;}
-#notify-update{background-position:-60px 0px;}
-#home-update{background-position:-90px 0px;}
-#intro-update{background-position:-120px 0px;}
-#lang-select-icon{cursor:pointer;position:fixed;left:28px;bottom:6px;z-index:10;}
-#language-selector{position:fixed;bottom:2px;left:52px;z-index:10;}
-.menu-popup{position:absolute;display:none;width:11em;background:#ffffff;color:#2d2d2d;margin:0px;padding:0px;list-style:none;border:3px solid #364e59;z-index:100000;-webkit-box-shadow:3px 3px 10px 0 rgba(0, 0, 0, 0.7);-moz-box-shadow:3px 3px 10px 0 rgba(0, 0, 0, 0.7);box-shadow:3px 3px 10px 0 rgba(0, 0, 0, 0.7);}.menu-popup a{display:block;color:#2d2d2d;padding:5px 10px;text-decoration:none;}.menu-popup a:hover{background-color:#bdcdd4;}
-.menu-popup .menu-sep{border-top:1px solid #9eabb0;}
-.menu-popup li{float:none;overflow:auto;height:auto;display:block;}.menu-popup li img{float:left;width:16px;height:16px;padding-right:5px;}
-.menu-popup .empty{padding:5px;text-align:center;color:#9eabb0;}
-.notif-item{font-size:small;}.notif-item a{vertical-align:middle;}
-.notif-image{width:32px;height:32px;padding:7px 7px 0px 0px;}
-.notify-seen{background:#ddd;}
-#sysmsg_info{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #000;-webkit-box-shadow:3px 3px 10px 0 #000;box-shadow:3px 3px 10px 0 #000;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
-#sysmsg{position:fixed;bottom:0;-moz-box-shadow:3px 3px 10px 0 #000;-webkit-box-shadow:3px 3px 10px 0 #000;box-shadow:3px 3px 10px 0 #000;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
-#sysmsg_info br,#sysmsg br{display:block;margin:2px 0px;border-top:1px solid #ccccce;}
-#asidemain{float:left;font-size:smaller;margin:20px 0 20px 35px;width:25%;display:inline;}
-#asideright,#asideleft{display:none;}
-.vcard .fn{font-size:1.7em;font-weight:bold;border-bottom:1px solid #729fcf;padding-bottom:3px;}
-.vcard #profile-photo-wrapper{margin:20px;}.vcard #profile-photo-wrapper img{box-shadow:3px 3px 10px 0 #000;}
-#asidemain h4{font-size:1.2em;}
-#asidemain #viewcontacts{text-align:right;}
-.aprofile dt{background:transparent;color:#666666;font-weight:bold;box-shadow:1px 1px 5px 0 #000;margin:15px 0 5px;padding-left:5px;}
-#profile-extra-links ul{margin-left:0px;padding-left:0px;list-style:none;}
-#dfrn-request-link{background:#3465a4 url(connect.png) no-repeat 95% center;border-radius:5px 5px 5px 5px;color:#fff;display:block;font-size:1.2em;padding:0.2em 0.5em;}
-#wallmessage-link{color:#eee;display:block;font-size:1.2em;padding:0.2em 0.5em;}
-#netsearch-box{margin:20px 0px 30px;width:150px;}#netsearch-box #search-submit{margin:5px 5px 0px 0px;}
-.ttright{margin:0px 0px 0px 0px;}
-.contact-block-div{width:50px;height:50px;float:left;}
-.contact-block-textdiv{width:150px;height:34px;float:left;}
-#contact-block-end{clear:both;}
-#jot{margin:10px 0 20px 0px;width:100%;}#jot #jot-tools{margin:0px;padding:0px;height:35px;overflow:none;width:100%;}#jot #jot-tools span{float:left;margin:10px 20px 2px 0px;}#jot #jot-tools span a{display:block;}
-#jot #jot-tools .perms{float:right;width:40px;}
-#jot #jot-tools li.loading{float:right;background-color:#ffffff;width:20px;vertical-align:center;text-align:center;border-top:2px solid #9eabb0;height:38px;}#jot #jot-tools li.loading img{margin-top:10px;}
-#jot #jot-title{border:1px solid #ccc;margin:0 0 5px;height:20px;width:90%;font-weight:bold;border-radius:5px;vertical-align:middle;}
-#jot-category{margin:5px 0;border-radius:5px;border:1px #ccc solid;color:#666;font-size:smaller;}#jot-category:focus{color:#111;}
-#jot #character-counter{width:6%;float:right;text-align:right;height:15px;line-height:20px;padding:2px 20px 5px 0;}
-#profile-jot-text_parent{box-shadow:5px 0 10px 0 #111;}
-#profile-jot-text_tbl{margin-bottom:10px;background:#777;}
-#profile-jot-text_ifr{width:99.900002% !important;}
-#profile-jot-text_toolbargroup,.mceCenter tr{background:#777;}
-[id$="jot-text_ifr"]{width:99.900002% !important;color:#2e2f2e;background:#eec;}[id$="jot-text_ifr"] .mceContentBody{color:#2e2f2e;background:#eec;}
-.defaultSkin tr.mceFirst{background:#777;}
-.defaultSkin td.mceFirst,.defaultSkin td.mceLast{background-color:#eec;}
-.defaultSkin span.mceIcon,.defaultSkin img.mceIcon,.defaultSkin .mceButtonDisabled .mceIcon{background-color:#eec;}
-#profile-attach-wrapper,#profile-audio-wrapper,#profile-link-wrapper,#profile-location-wrapper,#profile-nolocation-wrapper,#profile-title-wrapper,#profile-upload-wrapper,#profile-video-wrapper{float:left;margin:0 20px 0 0;}
-#profile-rotator-wrapper{float:right;}
-#profile-jot-tools-end,#profile-jot-banner-end{clear:both;}
-#profile-jot-email-wrapper{margin:10px 10% 0;border:1px solid #555753;border-bottom:0;}
-#profile-jot-email-label{background-color:#555753;color:#ccccce;padding:5px;}
-#profile-jot-email{width:90%;margin:5px;}
-#profile-jot-networks{margin:0 10%;border:1px solid #555753;border-top:0;border-bottom:0;padding:5px;}
-#profile-jot-net{margin:5px 0;}
-#jot-preview-link{margin:0 0 0 10px;border:0;text-decoration:none;float:right;}
-.icon-text-preview{margin:0 0 -18px 0;display:block;width:20px;height:20px;background:url(icons.png) no-repeat -128px -40px;border:0;text-decoration:none;float:right;cursor:pointer;}
-#profile-jot-perms{float:right;background-color:#555753;height:22px;width:20px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;overflow:hidden;border:0px;margin:0 10px 0 10px;}
-#profile-jot-plugin-wrapper{width:1px;margin:10px 0 0 0;float:right;}
-#profile-jot-submit-wrapper{float:right;width:100%;list-style:none;margin:10px 0 0 0;padding:0;}
-#profile-jot-submit{height:auto;background-color:#555753;color:#eeeeec;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;border:2px outset #222420;margin:0;float:right;text-shadow:1px 1px #111;width:auto;}#profile-jot-submit:active{box-shadow:0 0 0 0;}
-#jot-perms-icon{height:22px;width:20px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;overflow:hidden;border:0;}
-#profile-jot-acl-wrapper{margin:0 10px;border:1px solid #555753;border-top:0;display:block !important;}
-#group_allow_wrapper,#group_deny_wrapper,#acl-permit-outer-wrapper{width:47%;float:left;}
-#contact_allow_wrapper,#contact_deny_wrapper,#acl-deny-outer-wrapper{width:47%;float:right;}
-#acl-permit-text{background-color:#555753;color:#ccccce;padding:5px;float:left;}
-#jot-public{background-color:#555753;color:#ff0000;padding:5px;float:left;}
-#acl-deny-text{background-color:#555753;color:#ccccce;padding:5px;float:left;}
-#acl-permit-text-end,#acl-deny-text-end{clear:both;}
-#jot-title-desc{color:#ccc;}
-#profile-jot-desc{color:#a00;margin:5px 0;}
-#jot-title-wrapper{margin-bottom:5px;}
-#jot-title-display{font-weight:bold;}
-.jothidden{display:none;}
-#jot-preview-content{background-color:#ffffe0;color:#111;border:1px #aa0 solid;border-radius:5px;padding:3px 3px 6px 10px;}#jot-preview-content .wall-item-outside-wrapper{border:0;border-radius:0px;}
-#sectionmain{margin:20px;font-size:0.8em;min-width:475px;width:67%;float:left;display:inline;}
-.tabs{list-style:none;margin:10px 0;padding:0;}.tabs li{display:inline;font-size:smaller;font-weight:bold;}
-.tab{border:1px solid #729fcf;padding:4px;}.tab:hover,.tab.active:hover,.tab:active{background:#729fcf;color:#eeeeec;}
-.tab.active{background:#729fcf;color:#eeeeec;}.tab.active a{color:#729fcf;}
-.tab a{border:0;text-decoration:none;}
-.wall-item-outside-wrapper{border:1px solid #aaa;border-radius:5px;box-shadow:5px 0 10px 0 #888;}.wall-item-outside-wrapper.comment{margin-top:5px;}
-.wall-item-outside-wrapper-end{clear:both;}
-.wall-item-content-wrapper{position:relative;padding:10px;width:auto;}
-.wall-item-outside-wrapper .wall-item-comment-wrapper{}
-.shiny{background:#efefdf;border-radius:5px;}
-.wall-outside-wrapper .shiny{border-radius:5px;}
-.heart{color:red;}
-.wall-item-content{overflow-x:auto;margin:0px 15px 0px 5px;}
-[id^="tread-wrapper"],[class^="tread-wrapper"]{margin:15px 0 0 0;padding:0px;}
-.wall-item-photo-menu{display:none;}
-.wall-item-photo-menu-button{display:none;text-indent:-99999px;background:#555753 url(menu-user-pin.jpg) no-repeat 75px center;position:absolute;overflow:hidden;height:20px;width:90px;top:85px;left:0;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}
-.wall-item-info{float:left;width:110px;}
-.wall-item-photo-wrapper{width:80px;height:80px;position:relative;padding:5px;background-color:#555753;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
-[class^="wall-item-tools"] *{}[class^="wall-item-tools"] *>*{}
-.wall-item-tools{float:right;opacity:0.4;-webkit-transition:all 1s ease-in-out;-moz-transition:all 1s ease-in-out;-o-transition:all 1s ease-in-out;-ms-transition:all 1s ease-in-out;transition:all 1s ease-in-out;}.wall-item-tools:hover{opacity:1;-webkit-transition:all 1s ease-in-out;-moz-transition:all 1s ease-in-out;-o-transition:all 1s ease-in-out;-ms-transition:all 1s ease-in-out;transition:all 1s ease-in-out;}
-.wall-item-subtools1{height:30px;list-style:none outside none;margin:20px 0 30px -20px;padding:0;width:30px;}
-.wall-item-subtools2{height:25px;list-style:none outside none;margin:-75px 0 0 5px;padding:0;width:25px;}
-.wall-item-title{font-size:1.2em;font-weight:bold;margin-bottom:1em;}
-.wall-item-body{margin:20px 20px 10px 0px;text-align:left;overflow-x:auto;}
-.wall-item-lock-wrapper{float:right;height:22px;margin:0 -5px 0 0;width:22px;opacity:1;}
-.wall-item-dislike,.wall-item-like{clear:left;font-size:0.8em;color:#878883;margin:5px 0 5px 120px;}
-.wall-item-author,.wall-item-actions-author{clear:left;font-size:0.8em;color:#878883;margin:20px 20px 0 110px;}
-.wall-item-ago{display:inline;padding-left:10px;}
-.wall-item-wrapper-end{clear:both;}
-.wall-item-location{margin-top:15px;width:100px;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;}.wall-item-location .icon{float:left;}
-.wall-item-location>a,.wall-item-location .smalltext{margin-left:25px;font-size:0.7em;display:block;}
-.wall-item-location>br{display:none;}
-.wallwall .wwto{left:5px;margin:0;position:absolute;top:75px;width:30px;z-index:10001;width:30px;height:30px;}.wallwall .wwto img{width:30px !important;height:30px !important;}
-.wallwall .wall-item-photo-end{clear:both;}
-.wall-item-arrowphoto-wrapper{position:absolute;left:35px;top:80px;z-index:10002;}
-.wall-item-photo-menu{min-width:92px;border:2px solid #FFFFFF;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-webkit-border-radius:0px 5px 5px 5px;-moz-border-radius:0px 5px 5px 5px;border-radius:0px 5px 5px 5px;}.wall-item-photo-menu ul{margin:0px;padding:0px;list-style:none;}
-.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 2px;color:#eeeeec;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeec;}
-#item-delete-selected{overflow:auto;width:100%;}
-#connect-services-header,#connect-services,#extra-help-header,#extra-help,#postit-header,#postit{margin:5px 0 0 0;}
-.ccollapse-wrapper{font-size:0.9em;margin-left:80px;}
-.wall-item-outside-wrapper.comment{margin-left:80px;}.wall-item-outside-wrapper.comment .wall-item-photo{width:40px!important;height:40px!important;}
-.wall-item-outside-wrapper.comment .wall-item-photo-wrapper{width:40px;height:40px;}
-.wall-item-outside-wrapper.comment .wall-item-photo-menu-button{width:50px;top:45px;background-position:35px center;}
-.wall-item-outside-wrapper.comment .wall-item-info{width:60px;}
-.wall-item-outside-wrapper.comment .wall-item-body{margin-left:10px;}
-.wall-item-outside-wrapper.comment .wall-item-author{margin-left:50px;}
-.wall-item-outside-wrapper.comment .wall-item-photo-menu{min-width:50px;top:60px;}
-.comment-wwedit-wrapper{}
-.comment-edit-wrapper{border-top:1px #aaa solid;}
-[class^="comment-edit-bb"]{list-style:none;display:none;margin:-40px 0 5px 60px;width:75%;}[class^="comment-edit-bb"]>li{display:inline-block;margin:0 10px 0 0;visibility:none;}
-.comment-wwedit-wrapper img,.comment-edit-wrapper img{width:20px;height:20px;}
-.comment-edit-photo-link,.comment-edit-photo{margin-left:10px;}
-.my-comment-photo{width:40px;height:40px;padding:5px;}
-[class^="comment-edit-text"]{margin:5px 0 10px 20px;width:84.5%;}
-.comment-edit-text-empty{height:20px;border:2px #babdd6 solid;border-radius:5px;color:#babdb6;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}.comment-edit-text-empty:hover{color:#999999;}
-.comment-edit-text-full{height:10em;border-radius:5px;-webkit-transition:all 0.5s ease-in-out;-moz-transition:all 0.5s ease-in-out;-o-transition:all 0.5s ease-in-out;-ms-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out;}
-.comment-edit-submit-wrapper{width:90%;margin:5px 5px 10px 50px;text-align:right;}
-.comment-edit-submit{height:22px;background-color:#555753;color:#eeeeec;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;border:0;}
-.wall-item-body code{display:block;padding:0 0 10px 5px;border-color:#ccc;border-style:solid;border-width:1px 1px 1px 10px;background:#eee;color:#444;width:95%;}
-div[id$="text"]{font-weight:bold;border-bottom:1px solid #ccc;}
-div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:left;}
-[id$="-end"],[class$="end"]{clear:both;margin:0 0 10px 0;}
-#advanced-profile-with{margin-left:200px;}
-.photos{height:auto;overflow:auto;}
-#photo-top-links{margin-bottom:30px;}
-.photo-album-image-wrapper,.photo-top-image-wrapper{float:left;-moz-box-shadow:3px 3px 10px 0 #000;-webkit-box-shadow:3px 3px 10px 0 #000;box-shadow:3px 3px 10px 0 #000;background-color:#eee;color:#111;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding-bottom:30px;position:relative;margin:0 10px 10px 0;}
-#photo-photo{max-width:100%;}#photo-photo img{max-width:100%;}
-.photo-top-image-wrapper a:hover,#photo-photo a:hover,.photo-album-image-wrapper a:hover{border-bottom:0;}
-.photo-top-photo,.photo-album-photo{-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}
-.photo-top-album-name{position:absolute;bottom:0;padding:0 5px;}
-.caption{position:absolute;bottom:0;margin:0 5px;}
-#photo-photo{position:relative;float:left;}
-#photo-prev-link,#photo-next-link{position:absolute;width:30%;height:100%;background-color:rgba(255, 255, 255, 0.5);opacity:0;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;background-position:center center;background-repeat:no-repeat;}
-#photo-prev-link{left:0;top:0;background-image:url(prev.png);}
-#photo-next-link{right:0;top:0;background-image:url(next.png);}
-#photo-prev-link a,#photo-next-link a{display:block;width:100%;height:100%;overflow:hidden;text-indent:-900000px;}
-#photo-prev-link:hover{opacity:1;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;}
-#photo-next-link:hover{opacity:1;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;}
-#photo-next-link .icon{display:none;}
-#photo-prev-link .icon{display:none;}
-#photos-upload-spacer,#photos-upload-new-wrapper,#photos-upload-exist-wrapper{margin-bottom:1em;}
-#photos-upload-existing-album-text,#photos-upload-newalbum-div{background-color:#555753;color:#eeeeec;padding:1px;}
-#photos-upload-album-select,#photos-upload-newalbum{width:99%;}
-#photos-upload-perms-menu{text-align:right;}
-#photo-edit-caption,#photo-edit-newtag,#photo-edit-albumname{float:left;margin-bottom:25px;}
-#photo-edit-link-wrap{margin-bottom:15px;}
-#photo-edit-caption,#photo-edit-newtag{width:100%;}
-#photo-like-div{margin-bottom:25px;}
-#photo-edit-caption-end,#photo-edit-tags-end,#photo-edit-albumname-end{clear:both;}
-#photo-edit-delete-button{margin-left:200px;}
-#photo-edit-end{margin-bottom:35px;}
-#photo-caption{font-size:110%;font-weight:bold;margin-top:15px;margin-bottom:15px;}
-.prvmail-text{width:100%;}
-#prvmail-subject{width:100%;color:#eec;background:#444;}
-#prvmail-submit-wrapper{margin-top:10px;}
-#prvmail-submit{float:right;margin-top:0;}
-#prvmail-submit-wrapper div{margin-right:5px;float:left;}
-.mail-list-outside-wrapper{margin-top:20px;}
-.mail-list-sender{float:left;}
-.mail-list-detail{margin-left:90px;}
-.mail-list-sender-name{display:inline;font-size:1.1em;}
-.mail-list-date{display:inline;font-size:0.9em;padding-left:10px;}
-.mail-list-sender-name,.mail-list-date{font-style:italic;}
-.mail-list-subject{font-size:1.2em;}
-.mail-list-delete-wrapper{float:right;}
-.mail-list-outside-wrapper-end{clear:both;border-bottom:1px #eec dotted;}
-.mail-conv-sender{float:left;margin:0px 5px 5px 0px;}
-.mail-conv-sender-photo{width:32px;height:32px;}
-.mail-conv-sender-name{float:left;}
-.mail-conv-date{float:right;}
-.mail-conv-subject{clear:right;font-weight:bold;font-size:1.2em;}
-.mail-conv-body{clear:both;}
-.mail-conv-delete-wrapper{margin-top:5px;}
-.view-contact-wrapper,.contact-entry-wrapper{float:left;margin:0 5px 40px 0;width:120px;height:120px;padding:3px;position:relative;}
-.contact-direction-wrapper{position:absolute;top:20px;}
-.contact-edit-links{position:absolute;top:60px;}
-.contact-entry-photo{margin-left:20px;}
-.contact-entry-name{width:120px;font-weight:bold;}
-.contact-entry-photo{position:relative;}
-.contact-entry-edit-links .icon{border:1px solid #babdb6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#fff;}
-#contact-entry-url,[id^="contact-entry-url"]{font-size:smaller;}
-#contact-entry-network,[id^="contact-entry-network"]{font-size:smaller;font-style:italic;}
-#contact-edit-banner-name{font-size:1.5em;}
-#contact-edit-photo-wrapper{position:relative;float:left;padding:20px;}
-#contact-edit-direction-icon{position:absolute;top:60px;left:0;}
-#contact-edit-nav-wrapper{margin-left:0px;}
-#contact-edit-links{margin-top:23px;}#contact-edit-links ul{list-style-type:none;}
-#contact-drop-links{margin-left:5px;}
-#contact-edit-nav-wrapper .icon{border:1px solid #babdb6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
-#contact-edit-poll-wrapper{margin-left:0px;}
-#contact-edit-last-update-text{margin-bottom:15px;}
-#contact-edit-last-updated{font-weight:bold;}
-#contact-edit-poll-text{display:inline;}
-#contact-edit-info_tbl,#contact-edit-info_parent,.mceLayout{width:100%;}
-#contact-edit-end{clear:both;margin-bottom:65px;}
-.contact-photo-menu-button{position:absolute;background-image:url("photo-menu.jpg");background-position:top left;background-repeat:no-repeat;margin:0px;padding:0px;width:16px;height:16px;top:64px;left:0px;overflow:hidden;text-indent:40px;display:none;}
-.contact-photo-menu{width:auto;border:2px solid #444;background:#eee;color:#111;position:absolute;left:0px;top:90px;display:none;z-index:10000;}.contact-photo-menu ul{margin:0px;padding:0px;list-style:none;}
-.contact-photo-menu li a{display:block;padding:2px;}.contact-photo-menu li a:hover{color:#fff;background:#3465A4;text-decoration:none;}
-#id_openid_url{background:url(login-bg.gif) no-repeat;background-position:0 50%;padding-left:18px;}
-#settings-nickname-desc{background-color:#eee;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:5px;color:#111;}
-#settings-default-perms{margin-bottom:20px;}
-#register-form div,#profile-edit-form div{clear:both;}
-.settings-block label{clear:left;}
-.settings-block input{margin:10px 5px;}
-#profile-edit-marital-label span{margin:-4px;}
-.settings-submit-wrapper,.profile-edit-submit-wrapper{margin:0 0 30px -3px;}
-.profile-edit-side-div{display:none;}
-#profiles-menu-trigger{margin:0px 0px 0px 25px;}
-.profile-listing{float:left;margin:20px 20px 0px 0px;}
-.icon-profile-edit{background:url("icons.png") -150px 0px no-repeat;border:0;cursor:pointer;display:block;float:right;width:20px;height:20px;margin:0 0 -18px;position:absolute;text-decoration:none;top:113px;right:260px;}
-#profile-edit-links ul{margin:20px 0;padding:0;list-style:none;}
-.marital{margin-top:5px;}
-#register-sitename{display:inline;font-weight:bold;}
-#advanced-expire-popup{background:#2e2f2e;color:#eec;}
-#id_ssl_policy{width:374px;}
-#theme-preview img{margin:10px 10px 10px 288px;}
-.group-delete-wrapper{margin:-31px 50px 0 0;float:right;}
-#group-edit-submit-wrapper{margin:0 0 10px 0;display:inline;}
-#group-edit-desc{margin:10px 0px;}
-#group-members,#prof-members{height:200px;overflow:auto;border:1px solid #555753;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}
-#group-all-contacts,#prof-all-contacts{height:200px;overflow:auto;border:1px solid #555753;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}
-#group-members h3,#group-all-contacts h3,#prof-members h3,#prof-all-contacts h3{color:#eeeeec;background-color:#555753;margin:0;padding:5px;}
-#group-separator,#prof-separator{display:none;}
-#cropimage-wrapper{float:left;}
-#crop-image-form{clear:both;}
-.intro-wrapper{margin-top:20px;}
-.intro-fullname{font-size:1.1em;font-weight:bold;}
-.intro-desc{margin-bottom:20px;font-weight:bold;}
-.intro-note{padding:10px;}
-.intro-end{padding:30px;}
-.intro-form{float:left;}
-.intro-approve-form,.intro-approve-as-friend-end{clear:both;}
-.intro-submit-approve,.intro-submit-ignore{margin-right:20px;}
-.intro-submit-approve{margin-top:15px;}
-.intro-approve-as-friend-label,.intro-approve-as-fan-label,.intro-approve-as-friend,.intro-approve-as-fan{float:left;}
-.intro-form-end{clear:both;margin-bottom:10px;}
-.intro-approve-as-friend-desc{margin-top:10px;}
-.intro-approve-as-end{clear:both;margin-bottom:10px;}
-.intro-end,.clear{clear:both;}
-.eventcal{float:left;font-size:20px;}
-.event{background:#2e2f2e;}
-.vevent{border:1px solid #ccc;}.vevent .event-description,.vevent .event-location,.vevent .event-start{margin-left:10px;margin-right:10px;}
-#new-event-link{margin-bottom:10px;}
-.edit-event-link,.plink-event-link{}
-.event-description:before{content:url('../../../images/calendar.png');margin-right:15px;}
-.event-start,.event-end{margin-left:10px;width:330px;font-size:smaller;}
-.event-start .dtstart,.event-end .dtend{float:right;}
-.event-list-date{margin-bottom:10px;}
-.prevcal,.nextcal{float:left;margin-left:32px;margin-right:32px;margin-top:64px;}
-.event-calendar-end{clear:both;}
-.calendar{font-family:monospace;}
-.today{font-weight:bold;color:#FF0000;}
-#event-start-text,#event-finish-text{margin-top:10px;margin-bottom:5px;}
-#event-nofinish-checkbox,#event-nofinish-text,#event-adjust-checkbox,#event-adjust-text,#event-share-checkbox{float:left;}
-#event-datetime-break{margin-bottom:10px;}
-#event-nofinish-break,#event-adjust-break,#event-share-break{clear:both;}
-#event-desc-text,#event-location-text{margin-top:10px;margin-bottom:5px;}
-#event-submit{margin-top:10px;}
-.body-tag{margin:10px 0;opacity:0.5;}.body-tag:hover{opacity:1.0 !important;}
-.filesavetags,.categorytags{margin:20px 0;opacity:0.5;}
-.filesavetags:hover,.categorytags:hover{margin:20px 0;opacity:1.0 !important;}
-.item-select{opacity:0.1;margin:5px 0 0 6px !important;}.item-select:hover{opacity:1;}
-.checkeditem{opacity:1;}
-#item-delete-selected{margin-top:30px;}
-.delete-checked{position:absolute;left:35px;margin-top:20px;}
-#item-delete-selected-end{clear:both;}
-#item-delete-selected-icon{float:left;margin-right:5px;}
-#item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;}
-.fc-state-highlight{background:#eec;color:#2e2f2e;}
-.directory-item{float:left;margin:0 5px 4px 0;padding:3px;width:180px;height:250px;position:relative;}
-#group-sidebar{margin-bottom:10px;}
-.group-selected,.nets-selected,.fileas-selected{padding:3px;color:#111;background:#f8f8f8;font-weight:bold;}
-.group-selected:hover,.nets-selected:hover,.fileas-selected:hover{color:#111;}
-.groupsideedit{margin-right:10px;}
-#sidebar-group-ul{padding-left:0;}
-#sidebar-group-list{margin:0 0 5px 0;}#sidebar-group-list ul{list-style-type:none;list-style-position:inside;}
-#sidebar-group-list li{margin-top:10px;}
-#sidebar-group-list .icon{display:inline-block;height:12px;width:12px;}
-#sidebar-new-group{margin:auto;display:inline-block;color:#efefef;text-decoration:none;text-align:center;}
-#peoplefind-sidebar form{margin-bottom:10px;}
-#sidebar-new-group:hover{}
-#sidebar-new-group:active{position:relative;top:1px;}
-#side-peoplefind-url{background-color:#e5e0cf;color:#666;border:1px 666 solid;margin-right:3px;width:75%;}#side-peoplefind-url:hover,#side-peoplefind-url:focus{background-color:#efefef;color:#222;border:1px 333 solid;}
-.nets-ul{list-style-type:none;padding-left:0px;}.nets-ul li{margin:10px 0 0;}
-.nets-link,.nets-all{margin-left:0px;}
-#netsearch-box{margin-top:20px;width:150px;}#netsearch-box #search-submit{margin:5px 0px 0px 0px;}
-#pending-update{float:right;color:#fff;font-weight:bold;background-color:#ff0000;padding:0 .3em;}
-.admin.linklist{border:0;padding:0;}
-.admin.link{list-style-position:inside;}
-#adminpage{color:#111;background:transparent;margin:5px;padding:10px;}#adminpage dl{clear:left;margin-bottom:2px;padding-bottom:2px;border-bottom:1px solid #000;}
-#adminpage dt{width:250px;float:left;font-weight:bold;}
-#adminpage dd{margin-left:250px;}
-#adminpage h3{border-bottom:1px solid #ccc;}
-#adminpage .submit{clear:left;}
-#adminpage #pluginslist{margin:0;padding:0;}
-#adminpage .plugin{list-style:none;display:block;border:1px solid #888;padding:1em;margin-bottom:5px;clear:left;}
-#adminpage .toggleplugin{float:left;margin-right:1em;}
-#adminpage table{width:100%;border-bottom:1px solid #000;margin:5px 0;}#adminpage table th{text-align:left;}
-#adminpage td .icon{float:left;}
-#adminpage table#users img{width:16px;height:16px;}
-#adminpage table tr:hover{background-color:#bbc7d7;}
-#adminpage .selectall{text-align:right;}
-#adminpage #users a{text-decoration:underline;}
-#users .name{color:#eec;}
-.field{overflow:auto;}.field label{width:38%;display:inline-block;font-size:1.077em;margin:0 10px 1em 0;border:1px #999 solid;padding:5px;background:#ccc;color:#111;}
-.field .onoff{float:right;margin:0 330px 0 auto;width:80px;}.field .onoff a{display:block;border:1px solid #666;padding:3px 6px 4px 10px;height:16px;text-decoration:none;}
-.field .onoff .on{background:url("../../../images/onoff.jpg") no-repeat 42px 1px #999999;color:#111;text-align:left;}
-.field .onoff .off{background:url("../../../images/onoff.jpg") no-repeat 2px 1px #cccccc;color:#333;text-align:right;}
-.hidden{display:none !important;}
-.field textarea{width:80%;height:100px;}
-.field_help{display:block;margin-left:297px;color:#666;}
-.field.radio .field_help{margin-left:297px;}
-label{width:38%;display:inline-block;font-size:1.077em;margin:0 10px 1em 0;border:1px #999 solid;padding:5px;background:#ccc;color:#111;}
-input{width:250px;height:25px;border:1px #999 solid;}input[type="text"],input[type="password"],input[type="search"]{width:250px;height:25px;border:1px #999 solid;}
-input[type="checkbox"],input[type="radio"]{border:1px #999 solid;margin:0 0 0 0;height:15px;width:15px;}
-input[type="submit"],input[type="button"]{background-color:#555753;border:2px outset #444;border-radius:5px;box-shadow:1px 3px 4px 0 #111;color:#eeeeec;cursor:pointer;font-weight:bold;width:auto;text-shadow:1px 1px #111;-webkit-border-radius:5px;-moz-border-radius:5px;}
-input[type="submit"]:active,input[type="button"]:active{box-shadow:0 0 0 0;}
-.popup{width:100%;height:100%;top:0px;left:0px;position:absolute;display:none;}.popup .background{background-color:#000;opacity:0.5;width:100%;height:100%;position:absolute;top:0px;left:0px;}
-.popup .panel{top:25%;left:25%;width:50%;height:50%;padding:1em;position:absolute;border:4px solid #000000;background-color:#FFFFFF;}
-#panel{z-index:100;}
-.grey{color:grey;}
-.orange{color:orange;}
-.red{color:red;}
-.popup .panel .panel_text{display:block;overflow:auto;height:80%;}
-.popup .panel .panel_in{width:100%;height:100%;position:relative;}
-.popup .panel .panel_actions{width:100%;bottom:4px;left:0px;position:absolute;}
-.panel_text .progress{width:50%;overflow:hidden;height:auto;border:1px solid #cccccc;margin-bottom:5px;}.panel_text .progress span{float:right;display:block;width:25%;background-color:#eeeeee;text-align:right;}
-.oauthapp{height:auto;overflow:auto;border-bottom:2px solid #cccccc;padding-bottom:1em;margin-bottom:1em;}.oauthapp img{float:left;width:48px;height:48px;margin:10px;}.oauthapp img.noicon{background-image:url("../../../images/icons/48/plugin.png");background-position:center center;background-repeat:no-repeat;}
-.oauthapp a{float:left;}
-.iconspacer{display:block;width:16px;height:16px;}
-.icon{display:block;width:20px;height:20px;background:url(icons.png) no-repeat;border:0;text-decoration:none;border-radius:5px;}.icon:hover{border:0;text-decoration:none;}
-.editicon{display:inline-block;width:21px;height:21px;background:url(editicons.png) no-repeat;border:0;text-decoration:none;}
-.shadow{box-shadow:2px 2px 5px 2px #111;}.shadow:active,.shadow:focus,.shadow:hover{box-shadow:0 0 0 0;}
-.editicon:hover{border:0;}
-.boldbb{background-position:0px 0px;}.boldbb:hover{background-position:-22px 0px;}
-.italicbb{background-position:0px -22px;}.italicbb:hover{background-position:-22px -22px;}
-.underlinebb{background-position:0px -44px;}.underlinebb:hover{background-position:-22px -44px;}
-.quotebb{background-position:0px -66px;}.quotebb:hover{background-position:-22px -66px;}
-.codebb{background-position:0px -88px;}.codebb:hover{background-position:-22px -88px;}
-.imagebb{background-position:-44px 0px;}.imagebb:hover{background-position:-66px 0px;}
-.urlbb{background-position:-44px -22px;}.urlbb:hover{background-position:-66px -22px;}
-.videobb{background-position:-44px -44px;}.videobb:hover{background-position:-66px -44px;}
-.icon.drop,.icon.drophide,.icon.delete{float:left;margin:0 2px;}
-.icon.s22.delete{display:block;background-position:-110px 0;}
-.icon.s22.text{padding:10px 0px 0px 25px;width:200px;}
-.icon.text{text-indent:0px;}
-.icon.s16{min-width:16px;height:16px;}
-.s16 .add{background:url("../../../images/icons/16/add.png") no-repeat;}
-.add{margin:0px 5px;}
-.article{background-position:-50px 0;}
-.audio{background-position:-70px 0;}
-.block{background-position:-90px 0px;}
-.drop,.delete{background-position:-110px 0;}
-.drophide{background-position:-130px 0;}
-.edit{background-position:-150px 0;}
-.camera{background-position:-170px 0;}
-.dislike{background-position:-190px 0;}
-.file-as{background-position:-230px -60px;}
-.like{background-position:-211px 0;}
-.link{background-position:-230px 0;}
-.globe,.location{background-position:-50px -20px;}
-.noglobe,.nolocation{background-position:-70px -20px;}
-.no{background-position:-90px -20px;}
-.pause{background-position:-110px -20px;}
-.play{background-position:-130px -20px;}
-.pencil{background-position:-151px -18px;}
-.small-pencil{background-position:-170px -20px;}
-.recycle{background-position:-190px -20px;}
-.remote-link{background-position:-210px -20px;}
-.share{background-position:-230px -20px;}
-.tools{background-position:-50px -40px;}
-.lock{background-position:-70px -40px;}
-.unlock{background-position:-88px -40px;}
-.video{background-position:-110px -40px;}
-.attach{background-position:-190px -40px;}
-.language{background-position:-210px -40px;}
-.starred{background-position:-130px -60px;}
-.unstarred{background-position:-150px -60px;}
-.tagged{background-position:-170px -60px;}
-.on{background-position:-50px -60px;}
-.off{background-position:-70px -60px;}
-.prev{background-position:-90px -60px;}
-.next{background-position:-110px -60px;}
-.icon.dim{opacity:0.3;}
-#pause{position:fixed;bottom:40px;right:30px;}
-.border{border:1px solid #babdb6;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}.border:hover{border:1px solid #babdb6;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
-.attachtype{display:block;width:20px;height:23px;background-image:url(../../../images/content-types.png);}
-.type-video{background-position:0px 0px;}
-.type-image{background-position:-20px 0;}
-.type-audio{background-position:-40px 0;}
-.type-text{background-position:-60px 0px;}
-.type-unkn{background-position:-80px 0;}
-.cc-license{margin-top:100px;font-size:0.7em;}
-footer{display:block;clear:both;}
-#profile-jot-text{height:20px;color:#666;border:1px solid #ccc;border-radius:5px;width:99.5%;}
-#photo-edit-perms-select,#photos-upload-permissions-wrapper,#profile-jot-acl-wrapper{display:block !important;background:#eec;color:#2e2f2e;}
-#acl-wrapper{width:660px;margin:0 auto;}
-#acl-search{float:right;background:#ffffff url("../../../images/search_18.png") no-repeat right center;padding-right:20px;margin:6px;color:#111;}
-#acl-showall{float:left;display:block;width:auto;height:18px;background:#eeeecc url("../../../images/show_all_off.png") 8px 8px no-repeat;padding:7px 10px 7px 30px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;color:#999;margin:5px 0;}#acl-showall.selected{color:#000;background:#ff9900 url(../../../images/show_all_on.png) 8px 8px no-repeat;}
-#acl-list{height:210px;border:1px solid #ccc;clear:both;margin-top:30px;overflow:auto;}
-.acl-list-item{border:1px solid #ccc;display:block;float:left;height:110px;margin:3px 0 5px 5px;width:120px;}.acl-list-item img{width:22px;height:22px;float:left;margin:5px 5px 20px;}
-.acl-list-item p{height:12px;font-size:10px;margin:0 0 22px;padding:2px 0 1px;}
-.acl-list-item a{background:#cccccc 3px 3px no-repeat;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;clear:both;font-size:10px;display:block;width:55px;height:20px;color:#999;margin:5px auto 0;padding:0 3px;text-align:center;vertical-align:middle;}
-#acl-wrapper a:hover{text-decoration:none;color:#000;border:0;}
-.acl-button-show{background-image:url('../../../images/show_off.png');margin:0 auto;}
-.acl-button-hide{background-image:url('../../../images/hide_off.png');margin:0 auto;}
-.acl-button-show.selected{color:#000;background-color:#9ade00;background-image:url(../../../images/show_on.png);}
-.acl-button-hide.selected{color:#000;background-color:#ff4141;background-image:url(../../../images/hide_on.png);}
-.acl-list-item.groupshow{border-color:#9ade00;}
-.acl-list-item.grouphide{border-color:#ff4141;}
-.acpopup{max-height:175px;max-width:42%;background-color:#555753;color:#fff;overflow:auto;z-index:100000;border:1px solid #cccccc;}
-.acpopupitem{background-color:#555753;padding:4px;clear:left;}.acpopupitem img{float:left;margin-right:4px;}
-.acpopupitem.selected{color:#2e3436;background-color:#eeeeec;}
-.qcomment-wrapper{padding:0px;margin:5px 5px 5px 81%;}
-.qcomment{opacity:0.5;}.qcomment:hover{opacity:1.0;}
-#network-star-link{margin-top:10px;}
-.network-star{float:left;margin-right:5px;}.network-star.icon.starred{display:inline-block;}
-.fileas-ul{padding:0;}
-#sidebar-page-list ul{padding:0;margin:5px 0;}
-#sidebar-page-list li{list-style:none;}
-#jappix_mini{margin-left:130px;position:fixed;bottom:0;right:175px !important;z-index:999;}
-@media handheld{body{font-size:15pt;}}
diff --git a/view/theme/dispy/style.less b/view/theme/dispy/style.less
deleted file mode 100644
index 34830cf32..000000000
--- a/view/theme/dispy/style.less
+++ /dev/null
@@ -1,2879 +0,0 @@
-/*
- * dispy
- *
- * maintainer: simon <http://simon.kisikew.org/>
- * author: unknown
- *
- * Author's notes:
- * A few things of note here. The less file is our working copy,
- * and the CSS is *generated* from it. The CSS is the one that's
- * included in the HTML, and not the less one. This is to save
- * bandwidth and processing time.
- */
-/* from html5boilerplate */
-/* these are to tell browsers they should be displayed a certain way */
-
-article, aside, details, figcaption, figure, footer, header, hgroup, nav, section {
- display: block; }
-
-audio, canvas, video, time {
- display: inline-block;
- *display: inline;
- *zoom: 1; }
-
-audio:not([controls]), [hidden] {
- display: none; }
-
-/*
- * Base
- */
-/*
- * 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units
- * 2. Force vertical scrollbar in non-IE
- * 3. Prevent iOS text size adjust on device orientation change, without disabling user zoom: h5bp.com/g
- */
-
-html {
- font-size: 100%;
- overflow-y: scroll;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%; }
-
-body {
- margin: 0;
- font-size: 16px;
- line-height: 1.1em;
- font-family: sans-serif;
- color: #222;
- background-color: #e8e8e8; }
-
-button, input, select, textarea {
- font-family: sans-serif;
- color: #222;
- background-color: #e8e8e8; }
-
-select {
- border: 1px #555 dotted;
- padding: 3px;
- margin: 3px;
- color: #222;
- background: #e8e8e8; }
-
-option {
- padding: 3px;
- color: #222;
- background: #e8e8e8;
- &[selected="selected"] {
- color: #111;
- background: #cca; } }
-
-ul, ol {
- padding: 0; }
-
-/* remember to define focus styles! */
-
-:focus {
- outline: 0; }
-
-[disabled="disabled"] {
- background: #ddd;
- color: #333; }
-
-/* remember to highlight inserts somehow! */
-
-ins {
- background-color: #ff9;
- color: #000;
- text-decoration: none; }
-
-mark {
- background-color: #ff9;
- color: #000;
- font-style: italic;
- font-weight: bold; }
-
-/* Redeclare monospace font family: h5bp.com/j */
-
-pre, code, kbd, samp, .wall-item-body code {
- font-family: monospace, monospace;
- _font-family: monospace;
- font-size: 1em; }
-
-/* Improve readability of pre-formatted text in all browsers */
-
-pre, .wall-item-body code {
- white-space: pre;
- white-space: pre-wrap;
- word-wrap: break-word; }
-
-q {
- quotes: none;
- &:before, &:after {
- content: "";
- content: none; } }
-
-small {
- font-size: 85%; }
-
-/* Position subscript and superscript content without affecting line-height: h5bp.com/k */
-
-sub, sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline; }
-
-sub {
- bottom: -0.25em; }
-
-sup {
- top: -0.5em; }
-
-img {
- border: 0 none; }
-
-a {
- color: #3465a4;
- text-decoration: none;
- margin-bottom: 1px;
- &:hover img {
- text-decoration: none; } }
-
-blockquote {
- background: #eee;
- color: #111;
- text-indent: 5px;
- padding: 5px;
- border: 1px #aaa solid;
- border-radius: 5px; }
-
-a:hover {
- color: #729fcf;
- border-bottom: 1px dotted #729fcf; }
-
-.required {
- display: inline;
- color: #f00;
- font-size: 16px;
- font-weight: bold;
- margin: 3px; }
-
-.fakelink, .lockview {
- color: #3465a4;
- cursor: pointer; }
-
-.fakelink:hover {
- color: #729fcf; }
-
-.smalltext {
- font-size: 0.7em; }
-
-#panel {
- position: absolute;
- font-size: 0.8em;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- border: 1px solid #fff;
- background-color: #2e3436;
- color: #eeeeec;
- padding: 1em; }
-
-.pager {
- margin-top: 60px;
- display: block;
- clear: both;
- text-align: center;
- span {
- padding: 4px;
- margin: 4px; } }
-
-.pager_current {
- background-color: #729fcf;
- color: #fff; }
-
-/**
- * global
- */
-/* .tool .action */
-
-.action {
- margin: 5px 0; }
-
-.tool {
- margin: 5px 0;
- list-style: none; }
-
-#articlemain {
- width: 100%;
- height: 100%;
- margin: 0 auto; }
-
-/**
- * login
- */
-
-#asidemain .field {
- overflow: hidden;
- width: 200px; }
-
-#login-extra-links {
- overflow: auto !important;
- padding-top: 60px !important;
- width: 100% !important;
- a {
- margin-right: 20px; } }
-
-#login_standard {
- display: block !important;
- float: none !important;
- height: 100% !important;
- position: relative !important;
- width: 100% !important;
- .field label {
- width: 200px !important; }
- input {
- margin: 0 0 8px !important;
- width: 210px !important;
- &[type="text"] {
- margin: 0 0 8px !important;
- width: 210px !important; } } }
-
-#login-submit-wrapper {
- margin: 0 !important; }
-
-#login-submit-button {
- margin-left: 0px !important; }
-
-#asidemain #login_openid {
- position: relative !important;
- float: none !important;
- margin-left: 0px !important;
- height: auto !important;
- width: 200px !important; }
-
-#login_openid {
- #id_openid_url {
- width: 180px !important;
- overflow: hidden !important; }
- label {
- width: 180px !important; } }
-
-/**
- * nav
- */
-
-nav {
- height: 60px;
- background-color: #2e3436;
- color: #eeeeec;
- position: relative;
- padding: 20px 20px 10px 95px;
- a {
- text-decoration: none;
- color: #eeeeec;
- border: 0px;
- &:hover {
- text-decoration: none;
- color: #eeeeec;
- border: 0px; } }
- #banner {
- display: block;
- position: absolute;
- left: 51px;
- top: 25px;
- #logo-text a {
- font-size: 40px;
- font-weight: bold;
- margin-left: 3px; } } }
-
-ul#user-menu-popup {
- display: none;
- position: absolute;
- background-color: #555753;
- width: 100%;
- padding: 10px 0px;
- margin: 0px;
- top: 20px;
- left: 0;
- -webkit-border-radius: 0 0 5px 5px;
- -moz-border-radius: 0 0 5px 5px;
- border-radius: 0 0 5px 5px;
- box-shadow: 5px 10px 10px 0 #111;
- z-index: 10000;
- li {
- display: block;
- a {
- display: block;
- padding: 5px;
- &:hover {
- color: #2e3436;
- background-color: #eeeeec; }
- &.nav-sep {
- border-top: 1px solid #eeeeec; } } } }
-
-nav .nav-link {
- display: inline-block;
- width: 22px;
- height: 22px;
- overflow: hidden;
- margin: 0px 5px 5px;
- text-indent: 50px;
- background: transparent url(icons.png) 0 0 no-repeat; }
-
-#nav-apps-link {
- background-position: 0 -66px;
- &:hover {
- background-position: -22px -66px; } }
-
-#nav-community-link, #nav-contacts-link {
- background-position: 0 -22px;
- &:hover {
- background-position: -22px -22px; } }
-
-#nav-directory-link {
- background-position: -44px -154px;
- &:hover {
- background-position: -66px -154px; } }
-
-#nav-help-link {
- background-position: 0 -110px;
- &:hover {
- background-position: -22px -110px; } }
-
-#nav-home-link {
- background-position: -44px -132px;
- &:hover {
- background-position: -66px -132px; } }
-
-#nav-intro-link {
- background-position: 0px -190px;
- &:hover {
- background-position: -44px -190px; } }
-
-#nav-login-link, #nav-logout-link {
- background-position: 0 -88px;
- &:hover {
- background-position: -22px -88px; } }
-
-#nav-messages-link {
- background-position: -44px -88px;
- &:hover {
- background-position: -66px -88px; } }
-
-#nav-notify-link, #nav-notifications-linkmenu {
- background-position: -44px -110px; }
-
-#nav-notify-link:hover {
- background-position: -66px -110px; }
-
-#nav-network-link {
- background-position: 0px -177px;
- &:hover {
- background-position: -22px -177px; } }
-
-#nav-search-link {
- background-position: 0 -44px;
- &:hover {
- background-position: -22px -44px; } }
-
-#profile-link, #profile-title, #wall-image-upload, #wall-file-upload, #profile-attach-wrapper, #profile-audio, #profile-link, #profile-location, #profile-nolocation, #profile-title, #jot-title, #profile-upload-wrapper, #profile-video, #profile-jot-submit, #wall-image-upload-div, #wall-file-upload-div, .icon, .hover, .focus, .pointer {
- cursor: pointer; }
-
-/* popup notifications */
-
-div.jGrowl div {
- &.notice {
- background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
- color: #ffffff;
- padding-left: 58px; }
- &.info {
- background: #364e59 url("../../../images/icons/48/info.png") no-repeat 5px center;
- color: #ffffff;
- padding-left: 58px; } }
-
-#nav-notifications-menu {
- margin: 30px 0 0 -20px;
- width: 275px;
- max-height: 300px;
- overflow-y: auto;
- font-size: 9pt;
- .contactname {
- font-weight: bold;
- font-size: 0.9em; }
- img {
- float: left;
- margin-right: 5px; }
- .notif-when {
- font-size: 0.8em;
- display: block; }
- li {
- word-wrap: normal;
- border-bottom: 1px solid #000;
- &:hover {
- color: black; } }
- a:hover {
- color: black;
- text-decoration: underline; } }
-
-nav #nav-notifications-linkmenu {
- &.on .icon.s22.notify, &.selected .icon.s22.notify {
- background-image: url("../../../images/icons/22/notify_on.png"); } }
-
-.show {
- display: block; }
-
-#notifications {
- height: 20px;
- width: 170px;
- position: absolute;
- top: -19px;
- left: 4px; }
-
-#nav-floater {
- position: fixed;
- top: 20px;
- right: 1%;
- padding: 5px;
- background: #2e3436;
- color: transparent;
- border-radius: 5px;
- z-index: 100;
- width: 300px;
- height: 60px; }
-
-#nav-buttons {
- clear: both;
- list-style: none;
- padding: 0px;
- margin: 0px;
- height: 25px;
- > li {
- padding: 0;
- display: inline-block;
- margin: 0px -4px 0px 0px; } }
-
-.floaterflip {
- display: block;
- position: fixed;
- z-index: 110;
- top: 56px;
- right: 19px;
- width: 22px;
- height: 22px;
- overflow: hidden;
- margin: 0px;
- background: transparent url(icons.png) -190px -60px no-repeat; }
-
-.search-box {
- display: inline-block;
- margin: 5px;
- position: fixed;
- right: 0px;
- bottom: 0px;
- z-index: 100;
- background: #1d1f1d;
- border-radius: 5px; }
-
-#search-text {
- border: 1px #eec solid;
- background: #2e3436;
- color: #eec; }
-
-.search-box #search-text {
- margin: 8px;
- width: 10em;
- height: 14px;
- color: #eec; }
-
-#scrollup {
- position: fixed;
- right: 5px;
- bottom: 40px;
- z-index: 100;
- a:hover {
- text-decoration: none;
- border: 0; } }
-
-#user-menu {
- box-shadow: 5px 0 10px 0 #111;
- display: block;
- width: 75%;
- margin: 3px 0 0 0;
- position: relative;
- background-color: #555753;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- background: #555753 url("menu-user-pin.jpg") 98% center no-repeat;
- clear: both;
- top: 4px;
- left: 10px;
- padding: 2px;
- > a {
- vertical-align: top; } }
-
-#user-menu-label {
- font-size: 12px;
- padding: 3px 20px 9px 5px;
- height: 10px; }
-
-.nav-ajax-update, .nav-ajax-left {
- width: 30px;
- height: 19px;
- background: transparent url(notifications.png) 0 0 no-repeat;
- color: #222;
- font-weight: bold;
- font-size: 0.8em;
- padding-top: 0.2em;
- text-align: center;
- float: left;
- margin: 0 -1px 0 3px;
- display: block;
- visibility: hidden; }
-
-.nav-ajax-update.show, .nav-ajax-left.show {
- visibility: visible; }
-
-#net-update {
- background-position: 0px 0px; }
-
-#mail-update {
- background-position: -30px 0; }
-
-#notify-update {
- background-position: -60px 0px; }
-
-#home-update {
- background-position: -90px 0px; }
-
-#intro-update {
- background-position: -120px 0px; }
-
-#lang-select-icon {
- cursor: pointer;
- position: fixed;
- left: 28px;
- bottom: 6px;
- z-index: 10; }
-
-#language-selector {
- position: fixed;
- bottom: 2px;
- left: 52px;
- z-index: 10; }
-
-.menu-popup {
- position: absolute;
- display: none;
- width: 11em;
- background: #ffffff;
- color: #2d2d2d;
- margin: 0px;
- padding: 0px;
- list-style: none;
- border: 3px solid #364e59;
- z-index: 100000;
- -webkit-box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7);
- -moz-box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7);
- box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7);
- a {
- display: block;
- color: #2d2d2d;
- padding: 5px 10px;
- text-decoration: none;
- &:hover {
- background-color: #bdcdd4; } }
- .menu-sep {
- border-top: 1px solid #9eabb0; }
- li {
- float: none;
- overflow: auto;
- height: auto;
- display: block;
- img {
- float: left;
- width: 16px;
- height: 16px;
- padding-right: 5px; } }
- .empty {
- padding: 5px;
- text-align: center;
- color: #9eabb0; } }
-
-.notif-item {
- font-size: small;
- a {
- vertical-align: middle; } }
-
-.notif-image {
- width: 32px;
- height: 32px;
- padding: 7px 7px 0px 0px; }
-
-.notify-seen {
- background: #ddd; }
-
-/**
- * sysmsg
- */
-
-#sysmsg_info {
- position: fixed;
- bottom: 0;
- -moz-box-shadow: 3px 3px 3px 10px 0 #000;
- -webkit-box-shadow: 3px 3px 10px 0 #000;
- box-shadow: 3px 3px 10px 0 #000;
- padding: 10px;
- background-color: #fcaf3e;
- border: 2px solid #f8911b;
- border-bottom: 0;
- padding-bottom: 50px;
- z-index: 1000; }
-
-#sysmsg {
- position: fixed;
- bottom: 0;
- -moz-box-shadow: 3px 3px 10px 0 #000;
- -webkit-box-shadow: 3px 3px 10px 0 #000;
- box-shadow: 3px 3px 10px 0 #000;
- padding: 10px;
- background-color: #fcaf3e;
- border: 2px solid #f8911b;
- border-bottom: 0;
- padding-bottom: 50px;
- z-index: 1000; }
-
-#sysmsg_info br, #sysmsg br {
- display: block;
- margin: 2px 0px;
- border-top: 1px solid #ccccce; }
-
-/**
- * aside
- */
-
-#asidemain {
- float: left;
- font-size: smaller;
- margin: 20px 0 20px 35px;
- width: 25%;
- display: inline; }
-
-/* for now, disappear these */
-
-#asideright, #asideleft {
- display: none; }
-
-.vcard {
- .fn {
- font-size: 1.7em;
- font-weight: bold;
- border-bottom: 1px solid #729fcf;
- padding-bottom: 3px; }
- #profile-photo-wrapper {
- margin: 20px;
- img {
- box-shadow: 3px 3px 10px 0 #000; } } }
-
-/* http://css-tricks.com/snippets/css/css-box-shadow/
-* box-shadow:
-* 1. The horizontal offset of the shadow, positive means
-* the shadow will be on the right of the box, a negative
-* offset will put the shadow on the left of the box.
-* 2. The vertical offset of the shadow, a negative one
-* means the box-shadow will be above the box, a
-* positive one means the shadow will be below the box.
-* 3. The blur radius (optional), if set to 0 the shadow
-* will be sharp, the higher the number, the more blurred
-* it will be.
-* 4. The spread radius (optional), positive values increase
-* the size of the shadow, negative values decrease the size.
-* Default is 0 (the shadow is same size as blur).
-* 5. Colo[u]r
-*/
-
-#asidemain {
- h4 {
- font-size: 1.2em; }
- #viewcontacts {
- text-align: right; } }
-
-.aprofile dt {
- background: transparent;
- color: #666666;
- font-weight: bold;
- box-shadow: 1px 1px 5px 0 #000;
- margin: 15px 0 5px;
- padding-left: 5px; }
-
-#profile-extra-links ul {
- margin-left: 0px;
- padding-left: 0px;
- list-style: none; }
-
-#dfrn-request-link {
- background: #3465a4 url(connect.png) no-repeat 95% center;
- border-radius: 5px 5px 5px 5px;
- color: #fff;
- display: block;
- font-size: 1.2em;
- padding: 0.2em 0.5em; }
-
-#wallmessage-link {
- /*background: #3465A4 url(connect.png) no-repeat 95% center;*/
- /*border-radius: 5px 5px 5px 5px;*/
- color: #eee;
- display: block;
- font-size: 1.2em;
- padding: 0.2em 0.5em; }
-
-#netsearch-box {
- margin: 20px 0px 30px;
- width: 150px;
- #search-submit {
- margin: 5px 5px 0px 0px; } }
-
-.ttright {
- margin: 0px 0px 0px 0px; }
-
-/**
- * contacts block
- */
-
-.contact-block-div {
- width: 50px;
- height: 50px;
- float: left; }
-
-.contact-block-textdiv {
- width: 150px;
- height: 34px;
- float: left; }
-
-#contact-block-end {
- clear: both; }
-
-/**
- * jot
- */
-
-#jot {
- /*width: 785px;*/
- margin: 10px 0 20px 0px;
- width: 100%;
- #jot-tools {
- margin: 0px;
- padding: 0px;
- height: 35px;
- overflow: none;
- width: 100%;
- /*background-color: #0e232e;*/
- /*border-bottom: 2px solid #9eabb0;*/
- span {
- float: left;
- margin: 10px 20px 2px 0px;
- a {
- display: block; } }
- .perms {
- float: right;
- width: 40px; }
- li.loading {
- float: right;
- background-color: #ffffff;
- width: 20px;
- vertical-align: center;
- text-align: center;
- border-top: 2px solid #9eabb0;
- height: 38px;
- img {
- margin-top: 10px; } } }
- #jot-title {
- border: 1px solid #ccc;
- margin: 0 0 5px;
- height: 20px;
- width: 90%;
- font-weight: bold;
- border-radius: 5px;
- vertical-align: middle; } }
-
-#jot-category {
- margin: 5px 0;
- border-radius: 5px;
- border: 1px #ccc solid;
- color: #666;
- font-size: smaller;
- &:focus {
- color: #111; } }
-
-#jot #character-counter {
- width: 6%;
- float: right;
- text-align: right;
- height: 15px;
- line-height: 20px;
- padding: 2px 20px 5px 0; }
-
-#profile-jot-text_parent {
- box-shadow: 5px 0 10px 0 #111; }
-
-#profile-jot-text_tbl {
- margin-bottom: 10px;
- background: #777; }
-
-#profile-jot-text_ifr {
- width: 99.900002% !important; }
-
-#profile-jot-text_toolbargroup, .mceCenter tr {
- background: #777; }
-
-[id$="jot-text_ifr"] {
- width: 99.900002% !important;
- color: #2e2f2e;
- background: #eec;
- .mceContentBody {
- color: #2e2f2e;
- background: #eec; } }
-
-.defaultSkin {
- tr.mceFirst {
- background: #777; }
- td {
- &.mceFirst, &.mceLast {
- background-color: #eec; } }
- span.mceIcon, img.mceIcon, .mceButtonDisabled .mceIcon {
- background-color: #eec; } }
-
-#profile-attach-wrapper, #profile-audio-wrapper, #profile-link-wrapper, #profile-location-wrapper, #profile-nolocation-wrapper, #profile-title-wrapper, #profile-upload-wrapper, #profile-video-wrapper {
- float: left;
- margin: 0 20px 0 0; }
-
-#profile-rotator-wrapper {
- float: right; }
-
-#profile-jot-tools-end, #profile-jot-banner-end {
- clear: both; }
-
-#profile-jot-email-wrapper {
- margin: 10px 10% 0;
- border: 1px solid #555753;
- border-bottom: 0; }
-
-#profile-jot-email-label {
- background-color: #555753;
- color: #ccccce;
- padding: 5px; }
-
-#profile-jot-email {
- width: 90%;
- margin: 5px; }
-
-#profile-jot-networks {
- margin: 0 10%;
- border: 1px solid #555753;
- border-top: 0;
- border-bottom: 0;
- padding: 5px; }
-
-#profile-jot-net {
- margin: 5px 0; }
-
-#jot-preview-link {
- margin: 0 0 0 10px;
- border: 0;
- text-decoration: none;
- float: right; }
-
-.icon-text-preview {
- margin: 0 0 -18px 0;
- display: block;
- width: 20px;
- height: 20px;
- background: url(icons.png) no-repeat -128px -40px;
- border: 0;
- text-decoration: none;
- float: right;
- cursor: pointer; }
-
-#profile-jot-perms {
- float: right;
- background-color: #555753;
- height: 22px;
- width: 20px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- overflow: hidden;
- border: 0px;
- margin: 0 10px 0 10px; }
-
-#profile-jot-plugin-wrapper {
- width: 1px;
- margin: 10px 0 0 0;
- float: right; }
-
-#profile-jot-submit-wrapper {
- float: right;
- width: 100%;
- list-style: none;
- margin: 10px 0 0 0;
- padding: 0; }
-
-#profile-jot-submit {
- height: auto;
- background-color: #555753;
- color: #eeeeec;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- border: 2px outset #222420;
- margin: 0;
- float: right;
- text-shadow: 1px 1px #111;
- width: auto;
- &:active {
- box-shadow: 0 0 0 0; } }
-
-#jot-perms-icon {
- height: 22px;
- width: 20px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- overflow: hidden;
- border: 0; }
-
-#profile-jot-acl-wrapper {
- margin: 0 10px;
- border: 1px solid #555753;
- border-top: 0;
- display: block !important; }
-
-#group_allow_wrapper, #group_deny_wrapper, #acl-permit-outer-wrapper {
- width: 47%;
- float: left; }
-
-#contact_allow_wrapper, #contact_deny_wrapper, #acl-deny-outer-wrapper {
- width: 47%;
- float: right; }
-
-#acl-permit-text {
- background-color: #555753;
- color: #ccccce;
- padding: 5px;
- float: left; }
-
-#jot-public {
- background-color: #555753;
- color: #ff0000;
- padding: 5px;
- float: left; }
-
-#acl-deny-text {
- background-color: #555753;
- color: #ccccce;
- padding: 5px;
- float: left; }
-
-#acl-permit-text-end, #acl-deny-text-end {
- clear: both; }
-
-#jot-title-desc {
- color: #ccc; }
-
-#profile-jot-desc {
- color: #a00;
- margin: 5px 0; }
-
-#jot-title-wrapper {
- margin-bottom: 5px; }
-
-#jot-title-display {
- font-weight: bold; }
-
-.jothidden {
- display: none; }
-
-#jot-preview-content {
- background-color: #ffffe0;
- color: #111;
- border: 1px #aa0 solid;
- border-radius: 5px;
- padding: 3px 3px 6px 10px;
- .wall-item-outside-wrapper {
- border: 0;
- border-radius: 0px; } }
-
-/**
- * section
- */
-
-#sectionmain {
- margin: 20px;
- font-size: 0.8em;
- min-width: 475px;
- width: 67%;
- float: left;
- display: inline; }
-
-/**
- * tabs
- */
-
-.tabs {
- list-style: none;
- margin: 10px 0;
- padding: 0;
- li {
- display: inline;
- font-size: smaller;
- font-weight: bold; } }
-
-.tab {
- border: 1px solid #729fcf;
- padding: 4px;
- &:hover, &.active:hover, &:active {
- background: #729fcf;
- color: #eeeeec; }
- &.active {
- background: #729fcf;
- color: #eeeeec;
- a {
- color: #729fcf; } }
- a {
- border: 0;
- text-decoration: none; } }
-
-/**
- * items
- */
-
-.wall-item-outside-wrapper {
- border: 1px solid #aaa;
- border-radius: 5px;
- box-shadow: 5px 0 10px 0 #888;
- &.comment {
- margin-top: 5px; } }
-
-.wall-item-outside-wrapper-end {
- clear: both; }
-
-.wall-item-content-wrapper {
- position: relative;
- padding: 10px;
- width: auto; }
-
-.wall-item-outside-wrapper .wall-item-comment-wrapper {
- /*margin-left: 90px;*/ }
-
-.shiny {
- background: #efefdf;
- border-radius: 5px; }
-
-.wall-outside-wrapper .shiny {
- border-radius: 5px; }
-
-.heart {
- color: red; }
-
-.wall-item-content {
- overflow-x: auto;
- margin: 0px 15px 0px 5px; }
-
-/* removing it from here, vs. putting it in .wall-item-content
-* might break things for people. we shall see ;) */
-
-[id^="tread-wrapper"], [class^="tread-wrapper"] {
- margin: 15px 0 0 0;
- padding: 0px;
- /*overflow-x: auto;*/ }
-
-.wall-item-photo-menu {
- display: none; }
-
-.wall-item-photo-menu-button {
- display: none;
- text-indent: -99999px;
- background: #555753 url(menu-user-pin.jpg) no-repeat 75px center;
- position: absolute;
- overflow: hidden;
- height: 20px;
- width: 90px;
- top: 85px;
- left: 0;
- -webkit-border-radius: 0 0 5px 5px;
- -moz-border-radius: 0 0 5px 5px;
- border-radius: 0 0 5px 5px; }
-
-.wall-item-info {
- float: left;
- width: 110px; }
-
-.wall-item-photo-wrapper {
- width: 80px;
- height: 80px;
- position: relative;
- padding: 5px;
- background-color: #555753;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px; }
-
-[class^="wall-item-tools"] * {
- /*margin: 0 0 5px 0;*/
- > * {
- /*margin: 0 0 5px 0;*/ } }
-
-.wall-item-tools {
- float: right;
- opacity: 0.4;
- -webkit-transition: all 1s ease-in-out;
- -moz-transition: all 1s ease-in-out;
- -o-transition: all 1s ease-in-out;
- -ms-transition: all 1s ease-in-out;
- transition: all 1s ease-in-out;
- &:hover {
- opacity: 1;
- -webkit-transition: all 1s ease-in-out;
- -moz-transition: all 1s ease-in-out;
- -o-transition: all 1s ease-in-out;
- -ms-transition: all 1s ease-in-out;
- transition: all 1s ease-in-out; } }
-
-.wall-item-subtools1 {
- height: 30px;
- list-style: none outside none;
- margin: 20px 0 30px -20px;
- padding: 0;
- width: 30px; }
-
-.wall-item-subtools2 {
- height: 25px;
- list-style: none outside none;
- margin: -75px 0 0 5px;
- padding: 0;
- width: 25px; }
-
-.wall-item-title {
- font-size: 1.2em;
- font-weight: bold;
- margin-bottom: 1em; }
-
-.wall-item-body {
- margin: 20px 20px 10px 0px;
- text-align: left;
- overflow-x: auto; }
-
-.wall-item-lock-wrapper {
- float: right;
- height: 22px;
- margin: 0 -5px 0 0;
- width: 22px;
- opacity: 1; }
-
-.wall-item-dislike, .wall-item-like {
- clear: left;
- font-size: 0.8em;
- color: #878883;
- margin: 5px 0 5px 120px; }
-
-.wall-item-author, .wall-item-actions-author {
- clear: left;
- font-size: 0.8em;
- color: #878883;
- margin: 20px 20px 0 110px; }
-
-.wall-item-ago {
- display: inline;
- padding-left: 10px; }
-
-.wall-item-wrapper-end {
- clear: both; }
-
-.wall-item-location {
- margin-top: 15px;
- width: 100px;
- overflow: hidden;
- text-overflow: ellipsis;
- -o-text-overflow: ellipsis;
- .icon {
- float: left; }
- > a, .smalltext {
- margin-left: 25px;
- font-size: 0.7em;
- display: block; }
- > br {
- display: none; } }
-
-.wallwall {
- .wwto {
- left: 5px;
- margin: 0;
- position: absolute;
- top: 75px;
- width: 30px;
- z-index: 10001;
- width: 30px;
- height: 30px;
- img {
- width: 30px !important;
- height: 30px !important; } }
- .wall-item-photo-end {
- clear: both; } }
-
-.wall-item-arrowphoto-wrapper {
- position: absolute;
- left: 35px;
- top: 80px;
- z-index: 10002; }
-
-.wall-item-photo-menu {
- min-width: 92px;
- border: 2px solid #FFFFFF;
- border-top: 0px;
- background: #555753;
- position: absolute;
- left: -2px;
- top: 101px;
- display: none;
- z-index: 10003;
- -webkit-border-radius: 0px 5px 5px 5px;
- -moz-border-radius: 0px 5px 5px 5px;
- border-radius: 0px 5px 5px 5px;
- ul {
- margin: 0px;
- padding: 0px;
- list-style: none; }
- li a {
- white-space: nowrap;
- display: block;
- padding: 5px 2px;
- color: #eeeeec;
- &:hover {
- color: #555753;
- background: #eeeeec; } } }
-
-#item-delete-selected {
- overflow: auto;
- width: 100%; }
-
-#connect-services-header, #connect-services, #extra-help-header, #extra-help, #postit-header, #postit {
- margin: 5px 0 0 0; }
-
-/**
- * comment
- */
-
-.ccollapse-wrapper {
- font-size: 0.9em;
- margin-left: 80px; }
-
-.wall-item-outside-wrapper.comment {
- margin-left: 80px;
- .wall-item-photo {
- width: 40px!important;
- height: 40px!important; }
- .wall-item-photo-wrapper {
- width: 40px;
- height: 40px; }
- .wall-item-photo-menu-button {
- width: 50px;
- top: 45px;
- background-position: 35px center; }
- .wall-item-info {
- width: 60px; }
- .wall-item-body {
- margin-left: 10px; }
- .wall-item-author {
- margin-left: 50px; }
- .wall-item-photo-menu {
- min-width: 50px;
- top: 60px; } }
-
-.comment-wwedit-wrapper {
- /*margin: 30px 0px 0px 80px;*/ }
-
-.comment-edit-wrapper {
- border-top: 1px #aaa solid; }
-
-[class^="comment-edit-bb"] {
- list-style: none;
- display: none;
- margin: -40px 0 5px 60px;
- width: 75%;
- > li {
- display: inline-block;
- margin: 0 10px 0 0;
- visibility: none; } }
-
-.comment-wwedit-wrapper img, .comment-edit-wrapper img {
- width: 20px;
- height: 20px; }
-
-.comment-edit-photo-link, .comment-edit-photo {
- margin-left: 10px; }
-
-.my-comment-photo {
- width: 40px;
- height: 40px;
- padding: 5px; }
-
-[class^="comment-edit-text"] {
- margin: 5px 0 10px 20px;
- width: 84.5%; }
-
-.comment-edit-text-empty {
- height: 20px;
- border: 2px #babdd6 solid;
- border-radius: 5px;
- color: #babdb6;
- -webkit-transition: all 0.5s ease-in-out;
- -moz-transition: all 0.5s ease-in-out;
- -o-transition: all 0.5s ease-in-out;
- -ms-transition: all 0.5s ease-in-out;
- transition: all 0.5s ease-in-out;
- &:hover {
- color: #999999; } }
-
-.comment-edit-text-full {
- height: 10em;
- border-radius: 5px;
- -webkit-transition: all 0.5s ease-in-out;
- -moz-transition: all 0.5s ease-in-out;
- -o-transition: all 0.5s ease-in-out;
- -ms-transition: all 0.5s ease-in-out;
- transition: all 0.5s ease-in-out; }
-
-.comment-edit-submit-wrapper {
- width: 90%;
- margin: 5px 5px 10px 50px;
- text-align: right; }
-
-.comment-edit-submit {
- height: 22px;
- background-color: #555753;
- color: #eeeeec;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- border: 0; }
-
-/**
- * item text style
- */
-
-.wall-item-body code {
- display: block;
- padding: 0 0 10px 5px;
- border-color: #ccc;
- border-style: solid;
- border-width: 1px 1px 1px 10px;
- background: #eee;
- color: #444;
- width: 95%; }
-
-/**
- * profile
- */
-
-div {
- &[id$="text"] {
- font-weight: bold;
- border-bottom: 1px solid #ccc; }
- &[id$="wrapper"] {
- height: 100%;
- margin-bottom: 1em;
- br {
- clear: left; } } }
-
-[id$="-end"], [class$="end"] {
- clear: both;
- margin: 0 0 10px 0; }
-
-#advanced-profile-with {
- margin-left: 200px; }
-
-/**
- * photos
- */
-
-.photos {
- height: auto;
- overflow: auto; }
-
-#photo-top-links {
- margin-bottom: 30px; }
-
-.photo-album-image-wrapper, .photo-top-image-wrapper {
- float: left;
- -moz-box-shadow: 3px 3px 10px 0 #000;
- -webkit-box-shadow: 3px 3px 10px 0 #000;
- box-shadow: 3px 3px 10px 0 #000;
- background-color: #eee;
- color: #111;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- padding-bottom: 30px;
- position: relative;
- margin: 0 10px 10px 0; }
-
-#photo-photo {
- max-width: 100%;
- img {
- max-width: 100%; } }
-
-.photo-top-image-wrapper a:hover, #photo-photo a:hover, .photo-album-image-wrapper a:hover {
- border-bottom: 0; }
-
-.photo-top-photo, .photo-album-photo {
- -webkit-border-radius: 5px 5px 0 0;
- -moz-border-radius: 5px 5px 0 0;
- border-radius: 5px 5px 0 0; }
-
-.photo-top-album-name {
- position: absolute;
- bottom: 0;
- padding: 0 5px; }
-
-.caption {
- position: absolute;
- bottom: 0;
- margin: 0 5px; }
-
-#photo-photo {
- position: relative;
- float: left; }
-
-#photo-prev-link, #photo-next-link {
- position: absolute;
- width: 30%;
- height: 100%;
- background-color: rgba(255, 255, 255, 0.5);
- opacity: 0;
- -webkit-transition: all .2s ease-in-out;
- -moz-transition: all .2s ease-in-out;
- -o-transition: all .2s ease-in-out;
- -ms-transition: all .2s ease-in-out;
- transition: all .2s ease-in-out;
- background-position: center center;
- background-repeat: no-repeat; }
-
-#photo-prev-link {
- left: 0;
- top: 0;
- background-image: url(prev.png); }
-
-#photo-next-link {
- right: 0;
- top: 0;
- background-image: url(next.png); }
-
-#photo-prev-link a, #photo-next-link a {
- display: block;
- width: 100%;
- height: 100%;
- overflow: hidden;
- text-indent: -900000px; }
-
-#photo-prev-link:hover {
- opacity: 1;
- -webkit-transition: all .2s ease-in-out;
- -moz-transition: all .2s ease-in-out;
- -o-transition: all .2s ease-in-out;
- -ms-transition: all .2s ease-in-out;
- transition: all .2s ease-in-out; }
-
-#photo-next-link {
- &:hover {
- opacity: 1;
- -webkit-transition: all .2s ease-in-out;
- -moz-transition: all .2s ease-in-out;
- -o-transition: all .2s ease-in-out;
- -ms-transition: all .2s ease-in-out;
- transition: all .2s ease-in-out; }
- .icon {
- display: none; } }
-
-#photo-prev-link .icon {
- display: none; }
-
-#photos-upload-spacer, #photos-upload-new-wrapper, #photos-upload-exist-wrapper {
- margin-bottom: 1em; }
-
-#photos-upload-existing-album-text, #photos-upload-newalbum-div {
- background-color: #555753;
- color: #eeeeec;
- padding: 1px; }
-
-#photos-upload-album-select, #photos-upload-newalbum {
- width: 99%; }
-
-#photos-upload-perms-menu {
- text-align: right; }
-
-#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname {
- float: left;
- margin-bottom: 25px; }
-
-#photo-edit-link-wrap {
- margin-bottom: 15px; }
-
-#photo-edit-caption, #photo-edit-newtag {
- width: 100%; }
-
-#photo-like-div {
- margin-bottom: 25px; }
-
-#photo-edit-caption-end, #photo-edit-tags-end, #photo-edit-albumname-end {
- clear: both; }
-
-#photo-edit-delete-button {
- margin-left: 200px; }
-
-#photo-edit-end {
- margin-bottom: 35px; }
-
-#photo-caption {
- font-size: 110%;
- font-weight: bold;
- margin-top: 15px;
- margin-bottom: 15px; }
-
-/**
- * message
- */
-
-.prvmail-text {
- width: 100%; }
-
-#prvmail-subject {
- width: 100%;
- color: #eec;
- background: #444; }
-
-#prvmail-submit-wrapper {
- margin-top: 10px; }
-
-#prvmail-submit {
- float: right;
- margin-top: 0; }
-
-#prvmail-submit-wrapper div {
- margin-right: 5px;
- float: left; }
-
-.mail-list-outside-wrapper {
- margin-top: 20px; }
-
-.mail-list-sender {
- float: left; }
-
-.mail-list-detail {
- margin-left: 90px; }
-
-.mail-list-sender-name {
- display: inline;
- font-size: 1.1em; }
-
-.mail-list-date {
- display: inline;
- font-size: 0.9em;
- padding-left: 10px; }
-
-.mail-list-sender-name, .mail-list-date {
- font-style: italic; }
-
-.mail-list-subject {
- font-size: 1.2em; }
-
-.mail-list-delete-wrapper {
- float: right; }
-
-.mail-list-outside-wrapper-end {
- clear: both;
- border-bottom: 1px #eec dotted; }
-
-.mail-conv-sender {
- float: left;
- margin: 0px 5px 5px 0px; }
-
-.mail-conv-sender-photo {
- width: 32px;
- height: 32px; }
-
-.mail-conv-sender-name {
- float: left; }
-
-.mail-conv-date {
- float: right; }
-
-.mail-conv-subject {
- clear: right;
- font-weight: bold;
- font-size: 1.2em; }
-
-.mail-conv-body {
- clear: both; }
-
-.mail-conv-delete-wrapper {
- margin-top: 5px; }
-
-/**
- * contacts
- */
-
-.view-contact-wrapper, .contact-entry-wrapper {
- float: left;
- margin: 0 5px 40px 0;
- width: 120px;
- height: 120px;
- padding: 3px;
- position: relative; }
-
-.contact-direction-wrapper {
- position: absolute;
- top: 20px; }
-
-.contact-edit-links {
- position: absolute;
- top: 60px; }
-
-.contact-entry-photo-wrapper {}
-
-.contact-entry-photo {
- margin-left: 20px; }
-
-.contact-entry-name {
- width: 120px;
- font-weight: bold;
- /*overflow: hidden;*/ }
-
-.contact-entry-photo {
- position: relative; }
-
-.contact-entry-edit-links .icon {
- border: 1px solid #babdb6;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
- background-color: #fff; }
-
-#contact-entry-url, [id^="contact-entry-url"] {
- font-size: smaller;
- /*overflow: scroll;*/ }
-
-#contact-entry-network, [id^="contact-entry-network"] {
- font-size: smaller;
- font-style: italic; }
-
-#contact-edit-banner-name {
- font-size: 1.5em; }
-
-#contact-edit-photo-wrapper {
- position: relative;
- float: left;
- padding: 20px; }
-
-#contact-edit-direction-icon {
- position: absolute;
- top: 60px;
- left: 0; }
-
-#contact-edit-nav-wrapper {
- margin-left: 0px; }
-
-#contact-edit-links {
- margin-top: 23px;
- ul {
- list-style-type: none; } }
-
-#contact-drop-links {
- margin-left: 5px; }
-
-#contact-edit-nav-wrapper .icon {
- border: 1px solid #babdb6;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px; }
-
-#contact-edit-poll-wrapper {
- margin-left: 0px; }
-
-#contact-edit-last-update-text {
- margin-bottom: 15px; }
-
-#contact-edit-last-updated {
- font-weight: bold; }
-
-#contact-edit-poll-text {
- display: inline; }
-
-#contact-edit-info_tbl, #contact-edit-info_parent, .mceLayout {
- width: 100%; }
-
-#contact-edit-end {
- clear: both;
- margin-bottom: 65px; }
-
-.contact-photo-menu-button {
- position: absolute;
- background-image: url("photo-menu.jpg");
- background-position: top left;
- background-repeat: no-repeat;
- margin: 0px;
- padding: 0px;
- width: 16px;
- height: 16px;
- top: 64px;
- left: 0px;
- overflow: hidden;
- text-indent: 40px;
- display: none; }
-
-.contact-photo-menu {
- width: auto;
- border: 2px solid #444;
- background: #eee;
- color: #111;
- position: absolute;
- left: 0px;
- top: 90px;
- display: none;
- z-index: 10000;
- ul {
- margin: 0px;
- padding: 0px;
- list-style: none; }
- li a {
- display: block;
- padding: 2px;
- &:hover {
- color: #fff;
- background: #3465A4;
- text-decoration: none; } } }
-
-/**
- * register, settings & profile forms
- */
-
-.openid {}
-
-#id_openid_url {
- background: url(login-bg.gif) no-repeat;
- background-position: 0 50%;
- padding-left: 18px; }
-
-#settings-nickname-desc {
- background-color: #eee;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- padding: 5px;
- color: #111; }
-
-#settings-default-perms {
- margin-bottom: 20px; }
-
-#register-form div, #profile-edit-form div {
- clear: both; }
-
-.settings-block {
- label {
- clear: left; }
- input {
- margin: 10px 5px; } }
-
-/*#register-form label, */
-/*#profile-edit-form label {*/
-/* width: 300px; */
-/* float: left; */
-/*} */
-
-/*#register-form span, */
-/*#profile-edit-form span {*/
-/* color: #555753; */
-/* display: block; */
-/* margin-bottom: 20px; */
-/*} */
-
-#profile-edit-marital-label span {
- margin: -4px; }
-
-.settings-submit-wrapper, .profile-edit-submit-wrapper {
- margin: 0 0 30px -3px; }
-
-.profile-edit-side-div {
- display: none; }
-
-/*.profile-edit-side-div:hover {
- display: block;
-}
-.profile-edit-side-link {
- margin: 3px 0px 0px 70px;
-}*/
-
-#profiles-menu-trigger {
- margin: 0px 0px 0px 25px; }
-
-.profile-listing {
- float: left;
- margin: 20px 20px 0px 0px; }
-
-.icon-profile-edit {
- background: url("icons.png") -150px 0px no-repeat;
- border: 0;
- cursor: pointer;
- display: block;
- float: right;
- width: 20px;
- height: 20px;
- margin: 0 0 -18px;
- position: absolute;
- text-decoration: none;
- top: 113px;
- right: 260px; }
-
-#profile-edit-links ul {
- margin: 20px 0;
- padding: 0;
- list-style: none; }
-
-.marital {
- margin-top: 5px; }
-
-#register-sitename {
- display: inline;
- font-weight: bold; }
-
-#advanced-expire-popup {
- background: #2e2f2e;
- color: #eec; }
-
-#id_ssl_policy {
- width: 374px; }
-
-#theme-preview img {
- margin: 10px 10px 10px 288px; }
-
-/**
- * contacts selector
- */
-
-.group-delete-wrapper {
- margin: -31px 50px 0 0;
- float: right; }
-
-/*.group-delete-icon {
- margin: 0 0 0 10px;
-}*/
-
-#group-edit-submit-wrapper {
- margin: 0 0 10px 0;
- display: inline; }
-
-#group-edit-desc {
- margin: 10px 0px; }
-
-#group-members, #prof-members {
- height: 200px;
- overflow: auto;
- border: 1px solid #555753;
- -webkit-border-radius: 5px 5px 0 0;
- -moz-border-radius: 5px 5px 0 0;
- border-radius: 5px 5px 0 0; }
-
-#group-all-contacts, #prof-all-contacts {
- height: 200px;
- overflow: auto;
- border: 1px solid #555753;
- -webkit-border-radius: 0 0 5px 5px;
- -moz-border-radius: 0 0 5px 5px;
- border-radius: 0 0 5px 5px; }
-
-#group-members h3, #group-all-contacts h3, #prof-members h3, #prof-all-contacts h3 {
- color: #eeeeec;
- background-color: #555753;
- margin: 0;
- padding: 5px; }
-
-#group-separator, #prof-separator {
- display: none; }
-
-/**
- * profile
- */
-
-#cropimage-wrapper {
- float: left; }
-
-#crop-image-form {
- clear: both; }
-
-/**
- * intros
- */
-
-.intro-wrapper {
- margin-top: 20px; }
-
-.intro-fullname {
- font-size: 1.1em;
- font-weight: bold; }
-
-.intro-desc {
- margin-bottom: 20px;
- font-weight: bold; }
-
-.intro-note {
- padding: 10px; }
-
-.intro-end {
- padding: 30px; }
-
-.intro-form {
- float: left; }
-
-.intro-approve-form, .intro-approve-as-friend-end {
- clear: both; }
-
-.intro-submit-approve, .intro-submit-ignore {
- margin-right: 20px; }
-
-.intro-submit-approve {
- margin-top: 15px; }
-
-.intro-approve-as-friend-label, .intro-approve-as-fan-label, .intro-approve-as-friend, .intro-approve-as-fan {
- float: left; }
-
-.intro-form-end {
- clear: both;
- margin-bottom: 10px; }
-
-.intro-approve-as-friend-desc {
- margin-top: 10px; }
-
-.intro-approve-as-end {
- clear: both;
- margin-bottom: 10px; }
-
-.intro-end, .clear {
- clear: both; }
-
-/**
- * events
- */
-
-.eventcal {
- float: left;
- font-size: 20px; }
-
-.event {
- background: #2e2f2e; }
-
-.vevent {
- border: 1px solid #ccc;
- .event-description, .event-location, .event-start {
- margin-left: 10px;
- margin-right: 10px; } }
-
-#new-event-link {
- margin-bottom: 10px; }
-
-.edit-event-link, .plink-event-link {
- /*float: left; */
- /*margin-top: 4px; */
- /*margin-right: 4px;*/
- /*margin-bottom: 15px;*/ }
-
-.event-description:before {
- content: url('../../../images/calendar.png');
- margin-right: 15px; }
-
-.event-start, .event-end {
- margin-left: 10px;
- width: 330px;
- font-size: smaller; }
-
-.event-start .dtstart, .event-end .dtend {
- float: right; }
-
-.event-list-date {
- margin-bottom: 10px; }
-
-.prevcal, .nextcal {
- float: left;
- margin-left: 32px;
- margin-right: 32px;
- margin-top: 64px; }
-
-.event-calendar-end {
- clear: both; }
-
-.calendar {
- font-family: monospace; }
-
-.today {
- font-weight: bold;
- color: #FF0000; }
-
-#event-start-text, #event-finish-text {
- margin-top: 10px;
- margin-bottom: 5px; }
-
-#event-nofinish-checkbox, #event-nofinish-text, #event-adjust-checkbox, #event-adjust-text, #event-share-checkbox {
- float: left; }
-
-#event-datetime-break {
- margin-bottom: 10px; }
-
-#event-nofinish-break, #event-adjust-break, #event-share-break {
- clear: both; }
-
-#event-desc-text, #event-location-text {
- margin-top: 10px;
- margin-bottom: 5px; }
-
-#event-submit {
- margin-top: 10px; }
-
-.body-tag {
- margin: 10px 0;
- opacity: 0.5;
- &:hover {
- opacity: 1.0 !important; } }
-
-.filesavetags, .categorytags {
- margin: 20px 0;
- opacity: 0.5; }
-
-.filesavetags:hover, .categorytags:hover {
- margin: 20px 0;
- opacity: 1.0 !important; }
-
-.item-select {
- opacity: 0.1;
- margin: 5px 0 0 6px !important;
- &:hover {
- opacity: 1; } }
-
-.checkeditem {
- opacity: 1; }
-
-#item-delete-selected {
- margin-top: 30px; }
-
-/* was tired of having no way of moving it around, so
-* here's a little 'hook' to do so */
-
-.delete-checked {
- position: absolute;
- left: 35px;
- margin-top: 20px; }
-
-#item-delete-selected-end {
- clear: both; }
-
-#item-delete-selected-icon {
- float: left;
- margin-right: 5px; }
-
-#item-delete-selected-desc {
- float: left;
- margin-right: 5px;
- &:hover {
- text-decoration: underline; } }
-
-.fc-state-highlight {
- background: #eec;
- color: #2e2f2e; }
-
-/**
- * directory
- */
-
-.directory-item {
- float: left;
- margin: 0 5px 4px 0;
- padding: 3px;
- width: 180px;
- height: 250px;
- position: relative; }
-
-/**
- * sidebar
- */
-
-#group-sidebar {
- margin-bottom: 10px; }
-
-.group-selected, .nets-selected, .fileas-selected {
- padding: 3px;
- color: #111;
- background: #f8f8f8;
- font-weight: bold; }
-
-.group-selected:hover, .nets-selected:hover, .fileas-selected:hover {
- color: #111; }
-
-.groupsideedit {
- margin-right: 10px; }
-
-#sidebar-group-ul {
- padding-left: 0; }
-
-#sidebar-group-list {
- margin: 0 0 5px 0;
- ul {
- list-style-type: none;
- list-style-position: inside; }
- li {
- margin-top: 10px; }
- .icon {
- display: inline-block;
- height: 12px;
- width: 12px; } }
-
-#sidebar-new-group {
- margin: auto;
- display: inline-block;
- color: #efefef;
- text-decoration: none;
- text-align: center; }
-
-#peoplefind-sidebar form {
- margin-bottom: 10px; }
-
-#sidebar-new-group {
- &:hover {
- /*background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b20202), color-stop(1, #d60808) );*/
- /*background: -moz-linear-gradient( center top, #b20202 5%, #d60808 100% );*/
- /*background-color: #b20202;*/ }
- &:active {
- position: relative;
- top: 1px; } }
-
-#side-peoplefind-url {
- background-color: #e5e0cf;
- color: #666;
- border: 1px 666 solid;
- margin-right: 3px;
- width: 75%;
- &:hover, &:focus {
- background-color: #efefef;
- color: #222;
- border: 1px 333 solid; } }
-
-.nets-ul {
- list-style-type: none;
- padding-left: 0px;
- li {
- margin: 10px 0 0; } }
-
-.nets-link, .nets-all {
- margin-left: 0px; }
-
-#netsearch-box {
- margin-top: 20px;
- width: 150px;
- #search-submit {
- margin: 5px 0px 0px 0px; } }
-
-/**
- * admin
- */
-
-#pending-update {
- float: right;
- color: #fff;
- font-weight: bold;
- background-color: #ff0000;
- padding: 0 .3em; }
-
-.admin {
- &.linklist {
- border: 0;
- padding: 0; }
- &.link {
- list-style-position: inside; } }
-
-#adminpage {
- color: #111;
- background: transparent;
- margin: 5px;
- padding: 10px;
- dl {
- clear: left;
- margin-bottom: 2px;
- padding-bottom: 2px;
- border-bottom: 1px solid #000; }
- dt {
- width: 250px;
- float: left;
- font-weight: bold; }
- dd {
- margin-left: 250px; }
- h3 {
- border-bottom: 1px solid #ccc; }
- .submit {
- clear: left; }
- #pluginslist {
- margin: 0;
- padding: 0; }
- .plugin {
- list-style: none;
- display: block;
- border: 1px solid #888;
- padding: 1em;
- margin-bottom: 5px;
- clear: left; }
- .toggleplugin {
- float: left;
- margin-right: 1em; }
- table {
- width: 100%;
- border-bottom: 1px solid #000;
- margin: 5px 0;
- th {
- text-align: left; } }
- td .icon {
- float: left; }
- table {
- &#users img {
- width: 16px;
- height: 16px; }
- tr:hover {
- /*color: ;*/
- background-color: #bbc7d7; } }
- .selectall {
- text-align: right; }
- #users a {
- /*color: #;*/
- text-decoration: underline; } }
-
-#users .name {
- color: #eec; }
-
-/**
- * form fields
- */
-
-.field {
- /*margin-bottom: 10px;*/
- /*padding-bottom: 10px;*/
- overflow: auto;
- /* width: 100%;*/
- label {
- width: 38%;
- display: inline-block;
- font-size: 1.077em;
- margin: 0 10px 1em 0;
- border: 1px #999 solid;
- padding: 5px;
- background: #ccc;
- color: #111; } }
-
-.field .onoff {
- float: right;
- margin: 0 330px 0 auto;
- width: 80px;
- a {
- display: block;
- border: 1px solid #666;
- padding: 3px 6px 4px 10px;
- height: 16px;
- text-decoration: none; }
- .on {
- background: url("../../../images/onoff.jpg") no-repeat 42px 1px #999999;
- color: #111;
- text-align: left; }
- .off {
- background: url("../../../images/onoff.jpg") no-repeat 2px 1px #cccccc;
- color: #333;
- text-align: right; } }
-
-.hidden {
- display: none !important; }
-
-.field textarea {
- width: 80%;
- height: 100px; }
-
-.field_help {
- display: block;
- margin-left: 297px;
- color: #666; }
-
-.field.radio .field_help {
- margin-left: 297px; }
-
-label {
- width: 38%;
- display: inline-block;
- font-size: 1.077em;
- margin: 0 10px 1em 0;
- border: 1px #999 solid;
- padding: 5px;
- background: #ccc;
- color: #111; }
-
-input {
- width: 250px;
- height: 25px;
- border: 1px #999 solid;
- &[type="text"], &[type="password"], &[type="search"] {
- width: 250px;
- height: 25px;
- border: 1px #999 solid; }
- &[type="checkbox"], &[type="radio"] {
- border: 1px #999 solid;
- margin: 0 0 0 0;
- height: 15px;
- width: 15px; }
- &[type="submit"], &[type="button"] {
- background-color: #555753;
- border: 2px outset #444;
- border-radius: 5px;
- box-shadow: 1px 3px 4px 0 #111;
- color: #eeeeec;
- cursor: pointer;
- font-weight: bold;
- width: auto;
- text-shadow: 1px 1px #111;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px; }
- &[type="submit"]:active, &[type="button"]:active {
- box-shadow: 0 0 0 0; } }
-
-
-/*
- * update
- */
-
-.popup {
- width: 100%;
- height: 100%;
- top: 0px;
- left: 0px;
- position: absolute;
- display: none;
- .background {
- background-color: #000;
- opacity: 0.5;
- width: 100%;
- height: 100%;
- position: absolute;
- top: 0px;
- left: 0px; }
- .panel {
- top: 25%;
- left: 25%;
- width: 50%;
- height: 50%;
- padding: 1em;
- position: absolute;
- border: 4px solid #000000;
- background-color: #FFFFFF; } }
-
-#panel {
- z-index: 100; }
-
-.grey {
- color: grey; }
-
-.orange {
- color: orange; }
-
-.red {
- color: red; }
-
-.popup .panel {
- .panel_text {
- display: block;
- overflow: auto;
- height: 80%; }
- .panel_in {
- width: 100%;
- height: 100%;
- position: relative; }
- .panel_actions {
- width: 100%;
- bottom: 4px;
- left: 0px;
- position: absolute; } }
-
-.panel_text .progress {
- width: 50%;
- overflow: hidden;
- height: auto;
- border: 1px solid #cccccc;
- margin-bottom: 5px;
- span {
- float: right;
- display: block;
- width: 25%;
- background-color: #eeeeee;
- text-align: right; } }
-
-/**
- * OAuth
- */
-
-.oauthapp {
- height: auto;
- overflow: auto;
- border-bottom: 2px solid #cccccc;
- padding-bottom: 1em;
- margin-bottom: 1em;
- img {
- float: left;
- width: 48px;
- height: 48px;
- margin: 10px;
- &.noicon {
- background-image: url("../../../images/icons/48/plugin.png");
- background-position: center center;
- background-repeat: no-repeat; } }
- a {
- float: left; } }
-
-/**
- * icons
- */
-
-.iconspacer {
- display: block;
- width: 16px;
- height: 16px; }
-
-.icon {
- display: block;
- width: 20px;
- height: 20px;
- background: url(icons.png) no-repeat;
- border: 0;
- text-decoration: none;
- border-radius: 5px;
- &:hover {
- border: 0;
- text-decoration: none; } }
-
-.editicon {
- display: inline-block;
- width: 21px;
- height: 21px;
- background: url(editicons.png) no-repeat;
- border: 0;
- text-decoration: none; }
-
-.shadow {
- box-shadow: 2px 2px 5px 2px #111;
- &:active, &:focus, &:hover {
- box-shadow: 0 0 0 0; } }
-
-.editicon:hover {
- border: 0; }
-
-.boldbb {
- background-position: 0px 0px;
- &:hover {
- background-position: -22px 0px; } }
-
-.italicbb {
- background-position: 0px -22px;
- &:hover {
- background-position: -22px -22px; } }
-
-.underlinebb {
- background-position: 0px -44px;
- &:hover {
- background-position: -22px -44px; } }
-
-.quotebb {
- background-position: 0px -66px;
- &:hover {
- background-position: -22px -66px; } }
-
-.codebb {
- background-position: 0px -88px;
- &:hover {
- background-position: -22px -88px; } }
-
-.imagebb {
- background-position: -44px 0px;
- &:hover {
- background-position: -66px 0px; } }
-
-.urlbb {
- background-position: -44px -22px;
- &:hover {
- background-position: -66px -22px; } }
-
-.videobb {
- background-position: -44px -44px;
- &:hover {
- background-position: -66px -44px; } }
-
-.icon {
- &.drop, &.drophide, &.delete {
- float: left;
- margin: 0 2px; }
- &.s22 {
- &.delete {
- display: block;
- background-position: -110px 0; }
- &.text {
- padding: 10px 0px 0px 25px;
- width: 200px; } }
- &.text {
- text-indent: 0px; }
- &.s16 {
- min-width: 16px;
- height: 16px; } }
-
-.s16 .add {
- background: url("../../../images/icons/16/add.png") no-repeat; }
-
-.add {
- margin: 0px 5px; }
-
-.article {
- background-position: -50px 0; }
-
-.audio {
- background-position: -70px 0; }
-
-.block {
- background-position: -90px 0px; }
-
-.drop, .delete {
- background-position: -110px 0; }
-
-.drophide {
- background-position: -130px 0; }
-
-.edit {
- background-position: -150px 0; }
-
-.camera {
- background-position: -170px 0; }
-
-.dislike {
- background-position: -190px 0; }
-
-.file-as {
- background-position: -230px -60px; }
-
-.like {
- background-position: -211px 0; }
-
-.link {
- background-position: -230px 0; }
-
-.globe, .location {
- background-position: -50px -20px; }
-
-.noglobe, .nolocation {
- background-position: -70px -20px; }
-
-.no {
- background-position: -90px -20px; }
-
-.pause {
- background-position: -110px -20px; }
-
-.play {
- background-position: -130px -20px; }
-
-.pencil {
- background-position: -151px -18px; }
-
-.small-pencil {
- background-position: -170px -20px; }
-
-.recycle {
- background-position: -190px -20px; }
-
-.remote-link {
- background-position: -210px -20px; }
-
-.share {
- background-position: -230px -20px; }
-
-.tools {
- background-position: -50px -40px; }
-
-.lock {
- background-position: -70px -40px; }
-
-.unlock {
- background-position: -88px -40px; }
-
-.video {
- background-position: -110px -40px; }
-
-.attach {
- background-position: -190px -40px; }
-
-.language {
- background-position: -210px -40px; }
-
-.starred {
- background-position: -130px -60px; }
-
-.unstarred {
- background-position: -150px -60px; }
-
-.tagged {
- background-position: -170px -60px; }
-
-.on {
- background-position: -50px -60px; }
-
-.off {
- background-position: -70px -60px; }
-
-.prev {
- background-position: -90px -60px; }
-
-.next {
- background-position: -110px -60px; }
-
-.icon.dim {
- opacity: 0.3; }
-
-#pause {
- position: fixed;
- bottom: 40px;
- right: 30px; }
-
-.border {
- border: 1px solid #babdb6;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- &:hover {
- border: 1px solid #babdb6;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px; } }
-
-.attachtype {
- display: block;
- width: 20px;
- height: 23px;
- background-image: url(../../../images/content-types.png); }
-
-.type-video {
- background-position: 0px 0px; }
-
-.type-image {
- background-position: -20px 0; }
-
-.type-audio {
- background-position: -40px 0; }
-
-.type-text {
- background-position: -60px 0px; }
-
-.type-unkn {
- background-position: -80px 0; }
-
-/**
- * footer
- */
-
-.cc-license {
- margin-top: 100px;
- font-size: 0.7em; }
-
-footer {
- display: block;
- /*margin: 50px 20%;*/
- clear: both; }
-
-#profile-jot-text {
- height: 20px;
- color: #666;
- border: 1px solid #ccc;
- border-radius: 5px;
- width: 99.5%; }
-
-/**
- * acl
- */
-
-#photo-edit-perms-select, #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper {
- display: block !important;
- background: #eec;
- color: #2e2f2e; }
-
-#acl-wrapper {
- width: 660px;
- margin: 0 auto; }
-
-#acl-search {
- float: right;
- background: white url("../../../images/search_18.png") no-repeat right center;
- padding-right: 20px;
- margin: 6px;
- color: #111; }
-
-#acl-showall {
- float: left;
- display: block;
- width: auto;
- height: 18px;
- background: #eeeecc url("../../../images/show_all_off.png") 8px 8px no-repeat;
- padding: 7px 10px 7px 30px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- color: #999;
- margin: 5px 0;
- &.selected {
- color: #000;
- background: #ff9900 url(../../../images/show_all_on.png) 8px 8px no-repeat; } }
-
-#acl-list {
- height: 210px;
- border: 1px solid #ccc;
- clear: both;
- margin-top: 30px;
- overflow: auto; }
-
-/*#acl-list-content {
-}*/
-
-.acl-list-item {
- border: 1px solid #ccc;
- display: block;
- float: left;
- height: 110px;
- margin: 3px 0 5px 5px;
- width: 120px;
- img {
- width: 22px;
- height: 22px;
- float: left;
- margin: 5px 5px 20px; }
- p {
- height: 12px;
- font-size: 10px;
- margin: 0 0 22px;
- padding: 2px 0 1px; }
- a {
- background: #ccc 3px 3px no-repeat;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- clear: both;
- font-size: 10px;
- display: block;
- width: 55px;
- height: 20px;
- color: #999;
- margin: 5px auto 0;
- padding: 0 3px;
- text-align: center;
- vertical-align: middle; } }
-
-#acl-wrapper a:hover {
- text-decoration: none;
- color: #000;
- border: 0; }
-
-.acl-button-show {
- background-image: url('../../../images/show_off.png');
- margin: 0 auto; }
-
-.acl-button-hide {
- background-image: url('../../../images/hide_off.png');
- margin: 0 auto; }
-
-.acl-button-show.selected {
- color: #000;
- background-color: #9ade00;
- background-image: url(../../../images/show_on.png); }
-
-.acl-button-hide.selected {
- color: #000;
- background-color: #ff4141;
- background-image: url(../../../images/hide_on.png); }
-
-.acl-list-item {
- &.groupshow {
- border-color: #9ade00; }
- &.grouphide {
- border-color: #ff4141; } }
-
-/** /acl **/
-
-/* autocomplete popup */
-
-.acpopup {
- max-height: 175px;
- max-width: 42%;
- background-color: #555753;
- color: #fff;
- overflow: auto;
- z-index: 100000;
- border: 1px solid #cccccc; }
-
-.acpopupitem {
- background-color: #555753;
- padding: 4px;
- clear: left;
- img {
- float: left;
- margin-right: 4px; }
- &.selected {
- color: #2e3436;
- background-color: #eeeeec; } }
-
-.qcomment-wrapper {
- padding: 0px;
- margin: 5px 5px 5px 81%; }
-
-.qcomment {
- opacity: 0.5;
- &:hover {
- opacity: 1.0; } }
-
-#network-star-link {
- margin-top: 10px; }
-
-.network-star {
- float: left;
- margin-right: 5px;
- &.icon.starred {
- display: inline-block; } }
-
-#fileas-sidebar {}
-
-.fileas-ul {
- padding: 0; }
-
-/*
- * addons theming
- */
-
-#sidebar-page-list {
- ul {
- padding: 0;
- margin: 5px 0; }
- li {
- list-style: none; } }
-
-#jappix_mini {
- margin-left: 130px;
- position: fixed;
- bottom: 0;
- right: 175px !important;
- /* override the jappix css */
- z-index: 999; }
-
-/* media stuff */
-@media handheld {
- body {
- font-size: 15pt; } }
diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl
index 35e65f397..d2878d17d 100644
--- a/view/theme/dispy/wall_item.tpl
+++ b/view/theme/dispy/wall_item.tpl
@@ -13,7 +13,15 @@
</div>
</div>
<div class="wall-item-photo-end"></div>
- <div class="wall-item-location" id="wall-item-location-$item.id">{{ if $item.location }}<span class="icon globe"></span>$item.location {{ endif }}</div>
+ <div class="wall-item-location" id="wall-item-location-$item.id">
+ {{ if $item.location }}<span class="icon globe"></span>$item.location {{ endif }}
+ </div>
+ <div class="wall-item-author">
+ <a href="$item.profile_url" title="$item.linktitle" class="wall-item-name-link"><span class="wall-item-name$item.sparkle" id="wall-item-name-$item.id">$item.name</span></a>
+ </div>
+ <div class="wall-item-ago" id="wall-item-ago-$item.id">
+ $item.ago
+ </div>
</div>
<div class="wall-item-tools" id="wall-item-tools-$item.id">
<div class="wall-item-lock-wrapper">
@@ -67,10 +75,6 @@
</div>
</div>
</div>
- <div class="wall-item-author">
- <a href="$item.profile_url" title="$item.linktitle" class="wall-item-name-link"><span class="wall-item-name$item.sparkle" id="wall-item-name-$item.id" >$item.name</span></a>
- <div class="wall-item-ago" id="wall-item-ago-$item.id">$item.ago</div>
- </div>
</div>
<div class="wall-item-wrapper-end"></div>
<div class="wall-item-like" id="wall-item-like-$item.id">$item.like</div>
diff --git a/view/theme/dispy/wallwall_item.tpl b/view/theme/dispy/wallwall_item.tpl
index e8cbc2cd4..2705d3e68 100644
--- a/view/theme/dispy/wallwall_item.tpl
+++ b/view/theme/dispy/wallwall_item.tpl
@@ -18,7 +18,15 @@
</div>
<div class="wall-item-photo-end"></div>
- <div class="wall-item-location" id="wall-item-location-$item.id">{{ if $item.location }}<span class="icon globe"></span>$item.location {{ endif }}</div>
+ <div class="wall-item-location" id="wall-item-location-$item.id">
+ {{ if $item.location }}<span class="icon globe"></span>$item.location {{ endif }}
+ </div>
+ <div class="wall-item-author">
+ <a href="$item.profile_url" title="$item.linktitle" class="wall-item-name-link"><span class="wall-item-name$item.sparkle" id="wall-item-name-$item.id">$item.name</span></a>
+ </div>
+ <div class="wall-item-ago" id="wall-item-ago-$item.id">
+ $item.ago
+ </div>
</div>
<div class="wall-item-tools" id="wall-item-tools-$item.id">
<div class="wall-item-lock-wrapper">
@@ -73,10 +81,6 @@ class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick
</div>
</div>
</div>
- <div class="wall-item-author">
- <a href="$item.profile_url" title="$item.linktitle" class="wall-item-name-link"><span class="wall-item-name$item.sparkle" id="wall-item-name-$item.id" >$item.name</span></a>
- <div class="wall-item-ago" id="wall-item-ago-$item.id">$item.ago</div>
- </div>
</div>
<div class="wall-item-wrapper-end"></div>
<div class="wall-item-like" id="wall-item-like-$item.id">$item.like</div>
diff --git a/view/theme/duepuntozero/moderated_comment.tpl b/view/theme/duepuntozero/moderated_comment.tpl
new file mode 100755
index 000000000..b0451c8c6
--- /dev/null
+++ b/view/theme/duepuntozero/moderated_comment.tpl
@@ -0,0 +1,61 @@
+ <div class="comment-wwedit-wrapper" id="comment-edit-wrapper-$id" style="display: block;">
+ <form class="comment-edit-form" id="comment-edit-form-$id" action="item" method="post" onsubmit="post_comment($id); return false;">
+ <input type="hidden" name="type" value="$type" />
+ <input type="hidden" name="profile_uid" value="$profile_uid" />
+ <input type="hidden" name="parent" value="$parent" />
+ <input type="hidden" name="return" value="$return_path" />
+ <input type="hidden" name="jsreload" value="$jsreload" />
+ <input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
+
+ <div class="comment-edit-photo" id="comment-edit-photo-$id" >
+ <a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
+ </div>
+ <div class="comment-edit-photo-end"></div>
+ <div id="mod-cmnt-wrap-$id" class="mod-cmnt-wrap" style="display:none">
+ <div id="mod-cmnt-name-lbl-$id" class="mod-cmnt-name-lbl">$lbl_modname</div>
+ <input type="text" id="mod-cmnt-name-$id" class="mod-cmnt-name" name="mod-cmnt-name" value="$modname" />
+ <div id="mod-cmnt-email-lbl-$id" class="mod-cmnt-email-lbl">$lbl_modemail</div>
+ <input type="text" id="mod-cmnt-email-$id" class="mod-cmnt-email" name="mod-cmnt-email" value="$modemail" />
+ <div id="mod-cmnt-url-lbl-$id" class="mod-cmnt-url-lbl">$lbl_modurl</div>
+ <input type="text" id="mod-cmnt-url-$id" class="mod-cmnt-url" name="mod-cmnt-url" value="$modurl" />
+ </div>
+ <ul class="comment-edit-bb-$id">
+ <li><a class="editicon boldbb shadow"
+ style="cursor: pointer;" title="$edbold"
+ onclick="insertFormatting('$comment','b', $id);"></a></li>
+ <li><a class="editicon italicbb shadow"
+ style="cursor: pointer;" title="$editalic"
+ onclick="insertFormatting('$comment','i', $id);"></a></li>
+ <li><a class="editicon underlinebb shadow"
+ style="cursor: pointer;" title="$eduline"
+ onclick="insertFormatting('$comment','u', $id);"></a></li>
+ <li><a class="editicon quotebb shadow"
+ style="cursor: pointer;" title="$edquote"
+ onclick="insertFormatting('$comment','quote', $id);"></a></li>
+ <li><a class="editicon codebb shadow"
+ style="cursor: pointer;" title="$edcode"
+ onclick="insertFormatting('$comment','code', $id);"></a></li>
+ <li><a class="editicon imagebb shadow"
+ style="cursor: pointer;" title="$edimg"
+ onclick="insertFormatting('$comment','img', $id);"></a></li>
+ <li><a class="editicon urlbb shadow"
+ style="cursor: pointer;" title="$edurl"
+ onclick="insertFormatting('$comment','url', $id);"></a></li>
+ <li><a class="editicon videobb shadow"
+ style="cursor: pointer;" title="$edvideo"
+ onclick="insertFormatting('$comment','video', $id);"></a></li>
+ </ul>
+ <div class="comment-edit-bb-end"></div>
+ <textarea id="comment-edit-text-$id" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,$id);cmtBbOpen($id);" onBlur="commentClose(this,$id);" >$comment</textarea>
+
+ <div class="comment-edit-text-end"></div>
+ <div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-$id" style="display: none;" >
+ <input type="submit" onclick="post_comment($id); return false;" id="comment-edit-submit-$id" class="comment-edit-submit" name="submit" value="$submit" />
+ <span onclick="preview_comment($id);" id="comment-edit-preview-link-$id" class="fakelink">$preview</span>
+ <div id="comment-edit-preview-$id" class="comment-edit-preview" style="display:none;"></div>
+ </div>
+
+ <div class="comment-edit-end"></div>
+ </form>
+
+ </div>
diff --git a/view/theme/duepuntozero/prv_message.tpl b/view/theme/duepuntozero/prv_message.tpl
new file mode 100644
index 000000000..b5cda9c85
--- /dev/null
+++ b/view/theme/duepuntozero/prv_message.tpl
@@ -0,0 +1,39 @@
+
+<h3>$header</h3>
+
+<div id="prvmail-wrapper" >
+<form id="prvmail-form" action="message" method="post" >
+
+$parent
+
+<div id="prvmail-to-label">$to</div>
+
+{{ if $showinputs }}
+<input type="text" id="recip" name="messageto" value="$prefill" maxlength="255" size="64" tabindex="10" />
+<input type="hidden" id="recip-complete" name="messageto" value="$preid">
+{{ else }}
+$select
+{{ endif }}
+
+<div id="prvmail-subject-label">$subject</div>
+<input type="text" size="64" maxlength="255" id="prvmail-subject" name="subject" value="$subjtxt" $readonly tabindex="11" />
+
+<div id="prvmail-message-label">$yourmessage</div>
+<textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" tabindex="12">$text</textarea>
+
+
+<div id="prvmail-submit-wrapper" >
+ <input type="submit" id="prvmail-submit" name="submit" value="Submit" tabindex="13" />
+ <div id="prvmail-upload-wrapper" >
+ <div id="prvmail-upload" class="icon border camera" title="$upload" ></div>
+ </div>
+ <div id="prvmail-link-wrapper" >
+ <div id="prvmail-link" class="icon border link" title="$insert" onclick="jotGetLink();" ></div>
+ </div>
+ <div id="prvmail-rotator-wrapper" >
+ <img id="prvmail-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
+ </div>
+</div>
+<div id="prvmail-end"></div>
+</form>
+</div>
diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css
index 7cbcdc4d2..b978c13e5 100644
--- a/view/theme/duepuntozero/style.css
+++ b/view/theme/duepuntozero/style.css
@@ -3166,4 +3166,12 @@ ul.menu-popup {
}
#id_term {
width:100px;
-} \ No newline at end of file
+}
+
+#recip {
+
+}
+.autocomplete-w1 { background: #ffffff; no-repeat bottom right; position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }
+.autocomplete { color:#000; border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }
+.autocomplete .selected { background:#F0F0F0; }
+.autocomplete div { padding:2px 5px; white-space:nowrap; overflow:hidden; }
diff --git a/view/theme/slackr/style.css b/view/theme/slackr/style.css
index ed3b413fb..abb431ab9 100644
--- a/view/theme/slackr/style.css
+++ b/view/theme/slackr/style.css
@@ -43,4 +43,19 @@ nav #site-location {
.wall-item-photo, .photo, .contact-block-img, .my-comment-photo {
border-radius: 3px;
-moz-border-radius: 3px;
-} \ No newline at end of file
+ box-shadow: 3px 3px 10px 0 #000000;
+}
+
+#sidebar-page-list img {
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ box-shadow: 3px 3px 10px -2px #000000;
+}
+
+.contact-entry-photo img, .profile-match-photo img, #photo-photo img, .directory-photo-img {
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ box-shadow: 3px 3px 10px 0 #000000;
+}
+
+